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:
- Dispositivo USB com capacidade de 4GB;
- Imagem do DVD do SAGE;
- Aplicativo Rufus, versão 2.12 (versão utilizada no caso). Faça download no link https://rufus.akeo.ie/?locale=pt_BR;
- 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;
- 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
einitrd.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âmetroLABEL
. 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 arquivoks.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 nome99-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 comomyusb1
. 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 parainitrd_old.img
e em seguida copie anew_initrd.img
para o diretório isolinux do pendrive com o nomeinitrd.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/