KVM Guest встановлений з консолі. Але як дістатися до консолі гостя?


28

Я намагаюся встановити повністю віртуалізований гість (Fedora 14 x86_64) на KVM (RHEL 6), використовуючи лише командний рядок (і гіпервізор, і гість). Це проходить без помилок і без відчутного результату. Я хотів би знати, як зробити встановлення лише для тексту.

Отже, ось що я зробив:

# 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 (що я і зробив). Якщо я знову з'єднаюся з виршем, я бачу таке:

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? Відповідно до сторінки man-install virt - extra-args працює лише з --location?
slm

4
Я видалив --network bridge:br0, змінив cdromдо locationі extra-argsдо --extra-args='console=tty0 console=ttyS0,115200n8 serial'і це спрацювало!
десь

2
Я лише змінив cdrom на розташування та додав "extra-args". Не потрібно видаляти параметри --workwork.
twan163

1
З будь-якої причини --cdromне працює з додатковою командою, але --location(або -l). Той самий шлях і все.
Рік Чатем

Відповіді:


9

Я скопіював --extra-args='console=ttyS0'десь з Інтернету востаннє, це працює!

  • Немає необхідності у двох "консольних" командах, що відкриває дві консолі замість однієї
  • Не потрібно вручну вказувати швидкість передачі даних.
  • Опція "--serial" застаріла
  • Пристрій консолі RedHat - це "/ dev / ttyS0", а не "/ dev / tty0"

Дивіться: 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' може використовуватися для підключення до послідовного пристрою.

Мені вдалося вирішити це двома способами:

  1. змінивши ізо-зображення та скориставшись --cdromопцією
  2. викривши ізо-зображення як NFS-спільний доступ і використовуючи --locationопцію з--extra-args

1. Модифікація зображення

Щоб змінити параметри ядра на інсталяційному диску iso:

  1. Отримайте програму, яка дозволяє керувати зображеннями, наприклад, ізомастер .
  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-файлу, але я отримав цю помилку. Початок встановлення ... Отримання файлу .treeinfo ... | 552 B 00:00:00 ПОМИЛКА Немає опції 'ядро' у розділі: 'images-x86_64', я монтую iso файл до / mnt та використовую --location / mnt в virt-install
public_name

@public_name Спробуйте не встановлювати iso, а просто вказати шлях до iso після --locationподібного --location /tmp/centos6.iso.
Рік Чатем

Працював над Ubuntu 16, редагував isolinux / txt.cfg замість isolinux / isolinux.cfg.
Джон Макгі

2

Потрібно запустити інсталятор Fedora в текстовому режимі. Спробуйте додати "текст" до додаткових аргументів. Крім того, ви можете спробувати додати "vnc", який дозволить вам підключитися до інсталятора через VNC після його запуску


1
Перевіривши це, для більш нового libvirt ви не можете використовувати -x та --cdrom. Спробуйте встановити компакт-диск десь у мережі та використовувати --locationwhere.com/mount-iso --graphics none --extra-args "console = ttyS0,115200 текст без голови"
katriel

1

Я деякий час займаюся своїми інсталяціями, використовуючи шліфувальну машинку та коан. В моїй програмі я встановив такі параметри ядра, як у своєму профілі Centos60-x86_64:

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

Після завантаження ви можете використовувати console = tty0 console = ttS0,115200, щоб отримати консоль для показу на двох пристроях; це не працює для встановлення. Якщо ви редагуєте параметри grub під / etc / grub та відновлюєте grub.conf, налаштування послідовних консолей переживуть оновлення ядра. Додайте "текст" до командного рядка ядра, щоб запобігти установці запускати графічний інтерфейс.

Коли запускаються мої гостьові екземпляри 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: 

Останнє зауваження, коли я кажу коану розпочати будівництво одного з моїх гостей KVM, я називаю це перемикачем --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

--edit--

Ви можете спробувати console=ttyS0,115200перевірити інші можливі параметри консолі.


BTW також --extra-args=приймає інші налаштування консолі.
Джонатан Росс

Відповідно до тексту, який ви цитували, мені потрібно змінити / etc / inittab в гостях. Вся проблема полягає в тому, як я взаємодію з гостем? Вибачте, я не отримую цього.
badbishop

Вибачте, побачите редагування, я не дуже зрозуміла.
Джонатан Росс

Так, я спробував --extra-args = 'console = ttyS0' також перед тим, як ставити питання.
badbishop

Вибачте, що я мав на увазі, console=ttyS0,115200і, мабуть, є інші параметри для цього, які ви можете спробувати. Я все одно здогадаюся, у вас неправильно налаштована консоль якогось опису.
Джонатан Росс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.