Criando um Disco de Boot (Pendrive) USB de Instalação do SAGE 27.17-27.19-27.20

discoboot

O post de hoje ensinarei os passos para criar um pendrive inicializável do Linux CentOS SAGE versão 27-17 desenvolvido pelo CEPEL. Os passos são simples, porém você deve estar atento aos comandos para não passar desapercebido. Então vamos iniciar atendendo aos requisitos e preparação do nosso ambiente

Post atualizado em 07/09/2019: Incluída as imagens das versões 27.17, 27.19 e 27.20 (ambas 32 e 64 bits). Durante a seleção do boot use a opção BIOS LEGACY.

Requisitos:

  1. Dispositivo USB com capacidade de 4GB;
  2. Imagem do DVD do SAGE;
  3. Aplicativo Rufus, versão 2.12 (versão utilizada no caso). Faça download no link https://rufus.akeo.ie/?locale=pt_BR;
  4. Máquina virtual com Linux instalado;

Preparação:

De posse de todos os elementos vamos preparar o dispositivo USB.

  • Insira o pendrive e em seguida abra o Rufus com permissões administrativas e configure conforme ostra a tela abaixo apontando a imagem para o arquivo ISO do SAGE e clicando sobre o botão iniciar para confeccionar o pendrive bootável;
rusfus
Rufus – Preparando usb bootável do SAGE CentOS
  • O processo acima levará em torno de 15 a 20 minutos;
  • Após a conclusão do processo de formatação e extração dos arquivos da imagem do DVD, vamos as modificações necessárias;
  • Dê um nome para seu pendrive: SAGE2717X64 ou de acordo com a sua ISO, conforme abaixo:
    • Para ISO 27.17 – 32 bits: SAGE2717X32;
    • Para ISO 27.17 – 64 bits: SAGE2717X64;
    • Para ISO 27.19 – 32 bits: SAGE2719X32;
    • Para ISO 27.19 – 64 bits: SAGE2719X64;
    • Para ISO 27.20 – 32 bits: SAGE2720X32;
    • Para ISO 27.20 – 64 bits: SAGE2720X64;

Estou disponibilizando os arquivos já alterados de forma a evitar todos os passos abaixo. Caso queira economizar tempo, após extrair o SAGE usando o Rufus, baixe o arquivo de acordo com a sua ISO e extraia o conteúdo do mesmo no raiz do pendrive. Isso irá sobrescrever os arquivos isolinux.cfg, ks.cfg e initrd.img do diretório isolinux. Confirme quando for solicitado.

Continuar os passos abaixo somente se você não for utilizar os arquivos prontos.

  • Edição do arquivo isolinux.cfg localizado na raiz do pendrive, dentro da pasta isolinux. Abra esse arquivo com o bloco de notas (notepad++/vi) ou um editor de texto puro de sua preferência.
  • Localize a linha iniciada por “append ks=cdrom:” e comente-a. Após ela acrescente a seguinte linha deixando conforme mostra-se abaixo. Perceba a necessidade de nomear igualmente seu pendrive ao parâmetro LABEL. Adote sempre letras em maiúsculas, atentar para sua versão ISO conforme acima:

# append ks=cdrom:/isolinux/ks.cfg initrd=initrd.img
append ks=hd:LABEL=SAGE2717X64:/isolinux/ks.cfg initrd=initrd.img

  • Salve o arquivo isolinux.cfg e agora abra o arquivo ks.cfg (kickstart), localizado no mesmo diretório. Busque pela linha cdrom e execute conforme o passo abaixo, comentando cdrom e acrescentando as das linhas na sequência.

# Use CDROM installation media
#cdrom
harddrive --partition=/dev/myusb1 --dir=/
ignoredisk --drives=/dev/myusb

  • A inclusão das duas linhas acima, indica a origem do dispositivo USB e a necessidade de ignorá-lo como partição de instalação.
  • Agora vamos a parte mais trabalhosa, uma vez que é preciso tornar mais automatizado o processo. Iremos precisar de uma estação com linux ou até mesmo uma VM. No meu caso optei pela VM.
  • Com a máquina virtual com Linux aberta, insira o pendrive criado com a ISO na máquina hospedeira e monte-o na sua VM.
  • Para simplificar, adotarei que o ponto de montagem do meu pendrive é /mnt/pendrive. Agora abra um terminal na máquina virtual e execute os comandos abaixo, faça-o com o usuário root.

# cp /mnt/pendrive/isolinux/initrd.img /tmp
# mkdir /tmp/initrd
# cd /tmp/initrd
# xz -dc < ../initrd.img | cpio --quiet -i --make-directories

  • O comando acima irá extrair a árvore de diretórios da imagem initrd.img. Navegue até o diretório /tmp/initrd/etc/udev/rules.d/ e crie um arquivo com o nome 99-installusb-drive-symlink.rules. Acrescente as duas linhas abaixo ao arquivo. Preste bastante atenção nesse processo.

KERNEL=="sd*", SUBSYSTEMS=="usb", DRIVERS=="usb-storage",
ATTR{removable}=="1", SYMLINK+="myusb%n"
KERNEL=="sd*", ATTRS{removable}=="1", SYMLINK+="myusb%n"

  • Após editar o arquivo, salve-o e retorne ao diretório /tmp/initrd.

# cd /tmp/initrd
# find . 2>/dev/null | cpio --quiet -c -o | xz -9 --format=lzma>"../new_initrd.img"

  • O comando acima irá recriar a imagem initrd.img, porém adaptável, agora ela irá nominar o primeiro dispositivo removível do tipo usb como myusb1. Esse passo torna-se necessário para que o passo fique transparente. Poderia ser descartado caso o usuário deseja-se especificar diretamente a unidade, exemplo /dev/sdb1 no parâmetro harddrive, mas não ficaria válido se o computador tivesse mais de uma unidade.
  • Com a nova imagem criada, renomeie a imagem original initrd.img que está no diretório isolinux do pendrive para initrd_old.img e em seguida copie a new_initrd.img para o diretório isolinux do pendrive com o nome initrd.img.

# mv /mnt/pendrive/isolinux/initrd.img
/mnt/pendrive/isolinux/initrd_old.img
# cp /tmp/new_initrd.img /mnt/pendrive/isolinux/initrd.img

  • Fazendo os passos acima seu pendrive estará pronto para uso. Desmonte-o da sua máquina virtual e remova-o com segurança da máquina hospedeira.

Conclusão:

Espero que esse passo a passo seja útil para você também. Esse mecanismo nos ajudou bastante com PC industriais que não possuem unidade de cdrom para a instalação do SAGE CentOS do CEPEL.

Fontes:
https://access.redhat.com/solutions/24029
https://centos.org/forums/viewtopic.php?f=13&t=53632
https://www.centos.org/docs/5/html/Installation_Guide-en-US/s1-kickstart2-options.html
https://rufus.akeo.ie/

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *