question about creation of updated DVD iso

Olivier Galibert galibert at pobox.com
Tue May 23 14:42:17 UTC 2006


I've managed to make a script to create a boot.img with an updated
kernel.  It's horribly hacky in places, but hey, it works.

The filesystem setup needed is a directory with as subdirectories:
- boot: The contents of boot.iso, i.e. one isolinux directory with boot.cat, etc.
- initrd: The contents of the initrd (gzip -dc initrd.img | cpio -id --no-absolute-filenames)
- configs: A directory with:
  - kernel-2.6.16-1.2111_FC5.x86_64.rpm (or another one, just not a xen one I think)
  - defmods.txt which is attached and comes from the anaconda-runtime
    scripts and Mk.1 eyeball
  - isolinux.cfg if you want to change it, otherwise remove the cp from the script
  - ks.cfg if you want to add it, otehrwise remove the cp from the
    script, you'll need an "ks=cdrom:/isolinux/ks.cfg" in the append of
    isolinux.cfg to use it automatically

Also you need gen_initramfs_list.sh and gen_init_cpio from the linux
kernel sources somewhere (in the script they're in ../..).

Then you run mkiso, and hopefully you'll get a beautiful newboot.iso
you can use for a nfs install.  It's probably reasonably easy to
extent to a dvd iso regeneration.

  OG.
-------------- next part --------------
#!/bin/sh

a=`cat initrd/etc/arch`

rm -rf new
mkdir new
rsync -a initrd new
rsync -a boot new

mkdir new/kernel
(cd new/kernel; rpm2cpio ../../configs/kernel*.rpm | cpio -id --no-absolute-filenames)
v=`ls new/kernel/lib/modules`

mkdir new/modules.1 new/modules.2
find new/kernel/lib/modules -name '*.ko' |xargs -iz mv z new/modules.1

touch new/modlist.txt
for f in `cat configs/defmods.txt`; do echo $f >> new/modlist.txt; done
for f in `egrep -v '^Version' new/initrd/modules/module-info |egrep -v '^	'`; do echo $f >> new/modlist.txt; done

for f in `cat new/modlist.txt | sort -u`; do
  mv new/modules.1/$f.ko new/modules.2
done

echo 'dir /'$v' 700 0 0' > new/modcpio.txt
echo 'dir /'$v'/'$a' 700 0 0' >> new/modcpio.txt
../../gen_initramfs_list.sh new/modules.2 | sed 's%file /%file '$v'/'$a'/%' >> new/modcpio.txt
../../gen_init_cpio new/modcpio.txt | gzip --best > new/initrd/modules/modules.cgz
cp new/kernel/boot/vmlinuz-$v new/boot/isolinux/vmlinuz

cp configs/isolinux.cfg configs/ks.cfg new/boot/isolinux/.

../../gen_initramfs_list.sh new/initrd > new/cpiolist.txt
../../gen_init_cpio new/cpiolist.txt | gzip --best > new/boot/isolinux/initrd.img

mkisofs -o newboot.iso \
       -b isolinux/isolinux.bin -c isolinux/boot.cat \
       -no-emul-boot -boot-load-size 4 -boot-info-table \
       new/boot

#cdrecord dev=/dev/hdc blank=fast gracetime=0 -nofix -v -sao -eject newboot.iso
-------------- next part --------------
fat vfat nfs sunrpc lockd floppy cramfs loop edd pcspkr squashfs
ohci-hcd uhci-hcd ehci-hcd hid mousedev usb-storage sd_mod sr_mod ub
ieee1394 ohci1394 sbp2
ide-cd
sr_mod sg st sd_mod scsi_mod iscsi_tcp
fat msdos vfat ext3 reiserfs jfs xfs
dm-mod dm-zero dm-snapshot dm-mirror
md raid0 raid1 raid5 raid6
vga16fb
yenta_socket i82365 tcic pcmcia

8390
atmel
crc-ccitt
exportfs
hermes
hostap
i2o_core
ieee80211_crypt
jbd
libata
megaraid_mm
mii
mptscsih
nfs_acl
orinoco
qla2xxx
qlogicfas408
scsi_transport_fc
scsi_transport_iscsi
scsi_transport_sas
scsi_transport_spi
sungem_phy
vgastate
xor


More information about the fedora-devel-list mailing list