Het configbestand bestaat uit drie hoofdsecties:
Er zijn nog een aantal andere mogelijkheden waar we het hier niet over zullen hebben, maar die wellicht wel werken. Kijk voor meer informatie in het voorbeeld KickStart config in misc/src/install/ks.samp en doc/README.ks onder de top level i386 RedHat distributie directory op je CD-ROM of lokale RedHat mirror site.
De beschikbare directives die ik heb gebruikt zijn:
Taalconfiguratie, b.v. voor Engels
lang en
Netwerkconfiguratie, b.v. gebruik van BOOTP/DHCP
network --bootp
NFS server en directory van waaruit te installeren, b.v.
nfs --server chicken.swedish-chef.org /mnt/cdrom
om de NFS server chicken.swedish-chef.org te gebruiken en de RedHat distributie vanuit de directory /mnt/cdrom proberen te mounten.
Selecteer type toetsenbord, b.v. voor UK toetsenborden
keyboard uk
Wis de Master Boot Record - verwijdert een eventueel bestaande bootloader voor besturingssystemen op je disk
Wis bestaande partities - b.v. om alle bestaande diskpartities voor de installatie te verwijderen.
clearpart --all
Partitioneer de disk, b.v. voor het aanmaken van een rootbestandssysteem van 500MB
part / --size 500
Voor een nieuwe installatie van RedHat Linux.
Stel de te gebruiken muis in, b.v. voor een PS/2 of compatibele "bus mouse"
mouse ps/2
Stel de tijdszone in, b.v. voor de lokale tijd in de UK
timezone --utc Europe/London
Instelling van het initiële rootwachtwoord, afgeleid van een eerder opgegeven versleuteld wachtwoord
rootpw --iscrypted XaacoeGPmf/A.
Installeer de LILO bootloader, b.v. in de Master Boot Record
lilo --location mbr
Te installeren packages - zie hieronder.
Post-installatie shellopdrachten - zie hieronder.
De directory waar KickStart zoekt naar de RedHat distributie moet een subdirectory RedHat bevatten, die de RedHat distributiestructuur voor het platform in kwestie bevat. In het voorbeeld hiervoor, zouden we bijvoorbeeld de volgende bestanden en directory's te zien moeten krijgen:
/mnt/cdrom/RedHat
/mnt/cdrom/RedHat/base
/mnt/cdrom/RedHat/contents
/mnt/cdrom/RedHat/i386
/mnt/cdrom/RedHat/instimage
/mnt/cdrom/RedHat/RPMS
/mnt/cdrom/RPM-PGP-KEY
Als je vanaf een CD-ROM installeert in plaats van vanaf het netwerk, dan ziet de inhoud er ongeveer zo uit:
RedHat
RedHat/base
RedHat/contents
RedHat/i386
RedHat/instimage
RedHat/RPMS
RPM-PGP-KEY
Als je de RedHat distributie hebt voor meerdere architecturen (b.v. op een NFS server - zijn ze te groot om meer dan één versie van een architectuur op een enkele CD-ROM te passen), zal je bemerken dat iedere distributie dezelfde bestanden en directory's onder een subdirectory heeft, b.v.
alpha/RPM-PGP-KEY
i386/RPM-PGP-KEY
sparc/RPM-PGP-KEY
Er zou een bestand architecture
/Redhat/architecture
moeten zijn, b.v. i386/Redhat/i386.
Met Perl is het heel eenvoudig als je je eigen versleutelde wachtwoorden wilt aanmaken, b.v.
% perl -e 'print crypt("schmurrdegurr", "Xa") . "\n";'p
Andere opties (of niet ter sprake gebrachte opties) die ik niet heb geprobeerd:
Installeer vanaf CD-ROM in plaats van vanaf het netwerk.
Expliciete declaratie van details, b.v.
device ethernet 3c509 --opts "io=0x330, irq=7"
Alternatieve waarden van device
zijn onder andere scsi
voor
SCSI controllers en cdrom
voor eigen CD-ROM stations.
Upgrade een bestaande installatie in plaats van het uitvoeren van een nieuwe installatie.
Configureer de X Window server, grafische kaart en monitor.
b.v.
xconfig --server "Mach64" --monitor "tatung cm14uhe"
Ik ben niet zo diep op die laatste ingegaan omdat ik niet van plan
ben X op de console te draaien of op één van mijn
met KickStart geconfigureerde computers.
Er is me verteld dat de uitvoering van xconfig
binnen KickStart
zelf wat zwak is, maar dezelfde functionaliteit is ook vanaf de opdrachtregel
via Xconfigurator
beschikbaar - dus wellicht dat je dit het
beste over kunt laten aan het post-installatie script.
Wanneer we alle stukjes en beetjes bijelkaar plaatsen ziet het KickStart config bestand er ongeveer zo uit:
lang en
network --static --ip 198.168.254.253 --netmask 255.255.255.0
--gateway 198.168.254.1 --nameserver 198.168.254.2
nfs --server chicken.swedish-chef.org /mnt/cdrom
keyboard uk
zerombr yes
clearpart --all
part / --size 500
part swap --size 120
install
mouse ps/2
timezone --utc Europe/London
rootpw --iscrypted XaacoeGPmf/A.
lilo --location mbr
Een deel van de RedHat documentatie refereert naar een aanroep van de
network
directive welke in de praktijk niet echt werkt:
network --option
. De juiste aanroep is
network
gevolgd door --static
, --bootp
of --dhcp
. De BOOTP en DHCP opties zijn verschillend -
- in de mate dat ze zelfs van andere code gebruik maken.
Je kunt de --grow
parameter toevoegen aan een part
directive om aan te geven dat het OK is dat de partitie verder toeneemt
dan de grootte die je opgeeft. Dit heeft waarschijnlijk slechts zin
als één partitie met --grow
is gemarkeerd.
Het begin van de sectie packages van het KickStart configuratiebestand
wordt aangegeven door de aanwezigheid van een %packages
directive
op een aparte regel. Dit wordt gevolgd door één of beiden
typen packages specifiers - individuele packages kunnen worden geïnstalleerd
door de naam van de RPM ervan op te geven (exclusief de informatie betreffende
de versie en het platform), en groepen packages kunnen worden geïnstalleerd
door de naam van de groep waartoe ze behoren op te geven.
Hier is een voorbeeld packages
sectie voor een KickStart
configbestand:
%packages
@ Base
netkit-base
bind-utils
ncftp
rdate
tcp_wrappers
traceroute
cmu-snmp
Wat zijn deze groepen? Er zijn een aantal groepen standaard gedefinieerd in een bestand genaamd base/comps onder de top level directory van de RedHat distributie. Dit zijn degenen die tijdens dit schrijven van toepassing waren:
Het zal je opvallen dat ze met de diverse configuraties corresponderen waar je gedurende een handmatige installatie om wordt gevraagd. Een aantal packages in een gegeven packagegroep komen ook in andere groepen voor. Je kunt meerdere groepen packages installeren zonder dat dit problemen veroorzaakt. Iedere groepsingang in de comps opsomming ziet er ongeveer zo uit:
0 Extra Documentation
sag
lpg
howto
faq
man-pages
end
Het schijnt dat groepen met een 1 naast de naam (de eerste regel hierboven) standaard voor de installatie worden geselecteerd. Je kunt het Linux installatieproces zelfs verder aanpassen door je eigen groepen aan te maken of bestaande groepen te herdefiniëren door dit bestand te wijzigen.
Dit is waarschijnlijk de beste faciliteit, en iets waarvan geen direct equivalent beschikbaar is in het handmatige installatieproces. Wat we hier kunnen doen is een reeks opdrachten specificeren op niveau van de shell die zouden kunnen worden uitgevoerd nadat de hoofdinstallatie (diskpartitionering, installatie van de packages, enzovoort) compleet is.
Het begin van deze sectie wordt aangeduid door de %post
directive in het KickStart configbestand. In de opdrachten die
daarop volgen kun je voordeel trekken van alle utility's die op je
nieuw gebouwde Linux systeem zijn geïnstalleerd, b.v.
%post
ln -s /etc/rc.d/init.d /etc/init.d
ln -s /etc/rc.d/rc.local /etc/rc.local
ln -s /usr/bin/md5sum /usr/bin/md5
ln -s /usr/bin/perl /usr/local/bin/perl
chmod ug-s /bin/linuxconf
mkdir /var/tmp/tmp
perl -spi -e 's!image=/boot/vmlinuz-.*!image=/boot/vmlinuz!' /etc/lilo.conf
rm /etc/rc.d/rc*.d/*sendmail
Je kunt ook gebruik maken van I/O omleiding en "here" documenten:
cat <<EOF >>/etc/passwd
squid:*:102:3500:Squid Proxy:/usr/squid:/bin/bash
EOF
cat <<EOF >>/etc/group
cache:x:3500:
EOF
Pas de runtime opstartscripts aan:
cat <<EOF >>/etc/rc.local
echo 8192 > /proc/sys/kernel/file-max
echo 32768 > /proc/sys/kernel/inode-max
[ -x /usr/sbin/sshd ] && /usr/sbin/sshd
[ -x /usr/sbin/cfd ] && /usr/sbin/cfd
EOF
Stel de crontab regels in:
cat <<EOF >/tmp/crontab.root
# Keep the time up to date
0,15,30,45 * * * * /usr/sbin/ntpdate -s eggtimer 2>&1 >/dev/null
# Recycle Exim log files
1 0 * * * /usr/exim/bin/exicyclog
# Flush the Exim queue
0,15,30,45 * * * * /usr/exim/bin/exim -q
EOF
crontab /tmp/crontab.root
rm /tmp/crontab.root
En installeer zelfs andere RPM's die je zelf hebt samengesteld:
rpm -i ftp://chicken.swedish-chef.org/rpms/squid.rpm
rpm -i ftp://chicken.swedish-chef.org/rpms/ssh.rpm
rpm -i ftp://chicken.swedish-chef.org/rpms/exim.rpm
rpm -i ftp://chicken.swedish-chef.org/rpms/cfengine.rpm
rpm -i ftp://chicken.swedish-chef.org/rpms/linux.rpm
ssh-keygen -b 1024 -f /etc/ssh_host_key -N ""
depmod -a
Je kunt hetzelfde effect bereiken door eigen RPM's aan te maken met de opdrachten die je uit wilt voeren - zie hieronder voor meer informatie. Geef ze een zorgvuldig gekozen naam. Je kunt ze als eerste laten installeren (b.v. naam laten beginnen met 'aaa') of als laatste (b.v. naam laten beginnen met 'zzz').
Een minder moeizame manier om root crontab records aan te maken is ze als bestanden in één of meer van de directory's /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly en /etc/cron.monthly aan te maken.
Meer informatie over het samenstellen van je eigen RPM's is beschikbaar in Appendix B.