Verder Terug Inhoud

6. Het KickStart configbestand

Het configbestand bestaat uit drie hoofdsecties:

  1. Systeem info, b.v. diskpartitionering en netwerkconfig
  2. Te installeren RedHat packages
  3. Post-installatie uit te voeren shellopdrachten

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.

6.1 Systeeminfo

De beschikbare directives die ik heb gebruikt zijn:

lang

Taalconfiguratie, b.v. voor Engels

lang en

network

Netwerkconfiguratie, b.v. gebruik van BOOTP/DHCP

network --bootp

nfs

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.

keyboard

Selecteer type toetsenbord, b.v. voor UK toetsenborden

keyboard uk

zerombr

Wis de Master Boot Record - verwijdert een eventueel bestaande bootloader voor besturingssystemen op je disk

clearpart

Wis bestaande partities - b.v. om alle bestaande diskpartities voor de installatie te verwijderen.

clearpart --all

part

Partitioneer de disk, b.v. voor het aanmaken van een rootbestandssysteem van 500MB

part / --size 500

install

Voor een nieuwe installatie van RedHat Linux.

mouse

Stel de te gebruiken muis in, b.v. voor een PS/2 of compatibele "bus mouse"

mouse ps/2

timezone

Stel de tijdszone in, b.v. voor de lokale tijd in de UK

timezone --utc Europe/London

rootpw

Instelling van het initiële rootwachtwoord, afgeleid van een eerder opgegeven versleuteld wachtwoord

rootpw --iscrypted XaacoeGPmf/A.

lilo

Installeer de LILO bootloader, b.v. in de Master Boot Record

lilo --location mbr

/%packages

Te installeren packages - zie hieronder.

%post

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:

cdrom

Installeer vanaf CD-ROM in plaats van vanaf het netwerk.

device

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

Upgrade een bestaande installatie in plaats van het uitvoeren van een nieuwe installatie.

xconfig

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.

6.2 Te installeren packages

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.

6.3 Post-installatie shellopdrachten

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.


Verder Terug Inhoud