# System language lang en_US # Language modules to install langsupport --default=en_US.UTF-8 en_GB.UTF-8 nb_NO.UTF-8 nn_NO.UTF-8 # System keyboard keyboard no # System mouse # mouse generic3ps/2 # System timezone timezone --utc Europe/Oslo # Root password rootpw --iscrypted SecretButReplacedByCfengine # Do not reboot after installation # reboot # Use text mode install text # Install Red Hat Linux instead of upgrade install # Installation source nfs --server=eurus.oslo.dnmi.no --dir=/var/ftp/pub/fedora/3/i386/os #nfs --server=arion.bergen.dnmi.no --dir=/metno/ftp/pub/fedora/3/i386/os #nfs --server=fullstorm.troms.dnmi.no --dir=/metno/ftp/pub/fedora/3/i386/os # System bootloader configuration bootloader --location=mbr --append="rhgb quiet" # Clear the Master Boot Record # NOTE: This is dangerous for other disks (/dev/hdb etc.) with contents! # zerombr yes # Disk partitioning information is generated automatically by the # %pre-script and written to /tmp/part-include.txt # %include /tmp/part-include.txt # Specify network parameters manually #System authorization information auth --enableshadow --enablemd5 # Firewall and SELinux configuration firewall --disabled selinux --disabled #XWindows configuration information #Probe for video card #Probe for monitor xconfig --depth=24 --resolution=1280x1024 --defaultdesktop=KDE --startxonboot # Install packages %packages --resolvedeps @ everything ############################################################################### # Things to do before the installation starts %pre --interpreter /usr/bin/python # coding: iso-8859-1 import os import sys sys.path.append('/usr/lib/anaconda') import partedUtils diskset = partedUtils.DiskSet() diskset.refreshDevices() disks = diskset.driveList() partitions = diskset.partitionTypes() labels = diskset.getLabels() def getInstallDisk(): """Finn hvilken disk vi skal installere til""" if 'hda' in disks: disk = 'hda' elif 'sda' in disks: disk = 'sda' else: print "Maskinen har ingen disker tilgjengelig for installasjon" sys.exit(1) return disk def getExistingPartitions(): """Sjekk om denne maskinen har vært installert før, og returner isåfall partisjonene""" d = {} for p,l in labels.iteritems(): if l == '/1': d['/'] = p # bug? elif l == '/': d['/'] = p elif l == '/home': d['/home'] = p elif l == '/disk1': d['/disk1'] = p for p,t in partitions: if t == 'linux-swap': d['swap'] = p # Hvis vi ikke finner ut både /, /home, /disk1 og swap, # har vi ikke funnet ut nok, og returnerer None slik at # maskinen blir installert fra scratch if len(d.values()) == 4: return d else: return None def printPartsUpgrade(parts): f = open('/tmp/part-include.txt', 'w') f.write("partition / --onpart=%s\n" % parts['/']) f.write("partition /home --noformat --onpart=%s\n" % parts['/home']) f.write("partition swap --onpart=%s\n" % parts['swap']) f.write("partition /disk1 --noformat --onpart=%s\n" % parts['/disk1']) f.close() f = open('/tmp/part-dialog.txt', 'w') f.write("\nDe eksisterende partisjonene vil bli brukt slik:\n\n") f.write("Partisjon %4s: / FORMATERES \n" % parts['/']) f.write("Partisjon %4s: /home \n" % parts['/home']) f.write("Partisjon %4s: swap FORMATERES \n" % parts['swap']) f.write("Partisjon %4s: /disk1 \n\n" % parts['/disk1']) f.close() def printPartsFresh(disk): f = open('/tmp/part-include.txt', 'w') f.write("clearpart --linux --drives %s\n\n" % disk) f.write("partition / --fstype=ext3 --size=15360 --asprimary --ondisk=%s\n" % disk) f.write("partition /home --fstype=ext3 --size=4096 --ondisk=%s\n" % disk) f.write("partition swap --size=2048 --ondisk=%s\n" % disk) f.write("partition /disk1 --fstype=ext3 --size=1 --grow --ondisk=%s\n" % disk) f.close() f = open('/tmp/part-dialog.txt', 'w') f.write("\nIngen tidligere installasjon funnet, partisjoner vil bli laget slik:\n\n") f.write("Filsystem / 15 GB primary %s FORMATERES\n" % disk) f.write("Filsystem /home 4 GB %s FORMATERES\n" % disk) f.write("Filsystem swap 2 GB %s FORMATERES\n" % disk) f.write("Filsystem /disk1 resten %s FORMATERES\n\n" % disk) f.close() def main(): # Bytt til VT 3 og rens den os.system("chvt 3") os.system("clear") parts = getExistingPartitions() if (parts): printPartsUpgrade(parts) else: print "\n\nFinner ikke eksisterende labels, gjør en fresh install" disk = getInstallDisk() printPartsFresh(disk) dialogtext = open('/tmp/part-dialog.txt').read() print(dialogtext) os.system("chvt 3; exec < /dev/tty3 > /dev/tty3; echo Er du sikker på at du vil dette?; echo ; echo Trykk en tast for å fortsette installasjonen; echo Eller trykk Ctrl-Alt-Delete for å avbryte; read; chvt 1") # Kjør funksjonen main hvis vi kalles som et program if __name__ == "__main__": main() ############################################################################### # Things to do (chrooted) after the installation procedure %post #!/bin/bash # Add guest user /usr/sbin/useradd -u 998 -c "Guest user" -p 'NotVerySecretButHey' guest # Copy extra configuration scripts from eurus to local disk /usr/bin/wget -P /tmp ftp://eurus.oslo.dnmi.no/pub/kickstart/fedora-3/ks-*.sh # Source variable definitions source /tmp/ks-defines.sh # Install and configure apt and cfengine source /tmp/ks-apt-cfengine.sh # Install fonts and other stuff source /tmp/ks-installs.sh # Stop and start daemons source /tmp/ks-services.sh # Run cfagent to update configuration /root/bin/cfagent-everything -v