Carregando...
CentOS

Criando uma imagem personalizada do CentOS 7

Tempo de leitura: 5 minutos

imagem personalizada 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

# 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:

Menu principal da imagem personalizada do CentOS 7

E também nosso submenu:

Submenu da imagem personalizada do CentOS 7

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:

Menu principal com fundo da imagem personalizada do CentOS 7

Do mesmo modo, temos o submenu:

Submenu com fundo da imagem personalizada do CentOS 7

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:

Syslinux
Mkisofs Linux man page

Um comentário
  1. Aldair André

    Olá Cesar, meu nome é Aldair. Sou um entusiasta novo no mundo Linux, por isso ainda tenho algumas dúvidas no que concerne a personalização do sistema.
    Estou testando o CentOs7 minimal na virtual box se por exemplo eu quiser mudar o logo ou a interface do sistema, deve ser feita depois da instalação do sistema no terminal, ou antes (como)?

Deixe uma resposta

%d blogueiros gostam disto: