KVM Guest được cài đặt từ bàn điều khiển. Nhưng làm thế nào để đến được bàn điều khiển của khách?


28

Tôi đang cố gắng cài đặt một khách ảo hóa hoàn toàn (Fedora 14 x86_64) trên KVM (RHEL 6), chỉ sử dụng dòng lệnh (cả hypanneror và khách). Nó không có lỗi, và không có kết quả rõ ràng. Tôi muốn biết làm thế nào để cài đặt chỉ văn bản.

Vì vậy, đây là những gì tôi đã làm:

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

Giờ thì sao? Theo tôi hiểu sau khi googling vài ngày, tôi sẽ thấy đầu ra của khách từ cài đặt văn bản, nhưng không có gì xảy ra. virt-viewer không thể kết nối với nó, vui lòng đề nghị tôi khám phá tất cả các tùy chọn bằng cách thêm --help (mà tôi đã làm). Nếu tôi kết nối lại với virsh, tôi thấy điều này:

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

Điều này cho thấy VM đang chạy

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

Nhật ký 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

Đầu ra của /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>

Tôi rõ ràng đang thiếu thứ gì đó mà nhiều người khác không có, nhưng đó là gì? Thanx trước!


3
Làm thế nào bạn có thể để chuyển đổi --extra-args hoạt động với --cdrom? Theo trang man virt-install --extra-args chỉ hoạt động với --location?
slm

4
Tôi đã gỡ bỏ --network bridge:br0, thay đổi cdromđến location, và extra-argsđể --extra-args='console=tty0 console=ttyS0,115200n8 serial'và nó làm việc!
một số

2
Tôi chỉ thay đổi cdrom thành vị trí và thêm "ngoại lệ". Không cần phải loại bỏ các tùy chọn --network.
twan163

1
Vì bất kỳ lý do gì --cdromkhông hoạt động với các đối số phụ nhưng --location(hoặc -l) thì có. Cùng một con đường và mọi thứ.
Rick Chatham

Câu trả lời:


9

Tôi đã sao chép --extra-args='console=ttyS0'từ đâu đó từ Internet lần trước, nó hoạt động!

  • Không cần hai lệnh "console", chỉ cần mở hai bàn giao tiếp thay vì một
  • Không cần chỉ định thủ công tốc độ baud.
  • Tùy chọn "--serial" không được dùng nữa
  • Thiết bị bảng điều khiển RedHat là "/ dev / ttyS0", không phải "/ dev / tty0"

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


7

--nographicsđược sử dụng và bạn không có giao diện điều khiển nào được thiết lập trong máy khách, ngoài giao diện điều khiển tty0. Nếu bạn muốn có một bảng điều khiển đồ họa, đặc biệt là có sẵn từ xa, bạn cần kích hoạt vga và vnc, hoặc qxl và gia vị. đây là một ví dụ: http://www.linux-kvm.com/content/tip-how-run-headless-guest-machine-USE-vnc-kvm

http://www.linux-kvm.com/content/rasty-kvm-nographics-no-console-output hoặc http://ubuntuforums.org/showpost.php?p=9610421&postcount=7 cũng là một giải pháp.


Cảm ơn đã trả lời, dyasny. Chọn điểm của bạn: 1. Không, tôi KHÔNG muốn có bảng điều khiển đồ họa (xem bài đăng của tôi) 2. Có, tôi đã thử cách này và các giải pháp tương tự. Nó không làm việc cho tôi.
badbishop

Tôi sẽ thử hỏi trên linux-kvm.org hoặc trên danh sách gửi thư libvirt
dyasny

6

Tôi gặp vấn đề tương tự khi cố gắng thực hiện cài đặt CentOS chỉ có văn bản. Tất cả tập trung vào việc thêm các đối số kernel để chỉ định bảng điều khiển đầu ra nối tiếp console=ttyS0để sau đó bạn có thể kết nối với nó khi --graphics nonehoặc --nographicsđược sử dụng. Từ virt-installhướng dẫn sử dụng:

- đồ họa không

Không có giao diện điều khiển đồ họa sẽ được phân bổ cho khách. Khách ảo hóa hoàn toàn (Xen FV hoặc QEmu / KVM) sẽ cần phải có bảng điều khiển văn bản được định cấu hình trên cổng nối tiếp đầu tiên trong máy khách (điều này có thể được thực hiện thông qua tùy chọn --extra-args). Xen PV sẽ tự động thiết lập điều này. Lệnh 'virsh console NAME' có thể được sử dụng để kết nối với thiết bị nối tiếp.

Tôi đã xoay sở để giải quyết nó theo hai cách:

  1. bằng cách sửa đổi hình ảnh iso và sử dụng --cdromtùy chọn
  2. bằng cách hiển thị hình ảnh iso dưới dạng chia sẻ NFS và sử dụng --locationtùy chọn với--extra-args

1. Sửa đổi hình ảnh

Để sửa đổi các tham số kernel trên đĩa cài đặt iso:

  1. Lấy một chương trình cho phép thao tác với hình ảnh, ví dụ, isomaster .
  2. Đi đến isolinux/isolinux.cfgtệp trên hình ảnh, mở nó, tìm dòng đầu tiên với initrd=nó và nối console=ttyS0vào nó và tất cả các dòng khác có tham số được đề cập.
  3. Lưu tập tin và hình ảnh.
  4. Sử dụng hình ảnh sửa đổi virt-installnhư bình thường, ví dụ:

    $ 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
    

