Manchmal, wenn die Installation eines Betriebssystems regelmäßig durchgeführt wird, auf verschiedenen Servern, virtuellen Maschinen, für Systemadministratoren gibt es auch eine Notwendigkeit, diese Aktionen zu automatisieren.
Daher ist die Erstellung eines Images von Ubuntu Image unbeaufsichtigte Installation (der gesamte Prozess gilt für Ubuntu, Debian und die meisten anderen Linux-Systeme), der Systemadministrator:
- den Installationsprozess beschleunigt;
- beseitigt mögliche zufällige Fehler im regulären Installationsprozess;
- schließt Routineelemente der täglichen Verfahren aus;
- schafft eine Komponente für den Einsatz in den folgenden Phasen der Automatisierung von IT-Betriebsprozessen für Ansible, Chef, Puppet.
Um eine unbeaufsichtigte Installation ISO Ubuntu Image einer benutzerdefinierten Version von Ubuntu zu machen, wird vorinstalliertes Linux verwendet, wo die Quelle ISO des Betriebssystems auf der lokalen Festplatte gespeichert werden soll. Der gesamte Prozess, vereinfacht, besteht aus den folgenden Schritten:
-
Entpacken der ISO in ein separates Verzeichnis;
-
eine Bearbeitung des Inhalts des unverpackten Bildes;
-
Schaffung eines neuen Images der ISO mit dem modernisierten Inhalt des Systems.
Hier sind die Details:
1. Auspacken der ISO auf einen separaten Datenträger
Da das ursprüngliche Betriebssystem als Basis für den Ubuntu LTS Server verwendet wird (derzeit 16.04 LTS), ist diese Ausgabe für den produktiven Einsatz am stabilsten, wird für 5 Jahre aktualisiert und ist so weit wie möglich für den kontinuierlichen Einsatz geeignet, ohne dass ein fertiges Image aktualisiert werden muss.
Entpacken Sie es in ein beliebiges Verzeichnis lokal auf einer Diskette, für ein weiteres Beispiel wird ~/ubuntu/ verwendet.
wget http://releases.ubuntu.com/14.04/ubuntu-14.04-server-amd64.iso
Mounten Sie die Ubuntu-ISO, um den Inhalt auf ein anderes Medium zu kopieren und die entsprechenden Dateien zu bearbeiten:
mkdir -p /mnt/iso
mount -o loop ubuntu.iso /mnt/iso
Der nächste Schritt besteht darin, die ISO-Dateien auf einen anderen Datenträger zu kopieren, um sie zu bearbeiten;
mkdir -p ~/ubuntu
cp -rT /mnt/iso ~/ubuntu
2. eine inhaltliche Bearbeitung des unverpackten Bildes
Folgende Dateien erstellen oder aktualisieren:
- ~/ubuntu/ks.cfg,
- ~/ubuntu/ks.preseed,
- ~/ubuntu/isolinux/lang,
- ~/ubuntu/boot/grub/grub.cfg,
- ~/ubuntu/isolinux/txt.cfg
Sprache auf Deutsch einstellen:
echo de >~/ubuntu/isolinux/lang
Erstellen Sie eine vorselektierte Datei mit folgendem Inhalt:
echo '
# Unmount drives with active partitions. Without this command, all the installation process would stop and require confirmation to unmount drives that are already mounted. d-i preseed/early_command string umount /media || true # Don't install recommended items d-i preseed base-installer/install-recommends boolean false # Install only security updates automatically d-i preseed pkgsel/update-policy select unattended-upgrades'>~/ubuntu/ks.preseed
Als nächstes erstellen Sie eine Kickstart-Datei, die Ubuntu während der Installation konfigurieren wird (achten Sie darauf, den Benutzernamen zu ändern und verschlüsselte Passwörter zu verwenden). Hier ist es möglich, alle Pakete zu deklarieren, die im endgültigen System vorhanden sein sollen. Der gesamte Speicherplatz wird automatisch partitioniert und formatiert, um den gesamten verfügbaren Speicherplatz zu nutzen:
echo '
#System language lang en_US #Language modules to install langsupport en_US #System keyboard keyboard us #System mouse mouse #System timezone timezone Europe/Berlin #Root password rootpw --disabled #Initial useruser USERNAME --fullname "USERNAME" --password "PASSWORD"
#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 part /boot --fstype ext4 --size 512 part swap --size 2048 part / --fstype ext4 --size 1 --grow #System authorization infomation auth --useshadow --enablemd5 #Network information network --bootproto=dhcp --device=eth0 #Do not configure the X Window System skipx # Additional packages to install. %packages @ ubuntu-server openssh-server # Turn on Wake-on-LAN ethtool -s eth0 wol g'>~/ubuntu/ks.cfg
Bearbeiten einer anderen Datei – der Grub-Konfigurationsdatei, so dass, wenn die ISO einen EFI-Boot ausführt, der Bootloader die richtigen Optionen verwendet, um die Pre- und Konfigurationsdateien zu verwenden:
echo '
if loadfont /boot/grub/font.pf2 ; then set gfxmode=auto insmod efi_gop insmod efi_uga insmod gfxterm terminal_output gfxterm fi set menu_color_normal=white/light-blue set menu_color_highlight=light-blue/light-gray set timeout=10 set default=0 menuentry "Automatically Install Ubuntu Server with Custom Config" { set gfxpayload=keep linux /install/vmlinuz file=/cdrom/preseed/ubuntu-server.seed quiet ks=cdrom:/ks.cfg preseed/file=/cdrom/ks.preseed -- initrd /install/initrd.gz } menuentry "OEM install (for manufacturers)" { set gfxpayload=keep linux /install/vmlinuz file=/cdrom/preseed/ubuntu-server.seed quiet oem-config/enable=true -- initrd /install/initrd.gz } menuentry "Multiple server install with MAAS" { set gfxpayload=keep linux /install/vmlinuz modules=maas-enlist-udeb vga=788 initrd=/install/initrd.gz quiet -- initrd /install/initrd.gz } menuentry "Check disc for defects" { set gfxpayload=keep linux /install/vmlinuz MENU=/bin/cdrom-checker-menu quiet -- initrd /install/initrd.gz } menuentry "Rescue a broken system" { set gfxpayload=keep linux /install/vmlinuz rescue/enable=true -- initrd /install/initrd.gz } '>~/ubuntu/boot/grub/grub.cfg
Bearbeiten Sie das Isolinux-Bootmenü für Nicht-EFI-Boot (MBR-Boot), um die benutzerdefinierte Config und die benutzerdefinierte Voreinstellung zu verwenden:
echo '
default install label install menu label ^Install Ubuntu Server with Custom Config kernel /install/vmlinuz append debian-installer/locale=en_US keyboard-configuration/layoutcode=us languagechooser/language-name=English localechooser/supported-locales=en_US.UTF-8 file=/cdrom/preseed/ubuntu-server.seed initrd=/install/initrd.gz ks=cdrom:/ks.cfg preseed/file=/cdrom/ks.preseed quiet splash noprompt noshell -- label cloud menu label ^Multiple server install with MAAS kernel /install/vmlinuz append modules=maas-enlist-udeb vga=788 initrd=/install/initrd.gz quiet -- label check menu label ^Check disc for defects kernel /install/vmlinuz append MENU=/bin/cdrom-checker-menu vga=788 initrd=/install/initrd.gz quiet -- label memtest menu label Test ^memory kernel /install/mt86plus label hd menu label ^Boot from first hard disk localboot 0x80 '>~/ubuntu/isolinux/txt.cfg
3. Schaffung eines neuen Images der ISO mit dem modernisierten Inhalt des Systems
ISO erstellen:
sudo mkisofs -U -A "ubu16LTS" -V "ubu16LTS" -volset "ubu16LTS" -J -joliet-long -r -v -T -o ../ubu16LTS.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot -e boot/grub/efi.img -no-emul-boot
Überprüfen Sie abschließend, ob die ISO-Datei den richtigen Boot-Typ hat:
dumpet -i ~/
ubu16LTS.iso
Und das ist die Ausgabe:
Validation Entry:
Header Indicator: 0x01 (Validation Entry)
PlatformId: 0x00 (80x86)
ID: ""
Checksum: 0x55aa
Key bytes: 0x55aa
Boot Catalog Default Entry:
Entry is bootable
Boot Media emulation type: no emulation
Media load segment: 0x0 (0000:7c00)
System type: 0 (0x00)
Load Sectors: 4 (0x0004)
Load LBA: 3100 (0x00000c1c)
Section Header Entry:
Header Indicator: 0x91 (Final Section Header Entry)
PlatformId: 0xef (EFI)
Section Entries: 1
ID: ""
Boot Catalog Section Entry:
Entry is bootable
Boot Media emulation type: no emulation
Media load address: 0 (0x0000)
System type: 0 (0x00)
Load Sectors: 4672 (0x1240)
Load LBA: 1932 (0x0000078c)
Abschließend wird das Image in Virtualbox ausgeführt, um eine völlig unbeaufsichtigte Installation zu ermöglichen.
Infolgedessen kann nun die unbeaufsichtigte Installation über ISO-Images mit Ubuntu-Images sowohl auf physischen Servern als auch auf virtuellen Plattformen verwendet werden.