qemu installs of FC4 via serial console

Florian La Roche laroche at redhat.com
Tue Dec 13 22:39:23 UTC 2005


I've finished my first installation of Fedora Core 4 with qemu.
This took about 75 minutes for 820 rpm packages on a P4 2.4GHz
with qemu configured to have 384MB of RAM.
Using "-kernel/-initrd" did not work for me, so I put together
a new ISO image which is setting all syslinux options correctly.

Configuring qemu to only use a serial console, I can now
automatically install and start it e.g. within "screen"
and keep it running there. Then I only login via ssh to get some
work done.

Let me know if you run the below script also for ppc/x86_64
and/or for other releases and how those work.

regards,

Florian La Roche




#!/bin/sh
#
# Install and run Fedora Core 4 with qemu.
#

# kickstart file to use
KS="ks=http://192.168.123.128/mirror/ks.cfg"
# image file to use as harddisk
IMAGE=fc4.vmdk
# network MAC address to use
#MAC="-macaddr d0:0f:af:fe:10:00   52:54:00:12:34:56"
# directory where to find Fedora Core
FEDORA=/var/www/html/mirror/fedora/4/i386/os
test -d $FEDORA || FEDORA=/home/mirror/fedora/4/i386/os
PXE=$FEDORA/images/pxeboot

# install params for a serial console
APPEND="initrd=initrd.img ramdisk_size=8192 text console=ttyS0,9600n8"
APPEND="$APPEND utf8 selinux=0 $KS clock=pit"

# Do we want to start a new installation?
if test "$1" = "install" ; then
    # Sanity check.
    test -d $FEDORA || exit 1
    test -d $PXE || exit 1
    # Create an empty harddisk image:
    test -f $IMAGE || qemu-img create $IMAGE 6G
    # The following is not working for me, not sure why:
    #qemu $MAC -m 384 -nographic -kernel $PXE/vmlinuz \
    #     -initrd $PXE/initrd.img -append "$APPEND" -hda $IMAGE
    # Use this for normall install options with a real console:
    #qemu $MAC -m 384 -serial stdio -cdrom $FEDORA/images/boot.iso \
    #     -hda $IMAGE -boot d
    # Copy boot data into a new directory:
    BOOTDIR=`mktemp -d bootdirXXXXXX`
    BOOTISO=`mktemp bootXXXXXX.iso`
    cp -r $FEDORA/isolinux $BOOTDIR/
    chmod 644 $BOOTDIR/isolinux/*
    sed -i -e "s/^timeout .*/timeout 5/" $BOOTDIR/isolinux/isolinux.cfg
    sed -i -e "s#^  append .*#  append $APPEND#" $BOOTDIR/isolinux/isolinux.cfg
    #cat $BOOTDIR/isolinux/isolinux.cfg
    mkisofs -quiet -o $BOOTISO -b isolinux/isolinux.bin -c isolinux/boot.cat \
        -no-emul-boot -boot-load-size 4 -boot-info-table -R -J \
        -V "serial console install" -T $BOOTDIR
    rm -rf $BOOTDIR
    time qemu $MAC -m 384 -nographic -cdrom $BOOTISO -hda $IMAGE -boot d
    rm -rf $BOOTISO
    exit 0
fi

qemu $MAC -m 256 -nographic -hda $IMAGE
exit 0

# Things todo within the installed system:
# - Modify /etc/inittab to start a serial getty:
#   s0:12345:respawn:/sbin/agetty 9600 ttyS0 linux
#   s0:12345:respawn:/sbin/mgetty -r -s 9600 /dev/ttyS0 linux
# - Modify /boot/grub/grub.conf:
#   #splashimage=(hd0,0)/grub/splash.xpm.gz
#   serial –unit=0 –speed=9600
#   terminal –timeout=10 --dump --lines=24 --silent serial console
# - Modify grub.conf to have "console=tty0 console=ttyS0,9600n8"
#   to output kernel messages on both consoles, last entry is
#   also used for keyboard input.
# - Modify /etc/securetty to include your serial device.

# TODO:
# - Try 38400 or 115200 as speed of the serial port?




More information about the fedora-devel-list mailing list