I'm trying to install a fully virtualized guest (Fedora 14 x86_64) on KVM (RHEL 6), using command-line only (both hypervisor and guest). It goes without errors, and without a tangible result . I'd like to know how to do a text-only installation.

So, here's what I've done:

# 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 ^]
ΓΏ

Now what? As I understand after googling for a couple of days, I should see the guest's output from the text installation, but nothing happens. virt-viewer cannot connect to it, kindly suggesting that I explore all the options by adding --help (which I did). If I reconnect with virsh, I see this:

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

This shows that VM is running

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

Qemu log:

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

Output of /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>

I'm obviously missing something that many others don't, but what is it? Thanx in advance!

link|improve this question

0% accept rate
How were you able to get the --extra-args switch to work with --cdrom? According to the virt-install man page --extra-args only works with --location? – slm Jun 18 '11 at 2:27
feedback

4 Answers

--nographics is used, and you have no console set up in the guest, besides the tty0 console. If you want a graphical console, especially available remotely you'd need to enable vga and vnc, or qxl and spice. this is an example: 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 or http://ubuntuforums.org/showpost.php?p=9610421&postcount=7 is also a solution.

link|improve this answer
Thanks for answering, dyasny. Picking your points: 1. No, I do NOT want a graphical console (see my post) 2. Yes, I have been trying this and similar solutions. It didn't work for me. – badbishop Apr 10 '11 at 15:54
I'd try to ask on linux-kvm.org or on the libvirt mailing list – dyasny Apr 12 '11 at 17:11
feedback

You need to run the Fedora installer in text mode. Try adding 'text' to the extra args. Alternatively, you could try adding "vnc" which will allow you to connect to the installer over VNC once it is started

link|improve this answer
Checked it out, for a newer libvirt, you can't use -x and --cdrom. Try mounting the cdrom somewhere on the network and using --location somewhere.com/mounted-iso --graphics none --extra-args "console=ttyS0,115200 text headless" – katriel Aug 7 '11 at 21:08
feedback

I'd guess you are seeing a misconfigured console.

Maybe try this or similar First I add console line to my grub config, e.g. for an Arch guest: kernel /vmlinuz26 root=/dev/vda2 ro console=ttyS0,115200 Then I edit /etc/inittab to enable ttyS0 (same Arch guest): co:23:respawn:/sbin/agetty -8 115200 ttyS0 linux. And make sure you have ttyS0 in your /etc/securetty.

More info here: `http://www.linux-kvm.com/content/running-kvm-nographics-no-console-output

--edit--

You could try console=ttyS0,115200and check other possible console parameters maybe.

link|improve this answer
BTW --extra-args=takes other console settings directly too. – Jonathan Ross Apr 10 '11 at 16:21
According to the text you've quoted, I need to modify /etc/inittab on guest. The whole problem is: how do I interact with guest? Sorry, I'm not getting it. – badbishop Apr 10 '11 at 18:27
Sorry see edit, I wasn't very clear. – Jonathan Ross Apr 10 '11 at 18:34
Yes, I've tried --extra-args='console=ttyS0' as well before posting the question. – badbishop Apr 11 '11 at 6:05
Sorry I meant console=ttyS0,115200 and presumably there are other parameters for this that you can try. I'd still guess you have a misconfigured console of some description. – Jonathan Ross Apr 11 '11 at 7:46
feedback

I've been doing my installations for a while now using cobbler and koan. Within cobbler I set my kernel options like so under my Centos60-x86_64 profile:

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

When my KVM guest instances start I then connect to them while logged into the KVM host and connect to a guest's console like this:

[root@vmhost ~]# virsh console guestvm

I then see this in my 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: 

One final note, when I tell koan to start building one of my KVM guests, I call it with the --nogfx switch like so:

koan --server 192.168.1.1 --virt --nogfx --system=guestvm
link|improve this answer
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.