KVM Guest 从控制台安装。但是如何进入 Guest 的控制台?

KVM Guest 从控制台安装。但是如何进入 Guest 的控制台?

我正在尝试在 KVM(RHEL 6)上安装完全虚拟化的客户机(Fedora 14 x86_64),仅使用命令行(虚拟机管理程序和客户机)。它没有错误,也没有实际结果。我想知道如何进行纯文本安装。

因此,这就是我所做的:

# 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 来探索所有选项(我这样做了)。如果我重新连接 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 ^]

这表明虚拟机正在运行

# 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>

我显然忽略了其他人没有注意到的东西,但那是什么呢?提前谢谢!

答案1

--extra-args='console=ttyS0'上次从互联网上复制了一些东西,它有效!

  • 不需要两个“控制台”命令,只需打开两个控制台而不是一个
  • 无需手动指定波特率。
  • “--serial”选项已被弃用
  • RedHat 控制台设备是“/dev/ttyS0”,而不是“/dev/tty0”

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

答案2

我在尝试执行 CentOS 的纯文本安装时遇到了类似的问题。这一切都归结为添加内核参数来指定串行输出控制台,console=ttyS0以便在使用--graphics none或时可以连接到它。摘自 的手册:--nographicsvirt-install

--graphics 无

不会为客户机分配图形控制台。完全虚拟化的客户机(Xen FV 或 QEmu/KVM)需要在客户机的第一个串行端口上配置文本控制台(这可以通过 --extra-args 选项完成)。Xen PV 将自动设置。可以使用命令“virsh console NAME”连接到串行设备。

我已设法通过两种方式解决了该问题:

  1. 通过修改 iso 映像并使用--cdrom选项
  2. 通过将 iso 映像公开为 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 期间,您会收到一个提示,询问安装文件的位置。您必须输入机器的地址和共享的完整路径。

完毕。

答案3

--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也是一种解决办法。

答案4

我已经使用 cobbler 和 koan 进行安装一段时间了。在 cobbler 中,我在 Centos60-x86_64 配置文件下设置了内核选项,如下所示:

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

启动后,您可以使用 console=tty0 console=ttS0,115200 让控制台显示在两个设备上;这对于安装不起作用。如果您编辑 /etc/grub 下的 grub 选项并重新生成 grub.conf,串行控制台设置将在内核升级后继续存在。将“text”添加到内核命令行以防止安装程序启动 GUI。

当我的 KVM 客户机实例启动时,我会在登录到 KVM 主机时连接到它们,并连接到客户的控制台,如下所示:

[root@vmhost ~]# virsh console guestvm

然后我在 shell 中看到了这个:

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

相关内容