Comment créer une installation d'Ubuntu sans surveillance?

91

J'ai besoin d'un CD ou d'une clé USB pour installer Ubuntu sur une machine complètement sans tête. Insérez le CD et redémarrez-le, aucun clavier ni écran ne doit être impliqué.

Il y a quelques obstacles:

  1. Le menu de sélection de la langue lorsque vous démarrez le CD pour la première fois.
  2. Le fait que le menu du CD attende.
  3. Les questions de l'installateur lors de l'installation.
Elazar Leibovich
la source
Lien utile
Nanne le
Alors j'ai fait ça. cependant, avec la nouvelle iso kickstart lorsque je redémarre mon serveur ubunutu, l'erreur suivante s'affiche: ubuntu n'a pas pu charger le fichier amd-ucode / microcode_amd.bin. le trouve .. et je ne reçois pas le message d'erreur quand je le redémarre
Rayman81

Réponses:

83

La solution complète est:

Remasterisez un CD, c'est-à-dire téléchargez une image ISO d'installation non graphique d'ubuntu (CD d'installation ou de remplacement), montez-le

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

Copiez les fichiers pertinents dans un répertoire différent

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

Empêcher l'affichage du menu de sélection de la langue

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

Utilisez le programme graphique pour ajouter un fichier kickstart nommé ks.cfg

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

Pour ajouter des packages pour l'installation, ajoutez une %packagesection au ks.cfgfichier kickstart, ajoutez ks.cfgquelque chose comme ceci à la fin du fichier.

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

Ceci installera le "paquet" du serveur ubuntu, et ajoutera les paquets openssh-server, ftpet build-essential.

Ajouter un fichier de préconfiguration pour supprimer d'autres questions

# 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

Définissez la ligne de commande de démarrage pour utiliser les fichiers kickstart et preseed

# vi isolinux/txt.cfg

Rechercher

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

ajouter ks=cdrom:/ks.cfget preseed/file=/cdrom/ks.preseedà la ligne d'ajout. Vous pouvez supprimer les mots quietet vga=788. Il devrait ressembler à

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

Maintenant, créez une nouvelle 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

C'est ça. Vous aurez un CD qui installerait un système Ubuntu une fois que vous en avez démarré, sans qu'il soit nécessaire d'appuyer sur une seule touche.

Elazar Leibovich
la source
1
Merci pour la grande explication, très utile! J'ai trouvé cependant qu'il n'était pas nécessaire de spécifier le fichier preseed, seulement le fichier ks.cfg rempli suffisait (précisait également les partitions, etc. via kickstart). [Ubuntu 10.04 64bit]
symaedr
1
Je semble toujours avoir besoin d'appuyer sur entrée quand il démarre.
Catskul
5
Pour éviter de devoir appuyer sur entrée au démarrage, modifiez la valeur du délai d’attente de 0 à 10 dans /isolinux/isolinux.cfg: délai 10 Notez que la valeur 10 correspond à 1 seconde.
digitalsanctum
1
J'aime le isolinux/langcadre, merci.
Chu-Siang Lai
5
Pour installer à partir d'une clé USB, il vous suffit d'une étape supplémentaire pour convertir l'ISO en un format de démarrage de lecteur USB:# isohybrid path/to/image.iso
jjnebeker
5

Les instructions de cette question couvrent le processus de création d’une ISO amorçable EFI (comme l’ISO officielle Ubuntu x86_64):

Comment créer un ISO amorçable EFI d'une version personnalisée d'Ubuntu?

Les principales différences sont de définir ceci comme fichier preseed:

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

Utilisez ceci comme fichier 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

Editez la configuration de démarrage EFI Grub pour l'ISO:

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

Mis à:

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
}

Définissez isolinux / txt.cfg comme ceci:

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

Créez un catalogue à double démarrage 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 .

Vérifiez qu'une image ISO amorçable EFI a été créée:

dumpet -i Custom1404.iso 

Les sorties:

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)
un autre
la source
5

Voici un script shell qui effectue cette procédure, merci pour l’introduction: http://www.utech.de/2013/05/shell-script-creating-a-cd-for-unattended-ubuntu-server-installations/

Le script que vous trouvez en suivant le lien met en œuvre la procédure décrite par @Elazar. Les parties essentielles ne sont donc qu'un écran ci-dessus. J'ai ajouté le lien pour gagner du temps et pour le rendre un peu plus facile à répéter pour d'autres versions d'Ubuntu.

Michael
la source
2
Bienvenue sur Ask Ubuntu! Bien que cela puisse théoriquement répondre à la question, il serait préférable d’inclure ici les parties essentielles de la réponse et de fournir le lien à titre de référence.
Oyibo
1
Je vois. Le script que vous trouvez en suivant le lien met en œuvre la procédure décrite par Elazar. Les parties essentielles ne sont donc qu'un écran ci-dessus. J'ai ajouté le lien pour gagner du temps et pour le rendre un peu plus facile de le répéter pour d'autres versions d'Ubuntu.
Michael
1
S'il vous plaît ajouter l'explication de votre commentaire à votre réponse.
Guntbert
3
Le lien semble être brisé.
Reggie
2
Où est le script maintenant?
poussins
1

Une méthode assez simple est décrite au lien suivant pour une réponse à AskUbuntu,

Comment créer un disque de restauration USB amorçable sans surveillance?

  • Créez le système souhaité avec une connexion réseau portable, par exemple en fonction de

  • Créez un fichier dd-image [compressé] du système (je pense que c'est plus facile que de remasteriser).

  • Créez un shellscript et appelez-le via «autostart» dans un système actif persistant conformément à cette description . Vous pouvez le faire avec des modifications minimes (peut-être ne faire correspondre que le nom du fichier image compressé), ou vous pouvez le modifier pour l'adapter à votre cas particulier.

sudodus
la source