Roll your own ISO?
Razvan Corneliu C.R. d3vi1 VILT
razvan.vilt at linux360.ro
Tue Feb 3 20:43:48 UTC 2004
Tristan Fillmore said:
> I'm interested in creating my own ISOs and modifying the package list to
> only include the packages I'm interested in.
>
> How are the ISOs for Fedora created? What must be modified to make
> alterations to the installer?
>
> Any relevant links or advice would be appreciated.
>
>
> Thanks,
>
> Tristan
>
OK... so it's a bit more complex... A nice link would be Bob's Anaconda
HOWTO (http://www.sd.no-ip.biz/code/aurora/).
Over there you have some other nice links...
If you need more info... google 'round...
For CD generation I personaly use a small script.
The script expects to have in the current directory the i386 and SRPMS
directories.
If anyone can give me a review on it, i'd really apreciate-it.
If it's OK then I'll start work on a GTK2 based anaconda customiser.
Don't forget to check the export's at the begining of the script.
( The comments with a plus apply to fedora core)
------------------------
#!/bin/bash
# version 0.1
# Creator Razvan Corneliu C.R. VILT
###################################
# Variables #
###################################
export PYTHONPATH=/usr/lib/anaconda
export PATH=$PATH:/usr/lib/anaconda-runtime:/usr/share/comps-extras
export BASEDIR=`pwd`
# CD Publisher
# +I guess it's 'Fedora Core Project'
export publisher='Digital Vision'
# Some CD-Booting information
export bootimg='isolinux/isolinux.bin'
export bootcat='isolinux/boot.cat'
# The code-name of the current version
# +"yarrow" for Fedora Core 1
export distname="seraphim"
# The version no. of the distribution
# +It should be something like 1.90 for the version in development
rightnow (rawhide)
export distver="0.91"
# +For rawhide it's probably "dist-190"
export distvercomp="dist-091"
# product was supposed to be Vision GNU/Linux, but releasestr + Disk no.
# does not fit in the maximum alowable length for the CD labels, so I
added shortproduct
# +should be "Fedora Core"
export product="Vision GNU/Linux"
# +probably "FC/1"
export shortproduct="Vision"
# The directory which contains RPMS and base subdirectories
# +should be Fedora for rawhide/yarrow
export productpath="Vision"
# The architecture we're building for
export arch="i386"
# The whole release's string
export releasestr="$product $distver ($distname)"
# Some options we're gonna pass to mkisofs
export mkisofsopts='-r -N -L -d -D -J'
# The CD-Building date
export today="$(date '+%d %b %Y')"
###################################
# Clean-ing up any previous build #
###################################
rm -rf ./i386-disc[1..6]
rm -f ./$distname-$arch-disc[1..6].iso
rm -f ./$distname-$arch-dvd.iso
###################################
# Regenerate the headers #
###################################
echo "Generating headers for yum"
cd $arch;
yum-arch . > /dev/null;
cd ..;
yum-arch . > /dev/null;
cd SRPMS;
yum-arch . > /dev/null;
###################################
# Rebuilding The installer #
###################################
echo "Generating HDList File"
genhdlist --withnumbers --productpath $productpath $BASEDIR/$arch
echo "Ordering Packages for Instalation"
pkgorder $BASEDIR/$arch $arch $productpath > $BASEDIR/pkgorder-$arch.txt
echo "Building The Installer"
buildinstall --comp $distvercomp --pkgorder $BASEDIR/pkgorder-$arch.txt \
--version $distver --product "$product" \
--release "$releasestr" \
--prodpath $productpath $BASEDIR/$arch
echo "Splitting the tree into CD's"
splittree.py --arch=$arch --total-discs=6 --bin-discs=3 --src-discs=3 \
--release-string="$releasestr"
--pkgorderfile=$BASEDIR/pkgorder-$arch.txt \
--distdir=$BASEDIR/$arch --srcdir=$BASEDIR/SRPMS \
--productpath=$productpath > /dev/null
echo "Generating New HDList for the CD's"
genhdlist --withnumbers --productpath $productpath \
--fileorder $BASEDIR/pkgorder-$arch.txt \
$BASEDIR/$arch-disc[1..3]> /dev/null
###################################
# Start the CD-BUILDING PROCESS #
###################################
# BIG FAT #
# !!!WARNING!!! #
# This CD-generation script isn't #
# portable yet! I Need more info #
# on makeing bootable CD's for #
# other architectures #
# I'm pretty sure that this #
# DOES NOT #
# apply for SPARC & PPC #
###################################
# Make the 1'st CD's (the bootable one) iso
echo "Generating the iso of the first CD"
mkisofs $mkisofsopts \
-V "$shortproduct $arch" \
-A "$shortproduct $arch" \
-P "$publisher" \
-p "$publisher" \
-b "$bootimg" \
-c "$bootcat" \
-no-emul-boot -boot-load-size 4 -boot-info-table \
-x lost+found \
-o $BASEDIR/"$distname"-$arch-disc1.iso \
$BASEDIR/$arch-disc1 > /dev/null 2> /dev/null
echo "Implanting it's md5 sum"
/usr/lib/anaconda-runtime/implantisomd5 $BASEDIR/"$distname"-$arch-disc1.iso
#Make the isos for the rest of the CD's (not bootable)
for i in 2 3 4 5 6; do
echo "Generating the iso for cd no. $i"
mkisofs $mkisofsopts \
-V "$shortproduct $arch" \
-A "$shortproduct $arch" \
-P "$publisher" \
-p "$publisher" \
-x lost+found \
-o $BASEDIR/"$distname"-$arch-disc${i}.iso \
$BASEDIR/$arch-disc${i} > /dev/null 2> /dev/null;
echo "Implanting it's md5 sum"
/usr/lib/anaconda-runtime/implantisomd5
$BASEDIR/"$distname"-$arch-disc${i}.iso;
done;
###################################
# Now let's generate the DVD iso #
###################################
echo "Generating the DVD iso"
mkisofs \
$mkisofsopts \
-A "$shortproduct $arch" \
-V "$shortproduct $arch" \
-P "$publisher" \
-p "$publisher" \
-b "$bootimg" \
-c "$bootcat" \
-no-emul-boot -boot-load-size 4 -boot-info-table \
-x lost+found \
-o $BASEDIR/"$distname"-$arch-dvd.iso \
$BASEDIR/$arch > /dev/null 2>/dev/null;
echo "Implanting it's md5 sum"
/usr/lib/anaconda-runtime/implantisomd5 $BASEDIR/"$distname"-$arch-dvd.iso;
More information about the fedora-list
mailing list