Ubuntu automatisch installieren mit Kickstart

Kickstart (nicht zu verwechseln mit Kickstarter) nimmt einem beim Installieren von Linux die vielen Klicks ab.

Und das geht so:

  • Kickstart-Tool zum erstellen des Kickstart-Files installieren:
    apt-get install system-config-kickstart
    
  • Damit das Kickstart-File (ich nenne es ks.cfg) anlegen und nach Wünschen anpassen (Ich habe das grafische Tool genau 1x benutzt für den Anfang und dann nur noch vi…):

lang de_DE
langsupport en_US --default=de_DE
keyboard de_nodeadkeys
mouse
timezone Europe/Berlin
rootpw --iscrypted $6$FUi3jlT0U$FsEXVaSe8Kfre9J6/cTmF3IeIXex2qBhyypWMQ9nWNxSpSY6hyw3ToWbup..dDw5vT3ZGDclGr9FwYEzeT8HX1
#Initial user
#user --disabled
#muss noch manuell in /etc/group in die sudo-gruppe getan werden:
user stk --fullname "Dirk Steinkopf" --iscrypted --password $6$aUPK70nR$NS53J3CIuoXcxMeYYd1SEe3.w2WJN8cMDdONMs2zqa8aF7d.HCrBZz2zniJehIPxfrnzO.2fiBqHZLFkxHzVM/
#Reboot after installation
reboot
#Use text mode install
text
#Install OS instead of upgrade
install
#Use CDROM installation media
cdrom
#System bootloader configuration
bootloader --location=mbr 
#Clear the Master Boot Record
zerombr yes
#Partition clearing information
clearpart --all --initlabel 
#Disk partitioning information
#okpart / --fstype ext4 --size 1 --grow --asprimary 
#okpart swap --size 2048 --asprimary 
part pv.1 --size 1 --grow --asprimary
volgroup sysvg pv.1
logvol swap --vgname=sysvg --fstype=swap --size=2048     --name=swap  
logvol /    --vgname=sysvg --fstype=ext4 --size=1 --grow --name=root 
#System authorization infomation
auth  --useshadow --passalgo=sha512
#Network information
#network --bootproto=dhcp --device=eth0
network --bootproto=static --ip=192.168.41.23 --netmask=255.255.255.240 --gateway=192.168.41.17 --nameserver=192.168.41.17 --device=eth0 --hostname=docker4
#Firewall configuration
firewall --enabled --ssh 
#Do not configure the X Window System
skipx

%packages
openssh-server

#post --nochroot --interpreter=/bin/bash
%post
echo "Post Install !"
apt-get update
apt-get upgrade -y
apt-get dist-upgrade -y
apt-get check
apt-get autoclean -y
apt-get autoremove -y

apt-get install -y ntp locate mailutils open-vm-tools

update-rc.d ssh defaults

mkdir /root/.ssh
echo >>/root/.ssh/authorized_keys "ssh-dss AAAAB3NzaC1kc3MAAACBAPJ5uW/XSGw/2YVA/F80n5wyt/q381zf1FitTu1wcs9//3Ii6GPIhyEBaJKER1qHTc+q+2AJJI5w5yVONRd3XEoh/kdfPA4SQgXsTLEOmmeTYtYrLq+0jaU0u/DnEoCKF9o7DNSqdDbmjplbJUhyP7jnnCGElGEYZRk3J6wIoYZhAAAAFQDJVmLjwehOhK8qzV4WwMwyX6BZDQAAAIAddkvJ6WEnljEG68V+BnJJryC38moGZZEXe1Pdp14LADv+c2YcjQ/mg7fBFNcP6jq6H3ybFtHJyuZSErvsKFhmEkTDlGpl3exNL7wq5eaNzwLr9IneAaS5VtDolvmbOJ9COkcK99cvmVPjHEacTUROcEbhkyHJxriNldtFotfK/wAAAIEAuL9Qu4gV7LVZjNn3/yxX3wqrCI05zFbv/SPZG3gJuZ2wos9sQl+QGFz9vUq43HdxDA081aHYz59ZaCF0YTDJu69Nv6uIocreTiNLaNMOQZJ+I2FDrreeUVCD4UzwT5xmHwlGbHpEhXAN260FIWbLBeatKGQnHiNyewCKBxJjZb4= stk@sprizz.steinkopf.net"

chmod 700 /root/.ssh
chmod 600 /root/.ssh/authorized_keys
  • Die Passworte kann man (s.a. hier und hier) auch ohne Kickstart-Tool verschlüsseln:

    mkpasswd -m sha-512
    
  • Danach legt man das ks.cfg auf einen erreichbaren Webserver. (Ich hatte allerdings ein Problem mit meinem Let’s-Encrypt-Webserver-Zertifikat, weil das vom Installations-Skript vermutlich verwendete wget das Zertifikat nicht erfolgreich prüfen kann. Daher habe ich die generelle Umleitung im Apache auf https abgeschaltet für ks.cfg (genaugenommen für *pub?ks*):
    RewriteRule pub.ks - [L,NC]
    
  • Dann bootet man die Maschine in die Installations-CD und gibt noch den folgenden Kernel-Parameter an:
    ks=http://meinserver.wo.auch.immer/pub/ks.cfg
    
  • Danach installiert die Maschine selbstständig. Naja, fast: Ein paar Fragen hat der Installer leider doch noch, für die ich keine Antworten im ks.cfg gefunden habe: Region?, Wirklich ohne /boot-Partition installieren?

  • Das dauert ziemlich lange. Bei mir gefühlt ne Stunde… Naja aber sicher mehr als 15 Minuten.

2 thoughts on “Ubuntu automatisch installieren mit Kickstart

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert