KVM Guest diinstal dari konsol. Tapi bagaimana menuju ke konsol tamu?

28

Saya mencoba menginstal tamu yang sepenuhnya tervirtualisasi (Fedora 14 x86_64) pada KVM (RHEL 6), hanya menggunakan command-line (baik hypervisor dan tamu). Ini berjalan tanpa kesalahan, dan tanpa hasil yang nyata. Saya ingin tahu cara melakukan instalasi hanya teks.

Jadi, inilah yang saya lakukan:

# 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 ^]
ÿ

Sekarang apa? Seperti yang saya pahami setelah googling selama beberapa hari, saya akan melihat output tamu dari instalasi teks, tetapi tidak ada yang terjadi. virt-viewer tidak dapat terhubung, mohon menyarankan agar saya menjelajahi semua opsi dengan menambahkan --help (yang saya lakukan). Jika saya terhubung kembali dengan virsh, saya melihat ini:

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 ^]

Ini menunjukkan bahwa VM sedang berjalan

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

Log 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

Output dari /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>

Saya jelas kehilangan sesuatu yang tidak dimiliki banyak orang lain, tetapi apa itu? Terima kasih sebelumnya!

badbishop
sumber
3
Bagaimana Anda bisa mengaktifkan --extra-args untuk bekerja dengan --cdrom? Menurut halaman manual virt-install --ext-args hanya berfungsi dengan --lokasi?
slm
4
Saya dihapus --network bridge:br0, diubah cdrommenjadi location, dan extra-argske --extra-args='console=tty0 console=ttyS0,115200n8 serial'dan berhasil!
beberapa
2
Saya hanya mengubah cdrom ke lokasi dan menambahkan "ekstra-args". Tidak perlu menghapus opsi --network.
twan163
1
Untuk alasan apa pun --cdromtidak bekerja dengan extra-args tetapi --location(atau -l) tidak. Jalan yang sama dan segalanya.
Rick Chatham

Jawaban:

9

Saya menyalin di --extra-args='console=ttyS0'suatu tempat dari Internet terakhir kali, itu berhasil!

  • Tidak perlu dua perintah "konsol", yang hanya membuka dua konsol bukan satu
  • Tidak perlu secara manual menentukan baud rate.
  • Opsi "--serial" telah usang
  • Perangkat konsol RedHat adalah "/ dev / ttyS0", bukan "/ dev / tty0"

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

brayden
sumber
7

--nographicsdigunakan, dan Anda tidak memiliki konsol yang diatur di dalam tamu, selain konsol tty0. Jika Anda ingin konsol grafis, terutama tersedia jarak jauh Anda harus mengaktifkan vga dan vnc, atau qxl dan rempah-rempah. ini adalah contoh: 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 atau http://ubuntuforums.org/showpost.php?p=9610421&postcount=7 juga merupakan solusi.

dyasny
sumber
Terima kasih telah menjawab, dyasny. Memilih poin Anda: 1. Tidak, saya TIDAK ingin konsol grafis (lihat posting saya) 2. Ya, saya telah mencoba ini dan solusi serupa. Itu tidak berhasil untuk saya.
badbishop
Saya akan mencoba bertanya di linux-kvm.org atau di milis libvirt
dyasny
6

Saya memiliki masalah yang sama ketika mencoba melakukan instalasi CentOS hanya teks. Itu semua bermuara pada menambahkan argumen kernel untuk menentukan konsol keluaran serial console=ttyS0sehingga Anda kemudian dapat terhubung ketika --graphics noneatau --nographicsdigunakan. Dari virt-installmanual:

- tidak ada graphics

Konsol grafis tidak akan dialokasikan untuk tamu. Tamu yang sepenuhnya tervirtualisasi (Xen FV atau QEmu / KVM) perlu memiliki konsol teks yang dikonfigurasi pada port serial pertama di tamu (ini dapat dilakukan melalui opsi --ext-args). Xen PV akan mengatur ini secara otomatis. Perintah 'virsh console NAME' dapat digunakan untuk terhubung ke perangkat serial.

Saya telah berhasil menyelesaikannya dengan dua cara:

  1. dengan memodifikasi gambar iso dan menggunakan --cdromopsi
  2. dengan mengekspos gambar iso sebagai berbagi NFS dan menggunakan --locationopsi dengan--extra-args

1. Memodifikasi gambar

Untuk memodifikasi parameter kernel pada disk instalasi iso:

  1. Dapatkan program yang memungkinkan memanipulasi gambar, misalnya, isomaster .
  2. Pergi ke ke isolinux/isolinux.cfgfile pada gambar, buka, cari baris pertama initrd=dengannya dan tambahkan console=ttyS0padanya dan semua baris lain yang memiliki parameter yang disebutkan.
  3. Simpan file dan gambar.
  4. Gunakan gambar yang dimodifikasi dengan virt-installseperti biasa, misalnya:

    $ 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
    

Selesai

2. Menggunakan bagian NFS

  1. Pasang gambar:

    $ sudo mount -o loop,unhide -t iso9660 -r /home/user/images/CentOS.iso /home/user/mnt/cdrom
    
  2. Mulai layanan NFS jika tidak berjalan: service nfs start

  3. Tambahkan baris berikut /etc/exportsuntuk membuatnya tersedia untuk klien:

    /home/user/mnt/cdrom    *(ro,insecure,all_squash)
    
  4. Refresh tabel ekspor sistem dengan:

    $ exportfs -r
    
  5. Gunakan bagian dengan virt-installmemastikan untuk menanamkan --extra-args, misalnya:

    $ 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. Selama instalasi CentOS Anda mendapatkan prompt menanyakan tentang lokasi file instalasi. Anda harus mengetik alamat mesin Anda dan path lengkap ke share.

Selesai

Johnny Baloney
sumber
saya telah mencoba metode kedua Anda untuk me-mount file iso tetapi saya mendapatkan kesalahan ini. Mulai menginstal ... Mengambil file .treeinfo ... | 552 B 00:00:00 GALAT Tidak ada opsi 'kernel' di bagian: 'images-x86_64' saya me-mount file iso ke / mnt dan menggunakan --lokasi / mnt dalam instal-install
public_name
@public_name Cobalah untuk tidak memasang iso tetapi hanya menentukan path ke iso setelah --locationsuka --location /tmp/centos6.iso.
Rick Chatham
Bekerja pada Ubuntu 16, mengedit isolinux / txt.cfg alih-alih isolinux / isolinux.cfg.
John McGehee
2

Anda perlu menjalankan penginstal Fedora dalam mode teks. Coba tambahkan 'teks' ke argumen tambahan. Atau, Anda dapat mencoba menambahkan "vnc" yang memungkinkan Anda untuk terhubung ke penginstal melalui VNC setelah dimulai

katriel
sumber
1
Memeriksanya, untuk libvirt yang lebih baru, Anda tidak dapat menggunakan -x dan --cdrom. Coba pasang cdrom di suatu tempat di jaringan dan gunakan --lokasi somewhere.com/mounted-iso --graphics none --extra-args "console = ttyS0,115200 teks tanpa kepala"
katriel
1

Saya sudah melakukan instalasi saya untuk sementara waktu sekarang menggunakan tukang sepatu dan koan. Di dalam tukang sepatu saya menetapkan opsi kernel seperti di bawah profil Centos60-x86_64 saya:

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

Setelah boot, Anda dapat menggunakan konsol = tty0 konsol = ttS0,115200 untuk mendapatkan konsol untuk ditampilkan di dua perangkat; ini tidak berfungsi untuk instalasi. Jika Anda mengedit opsi grub di bawah / etc / grub dan membuat ulang grub.conf, pengaturan konsol serial akan selamat dari peningkatan kernel. Tambahkan "teks" ke baris perintah kernel untuk mencegah pemasang memulai GUI.

Ketika instance tamu KVM saya mulai, saya kemudian terhubung ke mereka saat login ke host KVM dan terhubung ke konsol tamu seperti ini:

[root@vmhost ~]# virsh console guestvm

Saya kemudian melihat ini di shell saya:

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: 

Satu catatan terakhir, ketika saya memberitahu koan untuk mulai membangun salah satu tamu KVM saya, saya menyebutnya dengan saklar --nogfx seperti:

koan --server 192.168.1.1 --virt --nogfx --system=guestvm
slm
sumber
1

Saya kira Anda melihat konsol yang salah konfigurasi.

Mungkin coba ini atau yang serupa:

Pertama saya menambahkan baris konsol ke konfigurasi grub saya, misalnya untuk tamu Arch: kernel / vmlinuz26 root = / dev / vda2 ro console = ttyS0,115200 Kemudian saya mengedit / etc / inittab untuk mengaktifkan ttyS0 (tamu Arch yang sama): co: 23 : respawn: / sbin / agetty -8 115200 ttyS0 linux. Dan pastikan Anda memiliki ttyS0 di / etc / securetty Anda.

Info lebih lanjut di sini: ` http://www.linux-kvm.com/content/running-kvm-nographics-no-console-output

--edit--

Anda dapat mencoba console=ttyS0,115200dan memeriksa parameter konsol lainnya yang mungkin.

Jonathan Ross
sumber
BTW juga --extra-args=mengambil pengaturan konsol lainnya secara langsung.
Jonathan Ross
Menurut teks yang Anda kutip, saya perlu memodifikasi / etc / inittab pada tamu. Seluruh masalah adalah: bagaimana cara saya berinteraksi dengan tamu? Maaf, saya tidak mengerti.
badbishop
Maaf melihat edit, saya tidak begitu jelas.
Jonathan Ross
Ya, saya sudah mencoba --extra-args = 'console = ttyS0' juga sebelum memposting pertanyaan.
badbishop
Maaf maksud saya console=ttyS0,115200dan mungkin ada parameter lain untuk ini yang bisa Anda coba. Saya masih menduga Anda memiliki konsol yang salah konfigurasi dari beberapa deskripsi.
Jonathan Ross