从控制台安装了KVM Guest。但是如何进入访客控制台呢?


28

我试图仅使用命令行(虚拟机管理程序和来宾)在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 ^]

这表明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一起使用?根据virt-install手册页--extra-args仅与--location一起使用?
slm

4
我删除--network bridge:br0,改cdromlocation,并extra-args--extra-args='console=tty0 console=ttyS0,115200n8 serial'和它的工作!
一些

2
我只将cdrom更改为位置,并添加了“ extra-args”。无需删除--network选项。
twan163

1
无论出于何种原因,--cdrom它都不能与extra-args一起使用,但是--location(或-l)可以。相同的道路,一切。
里克·查塔姆

Answers:



7

--nographics使用,除了tty0控制台外,您在guest虚拟机中没有设置任何控制台。如果要使用图形控制台,尤其是远程可用的图形控制台,则需要启用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-outputhttp://ubuntuforums.org/showpost.php?p=9610421&postcount=7也是一种解决方案。


感谢您的回答,dyasny。要点:1.不,我不要图形控制台(请参阅我的文章)2.是,我一直在尝试这种方法和类似的解决方案。它对我不起作用。
badbishop 2011年

我会尝试在linux-kvm.org或libvirt邮件列表上询问
dyasny 2011年

6

尝试执行CentOS的纯文本安装时,我遇到了类似的问题。归结为添加用于指定串行输出控制台的内核参数,console=ttyS0以便您可以在使用--graphics none或时连接到该控制台--nographics。从virt-install的手册:

-图形无

没有为访客分配图形控制台。完全虚拟化的guest虚拟机(Xen FV或QEmu / KVM)将需要在guest虚拟机的第一个串行端口上配置一个文本控制台(可以通过--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错误在“ images-x86_64”部分中没有选项“内核”,我将iso文件安装到/ mnt并在virt-install中使用--location / mnt
public_name 2015年

@public_name尝试不挂载iso,而是在--locationlike 之后指定iso的路径--location /tmp/centos6.iso
里克·查塔姆

在Ubuntu 16上工作,编辑isolinux / txt.cfg而不是isolinux / isolinux.cfg。
John McGehee '18年

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来使控制台显示在两个设备上。这不适用于安装。如果您在/ etc / grub下编辑grub选项并重新生成grub.conf,则串行控制台设置将在内核升级后仍然有效。在内核命令行中添加“文本”,以防止安装程序启动GUI。

当我的KVM guest虚拟机实例启动时,我将在登录KVM主机时连接到它们,并按如下所示连接到guest虚拟机的控制台:

[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 guest虚拟机之一时,我使用--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。并确保在/ etc / securetty中具有ttyS0。

更多信息,请参见:` http : //www.linux-kvm.com/content/running-kvm-nographics-no-console-output

- 编辑 -

您可以尝试console=ttyS0,115200检查其他可能的控制台参数。


BTW --extra-args=也直接采用其他控制台设置。
乔纳森·罗斯

根据您引用的文本,我需要在guest虚拟机上修改/ etc / inittab。整个问题是:如何与访客互动?抱歉,我不明白。
badbishop 2011年

抱歉,看到编辑,我不太清楚。
乔纳森·罗斯

是的,在发布问题之前,我也尝试过--extra-args ='console = ttyS0'。
badbishop 2011年

对不起,我的意思是console=ttyS0,115200,大概您可以尝试使用其他参数。我仍然猜测您的控制台配置有误。
乔纳森·罗斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.