コンソールからインストールされたKVMゲスト。しかし、ゲストのコンソールにアクセスする方法は?


28

コマンドラインのみ(ハイパーバイザーとゲストの両方)を使用して、KVM(RHEL 6)に完全仮想化ゲスト(Fedora 14 x86_64)をインストールしようとしています。エラーもなく、具体的な結果もありません。テキストのみのインストールの方法を知りたいのですが。

だから、ここに私がやったことがあります:

# virt-install \
--name=FE --ram=756 --vcpus=1 \
--file=/var/lib/libvirt/images/FE.img  --network bridge:br0 \
--nographics --os-type=linux  \
--extra-args='console=tty0' -v \
--cdrom=/media/usb/Fedora-14-x86_64-Live-Desktop.iso 


Starting install...
Creating domain...                                                                                                                                                        |    0 B     00:00     
Connected to domain FE
Escape character is ^]
ÿ

それで?数日間グーグルで調べた後、テキストインストールからのゲストの出力が表示されるはずですが、何も起こりません。virt-viewerはそれに接続できません。--helpを追加することですべてのオプションを検討することをお勧めします(これは行いました)。virshで再接続すると、次のように表示されます。

Domain installation still in progress. You can reconnect to 
the console to complete the installation process.
[root@v ~]
# virsh console FEConnected to domain FE
Escape character is ^]

これは、VMが実行されていることを示しています

# virsh list
 Id Name                 State
----------------------------------
  8 FE                   running

Qemuログ:

LC_ALL=C PATH=/sbin:/usr/sbin:/bin:/usr/bin /usr/libexec/qemu-kvm -S -M rhel6.0.0 -enable-kvm -m 756 -smp 1,sockets=1,cores=1,threads=1 -name FE -uuid 6989d008-7c89-424c-d2d3-f41235c57a18 -nographic -nodefconfig -nodefaults -chardev socket,id=monitor,path=/var/lib/libvirt/qemu/FE.monitor,server,nowait -mon chardev=monitor,mode=control -rtc base=utc -no-reboot -boot d -drive file=/var/lib/libvirt/images/FE.img,if=none,id=drive-ide0-0-0,format=raw,cache=none -device ide-drive,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0 -drive file=/media/usb/Fedora-14-x86_64-Live-Desktop.iso,if=none,media=cdrom,id=drive-ide0-1-0,readonly=on,format=raw -device ide-drive,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0 -netdev tap,fd=20,id=hostnet0 -device rtl8139,netdev=hostnet0,id=net0,mac=52:54:00:0a:65:8d,bus=pci.0,addr=0x2 -chardev pty,id=serial0 -device isa-serial,chardev=serial0 -usb -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3 
char device redirected to /dev/pts/1

/etc/libvirt/qemu/FE.xmlの出力

# cat /etc/libvirt/qemu/FE.xml 
<domain type='kvm'>
  <name>FE</name>
  <uuid>6989d008-7c89-424c-d2d3-f41235c57a18</uuid>
  <memory>774144</memory>
  <currentMemory>774144</currentMemory>
  <vcpu>1</vcpu>
  <os>
    <type arch='x86_64' machine='rhel6.0.0'>hvm</type>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <pae/>
  </features>
  <clock offset='utc'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/libexec/qemu-kvm</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='raw' cache='none'/>
      <source file='/var/lib/libvirt/images/FE.img'/>
      <target dev='hda' bus='ide'/>
      <address type='drive' controller='0' bus='0' unit='0'/>
    </disk>
    <disk type='block' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <target dev='hdc' bus='ide'/>
      <readonly/>
      <address type='drive' controller='0' bus='1' unit='0'/>
    </disk>
    <controller type='ide' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    </controller>
    <interface type='bridge'>
      <mac address='52:54:00:0a:65:8d'/>
      <source bridge='br0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </interface>
    <serial type='pty'>
      <target port='0'/>
    </serial>
    <console type='pty'>
      <target port='0'/>
    </console>
    <memballoon model='virtio'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </memballoon>
  </devices>
</domain>

私は明らかに他の多くの人が見逃しているものを逃していますが、それは何ですか?事前に感謝します!


