Necesita un procedimiento paso a paso para crear un servidor kickstart en Ubuntu 14.04 LTS
Respuesta1
Esta es una buena guía paso a paso.
TL;DR; use isohíbrido después de volver a empaquetar el iso personalizado
Para hacer este usb, utilicé una máquina virtual con Ubuntu 14.04 instalado. El objetivo aquí es crear un USB de arranque que no requiera selección de elementos como la distribución del teclado, el idioma, etc. Queremos una instalación automática de un servidor Ubuntu.
Necesitamos obtener la imagen de Ubuntu que personalizaremos para nuestra instalación.
wget http://releases.ubuntu.com/14.04/ubuntu-14.04.2-server-amd64.iso
Necesitaremos un lugar para montar el archivo iso descomprimido.
sudo mkdir -p /mnt/iso
Después de haber creado un punto de montaje para él, ahora tenemos que montarlo. Esto expondrá los archivos que se encuentran dentro de la ISO. Desafortunadamente, los archivos serán de solo lectura.
. sudo mount -o loop ubuntu-14.04.2-server-amd64.iso /mnt/iso
Para modificar los archivos, necesitamos copiarlos a un directorio donde podamos modificarlos, por lo que crearemos el directorio y luego copiaremos los archivos en él.
sudo mkdir -p /opt/ubuntuiso sudo cp -rT /mnt/iso /opt/ubuntuiso
Nuestro nuevo directorio de trabajo será /opt/ubuntuiso
cd /opt/ubuntuiso
Para evitar que se nos solicite la selección de idioma en el proceso de instalación, debemos decirle qué idioma vamos a utilizar. En este caso, se utiliza en porque hablo inglés.
echo en | sudo tee isolinux/lang
Ahora vamos a crear el archivo kickstart con un programa llamado system-config-kickstart. Entonces nos aseguramos de que esté instalado y luego lo ejecutamos.
sudo apt-get install system-config-kickstart system-config-kickstart
Luego guarde el archivo de la GUI en formato
/opt/ubuntuiso/
. Esto debería guardar un archivo llamado ks.cfg. Mi ks.cfg se parece a lo siguiente#Generated by Kickstart Configurator #platform=AMD64 or Intel EM64T #System language lang en_US #Language modules to install langsupport en_US #System keyboard keyboard us #System mouse mouse #System timezone timezone America/Denver #Root password rootpw --disabled #Initial user user ubuntu --fullname "ubuntu" --iscrypted --password $1$MQ0zGB4W$pwjX8nolgr2RJch2Omamt. #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 ext2 --size 100 --asprimary part swap --recommended part / --fstype ext4 --size 1 --grow #System authorization infomation auth --useshadow --enablemd5 #Network information network --bootproto=dhcp --device=eth0 #Firewall configuration firewall --disabled #Do not configure the X Window System skipx %post #!/bin/bash exec < /dev/tty6 > /dev/tty6 chvt 6 echo 'Acquire::http { Proxy "http://10.2.4.27"; };' > /etc/apt/apt.conf.d/02proxy apt-get update apt-get -y upgrade apt-get -y dist-upgrade apt-get install -y git ansible openssh-server vim chvt 1
Hay un poco de secuestro en la posdata (todo lo que sigue
%post
). La línea que comienza con exec y la siguiente línea (chvt 6
) obligan al instalador a mostrar el resultado de los comandos que se ejecutan después de eso. La razón de esto es que la barra de carga no se moverá durante la instalación y puede parecer como si el instalador se hubiera colgado. La siguiente línea que hace el proxy es para apt-cache en nuestra red local. La última línea (chvt 1
) revierte la salida al instalador principal.Ahora necesitamos agregar el archivo preestablecido para poder evitar 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' | sudo tee ks.preseed
Ahora necesitamos informarle al instalador sobre los archivos que acabamos de guardar, por lo que debemos modificar isolinux/txt.cfg. Primero necesitamos hacer que el archivo sea escribible.
sudo chmod +w isolinux/txt.cfg
Luego necesitamos reemplazar la línea adjunta de la siguiente sección.
label install menu label ^Install Ubuntu Server kernel /install/vmlinuz append file=/cdrom/preseed/ubuntu-server.seed vga=788 initrd=/install/initrd.gz quiet --
Reemplace la línea adjunta con
append file=/cdrom/preseed/ubuntu-server.seed initrd=/install/initrd.gz ks=cdrom:/ks.cfg preseed/file=/cdrom/ks.preseed --
Guardar y salir del archivo. También debemos asegurarnos de volver a colocar el archivo en su estado original, así que elimine los permisos de escritura.
sudo chmod -w isolinux/txt.cfg
Ahora crea el nuevo archivo iso que usaremos para crear el usb de arranque.
sudo 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
Para finalizar la ISO de arranque para un USB, necesitamos hibridarla.
sudo isohybrid /opt/autoinstall.iso
Después de hibridarlo, podemos insertarlo en la unidad USB. La unidad USB en mi máquina virtual aparece en
/dev/sdb
, pero debes usar la etiqueta correcta, así que reemplaza X en consecuencia. Asegúrate de que la unidad USB esté desmontada.sudo umount /dev/sdX
Y finalmente inserte la ISO en la unidad USB. (Tenga en cuenta que **esto destruye los datos del dispositivo de destino; asegúrese de saber lo que está haciendo)
sudo dd if=/opt/autoinstall.iso of=/dev/sdX
¡Ahora su unidad USB debería estar lista para la instalación!
Respuesta2
La solución completa:
Remasterizar un CD, es decir, descargar una ISO de instalación de Ubuntu no gráfica (servidor o CD de instalación alternativo) y montarlo. En este caso, tu Ubuntu 14 ISO.
sudo mkdir -p /mnt/iso
sudo mount -o loop ubuntu.iso /mnt/iso
Copie los archivos relevantes a un directorio diferente
sudo mkdir -p /opt/ubuntuiso
sudo cp -rT /mnt/iso /opt/ubuntuiso
Evitar que aparezca el menú de selección de idioma
cd /opt/ubuntuiso
echo en | sudo tee isolinux/lang
Utilice el programa GUI para agregar un archivo kickstart llamadoks.cfg
sudo apt-get install system-config-kickstart
system-config-kickstart # save file to ks.cfg
Para agregar paquetes para la instalación, agregue una %package
sección al ks.cfg
archivo kickstart y agregue al final del ks.cfg
archivo algo como esto.
%packages
@ ubuntu-server
openssh-server
ftp
build-essential
Esto instalará el "paquete" del servidor ubuntu y agregará los paquetes openssh-server
, ftp
y build-essential
.
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' | sudo tee ks.preseed
Configure la línea de comando de arranque para usar los archivos kickstart y preseed
sudo nano 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 --
agregue ks=cdrom:/ks.cfg
y preseed/file=/cdrom/ks.preseed
a la línea de agregar. Puede eliminar las palabras quiet
y 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
sudo 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 todo. Tendrá un CD que instalará un sistema Ubuntu una vez que inicie desde él, sin requerir ninguna entrada.
Modifique los archivos ks.cfg y preestablecidos según sea necesario.