Kickstart
I use kickstart to install CentOS on Xen VMs.
Here's how it works:
XM config
I copy an existing XM config file and edit a few settings for the new host. The name and mac addr are often the only things that change. Instead of specifying a bootloader, I specify kernel, initrd and extra. The kernel and initrd point to a local copy of the latest CentOS xen install images. The extra arg specifies how to get the kickstart config.
Once the OS is installed, I comment out those items and un-comment the bootloader line.
See existing xm files for specifics.
For more Xen notes, see here.
Kickstart Config
I have my own kickstart config generator (http://seattlecentral.edu/kickstart). It nails togeather templates of known configurations and base assumptions. It adds some nice stuff, like disabling silly services, setting up the serial terminal and running yum update (which shouldn't actually do anything, since anaconda uses yum internally now).
Two install modes text, and command seem to work. command is super minimal and has absolutely no fault tolerance. I was using it for a bit, but it's so unhelpful I've gone back to text.
To update this, go to perl/scripts/kickstart in my home dir on tintin. The config is in kickstartcgi.conf and is pretty straightforward. Running make will copy stuff to the right place.
Local Base Mirror
I have a mirror of the 'base' repo on a host here at SCCC. I use this to host the hacked stage2.img (see Gotchas below). It seems like it needs to be a whole mirror, because it looks like yum uses it as the default mirror even if you specify a --mirrorlist in a repo line in the KS config.
In /home/system/mirror on tintin, you would find anything I've been mirroring. This stuff is only accessible from our networks, so it's not like I've made a public mirror. Anyway, in /home/system/mirror/centos/5.3/os/i386/ I have a script, rsync.sh that makes the mirror, should anyone want to tweak it.
Gotchas
Could not get identity of device /dev/hda
When installing on Xen, you get an error like
Could not get identity of device /dev/hda
In text mode, this means you have to hit "ignore" over and over again. In command-line mode, it means you're pretty well hosed.
I've hacked the text and command-line handlers in anaconda to ignore this error. It's not a real fix, just a hack. This means I have a custom stage2.img file that I need to use for installs.
Local Mirror
In order to use my own stage2.img I have to have a local mirror of the base repo, as mentioned above.
Next...
See Post Kickstart for notes regarding what I do after the OS is up.