3
どのようにして--extra-argsスイッチを--cdromで動作するようにできましたか?virt-installのmanページによると--extra-argsは--locationでのみ動作しますか?
-slm

4
私は削除--network bridge:br0、変更cdromするlocation、とextra-argsする--extra-args='console=tty0 console=ttyS0,115200n8 serial'と、それは働きました!
いくつかの

2
cdromをlocationに変更して、「extra-args」を追加しただけです。--networkオプションを削除する必要はありません。
twan163 14

1
何らかの理由で--cdrom、余分な引数では機能しませんが、--location(または-l)は機能します。同じパスとすべて。
リックチャタム

回答:


9

--extra-args='console=ttyS0'前回インターネットからどこかにコピーしましたが、うまくいきました!

  • 2つの「コンソール」コマンドは必要ありません。1つではなく2つのコンソールを開くだけです。
  • ボーレートを手動で指定する必要はありません。
  • 「--serial」オプションは廃止されました
  • RedHatコンソールデバイスは「/ dev / tty0」ではなく「/ dev / ttyS0」です。

参照:http : //anaconda-installer.readthedocs.io/en/latest/boot-options.html


7

--nographicsが使用され、tty0コンソール以外にゲストにコンソールがセットアップされていません。特にリモートで使用可能なグラフィカルコンソールが必要な場合は、vgaとvnc、またはqxlとspiceを有効にする必要があります。これは例です:http : //www.linux-kvm.com/content/tip-how-run-headless-guest-machine-using-vnc-kvm

http://www.linux-kvm.com/content/running-kvm-nographics-no-console-outputまたはhttp://ubuntuforums.org/showpost.php?p=9610421&postcount=7も解決策です。


答えてくれてありがとう。ポイントを選ぶ:1.いいえ、グラフィカルコンソールは必要ありません(私の投稿を参照してください)2.はい、私はこれと同様のソリューションを試しています。私にはうまくいきませんでした。
-badbishop

私はlinux-kvm.orgやlibvirtのメーリングリストでお尋ねしてみたい
dyasny

6

CentOSのテキストのみのインストールを実行しようとすると、同様の問題が発生しました。要するに、シリアル出力コンソールを指定するためのカーネル引数を追加console=ttyS0して、--graphics noneまたは--nographicsが使用されたときに接続できるようにすることです。virt-installのマニュアルから:

-グラフィックなし

ゲストにグラフィカルコンソールは割り当てられません。完全に仮想化されたゲスト(Xen FVまたはQEmu / KVM)では、ゲストの最初のシリアルポートでテキストコンソールを構成する必要があります(これは--extra-argsオプションで実行できます)。Xen PVはこれを自動的にセットアップします。コマンド「virsh console NAME」を使用して、シリアルデバイスに接続できます。

私は2つの方法でそれを解決することができました:

  1. isoイメージを変更し、--cdromオプションを使用することにより
  2. isoイメージをNFS共有として公開し、--locationオプションを使用して--extra-args

1.画像の修正

isoインストールディスクのカーネルパラメーターを変更するには:

  1. isomasterなど、画像を操作できるプログラムを入手します。
  2. isolinux/isolinux.cfgイメージ上のファイルに移動して開き、最初の行を見つけて、それに言及されたパラメーターを持つすべての行にinitrd=追加console=ttyS0します。
  3. ファイルと画像を保存します。
  4. 変更されたイメージをvirt-install通常どおり使用します。例:

    $ sudo virt-install --name centos-vm --ram 1024 --disk path=/home/user/domains/centos-vm --cdrom /home/user/images/centos-modified.iso --os-type linux --nographics --accelerate
    

できた

2. NFS共有を使用する

  1. イメージをマウントします。

    $ sudo mount -o loop,unhide -t iso9660 -r /home/user/images/CentOS.iso /home/user/mnt/cdrom
    
  2. 実行していない場合は、NFSサービスを開始します。 service nfs start

  3. 次の行を追加し/etc/exportsて、クライアントで使用できるようにします。

    /home/user/mnt/cdrom    *(ro,insecure,all_squash)
    
  4. システムのエクスポートテーブルを更新します。

    $ exportfs -r
    
  5. 共有を使用して、virt-installを含めるようにしてください--extra-args。例:

    $ sudo virt-install --name centos-vm --ram 1024 --disk path=/home/user/domains/centos-vm --location /home/user/mnt/cdrom --os-type linux --nographics --accelerate --extra-args="console=ttyS0"
    
  6. CentOSのインストール中に、インストールファイルの場所を尋ねるプロンプトが表示されます。マシンのアドレスと共有へのフルパスを入力する必要があります。

