web-dev-qa-db-ja.com

Ubuntu 16.04のコンソールにアクセスKVM Guest

Debian 8を KVM管理ツール に追加したところ、 grubブート構成にconsole=ttyS0を追加しない限り、コンソールにアクセスできませんでした であることがわかりました。それは素晴らしいことではありませんでしたが、うまくいきました。私はUbuntu 16.04を管理ツールに追加している最中ですが、今回はゲストがインストールされているときに同じ問題がありますが、コンソールに接続しているときにインスタンスを再起動すると、grubメニューオプションが表示されなくなります。したがって、回避策を実装できません。

ハイパーバイザでarp -anを実行し、適切なIPアドレスが見つかるまでKVMブリッジのIPに接続することで、ゲストインスタンスのIPアドレスを見つけることができました。これにより、ゲストが正しくインストールされ、実行されていることを確認します。ネットワークに問題が発生した場合、またはopensshが突然動作を停止した場合に備えて、Sudo virsh console [guest ID]を使用してコンソールに接続できるようにしたいと思います。ハイパーバイザーからゲストUbuntu 16.04コンソールに接続するために何をする必要がありますか?

私の直感は、Sudo virsh edit [guestID]によってアクセスされる構成設定を微調整するだけでよいということです。現時点で私は:

...
<serial type='pty'>
  <target port='0'/>
</serial>
<console type='pty'>
  <target type='serial' port='0'/>
</console>
...

追加情報

  • Ubuntu 14.04 KVMカーネル4.2.0-36-genericを使用するハイパーバイザー
  • バーシュ1.2.2
3
Programster

2017年3月13日更新

上記の状況にすでにある場合は、以下の元の回答を使用して、既存ゲストを修正できます。ただし、この問題を二度と経験する必要がない方は、キックスタートファイルの%postセクションを次のように追加するだけです。

%post --nochroot
(
    sed -i "s;quiet;quiet console=ttyS0;" /target/etc/default/grub
    sed -i "s;quiet;quiet console=ttyS0;g" /target/boot/grub/grub.cfg
) 1> /target/root/post_install.log 2>&1
%end

これにより、grubに必要な変更が以下のように行われることが保証されるため、キックスタートファイルを使用してデプロイする新しいゲストがこの問題の影響を受けなくなります。

元の回答

ホストでarp -anを使用してIPを見つけた後、SSH経由で接続できた場合は、次の手順を実行できます( このページの下部から取得ゲストに接続したら

GRUB構成ファイルを編集します。

Sudo vim /etc/default/grub

次に示すように、テキストconsole=ttyS0GRUB_CMDLINE_LINUX_DEFAULTパラメータに追加します。

enter image description here

次に、次のコマンドを実行して、変更を使用してgrubメニューを再構築します。

Sudo update-grub

これで、virsh console [guest ID]を使用して動作中のコンソールに接続できるようになります。

これは、将来のカーネルがシステムに追加されても機能し続けますが、最初の段階でゲストへのSSHアクセスを必要としないソリューションが欲しいです

7
Programster

ありがとう@Programsterソリューションは私のために働きます。 SSHアクセスすらできないので、virt-editをインストールして使用する必要があります。

Sudo apt install libguestfs-tools
Sudo virt-edit -d myVM /boot/grub/grub.cfg

Grub.cfgファイルでquietのすべてのインスタンスをquiet console=ttyS0に置き換え、コンソール接続用にmy VMを開始します。

virsh start myVM && virsh console myVM

ログイン後、@ programsterの回答ごとにgrubを編集および更新することを忘れないでください。

8
Erich Chen

@Programsterの優れた回答で提案されているように、インストール後の手順でGRUB構成を修正します。ここでは、他の状況でそれを行う方法を示します。

Debconf preseedファイルを使用してUbuntu 16.04をインストールする場合、これをpreseedファイルに追加します。

 di preseed/late_command string(\ 
 sed -i "s; quiet; quiet console = ttyS0;"/target/etc/default/grub;\
 sed -i " s; quiet; quiet console = ttyS0; g "/target/boot/grub/grub.cfg\
)1> /target/root/post_install.log 2>&1 

キックスタートを使用してRHEL 7またはCentOS 7をインストールする場合は、これをキックスタートファイルに追加します。

%post --nochroot --log /mnt/sysimage/root/post.log
(
 sed -i "s; quiet; quiet console = ttyS0;"/mnt /sysimage/etc/default/grub
 sed -i "s; quiet; quiet console = ttyS0; g" /mnt/sysimage/boot/grub2/grub.cfg
)>/mnt/sysimage/root/post_install.log 2>&1 
%end 
0
John McGehee

redhat docs による、よりシンプルで簡単な方法

grubby --update-kernel=ALL --args="console=ttyS0"
reboot
0
nelaaro