Wie erstelle ich eine völlig unbeaufsichtigte Installation von Ubuntu?

91

Ich benötige eine CD oder einen USB-Stick, um Ubuntu auf einem völlig kopflosen Computer zu installieren. CD einlegen und neu starten, keine Tastatur oder Bildschirm sollte beteiligt sein.

Es gibt einige Hindernisse:

  1. Das Sprachauswahlmenü, wenn Sie die CD zum ersten Mal starten.
  2. Die Tatsache, dass das CD-Menü wartet.
  3. Der Installateur stellt während der Installation Fragen.
Elazar Leibovich
quelle
Also habe ich das gemacht. Mit dem neuen Kickstart-Iso erhalte ich beim Neustart meines Ubunutu-Servers die folgende Fehlermeldung: Ubuntu konnte die Datei amd-ucode / microcode_amd.bin nicht laden. Ich habe versucht, auf meinem "regelmäßig" installierten Ubunutu-Server nach der Datei zu suchen, konnte dies aber nicht finde es .. und ich bekomme keine Fehlermeldung, wenn ich es neu
starte

Antworten:

83

Die Komplettlösung ist:

Remaster einer CD, dh Laden Sie eine nicht grafische Ubuntu-Installations-ISO (Server oder alternative Installations-CD) herunter, und hängen Sie sie ein

$ sudo su -
# mkdir -p /mnt/iso
# mount -o loop ubuntu.iso /mnt/iso

Kopieren Sie die relevanten Dateien in ein anderes Verzeichnis

# mkdir -p /opt/ubuntuiso
# cp -rT /mnt/iso /opt/ubuntuiso

Verhindert, dass das Sprachauswahlmenü angezeigt wird

# cd /opt/ubuntuiso
# echo en >isolinux/lang

Verwenden Sie das GUI-Programm, um eine Kickstart-Datei mit dem Namen hinzuzufügen ks.cfg

# apt-get install system-config-kickstart
# system-config-kickstart # save file to ks.cfg

Um Pakete für die Installation hinzuzufügen, fügen Sie %packageder ks.cfgKickstart-Datei einen Abschnitt hinzu und hängen Sie an das Ende der ks.cfgDatei so etwas an.

%packages
@ ubuntu-server
openssh-server
ftp
build-essential

Dies installiert das Ubuntu-Server "Bundle" und fügt die Pakete openssh-server, ftpund hinzu build-essential.

Fügen Sie eine Voreinstellungsdatei hinzu, um andere Fragen zu unterdrücken

# echo 'd-i partman/confirm_write_new_label boolean true
d-i partman/choose_partition \
select Finish partitioning and write changes to disk
d-i partman/confirm boolean true' > ks.preseed

Stellen Sie die Startbefehlszeile so ein, dass die Kickstart- und Preseed-Dateien verwendet werden

# vi isolinux/txt.cfg

Suchen nach

label install
  menu label ^Install Ubuntu Server
  kernel /install/vmlinuz
  append  file=/cdrom/preseed/ubuntu-server.seed vga=788 initrd=/install/initrd.gz quiet --

füge ks=cdrom:/ks.cfgund preseed/file=/cdrom/ks.preseedzur anhängenden Zeile hinzu. Sie können die Wörter quietund entfernen vga=788. Es sollte so aussehen

  append file=/cdrom/preseed/ubuntu-server.seed \
     initrd=/install/initrd.gz \
     ks=cdrom:/ks.cfg preseed/file=/cdrom/ks.preseed --

Erstellen Sie nun eine neue ISO

# mkisofs -D -r -V "ATTENDLESS_UBUNTU" \
     -cache-inodes -J -l -b isolinux/isolinux.bin \
     -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 \
     -boot-info-table -o /opt/autoinstall.iso /opt/ubuntuiso

Das ist es. Sie haben eine CD, auf der Sie ein Ubuntu-System installieren können, sobald Sie es starten, ohne dass ein einziger Tastendruck erforderlich ist.

Elazar Leibovich
quelle
1
Vielen Dank für die tolle Erklärung, sehr nützlich! Ich stellte jedoch fest, dass man die Voreinstellungsdatei nicht spezifizieren muss, nur die ausgefüllte ks.cfg-Datei war ausreichend (spezifizierte auch die Partitionen usw. dort durch Kickstart). [Ubuntu 10.04 64bit]
Symaedr
1
Ich muss immer noch die Eingabetaste drücken, wenn es hochfährt.
Catskul
5
Um das Drücken der Eingabetaste beim Booten zu umgehen, ändern Sie den Timeout-Wert von 0 auf 10 in /isolinux/isolinux.cfg: timeout 10 Beachten Sie, dass ein Wert von 10 1 Sekunde darstellt.
Digitalsanctum
1
Ich mag die isolinux/langEinstellung, danke.
Chu-Siang Lai,
5
Um von einem USB-Stick zu installieren, müssen Sie nur noch einen Schritt # isohybrid path/to/image.iso
ausführen
5

