Frage KVM Guest von der Konsole aus installiert. Aber wie kommt man zur Gästekonsole?


Ich versuche, einen vollständig virtualisierten Gast (Fedora 14 x86_64) auf KVM (RHEL 6) zu installieren, indem ich nur die Kommandozeile benutze (sowohl Hypervisor als auch Gast). Es geht ohne Fehler und ohne greifbares Ergebnis. Ich würde gerne wissen, wie man eine reine Text-Installation macht.

Also, hier ist was ich getan habe:

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

Was jetzt? Wie ich nach dem googlen für ein paar Tage verstehe, sollte ich die Ausgabe des Gastes von der Text-Installation sehen, aber nichts passiert. virt-viewer kann keine Verbindung zu ihm herstellen, was bedeutet, dass ich alle Optionen durch Hinzufügen von --help (was ich getan habe) erkunde. Wenn ich mich wieder mit Virsh verbinde, sehe ich Folgendes:

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

Dies zeigt, dass die VM ausgeführt wird

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

Qemu-Protokoll:

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

Ausgabe von /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>

Ich vermisse offensichtlich etwas, was viele andere nicht tun, aber was ist es? Danke im Voraus!


27
2018-04-10 15:17


Ursprung


Wie konnten Sie den --extra-args Schalter mit --cdrom arbeiten lassen? Laut der virt-install man-Seite --extra-args funktioniert nur mit --location? - slm
Ich entfernte --network bridge:br0, geändert cdromzu location, und extra-args zu --extra-args='console=tty0 console=ttyS0,115200n8 serial' und es hat funktioniert! - some
Ich habe nur cdrom in location geändert und "extra-args" hinzugefügt. Keine Notwendigkeit, die Netzwerkoptionen zu entfernen. - twan163
Warum auch immer --cdrom funktioniert nicht mit extra-args aber --location (oder -l) tut es. Gleicher Pfad und alles. - Rick Chatham


Antworten:


Ich habe kopiert --extra-args='console=ttyS0' Irgendwo aus dem Internet letztes Mal, es funktioniert!

  • Keine Notwendigkeit für zwei "Konsolen" -Befehle, die nur zwei Konsolen statt einer öffnen
  • Sie müssen die Baudrate nicht manuell angeben.
  • Die Option "--serial" ist veraltet
  • Das RedHat-Konsolengerät ist "/ dev / ttyS0", nicht "/ dev / tty0"

Sehen: http://anconda-installer.readthedocs.io/en/latest/boot-options.html


9
2018-06-19 04:42





--nographics wird verwendet, und Sie haben keine Konsole neben der tty0-Konsole im Gast eingerichtet. Wenn Sie eine grafische Konsole benötigen, die speziell remote verfügbar ist, müssen Sie vga und vnc oder qxl und spice aktivieren. dies ist ein Beispiel: 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 oder http://ubuntuforums.org/showpost.php?p=9610421&postcount=7 ist auch eine Lösung.


7
2018-04-10 15:31



Danke fürs Antworten, dyasny. Wählen Sie Ihre Punkte: 1. Nein, ich möchte keine grafische Konsole (siehe meinen Beitrag) 2. Ja, ich habe diese und ähnliche Lösungen versucht. Es hat nicht für mich funktioniert. - badbishop
Ich würde versuchen, auf linux-kvm.org oder auf der libvirt Mailingliste zu fragen - dyasny


Ich hatte ein ähnliches Problem, als ich versuchte, eine Nur-Text-Installation von CentOS durchzuführen. Es läuft alles darauf hinaus, Kernel-Argumente zum Angeben der seriellen Ausgabekonsole hinzuzufügen console=ttyS0 damit du dich dann mit ihm verbinden kannst --graphics none oder --nographics wird eingesetzt. Von virt-installHandbuch

- Grafiken keine

Für den Gast wird keine grafische Konsole zugewiesen. Für vollständig virtualisierte Gäste (Xen FV oder QEmu / KVM) muss eine Textkonsole am ersten seriellen Port des Gastes konfiguriert sein (dies kann über die Option --extra-args geschehen). Xen PV wird dies automatisch einrichten. Mit dem Befehl 'virsh console NAME' kann eine Verbindung zum seriellen Gerät hergestellt werden.

Ich habe es auf zwei Arten gelöst:

  1. indem Sie das ISO-Image modifizieren und den --cdrom Möglichkeit
  2. durch Aussetzen des ISO-Images als NFS-Share und Verwenden des --location Option mit --extra-args

1. Ändern des Bildes

Um die Kernel-Parameter auf der iso-Installationsdiskette zu ändern:

  1. Holen Sie sich ein Programm, mit dem Sie Bilder bearbeiten können, zum Beispiel Isomaster.
  2. Gehe zum isolinux/isolinux.cfg Datei auf dem Bild, öffnen Sie es, finden Sie die erste Zeile mit initrd= darauf und anhängen console=ttyS0 dazu und alle anderen Zeilen, die den genannten Parameter haben.
  3. Speichern Sie die Datei und das Bild.
  4. Verwenden Sie das geänderte Bild mit virt-install wie üblich, z.B.

    $ 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
    

Erledigt.

2. Verwenden einer NFS-Freigabe

  1. Montiere das Bild:

    $ sudo mount -o loop,unhide -t iso9660 -r /home/user/images/CentOS.iso /home/user/mnt/cdrom
    
  2. Starten Sie den NFS-Dienst, wenn er nicht ausgeführt wird: service nfs start

  3. Fügen Sie die folgende Zeile hinzu /etc/exports um es den Kunden zur Verfügung zu stellen:

    /home/user/mnt/cdrom    *(ro,insecure,all_squash)
    
  4. Aktualisieren Sie die Exporttabelle des Systems mit:

    $ exportfs -r
    
  5. Verwenden Sie die Freigabe mit virt-install Achten Sie darauf, die --extra-args, z.B.:

    $ 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. Während der Installation von CentOS erhalten Sie eine Abfrage nach dem Speicherort der Installationsdateien. Sie müssen die Adresse Ihres Computers und den vollständigen Pfad zur Freigabe eingeben.

Erledigt.


6
2018-04-08 13:39



Ich habe Ihre zweite Methode versucht, ISO-Datei mounten, aber ich habe diesen Fehler Starten von Install ... Abrufen der Datei .treeinfo ... | 552 B 00:00:00 FEHLER Keine Option 'kernel' im Abschnitt: 'images-x86_64' Ich mounte die iso-Datei nach / mnt und benutze --location / mnt in virt-install - public_name
@public_name Versuchen Sie nicht, das iso zu mounten, sondern nur den Pfad zum iso nach anzugeben --location mögen --location /tmp/centos6.iso. - Rick Chatham
Arbeitete auf Ubuntu 16, Bearbeitung von isolinux / txt.cfg statt isolinux / isolinux.cfg. - John McGehee


Sie müssen das Fedora-Installationsprogramm im Textmodus ausführen. Fügen Sie den zusätzlichen Argumenten "Text" hinzu. Alternativ können Sie versuchen, "vnc" hinzuzufügen, damit Sie sich nach dem Start über VNC mit dem Installer verbinden können


2
2017-08-05 21:01



Habe es überprüft, für eine neuere libvirt kannst du -x und --cdrom nicht benutzen. Versuchen Sie, die CD-ROM irgendwo im Netzwerk zu installieren und --location zu verwenden somewhere.com/mounted-iso --graphics keine --Extra-args "console = ttyS0,115200 Text kopflos" - katriel


Ich mache meine Installationen schon seit einiger Zeit mit Cobbler und Koan. Innerhalb von cobbler habe ich meine Kernel-Optionen wie unter meinem Centos60-x86_64-Profil festgelegt:

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

Nach dem Booten können Sie console = tty0 console = ttS0115200 verwenden, um die Konsole auf zwei Geräten anzuzeigen; Dies funktioniert nicht für die Installation. Wenn Sie die grub-Optionen unter / etc / grub bearbeiten und grub.conf neu generieren, überstehen die Einstellungen der seriellen Konsole ein Kernel-Upgrade. Fügen Sie "text" zur Kernel-Befehlszeile hinzu, um zu verhindern, dass das Installationsprogramm eine GUI startet.

Wenn meine KVM-Gast-Instanzen gestartet werden, verbinde ich mich mit ihnen, während ich am KVM-Host angemeldet bin, und verbinde mich mit einer Gastkonsole wie folgt:

[root@vmhost ~]# virsh console guestvm

Ich sehe das dann in meiner Schale:

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: 

Eine letzte Anmerkung, wenn ich koan sage, dass ich anfangen soll, einen meiner KVM-Gäste zu bauen, nenne ich das mit dem --nogfx-Schalter wie folgt:

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

1
2017-11-17 04:05





Ich nehme an, Sie sehen eine falsch konfigurierte Konsole.

Vielleicht versuche dies oder ähnliches:

Zuerst füge ich console line zu meiner grub config, z. für einen Arch-Gast:   kernel / vmlinuz26 root = / dev / vda2 ro console = ttyS0,115200 Dann bearbeite ich   / etc / inittab, um ttyS0 zu aktivieren (gleicher Arch-Gast):   co: 23: respawn: / sbin / agetty -8 115200 ttyS0 linux. Und stell dich sicher   Habe ttyS0 in deinem / etc / securetty.

Mehr Infos hier: `http://www.linux-kvm.com/content/running-kvm-nographics-no-console-output

--bearbeiten--

Du könntest es versuchen console=ttyS0,115200und überprüfe vielleicht andere mögliche Konsolenparameter.


1
2018-04-10 16:11



Übrigens --extra-args=nimmt auch andere Konsoleneinstellungen direkt. - Jonathan Ross
Laut dem Text, den du zitiert hast, muss ich / etc / inittab auf guest ändern. Das ganze Problem ist: Wie interagiere ich mit Gästen? Tut mir leid, ich verstehe es nicht. - badbishop
Sorry siehe Bearbeiten, ich war nicht sehr klar. - Jonathan Ross
Ja, ich habe --extra-args = 'console = ttyS0' auch vor dem Posten der Frage ausprobiert. - badbishop
Entschuldigung, ich meinte console=ttyS0,115200 und vermutlich gibt es andere Parameter dafür, die Sie versuchen können. Ich würde immer noch vermuten, dass Sie eine falsch konfigurierte Konsole mit einer Beschreibung haben. - Jonathan Ross