できた


ISOファイルをマウントする2番目の方法を試しましたが、このエラーが表示されましたインストールを開始しています...ファイル.treeinfoを取得しています... | 552 B 00:00:00セクションにオプション 'カーネル'がありません: 'images-x86_64' isoファイルを/ mntにマウントし、virt-installで--location / mntを使用します
public_name

@public_name isoをマウントせず、--locationlikeの後にisoへのパスを指定してみてください--location /tmp/centos6.iso
リックチャタム

Ubuntu 16で作業し、isolinux / isolinux.cfgではなくisolinux / txt.cfgを編集しました。
ジョンマク

2

Fedoraインストーラーをテキストモードで実行する必要があります。追加の引数に「テキスト」を追加してみてください。または、「vnc」を追加して、VNCが起動したらインストーラーに接続できるようにすることもできます。


1
新しいlibvirtの場合、-xと--cdromを使用できません。ネットワーク上のどこかに CDROM をマウントし、--location somewhere.com/mounted-iso --graphics none --extra-args "console = ttyS0,115200 text headless" を使用してみてください
-katriel

1

私はしばらくの間、cobblerとkoanを使用してインストールを行ってきました。cobbler内で、Centos60-x86_64プロファイルでカーネルオプションを次のように設定します。

Kernel Options: serial console=ttyS0,115200
Kernel Options (Post Install): console=ttyS0,115200

起動後、console = tty0 console = ttS0,115200を使用して、2つのデバイスでコンソールを表示できます。これはインストールには機能しません。/ etc / grubの下でgrubオプションを編集してgrub.confを再生成すると、シリアルコンソールの設定はカーネルのアップグレード後も維持されます。インストーラーがGUIを開始できないように、カーネルコマンドラインに「テキスト」を追加します。

KVMゲストインスタンスが起動したら、KVMホストにログインしてインスタンスに接続し、次のようにゲストのコンソールに接続します。

[root@vmhost ~]# virsh console guestvm

それからシェルでこれを見ます:

Connected to domain guestvm
Escape character is ^]

CentOS Linux release 6.0 (Final)
Kernel 2.6.32-71.el6.x86_64 on an x86_64

guestvm login: 

最後の注意点として、koanにKVMゲストの1つを構築するように指示するとき、--nogfxスイッチで次のように呼び出します。

koan --server 192.168.1.1 --virt --nogfx --system=guestvm

1

誤って設定されたコンソールが表示されていると思います。

たぶんこれを試してみてください:

まず、grub構成にコンソール行を追加します。たとえば、Archゲストの場合:kernel / vmlinuz26 root = / dev / vda2 ro console = ttyS0,115200次に、/ etc / inittabを編集してttyS0(同じArchゲスト)を有効にします:co:23 :respawn:/ sbin / agetty -8 115200 ttyS0 linux。そして、/ etc / securettyにttyS0があることを確認してください。

詳細はこちら: ` http://www.linux-kvm.com/content/running-kvm-nographics-no-console-output

-編集-

console=ttyS0,115200他の可能なコンソールパラメータを試してみてください。


BTW --extra-args=は他のコンソール設定も直接使用します。
ジョナサンロス

引用したテキストによると、ゲストの/ etc / inittabを変更する必要があります。全体の問題は、どのようにゲストとやり取りするのですか?申し訳ありませんが、わかりません。
-badbishop

編集を参照してください、私はあまり明確ではありませんでした。
ジョナサンロス

はい、質問を投稿する前に--extra-args = 'console = ttyS0'も試しました。
badbishop

申し訳ありませんがconsole=ttyS0,115200、おそらくこれには他にも試してみることができるパラメーターがあります。私はまだあなたがいくつかの説明の誤って設定されたコンソールを持っていると思います。
ジョナサンロス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.