¿Cómo creo una instalación completamente desatendida de Ubuntu?

91

Necesito un CD o una memoria USB, que instalará Ubuntu en una máquina completamente sin cabeza. Pegue el CD y reinicie, no debe estar involucrado ningún teclado o pantalla.

Hay algunos obstáculos:

  1. El menú de selección de idioma cuando inicia el CD por primera vez.
  2. El hecho de que el menú del CD espera.
  3. El instalador hace preguntas durante la instalación.
Elazar Leibovich
fuente
Enlace útil
Nanne
Entonces hice esto. sin embargo, con la nueva iso kickstart cuando reinicio mi servidor ubunutu me sale el siguiente error ubuntu no pudo cargar el archivo amd-ucode / microcode_amd.bin Traté de buscar el archivo en mi servidor ubunutu instalado "regularmente" pero no pude lo encuentro ... y no recibo el mensaje de error cuando lo reinicio
Rayman81

Respuestas:

83

La solución completa es:

Remasterice un CD, es decir, descargue un ISO de instalación de ubuntu no gráfico (servidor o CD de instalación alternativo), móntelo

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

Copie los archivos relevantes a un directorio diferente

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

Evitar que aparezca el menú de selección de idioma

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

Use el programa GUI para agregar un archivo kickstart llamado ks.cfg

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

Para agregar paquetes para la instalación, agregue una %packagesección al ks.cfgarchivo kickstart, agregue al final del ks.cfgarchivo algo como esto.

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

Esto instalará el ubuntu-server "paquete", y añadirá las openssh-server, ftpy los build-essentialpaquetes.

Agregue un archivo preestablecido para suprimir otras preguntas

# 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

Establezca la línea de comando de arranque para usar el kickstart y los archivos preestablecidos

# vi isolinux/txt.cfg

Buscar

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

agregar ks=cdrom:/ks.cfgy preseed/file=/cdrom/ks.preseeda la línea de agregar. Puede eliminar las palabras quiety vga=788. Debería verse como

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

Ahora crea una nueva 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

Eso es. Tendrá un CD que instalaría un sistema Ubuntu una vez que arranque desde él, sin requerir una sola pulsación de tecla.

Elazar Leibovich
fuente
1
Gracias por la gran explicación, muy útil! Sin embargo, descubrí que no es necesario especificar el archivo preestablecido, solo el archivo ks.cfg completado fue suficiente (también especificó las particiones, etc. a través de kickstart). [ubuntu 10.04 64bit]
symaedr
1
Todavía parece que necesito presionar enter cuando se inicia.
Catskul
55
Para evitar la necesidad de presionar enter en el arranque, cambie el valor de tiempo de espera de 0 a 10 en /isolinux/isolinux.cfg: tiempo de espera 10 Tenga en cuenta que un valor de 10 representa 1 segundo.
digitalsanctum
1
Me gusta el isolinux/langescenario, gracias.
Chu-Siang Lai
55
Para instalar desde una memoria USB, solo necesita un paso más para convertir el ISO a un formato de arranque de unidad USB:# isohybrid path/to/image.iso
jjnebeker
5

Las instrucciones de esta pregunta cubren el proceso para crear un ISO de arranque EFI (como el ISO oficial de Ubuntu x86_64):

¿Cómo creo un ISO de arranque EFI de una versión personalizada de Ubuntu?

Las diferencias clave lo configuran como el archivo preestablecido:

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

Use esto como el archivo 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

Edite la configuración de arranque de grub EFI para la ISO:

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

Ajustado a:

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
}

Establezca isolinux / txt.cfg de esta manera:

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

Cree un catálogo de arranque dual 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 .

Verifique que se haya creado un ISO de arranque EFI:

dumpet -i Custom1404.iso 

Salidas:

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)
otro
fuente
5

Aquí hay un script de shell que realiza este procedimiento, gracias por la introducción: http://www.utech.de/2013/05/shell-script-creating-a-cd-for-unattended-ubuntu-server-installations/

El script que encuentra siguiendo el enlace básicamente implementa el procedimiento que @Elazar describió, por lo que las partes esenciales son solo una pantalla de arriba. Agregué el enlace para ahorrarle tiempo a alguien y hacer que sea un poco más fácil repetir esto para otras versiones de Ubuntu.

Miguel
fuente
2
Bienvenido a Ask Ubuntu! Si bien esto puede responder teóricamente la pregunta, sería preferible incluir aquí las partes esenciales de la respuesta y proporcionar el enlace para referencia.
Oyibo
1
Veo. El script que encuentra siguiendo el enlace básicamente implementa el procedimiento que describió Elazar, por lo que las partes esenciales son solo una pantalla anterior. Agregué el enlace para ahorrar tiempo a alguien y hacer que sea un poco más fácil repetir esto para otras versiones de Ubuntu.
Michael
1
Agregue la explicación de su comentario a su respuesta.
Guntbert
3
El enlace parece estar roto.
Reggie
2
¿Dónde está el guión ahora?
pollitos
1

Un método bastante simple se describe en el siguiente enlace a una respuesta en AskUbuntu,

¿Cómo puedo hacer un disco de restauración USB de arranque desatendido?

  • Cree el sistema que desee con una conexión de red portátil, por ejemplo, de acuerdo con

  • Haga un archivo de imagen dd [comprimido] del sistema (creo que esto es más fácil que remasterizar).

  • Haga un shellscript y llámelo a través de 'autostart' en un sistema en vivo persistente de acuerdo con esta descripción . Puede hacerlo con modificaciones mínimas (tal vez solo coincida con el nombre del archivo de imagen comprimido), o puede modificarlo para adaptarlo a su caso particular.

sudodus
fuente