putting ks.cfg into initrd.img

Peter Scheie peter.scheie at visionshareinc.com
Wed Oct 28 21:04:49 UTC 2009


Thanks, Chip.  I have a copy of your presentation in my desk and refer to it 
regularly.  But I'm at home today (sick kid) and since it was out of sight, it 
was out of mind.

I fixed my kickstart-in-initrd.img file problem (was editing wrong initrd file), 
but I'm having some other difficulties and there some aspects to 
kickstart/anaconda that I don't quite understand, and it occurs to me that I 
should probably describe what I'm trying to do to make sure it's even possible.

Currently, we distribute a stripped down Centos to customers.  We do this by 
creating an ISO that is just a syslinux system with a ks.cfg loaded via http 
(ks=http://blah.blah.com/).  Within the ks.cfg, the installation method 
specified is http as well, so basically everything is pulled from the web 
server.  To carry it one step further, we have our customers download a 
customized Unetbootin which pulls down this installer ISO file and installs it 
onto a USB flash drive.  The customer then boots their server from the flash 
drive, the kernel and initrd.img file are loaded, the kickstart is retrieved 
from the http server, as is minstg2.img, and the installation goes on its merry 
way.  It works wonderfully--IF the customer's server can get an IP address from 
a DHCP server.  But often it cannot, because, for example, it is in a DMZ; 
besides, ultimately, we require them to enter a static address for the server, 
althought that doesn't happen until after installation.  The solution at the 
moment is to have the customer edit the boot command of the installer and append 
an IP, netmask, gw and dns address.  No big deal if one is used to Linux, but 
Sales & Marketing is telling me our customer's can't handle this.  So, my 
thought is to prompt the customer for the network info at the very beginning of 
the boot process, and then somehow pass that to anaconda so it can connect to 
our web server.  Interestingly, right now when the installer does not get an 
address from a dhcp server, it does pop up the network configuration dialog. 
Unfortunately, this info does not get passed to minstg2.img because while 
minstg2.img does get downloaded, it then gives errors that the kickstart file 
could not be downloaded; tcpdump showed new dhcp requests coming from the 
installer at this stage.  My first thought was to put the kickstart into the 
initrd.img in the ISO and use the ks=file: parameter in the boot command, and in 
%pre put some shell commands that would prompt the user for networking info. 
But it's still trying to pull minstg2.img from the web server.  At 37MB, 
minstg2.img is more than four times the entire installer ISO, but if it gives me 
an environment for prompting the user for network info, I'll put it into the ISO.

So, my questions are:

1. How do I tell anaconda that minstg2.img is on the same medium as initrd.img 
and ks.cfg and so on?

2. When DHCP fails and the dialog for network info pops up, is there a way that 
info can be passed to minstg2.img, such that ks.cfg could be pulled from the web 
server and not have to be in initrd.img?

3. One would think that the asknetwork parameter would answer #2 above, but it 
doesn't seem to.  Should it?  Am I just doing something incorrectly?

Thanks.

Peter

Shabazian, Chip wrote:
> There are instructions on how to embed the ks.cfg in the Linuxworld
> presentation I did a few years ago:
> http://www.shabazian.com/lw2007.pdf
> 
> -----Original Message-----
> From: kickstart-list-bounces at redhat.com
> [mailto:kickstart-list-bounces at redhat.com] On Behalf Of Peter Scheie
> Sent: Wednesday, October 28, 2009 7:40 AM
> To: Discussion list about Kickstart
> Subject: putting ks.cfg into initrd.img
> 
> I'm trying to put my kickstart file into the initrd.img file with the
> intent of 
> putting 'ks=file:/ks.cfg' in my isolinux.cfg file, for custom centos 5 
> installation.  I did this to get the kickstart into initrd.img:
> 
> gunzip < isolinux/initrd.img > initrd.raw
> ls ks.cfg | cpio -oAO initrd.raw -H newc
> gzip -c initrd.raw > initrd.img
> 
> Then I copied the new initrd.img file to my flash drive, replacing the
> one in 
> the isolinux/ directory.  At the boot prompt, I set ks=file:/ks.cfg, but
> while 
> it starts to boot, I get a dialog box saying the /ks.cfg file could not
> be 
> found.  Any suggestions as to what I'm doing wrong?
> 
> Peter
> 
> _______________________________________________
> Kickstart-list mailing list
> Kickstart-list at redhat.com
> https://www.redhat.com/mailman/listinfo/kickstart-list
> 
> _______________________________________________
> Kickstart-list mailing list
> Kickstart-list at redhat.com
> https://www.redhat.com/mailman/listinfo/kickstart-list




More information about the Kickstart-list mailing list