Linux Servidor linux

Criando uma imagem personalizada do CentOS 7

Criando uma imagem personalizada do CentOS 7

Neste artigo vamos criar uma imagem personalizada do CentOS 7. Vamos personalizar o menu incluindo opções de instalação usando arquivos kickstart (veja como criar seu próprios arquivos kickstart neste artigo e também buscando os pacotes de instalação num repositório local (veja como criar um repositório local neste artigo.

Para finalizar, nós também iremos alterar a imagem de fundo do menu, fazendo uma imagem personalizada. Vamos lá!!!

Preparando o ambiente e baixando a imagem

Primeiro iremos criar um diretório de trabalho para podermos personalizar nossa imagem do CentOS 7:

# mkdir -pv ~/centos/{centos7,centos7-custom}

Antes, alguns pacotes serão necessários, então vamos instalar com o comando:

# yum install -y vim wget rsync genisoimage ImageMagick

Agora, acessamos nosso diretório e vamos baixar a imagem do CentOS 7:

# cd ~/centos
# wget http://linorg.usp.br/CentOS/7/isos/x86_64/CentOS-7-x86_64-Minimal-1810.iso

Após finalizado o download da imagem, vamos montá-la na pasta ~/centos/centos7 com o comando abaixo:

# mount -o loop -t iso9660 CentOS-7-x86_64-*.iso ~/centos/centos7

Após termos montado a imagem, precisamos copiar toda a estrutura de pastas da iso para nosso diretório de trabalho centos7-custom. Vamos usar o rsync para isso:

# rsync -avHl ~/centos/centos7/ ~/centos/centos7-custom/

Pronto, com todos os arquivos e pastas da imagem copiados, já não é mais necessário a imagem montada e nem o diretório de montagem. Então já podemos desmontá-la e excluir a pasta:

# umount ~/centos/centos7/
# rmdir -v ~/centos/centos7/

Pronto! Já podemos iniciar a configuração do syslinux.

Criando menu personalizado

O DVD de instalação do CentOS utiliza o syslinux como boot loader, é nele que iremos trabalhar. Para isso vamos entrar no diretório de trabalho que contém os arquivos da instalação:

# cd ~/centos/centos7-custom

Dentro do diretório existe a pasta isolinux, é nela que vamos adicionar os arquivos que iremos utilizar e o arquivo de configuração do syslinux.

Primeiramente vamos copiar um arquivo kickstart (veja exemplo nesse artigo, no diretório isolinux:

# cp /root/centos-ks.cfg isolinux/

Vamos renomear o arquivo isolinux.cfg e depois criar um novo. Esse arquivo é utilizado pelo syslinux para exibir as opções do menu. Abaixo temos o arquivo que criei com as alterações já comentadas:

# mv -v isolinux/isolinux.cfg isolinux/isolinux.bkp
# vim isolinux/isolinux.cfg

####S Utiliza o modo gráfico do syslinux default vesamenu.c32

Define uma imagem de fundo.

menu background splash.png

Define um título para tela de menu

menu title CentOS 7 - Linux na Web

Define a posição do menu

menu vshift 3

Define a quantidade de linha do menu

menu rows 8

Define a distância da margens do menu

menu margin 6

Define a posição do texto de ajuda dos itens do menu

menu helpmsgrow 13

Define a cor da borda em volta menu

menu color border * #00000000 #00000000 none

Define a cor do titulo

menu color title 0 #ff7ba3d0 #00000000 none

Define as cores do item selecionado

menu color sel 0 #ffffffff #00000000 none

Define a cor dos itens não selecionados

menu color unsel 0 #84b8ffff #00000000 none

Define a cor do texto de ajuda

menu color help 0 #ff7ba3d0 #00000000 none

Define primeiro item do menu

label linux
    menu label Instalacao do CentOS 7
    default
    text help
        Instale o sistema normalmente pelo DVD fazendo suas escolhas
        de forma manual.
    endtext
    kernel vmlinuz
    append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet

Define segundo item do menu

label memtest
    menu label Teste de memoria
    text help
        Utilize a ferramenta de teste para identificar problemas
        nos pentes de memorias do sistema.
    endtext
    kernel memtest

Insere uma linha em branco

menu separator

Cria um submenu para nossas opções personalizadas

menu begin Personalizadas
    menu title Personalizadas

Define primeiro item do submenu

label kickstart1
    menu label Instalacao kickstart (via dvd)
    text help
    Instale o CentOS de forma personalizada utilizando o arquivo
    de kickstart (centos-ks.cfg) que se encontra dentro do DVD.
    endtext
    kernel vmlinuz
    append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 inst.ks=hd:LABEL=CentOS\x207\x20x86_64:/isolinux/centos-ks.cfg quiet

Define segundo item do submenu

label kickstart2
    menu label Instalacao kickstart (via rede)
    text help
    Instale o CentOS de forma personalizada utilizando o arquivo
    de kickstart (centos-ks.cfg) que se encontra num servidor web.
    endtext
    kernel vmlinuz
    append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 inst.ks=https://linuxnaweb.com/cfg/centos-ks.cfg quiet

Define terceiro item do submenu

label repo
    menu label Instalacao kickstart (repositorio local)
    text help
    Instale o CentOS de forma personalizada utilizando o arquivo
    de kickstart e baixando os pacotes de um repositorio local.
    endtext
    kernel vmlinuz
    append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 inst.ks=hd:LABEL=CentOS\x207\x20x86_64:/isolinux/centos-ks.cfg inst.repo=https://linuxnaweb.com/base/ quiet

menu separator

Define opção para retornar ao menu principal

label returntomain
    menu label Retornar
    menu exit

menu end

Antes de mais nada, explicaremos alguns comandos usados no itens do menu:

label: Define um nome para o item do menu.
menu label: Exibe o nome do item do menu.
text help … endtext: Define o texto de ajuda quando um item é selecionado.
kernel vmlinuz: Inicia o executável vmlinuz para iniciar o sistema de boot e está ligado ao kernel.
append: Acrescenta parâmetros ao iniciar o kernel. E algumas opções de append são:
initrd: Imagem inicial para instalação do sistema;
inst.stage2: Especifica o local da imagem de instalação;
inst.ks: Especifica o local do arquivo de kickstart;
inst.repo: Especifica o repositório local onde se encontram os pacotes.

Após adicionado nosso arquivo de configuração, vamos criar a imagem customizada. Primeiro voltamos para pasta ~/centos/:

# cd ~/centos/

E executamos o comando mkisofs abaixo, para criar a imagem personalizada do CentOS 7:

# mkisofs -o centos7-custom.iso \
    -V 'CentOS 7 x86_64' \
    -b isolinux/isolinux.bin \
    -c isolinux/boot.cat \
    -no-emul-boot \
    -boot-load-size 4 \
    -boot-info-table \
    -R -J -v -T centos7-custom/

Enfim, para maiores informações sobre o comando mkisofs, deixarei um link no final do artigo.

Após finalizado o comando mkisofs, será gerado na pasta ~/centos/ a nossa imagem com o nome centos7-custom.iso.

Dessa forma, já podemos utilizar nossa imagem personalizada para instalar o CentOS. Veja como ficou o menu de instalação:

image

E também nosso submenu:

image

Adicionando uma imagem de fundo no menu

Deixaremos nossa iso ainda mais customizada alterando o fundo preto por uma imagem. Primeiramente, criei a imagem utilizando o GIMP, mas você pode encontrar no google algumas opções.

Para ser utilizado pelo o syslinux a imagem deverá ter o tamanho de 640×480, ter 16 bits e utilizar apensa 14 cores. Bem, esse foi o formato que funcionou para mim.

Após criar a imagem convertemos utilizando o comando abaixo:

# convert -resize 640x480 -depth 16 -colors 14 linuxnaweb.png linuxweb.png

Então, copiamos a imagem para o diretório isolinux/:

# cp -v linuxweb.png ~/centos/centos7-custom/isolinux/

Agora para finalizar temos que mudar alguns parâmetros no arquivo de configuração do syslinux, para utilizar a nossa imagem e também melhorar um pouco o visual.

Vamos mudar os comando abaixo:

# cd ~/centos/centos7-custom
# vim isolinux/isolinux.cfg

    # Define uma imagem de fundo.
    menu background linuxweb.png

    # Define a cor da borda em volta menu
    menu color border 0 #ffffffff #00000000

    # Define a cor do titulo
    menu color title 0 #ff000000 #ffffffff none
    
    # Define as cores do item selecionado
    menu color sel 7 #ffffffff #ff000000
    
    # Define a cor dos itens não selecionados
    menu color unsel 0 #ff000000 #ffffffff none

E geramos a imagem iso novamente com os comando abaixo:

# cd ~/centos/
# mkisofs -o centos7-custom.iso \
    -V 'CentOS 7 x86_64' \
    -b isolinux/isolinux.bin \
    -c isolinux/boot.cat \
    -no-emul-boot \
    -boot-load-size 4 \
    -boot-info-table \
    -R -J -v -T centos7-custom/

Pronto! Adicionamos nossa imagem, e temos como resultado:

image

Do mesmo modo, temos o submenu:

image

Agora você já pode criar sua iso personalizada com diversas opções de instalações.

Assim finalizamos o artigo, para maiores informações ou se aprofundar no tema: https://wiki.syslinux.org/wiki/index.php?title=Menu
https://linux.die.net/man/8/mkisofs

comments powered by Disqus

Assine nossa Newsletter! 🐧

Se una com os assinantes de nossa Newsletter, sempre que tiver postagem nova você será notificado.