Làm xong.

2. Sử dụng chia sẻ NFS

  1. Gắn kết hình ảnh:

    $ sudo mount -o loop,unhide -t iso9660 -r /home/user/images/CentOS.iso /home/user/mnt/cdrom
    
  2. Bắt đầu dịch vụ NFS nếu không chạy: service nfs start

  3. Thêm dòng sau vào /etc/exportsđể làm cho nó có sẵn cho khách hàng:

    /home/user/mnt/cdrom    *(ro,insecure,all_squash)
    
  4. Làm mới bảng xuất của hệ thống với:

    $ exportfs -r
    
  5. Sử dụng chia sẻ với virt-installđảm bảo bao gồm --extra-args, ví dụ:

    $ 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. Trong quá trình cài đặt CentOS, bạn nhận được một câu hỏi về vị trí của các tệp cài đặt. Bạn phải nhập địa chỉ của máy và đường dẫn đầy đủ để chia sẻ.

Làm xong.


tôi đã thử phương pháp thứ hai của bạn để gắn tệp iso nhưng tôi gặp lỗi này Bắt đầu cài đặt ... Truy xuất tệp .treeinfo ... | 552 B 00:00:00 LRI Không có tùy chọn 'kernel' trong phần: 'hình ảnh-x86_64' i gắn tệp iso vào / mnt và sử dụng --location / mnt trong virt-install
public_name

@public_name Hãy thử không gắn iso mà chỉ chỉ định đường dẫn đến iso sau khi --locationthích --location /tmp/centos6.iso.
Rick Chatham

Hoạt động trên Ubuntu 16, chỉnh sửa isolinux / txt.cfg thay vì isolinux / isolinux.cfg.
John McGehee

2

Bạn cần chạy trình cài đặt Fedora ở chế độ văn bản. Hãy thử thêm 'văn bản' vào các đối số phụ. Ngoài ra, bạn có thể thử thêm "vnc" cho phép bạn kết nối với trình cài đặt qua VNC sau khi được khởi động


1
Đã kiểm tra, đối với một libvirt mới hơn, bạn không thể sử dụng -x và --cdrom. Hãy thử gắn cdrom ở đâu đó trên mạng và sử dụng --location ở đâu đó.com / mounted-iso --graphics none --extra-args "console = ttyS0,115200 văn bản không đầu"
katriel

1

Tôi đã thực hiện các cài đặt của mình trong một thời gian bây giờ bằng cách sử dụng cobbler và công án. Trong cobbler, tôi đặt các tùy chọn kernel của mình như vậy trong hồ sơ Centos60-x86_64 của tôi:

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

Sau khi khởi động, bạn có thể sử dụng console = tty0 console = ttS0,115200 để giao diện điều khiển hiển thị trên hai thiết bị; Điều này không làm việc để cài đặt. Nếu bạn chỉnh sửa các tùy chọn grub trong / etc / grub và tạo lại grub.conf, cài đặt bảng điều khiển nối tiếp sẽ tồn tại trong bản nâng cấp kernel. Thêm "văn bản" vào dòng lệnh kernel để ngăn trình cài đặt khởi động GUI.

Khi các phiên bản khách KVM của tôi bắt đầu, sau đó tôi kết nối với chúng trong khi đăng nhập vào máy chủ KVM và kết nối với bảng điều khiển của khách như thế này:

[root@vmhost ~]# virsh console guestvm

Sau đó tôi thấy điều này trong vỏ của tôi:

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: 

Một lưu ý cuối cùng, khi tôi bảo công án bắt đầu xây dựng một trong những vị khách KVM của mình, tôi gọi nó bằng công tắc --nogfx như vậy:

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

1

Tôi đoán bạn đang nhìn thấy một giao diện điều khiển bị cấu hình sai.

Có thể thử cái này hoặc tương tự:

Đầu tiên tôi thêm dòng giao diện điều khiển vào cấu hình grub của mình, ví dụ: đối với khách Arch: kernel / vmlinuz26 root = / dev / vda2 ro console = ttyS0,115200 Sau đó tôi chỉnh sửa / etc / inittab để bật ttyS0 (cùng một khách Arch): co: 23 : hồi sinh: / sbin / agetty -8 115200 ttyS0 linux. Và hãy chắc chắn rằng bạn có ttyS0 trong / etc / securetty.

Thêm thông tin ở đây: ` http://www.linux-kvm.com/content/rucky-kvm-nographics-no-console-output

--chỉnh sửa--

Bạn có thể thử console=ttyS0,115200và kiểm tra các thông số giao diện điều khiển có thể khác.


BTW cũng --extra-args=có các cài đặt bàn điều khiển khác trực tiếp.
Jonathan Ross

Theo văn bản bạn đã trích dẫn, tôi cần sửa đổi / etc / inittab trên máy khách. Toàn bộ vấn đề là: làm thế nào để tôi tương tác với khách? Xin lỗi, tôi không nhận được nó.
badbishop

Xin lỗi, xem chỉnh sửa, tôi đã không rõ ràng.
Jonathan Ross

Có, tôi cũng đã thử --extra-args = 'console = ttyS0' trước khi đăng câu hỏi.
badbishop

Xin lỗi tôi có nghĩa là console=ttyS0,115200và có lẽ có các tham số khác cho điều này mà bạn có thể thử. Tôi vẫn đoán bạn có một bảng điều khiển được cấu hình sai của một số mô tả.
Jonathan Ross
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.