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

ตอนนี้คืออะไร ตามที่ฉันเข้าใจหลังจาก googling สองสามวันฉันควรเห็นผลลัพธ์ของแขกจากการติดตั้งข้อความ แต่ไม่มีอะไรเกิดขึ้น 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 ได้อย่างไร ตามหน้า man-install --extra-args ใช้งานได้กับ --location เท่านั้น
slm

4
ฉันลบ--network bridge:br0เปลี่ยนcdromเป็นlocationและextra-argsไป--extra-args='console=tty0 console=ttyS0,115200n8 serial'แล้วและใช้งานได้!
บาง

2
ฉันเปลี่ยน cdrom ไปเป็นที่ตั้งและเพิ่ม "ส่วนเสริมพิเศษ" เท่านั้น ไม่จำเป็นต้องลบตัวเลือก --network
twan163

1
ไม่ว่าด้วยเหตุผลใดก็ตาม--cdromจะใช้ไม่ได้กับส่วนเกินพิเศษ แต่--location(หรือ-l) ทำ เส้นทางเดียวกันและทุกอย่าง
Rick Chatham

คำตอบ:


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 และเครื่องเทศ นี่คือตัวอย่าง: 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เป็นวิธีการแก้ปัญหาเช่นกัน


ขอบคุณสำหรับการตอบ dyasny การเลือกคะแนนของคุณ: 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 แล้ว แต่ฉันพบข้อผิดพลาดนี้กำลังเริ่มการติดตั้ง ... กำลังดึงไฟล์ 552 B 00:00:00 ข้อผิดพลาดไม่มีตัวเลือก 'เคอร์เนล' ในส่วน: 'images-x86_64' i เมานท์ไฟล์ iso ไปที่ / mnt และใช้ - การจัดวาง / mnt ใน virt-install
public_name

@public_name พยายามที่จะไม่ติดตั้งมาตรฐาน ISO แต่เพียงการระบุเส้นทางไปยัง ISO หลังจากเช่น--location --location /tmp/centos6.iso
Rick Chatham

ทำงานกับ Ubuntu 16, แก้ไข isolinux / txt.cfg แทน isolinux / isolinux.cfg
John McGehee

2

คุณต้องรันโปรแกรมติดตั้ง Fedora ในโหมดข้อความ ลองเพิ่ม 'ข้อความ' ลงในส่วนเสริม หรือคุณอาจลองเพิ่ม "vnc" ซึ่งจะช่วยให้คุณเชื่อมต่อกับตัวติดตั้งผ่าน VNC เมื่อมันเริ่มขึ้น


1
ลองดูสิสำหรับ libvirt รุ่นใหม่คุณไม่สามารถใช้ -x และ --cdrom ได้ ลองติดตั้งบาง cdrom บนเครือข่ายและการใช้ --location somewhere.com/mounted-iso --graphics ไม่มี --extra-args "คอนโซล = หัวขาดข้อความ ttyS0,115200"
Katriel

1

ฉันได้ทำการติดตั้งของฉันในขณะนี้ใช้พายผลไม้และ koan ภายในพายผลไม้ฉันตั้งค่าตัวเลือกเคอร์เนลของฉันอย่างนั้นภายใต้โปรไฟล์ Centos60-x86_64 ของฉัน:

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

หลังจากบูตคุณสามารถใช้ console = tty0 console = ttS0,115200 เพื่อรับ console เพื่อแสดงบนอุปกรณ์สองเครื่อง สิ่งนี้ใช้ไม่ได้กับการติดตั้ง หากคุณแก้ไขตัวเลือกด้วงใต้ / etc / grub และสร้าง grub.conf ใหม่การตั้งค่าคอนโซลแบบอนุกรมจะสามารถอยู่รอดได้ในการอัพเกรดเคอร์เนล เพิ่ม "text" ลงในบรรทัดคำสั่งเคอร์เนลเพื่อป้องกันไม่ให้โปรแกรมติดตั้งเริ่มต้น 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 ของฉันฉันเรียกมันด้วยสวิตช์ --nogfx ดังนี้:

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

1

ฉันเดาว่าคุณเห็นคอนโซลที่กำหนดค่าผิดพลาด

อาจลองสิ่งนี้หรือคล้ายกัน:

ก่อนอื่นฉันจะเพิ่มบรรทัดคอนโซลในการตั้งค่าด้วงของฉันเช่นสำหรับแขก 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

--edit--

คุณสามารถลองconsole=ttyS0,115200และตรวจสอบพารามิเตอร์คอนโซลอื่น ๆ ที่อาจเป็นไปได้


BTW --extra-args=ใช้การตั้งค่าคอนโซลอื่น ๆ โดยตรงเช่นกัน
Jonathan Ross

ตามข้อความที่คุณยกมาฉันต้องแก้ไข / etc / inittab กับแขก ปัญหาทั้งหมดคือฉันจะโต้ตอบกับแขกได้อย่างไร ขออภัยฉันไม่ได้รับ
badbishop

ขออภัยที่เห็นการแก้ไขฉันไม่ชัดเจน
Jonathan Ross

ใช่ฉันได้ลอง --extra-args = 'console = ttyS0' ก่อนที่จะโพสต์คำถาม
badbishop

ขออภัยฉันหมายถึงconsole=ttyS0,115200และมีพารามิเตอร์อื่น ๆ สำหรับสิ่งนี้ที่คุณสามารถลองได้ ฉันยังคงคาดเดาว่าคุณมีคอนโซลคำอธิบายบางอย่างที่ไม่ถูกต้อง
Jonathan Ross
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.