Este é um bom guia passo-a-passo
TL; DR ; use isohybrid após reembalar a custom iso
Para fazer este usb, eu usei uma máquina virtual com o Ubuntu 14.04 instalado. O objetivo aqui é fazer um usb inicializável que não exigem seleção de coisas como layout de teclado, idioma, etc. quer uma instalação automática de um servidor Ubuntu.
Precisamos obter a imagem do Ubuntu que iremos personalizar nossa instalação.
wget http://releases.ubuntu.com/14.04/ubuntu-14.04.2-server-amd64.iso
Vamos precisar de um local para montar o arquivo iso descompactado.
sudo mkdir -p /mnt/iso
Depois de criarmos um ponto de montagem para ele, agora temos que montá-lo. Isto irá expor os arquivos que são mantidos dentro do iso. Infelizmente, os arquivos serão somente de leitura
sudo mount -o loop ubuntu-14.04.2-server-amd64.iso / mnt / iso
Para modificar os arquivos, precisamos copiá-los para um diretório onde podemos modificá-los, então vamos criar o diretório e depois copiar os arquivos para ele.
sudo mkdir -p /opt/ubuntuiso sudo cp -rT /mnt/iso /opt/ubuntuiso
Nosso novo diretório de trabalho será / opt / ubuntuiso
cd /opt/ubuntuiso
Para evitar ser solicitado a selecionar o idioma no processo de instalação, precisamos dizer qual idioma vamos usar. Neste caso, en está sendo usado porque eu falo inglês.
echo en | sudo tee isolinux/lang
Agora vamos realmente construir o arquivo kickstart com um programa chamado system-config-kickstart. Por isso, certificamo-nos de que está instalado e então corra.
sudo apt-get install system-config-kickstart system-config-kickstart
Em seguida, salve o arquivo da GUI em
/opt/ubuntuiso/
. Isso deve salvar um arquivo chamado ks.cfg. Meu ks.cfg se parece com o seguinte#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 $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
Há um pouco de sequestro no pós-escrito (tudo depois de
%post
). A linha que começa com exec e a seguinte linha (chvt 6
) estão forçando o instalador a mostrar a saída dos comandos que são executados depois disso. A razão para isto é que a barra de carregamento não se moverá durante a instalação e pode parecer que o o instalador foi interrompido. A seguinte linha que faz o proxy é para o apt-cache em nossa rede local. A linha final (chvt 1
) reverte o saída para o instalador principal.Agora precisamos adicionar o arquivo preseed para que possamos evitar outros perguntas.
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
Agora precisamos informar ao instalador sobre os arquivos que acabamos de salvar então precisamos modificar o isolinux / txt.cfg. Primeiro precisamos fazer o arquivo gravável.
sudo chmod +w isolinux/txt.cfg
Em seguida, precisamos substituir a linha anexa da seção a seguir
label install menu label ^Install Ubuntu Server kernel /install/vmlinuz append file=/cdrom/preseed/ubuntu-server.seed vga=788 initrd=/install/initrd.gz quiet --
Substitua a linha anexa por
append file=/cdrom/preseed/ubuntu-server.seed initrd=/install/initrd.gz ks=cdrom:/ks.cfg preseed/file=/cdrom/ks.preseed --
Salve e saia do arquivo. Também precisamos ter certeza de que colocamos o arquivo de volta ao seu estado original, remova as permissões de gravação.
sudo chmod -w isolinux/txt.cfg
Agora crie o novo arquivo iso que usaremos para criar o arquivo inicializável usb.
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 o iso inicializável para um usb, precisamos hibridizar isso.
sudo isohybrid /opt/autoinstall.iso
Depois de hibridizar, podemos empurrá-lo para o drive USB. O drive usb na minha máquina virtual aparece em
/dev/sdb
, mas você precisa usar o etiqueta correta, então substitua o X adequadamente. Certifique-se de que o drive usb é desmontado.sudo umount /dev/sdX
E, finalmente, empurre o iso para o drive USB. (Por favor note ** isto destrói dados no dispositivo de destino - verifique se você sabe o que é fazendo)
sudo dd if=/opt/autoinstall.iso of=/dev/sdX
Agora o seu drive USB deve estar pronto para instalação!