Por: @jonasc Publicado em: 2019-08-16
Build da ISO Kickstart KS iTFLEX
Pacotes necessários
O ambiente de build requer o mesmo sistema operacional da ISO gerada. Exemplo: Para uma ISO baseada em CentOS 8, crie o ambiente de build em uma VM do CentOS 8. OBS: Em outra distro (como Fedora, por exemplo) pode ocorrer problemas de boot da ISO (kernel panic ou outro problema).
# yum groupinstall "Development Tools"
# yum install p7zip p7zip-plugins mkisofs xorriso syslinux
Instalação
Para facilitar a construção da ISO, o projeto itflex no Git possui um Makefile com as instruções de build. Para este lab será usado o padrão do itflex/server
, conforme abaixo.
mkdir ~/git
cd ~/git
git clone git@git.itflex.com.br:itflex/itflex.git
cd itflex/
git pull
No diretório acima consta o arquivo Makefile
que será usado para construção da ISO.
Configuração
Configuração do Makefile
Copie o diretório server/iso/
para o ambiente de build.
cd ~/git/itflex/
scp -r server/iso/ root@172.28.60.73:/root/iso/
Na seção download
do Makefile é feito download da ISO especificada. Na seção iso
contém as instruções para extrair, customizar a ISO e montar ISO personalizada.
Para fazer o download da ISO, acesse o ambiente de build e execute o comando de download:
ssh root@172.28.60.73
cd iso/
make download
Em seguida, execute o comando para realizar build da ISO:
make iso
No fim do processo, estará disponível o arquivo itflex-centos-8.iso
no diretório build
.
Observações importantes:
- No Makefile acima estamos colocando o Minimal em vez do Netinstall (ISO maior)
- Antes o produto usava o Netinstall, atualmente usa ISO maior.
- A opção -V “ITFLEX” define o nome do DVD ou LABEL do pendrive quando for gravado
- Inicialmente produto colocava “iTFLEX CentOS 8” como label
- Com o suporte a pendrive, obrigatoriamente esse nome precisa ser o nome do pendrive
- Problema: Algumas versões do Windows só aceitam caixa alta e um limite menor de caracteres
- Ficou “ITFLEX” para evitar problemas e simplificar
- Foi adicionado 3 novas opções com suporte a VNC (somente tela remota)
Explicação sobre as ferramentas:
- mkisofs constrói a ISO
- Isohybrid (pacote syslinux) torna a ISO bootável oara funcionar com pendrive
- Xorriso cria a partição sda2 para funcionar o EFI
Configuração do GRUB customizado
Para adicionar novas opções de BOOT, é necessário modificar o arquivo isolinux.cfg
(boot modo legacy) e o arquivo grub.cfg
(boot modo UEFI).
Exemplo da configuração do isolinux.cfg
:
label linux
menu label ^Install iTFLEX Base
text help
Instalacao do iTFLEX Base sem configuracao de RAID.
Usado para servidores com um disco ou RAID via Controladora.
endtext
kernel vmlinuz
append initrd=initrd.img inst.stage2=hd:LABEL=ITFLEX inst.ks=hd:LABEL=ITFLEX:/ks.cfg
Exemplo da configuração do grub.cfg
:
menuentry 'Install iTFLEX Base' --class fedora --class gnu-linux --class gnu --class os {
linuxefi /images/pxeboot/vmlinuz inst.stage2=hd:LABEL=ITFLEX inst.ks=hd:LABEL=ITFLEX:/ks.cfg
initrdefi /images/pxeboot/initrd.img
}
1 Observações importantes:
- Não realizar alterações manuais no arquivo, build e publicação no site sem passar pelo processo de desenvolvimento e testes adequados
- Utilize sempre os arquivos que estão no projeto do git (alterações necessárias devem passar pelo desenvolvimento)
- Estamos usando LABEL acima para funcionar tanto DVD quanto pendrive
- Adicionamos novas opções no GRUB direcionando para novos arquivos do KS
Configurado do Kickstart
- Adicionamos uma nova seção %pre que realiza algumas verificações antes de processar o arquivo KS
- Descobre o device do pendrive e faz exclude para não destruir no particionamento
- Descobre se o boot é legacy ou UEFI e configura os comandos de particionamento corretos
- As 3 opções do GRUB requerem acesso à internet
- ISO Offline funciona, mas o KS não pede para configurar rede (setar IP da LAN)
- Porque não tem rede, o pós-instalação falha no
yum install -y itflex-core
- Funcionaria somente com KS configurado em modo DHCP, mas fica ruim, pois o cliente não sabe o IP
Caso queira fazer CentOS offline, basta remover todas as linhas de repo do ks, que ele irá buscar os pacotes da ISO automaticamente.
Para configurar um repo local (offline) adicional, basta configurar:
repo --name="itflex-core" --baseurl=file:///run/install/repo/itflex-core
O diretório /run/install/repo/
é onde a ISO / pendrive está montado durante a instalação. A pasta itflex-core
acima está na raiz da ISO e é uma pasta comum de repo local do CentOS (com repodata, etc).
Testes das funcionalidades
- Testar ISO em VM.
- Gravar ISO em DVD e testar em servidor físico.
- Gravar ISO em pendrive e testar em servidor físico.