XEN Paravirtualized Gentoo 2009 domU

http://www.howtoforge.com/paravirtualized-gentoo-2009-domu-using-debian-lenny

Base

dd if=/dev/zero of=gentoo.img count=4096 bs=1M
mkfs.ext3 gentoo.img
mount -o loop gentoo /mnt/gentoo

Gentoo Stage

wget http://mirrors.kernel.org/gentoo/releases/amd64/current/stage3-amd64-20090702.tar.bz2
tar jxvf stage3-amd64-20090702.tar.bz2 -C /mnt/gentoo

Modules

mkdir /mnt/gentoo/lib/modules
cp -R /lib/modules/2.6.26-2-xen-amd64 /mnt/gentoo/lib/modules

Chroot Base

mount -t proc none /mnt/gentoo/proc
mount -o bind /dev /mnt/gentoo/dev
cp -L /etc/resolv.conf /mnt/gentoo/etc/resolv.conf
chroot /mnt/gentoo /bin/bash
env-update
source /etc/profile
emerge –sync
emerge dhcp
emerge syslog-ng
rc-update add syslog-ng default
emerge dcron
rc-update add dcron default
nano -w /etc/conf.d/hostname
nano /etc/conf.d/net

config_eth0=( “192.168.1.100 netmask 255.255.255.0” )
routes_eth0=( “default gw 192.168.1.254” )
#config_eth0=( “dhcp” )

nano /etc/fstab

/dev/sda1 / ext3 noatime 0 1
proc /proc proc defaults 0 0
shm /dev/shm tmpfs nodev,nosuid,noexec 0 0

passwd
exit

Configuration

kernel = ‘/boot/vmlinuz-2.6.26-2-xen-amd64’
ramdisk = ‘/boot/initrd.img-2.6.26-2-xen-amd64’
memory = ‘256’
root = ‘/dev/sda1 ro’
disk = [‘file:/xen/gentoo.img,sda1,w’,]
name = ‘Gentoo 2009’
dhcp = ‘dhcp’
vif = [ ” ]
extra = ‘xencons=tty’
on_poweroff = ‘destroy’
on_reboot = ‘restart’
on_crash = ‘restart’

Problems with /proc
Fixing this is just a matter of commenting out the section of /sbin/rc that attempts to mount /proc begining at around line 217 like this:

# check_statedir /proc
#
# ebegin “Mounting proc at /proc”
# if [[ ${RC_USE_FSTAB} = “yes” ]] ; then
# mntcmd=$(get_mount_fstab /proc)
# else
# unset mntcmd
# fi
# try mount -n ${mntcmd:–t proc proc /proc -o noexec,nosuid,nodev}
# eend $?

You’ll also need to comment the section attempting to mount /sys as well, or the next time you boot, you’ll get the same error with a different mount point failing.

# if [ “$(get_KV)” -ge “$(KV_to_int ‘2.6.0’)” ] ; then
# if [[ -d /sys ]] ; then
# ebegin “Mounting sysfs at /sys”
# if [[ ${RC_USE_FSTAB} = “yes” ]] ; then
# mntcmd=$(get_mount_fstab /sys)
# else
# unset mntcmd
# fi
# try mount -n ${mntcmd:–t sysfs sysfs /sys -o noexec,nosuid,nodev}
# eend $?
# else
# ewarn “No /sys to mount sysfs needed in 2.6 and later kernels!”
# fi
# fi

Leave a Reply

Your email address will not be published. Required fields are marked *