Precisa de um procedimento passo a passo para criar um servidor kickstart no Ubuntu 14.04 LTS
Responder1
Este é um bom guia passo a passo
DR; use isohybrid após reembalar o iso personalizado
Para fazer esse usb, usei uma máquina virtual com Ubuntu 14.04 instalado. O objetivo aqui é fazer um USB inicializável que não exija seleção de coisas como layout de teclado, idioma, etc. Queremos uma instalação automática de um servidor Ubuntu.
Precisamos obter a imagem do Ubuntu que iremos personalizar para nossa instalação.
wget http://releases.ubuntu.com/14.04/ubuntu-14.04.2-server-amd64.iso
Precisaremos 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. Isso exporá os arquivos mantidos dentro da iso. Infelizmente, os arquivos serão somente 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 possamos modificá-los, então criaremos o diretório e depois copiaremos 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 sermos solicitados a selecionar o idioma durante o processo de instalação, precisamos informar qual idioma usaremos. Neste caso, en está sendo usado porque falo inglês.
echo en | sudo tee isolinux/lang
Agora vamos construir o arquivo kickstart com um programa chamado system-config-kickstart. Portanto, garantimos que ele esteja instalado e depois o executamos.
sudo apt-get install system-config-kickstart system-config-kickstart
Em seguida, salve o arquivo da GUI no formato
/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 $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
Há um pouco de sequestro no pós-escrito (tudo depois
%post
). A linha que começa com exec e a linha seguinte (chvt 6
) forçam o instalador a mostrar a saída dos comandos executados depois disso. A razão para isso é que a barra de carregamento não se moverá durante a instalação e pode parecer que o instalador travou. A linha a seguir que faz o proxy é para o apt-cache em nossa rede local. A linha final (chvt 1
) reverte a saída para o instalador principal.Agora precisamos adicionar o arquivo preseed para evitar outras questões.
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 tornar o arquivo gravável.
sudo chmod +w isolinux/txt.cfg
Então precisamos substituir a linha de acréscimo da seção seguinte
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 de acréscimo 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 em seu estado original, portanto, remova as permissões de gravação.
sudo chmod -w isolinux/txt.cfg
Agora crie o novo arquivo iso que usaremos para criar o usb inicializável.
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 USB, precisamos hibridizá-lo.
sudo isohybrid /opt/autoinstall.iso
Depois de hibridizá-lo, podemos enviá-lo para a unidade USB. A unidade USB na minha máquina virtual aparece em
/dev/sdb
, mas você precisa usar o rótulo correto, então substitua o X de acordo. Certifique-se de que a unidade USB esteja desmontada.sudo umount /dev/sdX
E, finalmente, coloque o iso na unidade USB. (Observe que **isso destrói dados no dispositivo de destino - certifique-se de saber o que está fazendo)
sudo dd if=/opt/autoinstall.iso of=/dev/sdX
Agora sua unidade USB deve estar pronta para instalação!
Responder2
A solução completa:
Remasterize um CD, ou seja, baixe um ISO de instalação não gráfico do Ubuntu (servidor ou CD de instalação alternativo) e monte-o. Neste caso, seu Ubuntu 14 ISO.
sudo mkdir -p /mnt/iso
sudo mount -o loop ubuntu.iso /mnt/iso
Copie os arquivos relevantes para um diretório diferente
sudo mkdir -p /opt/ubuntuiso
sudo cp -rT /mnt/iso /opt/ubuntuiso
Impedir que o menu de seleção de idioma apareça
cd /opt/ubuntuiso
echo en | sudo tee isolinux/lang
Use o programa GUI para adicionar um arquivo kickstart chamadoks.cfg
sudo apt-get install system-config-kickstart
system-config-kickstart # save file to ks.cfg
Para adicionar pacotes para a instalação, adicione uma %package
seção ao ks.cfg
arquivo kickstart e anexe ao final do ks.cfg
arquivo algo como isto.
%packages
@ ubuntu-server
openssh-server
ftp
build-essential
Isso instalará o "pacote" do servidor ubuntu e adicionará os pacotes openssh-server
, ftp
e build-essential
.
Adicione um arquivo de pré-configuração para suprimir outras questões
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
Defina a linha de comando de inicialização para usar os arquivos kickstart e preseed
sudo nano isolinux/txt.cfg
Procurar
label install
menu label ^Install Ubuntu Server
kernel /install/vmlinuz
append file=/cdrom/preseed/ubuntu-server.seed vga=788 initrd=/install/initrd.gz quiet --
add ks=cdrom:/ks.cfg
e preseed/file=/cdrom/ks.preseed
para a linha de acréscimo. Você pode remover as palavras quiet
e vga=788
. Deveria parecer
append file=/cdrom/preseed/ubuntu-server.seed initrd=/install/initrd.gz ks=cdrom:/ks.cfg preseed/file=/cdrom/ks.preseed --
Agora crie uma nova 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
É isso. Você terá um CD que instalará um sistema Ubuntu assim que inicializá-lo, sem exigir nenhuma entrada.
Ajuste o ks.cfg e pré-configure os arquivos conforme necessário.