Come faccio a creare un'installazione completamente automatica di Ubuntu?


91

Ho bisogno di un CD o di una chiavetta USB, che installerà Ubuntu su una macchina completamente senza testa. Inserire il CD e riavviarlo, nessuna tastiera o schermo dovrebbe essere coinvolto.

Ci sono alcuni ostacoli:

  1. Il menu di selezione della lingua al primo avvio del CD.
  2. Il fatto che il menu del CD sia in attesa.
  3. L'installatore fa domande durante l'installazione.


Quindi l'ho fatto. tuttavia con il nuovo iso kickstart quando riavvio il mio server ubunutu ottengo il seguente errore ubuntu non è riuscito a caricare il file amd-ucode / microcode_amd.bin Ho provato a cercare il file sul mio ubunutu-server "regolarmente" installato ma non sono riuscito trovarlo .. e non ricevo il messaggio di errore quando lo riavvio
Rayman81

Risposte:


83

La soluzione completa è:

Remasterizza un CD, ovvero scarica un ISO di installazione di Ubuntu non grafico (server o CD di installazione alternativo), montalo

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

Copia i file pertinenti in un'altra directory

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

Impedire la visualizzazione del menu di selezione della lingua

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

Utilizzare il programma GUI per aggiungere un file kickstart denominato ks.cfg

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

Per aggiungere pacchetti per l'installazione, aggiungi una %packagesezione al ks.cfgfile kickstart, aggiungi alla fine del ks.cfgfile qualcosa del genere.

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

Verrà installato il ubuntu-server "fascio", e aggiungerà i openssh-server, ftpe build-essentialpacchetti.

Aggiungi un file preconfigurato per sopprimere altre domande

# 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

Imposta la riga di comando di avvio per utilizzare i file kickstart e preconfigurati

# vi isolinux/txt.cfg

Cercare

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

aggiungi ks=cdrom:/ks.cfge preseed/file=/cdrom/ks.preseedalla riga append. È possibile rimuovere le parole quiete vga=788. Dovrebbe apparire

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

Ora crea un nuovo 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

Questo è tutto. Avrai un CD che installerebbe un sistema Ubuntu una volta avviato da esso, senza richiedere un solo tasto.


1
Grazie per l'ottima spiegazione, molto utile! Ho scoperto, tuttavia, che non è necessario specificare il file preconfigurato, solo il file ks.cfg compilato era sufficiente (anche specificato le partizioni ecc. Lì dentro tramite kickstart). [ubuntu 10.04 64bit]
symaedr

1
Mi sembra ancora necessario premere Invio quando si avvia.
Catskul,

5
Per evitare la necessità di premere Invio all'avvio, modificare il valore di timeout da 0 a 10 in /isolinux/isolinux.cfg: timeout 10 Si noti che un valore di 10 rappresenta 1 secondo.
digitalsanctum

1
Mi piace l' isolinux/langambientazione, grazie.
Chu-Siang Lai,

5
Per installare da una chiavetta USB, è sufficiente un altro passaggio per convertire l'ISO in un formato di avvio dell'unità USB:# isohybrid path/to/image.iso
jjnebeker

5

Le istruzioni a questa domanda coprono il processo per la creazione di un ISO avviabile EFI (come l'ISO ufficiale Ubuntu x86_64) .:

Come faccio a creare un ISO avviabile EFI di una versione personalizzata di Ubuntu?

Le differenze chiave stanno impostando questo come file preconfigurato:

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

Usa questo come file kickstart:

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

Modifica la configurazione di avvio di EFI grub per ISO:

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

Impostato:

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
}

Impostare isolinux / txt.cfg in questo modo:

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

Creare un ISO di catalogo a doppio avvio:

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 .

Verifica che sia stato creato un ISO avviabile EFI:

dumpet -i Custom1404.iso 

Uscite:

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)

5

Ecco uno script di shell che esegue questa procedura, grazie per l'introduzione: http://www.utech.de/2013/05/shell-script-creating-a-cd-for-unattended-ubuntu-server-installations/

Lo script che trovi seguendo il link implementa sostanzialmente la procedura descritta da @Elazar, quindi le parti essenziali sono solo una schermata sopra. Ho aggiunto il link per salvare qualcuno un po 'di tempo e per rendere un po' più semplice ripeterlo per altre versioni di Ubuntu.


2
Benvenuti in Ask Ubuntu! Sebbene ciò possa teoricamente rispondere alla domanda, sarebbe preferibile includere qui le parti essenziali della risposta e fornire il collegamento come riferimento.
Oyibo,

1
Vedo. Lo script che trovi seguendo il link implementa sostanzialmente la procedura descritta da Elazar, quindi le parti essenziali sono solo una schermata sopra. Ho aggiunto il link per salvare qualcuno un po 'di tempo e per rendere un po' più semplice ripeterlo per altre versioni di Ubuntu.
Michael,

1
Aggiungi la spiegazione dal tuo commento alla tua risposta.
Guntbert,

3
Il collegamento sembra essere rotto.
Reggie,

2
Dov'è la sceneggiatura ora?
pulcini,

1

Un metodo piuttosto semplice è descritto al seguente link a una risposta su AskUbuntu,

Come posso creare un disco di ripristino USB avviabile e incustodito?

  • Creare il sistema desiderato con una connessione di rete portatile, ad esempio secondo

  • Crea un file dd-image [compresso] del sistema (penso che sia più semplice del remastering).

  • Crea uno shellscript e chiamalo tramite 'avvio automatico' in un sistema live persistente secondo questa descrizione . Puoi farlo con modifiche minime (forse abbinare solo il nome del file di immagine compresso), oppure puoi modificarlo per adattarlo al tuo caso particolare.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.