Die Anweisungen in dieser Frage beschreiben den Vorgang zum Erstellen einer bootfähigen EFI-ISO (wie der offiziellen Ubuntu x86_64-ISO):

Wie erstelle ich eine EFI-bootfähige ISO einer angepassten Ubuntu-Version?

Die Hauptunterschiede legen dies als Voreinstellungsdatei fest:

d-i partman-auto/method string lvm
d-i partman-auto-lvm/guided_size string max
d-i partman-auto/choose_recipe select atomic
d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/confirm_write_new_label     boolean true
d-i partman/choose_partition            select  finish
d-i partman/confirm_nooverwrite         boolean true
d-i partman/confirm                     boolean true
d-i partman-auto/purge_lvm_from_device  boolean true
d-i partman-lvm/device_remove_lvm       boolean true
d-i partman-lvm/confirm                 boolean true
d-i partman-lvm/confirm_nooverwrite     boolean true
d-i partman-auto/init_automatically_partition       select      Guided - use entire disk and set up LVM
d-i partman/choose_partition                select      Finish partitioning and write changes to disk
d-i partman-auto-lvm/no_boot            boolean true
d-i partman-md/device_remove_md         boolean true
d-i partman-md/confirm                  boolean true
d-i partman-md/confirm_nooverwrite      boolean true

Verwenden Sie dies als Kickstart-Datei:

lang en_US
langsupport en_US
keyboard us
mouse
timezone America/Los_Angeles
rootpw --disabled
user USERNAME --fullname "USERNAME" --password "PASSWORD"
reboot
text
install
cdrom
auth  --useshadow  --enablemd5 
network --bootproto=dhcp --device=eth0
firewall --disabled 
skipx
%packages
@ ubuntu-server
openssh-server

Bearbeiten Sie die grub EFI-Startkonfiguration für die ISO:

sudo nano ~/ubuntu/boot/grub/grub.cfg

Einstellen:

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
}

Setze isolinux / txt.cfg wie folgt:

default install
label install
  menu label ^Install Ubuntu Server with Custom Config
  kernel /install/vmlinuz
  append file=/cdrom/preseed/ubuntu-server.seed initrd=/install/initrd.gz ks=cdrom:/ks.cfg preseed/file=/cdrom/ks.preseed --
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

Erstellen Sie einen Dual-Boot-Katalog-ISO:

sudo mkisofs -U -A "Custom1404" -V "Custom1404" -volset "Custom1404" -J -joliet-long -r -v -T -o ../Custom1404.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 .

Stellen Sie sicher, dass ein EFI-bootfähiges ISO erstellt wurde:

dumpet -i Custom1404.iso 

Ausgänge:

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)
anothermh
quelle
5

Hier ist ein Shell-Skript, das diese Prozedur ausführt, danke für die Einführung: http://www.utech.de/2013/05/shell-script-creating-a-cd-for-unattended-ubuntu-server-installations/

Das Skript, das Sie hinter dem Link finden, implementiert im Wesentlichen die von @Elazar beschriebene Prozedur, sodass die wesentlichen Teile nur ein Bildschirm darüber sind. Ich habe den Link hinzugefügt, um jemandem Zeit zu sparen und um es ein bisschen einfacher zu machen, dies für andere Versionen von Ubuntu zu wiederholen.

Michael
quelle
2
Willkommen bei Ask Ubuntu! Während dies theoretisch die Frage beantworten mag, wäre es vorzuziehen , die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen.
Oyibo
1
Aha. Das Skript, das Sie hinter dem Link finden, implementiert im Wesentlichen die von Elazar beschriebene Prozedur, sodass die wesentlichen Teile nur ein Bildschirm darüber sind. Ich habe den Link hinzugefügt, um jemandem Zeit zu sparen und um es ein bisschen einfacher zu machen, dies für andere Versionen von Ubuntu zu wiederholen.
Michael
1
Bitte fügen Sie Ihrer Antwort die Erklärung aus Ihrem Kommentar hinzu.
guntbert
3
Verbindung scheint unterbrochen zu sein.
Reggie
2
Wo ist das Drehbuch jetzt?
Küken
1

Eine ziemlich einfache Methode wird unter dem folgenden Link zu einer Antwort bei AskUbuntu beschrieben:

Wie kann ich eine bootfähige, unbeaufsichtigte USB-Wiederherstellungsdiskette erstellen?

  • Erstellen Sie das gewünschte System mit einer tragbaren Netzwerkverbindung, beispielsweise gemäß

  • Erstellen Sie eine [komprimierte] dd-image-Datei des Systems (ich denke, das ist einfacher als Remastering).

  • Erstellen Sie ein Shellscript und rufen Sie es gemäß dieser Beschreibung in einem permanenten Live-System über "Autostart" auf . Sie können dies mit minimalen Änderungen tun (möglicherweise nur mit dem Namen der komprimierten Bilddatei übereinstimmen), oder Sie können es ändern, um es an Ihren speziellen Fall anzupassen.

Sudodus
quelle