KVM Гость установлен с консоли. Но как добраться до консоли гостя?


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

Что теперь? Как я понимаю, после нескольких дней поиска в Google я должен увидеть вывод гостя из текстовой установки, но ничего не происходит. 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 log:

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-странице virt-install --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

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. изменив 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-файла, но я получил эту ошибку Начало установки ... Получение файла .treeinfo ... | 552 B 00:00:00 ОШИБКА Нет опции 'kernel' в разделе: 'images-x86_64' я монтирую iso-файл в / mnt и использую --location / mnt в virt-install
public_name

@public_name Попробуйте не монтировать iso, а просто указать путь к iso после --locationlike --location /tmp/centos6.iso.
Рик Чатем

Работал в Ubuntu 16, редактируя isolinux / txt.cfg вместо isolinux / isolinux.cfg.
Джон МакГи

2

Вам нужно запустить установщик Fedora в текстовом режиме. Попробуйте добавить «текст» к дополнительным аргументам. В качестве альтернативы, вы можете попробовать добавить «vnc», который позволит вам подключиться к установщику через VNC после его запуска.


1
Проверено, для более новой libvirt, вы не можете использовать -x и --cdrom. Попробуйте установки CDROM где - то в сети и с помощью --location somewhere.com/mounted-iso --graphics NONE --extra-арг «консоль = ttyS0,115200 текст без головы»
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, чтобы консоль отображалась на двух устройствах; это не работает для установки. Если вы отредактируете параметры 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: 

И последнее замечание: когда я говорю koan начать сборку одного из моих гостей 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. И убедитесь, что у вас есть ttyS0 в вашем / etc / securetty.

Более подробная информация здесь: ` http://www.linux-kvm.com/content/running-kvm-nographics-no-console-output

--редактировать--

Вы можете попробовать console=ttyS0,115200и проверить другие возможные параметры консоли, возможно.


Кстати, --extra-args=другие параметры консоли также принимаются напрямую.
Джонатан Росс

В соответствии с текстом, который вы цитировали, мне нужно изменить / etc / inittab на guest. Вся проблема в том, как мне взаимодействовать с гостем? Извините, я не понимаю.
Badbishop

Извините, смотрите редактировать, я не очень ясно.
Джонатан Росс

Да, я пробовал --extra-args = 'console = ttyS0', прежде чем опубликовать вопрос.
Badbishop

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