Memnemonics fike’s Rotating Header Image

Syslinux e múltiplas distribuições no pendrive USB

    Depois de alguns meses do Ulisses (thebug) Castro me atormentar para publicar, segue um documento rápido para quem trabalha com muitas instalações de linux em ambiente corporativo.

    A instalação de distribuição linux usando CD ou DVD é um processo relativamente rápido hoje. Se estiver fazendo a instalação em poucos computadores é uma tarefa também tranquilo mas se estiver com um volume grande de instalação e sua infra-estrutura de rede não estiver preparada para instalação em massa de algumas centenas de servidores o processo de instalação será manual e tedioso.  Para alguns é um bem tedioso fazer esse tipo de operação. :P

   Uma das partes que realmente incomoda (ao menos para mim) é ter que carregar algumas mídias de CD/DVD com alguns sabores de distribuições Linux, então perguntando se era possível ter um pendrive USB (USB flashdrive) que tivesse esses instaladores.

    No vasto oceano de informações (internet) tem um excelente documento escrito por David Heller sobre instalação de Red Hat em USB flashdrive. Porém é possível usar esse documento para qualquer outra distribuição, e o programa chave para conseguir realizar a tarefa é o famoso Syslinux.

    No caso desta nota, foi preparado para duas distribuições: Debian e Red Hat (provavelmente funcionará no CentOS e Fedora) com seus respectivos instaladores. Presumindo que já tenha instalado o syslinux via pacote iremos e tenha um pendrive disponível para uso. Faça backup de seus dados, sem garantias de integridade de seus dados. ;)
 

    Supondo que o pendrive é reconhecido por seu linux como "/dev/sdb" e a partição dele é reconhecida como "/dev/sdb1". Segue:

1 – A imagem mbr está localizada em "/usr/lib/syslinux/" e usaremos o dd para copiar a imagem mbr para o pendrive.

#dd if=/usr/lib/syslinux/mbr.bin of=/dev/sdb


2 – Após copiar o imagem mbr, copie o syslinux para o pendrive na partição do mesmo.

#syslinux /dev/sdb1

 

3 – Montar o pendrive em "/mnt/pendrive".

#mount /dev/sdb1 /mnt/pendrive

 

4 – Copiar o menu.c32, localizado em "/usr/lib/syslinux" para o pendrive.

#cp /usr/lib/syslinux/menu.c32 /mnt/pendrive

 

5 – Criar os diretórios para os instaladores do Debian e Red Hat.

#mkdir /mnt/pendrive/debian64
#mkdir /mnt/pendrive/rh64

 

6 – Baixe o instalador do Debian para pendrive. Para esta nota, foi usado a versão do Lenny AMD64bits, também foi testado com o Lenny i386, Etch AMD64 e I386.

#wget http://ftp.debian.org/debian/dists/lenny/main/installer-amd64/current/images/hd-media/boot.img.gz

 

7 – Descompactar a imagem do instalador Debian.

#gunzip boot.img.gz

 

8 – Anexar (falta de nome mais apropriado) num dispositivo loopback para ver o conteúdo da imagem.

#losetup /dev/loop0 boot.img

 

9 – Mountar o dispositivo loopback com a imagem do instalador Debian.

#mkdir /mnt/temp
#mount -o loop /dev/loop0 /mnt/temp

 

10 – Copiar o kernel e a imagem initrd do Debian.

#cp /mnt/temp/linux /mnt/pendrive/debian64
#cp /mnt/temp/initrd.gz /mnt/pendrive/debian64

 

11 – Desmontar o ponto de montagem /mnt/temp.

#umount /mnt/temp

 

12 – Liberar o dispositivo loopback usado para imagem Debian.

#losetup -d /dev/loop0

 

    No caso do Red Hat, será suposto para essa nota que já tenha a imagem do mesmo. Os procedimentos funcionaram para a série 4.X e 5.X do Red Hat Enterprise. 

13 – Mountar a imagem de instalação do Red Hat, no caso aqui, usamos uma imagem de DVD.

#mount -o loop rhel-5.2-server-x86_64-dvd.iso /mnt/temp

 

14 – Copiar o kernel Red Hat e o initrd para o diretório "/mnt/pendrive/rh64"

#cp /mnt/temp/isolinux/vmlinuz /mnt/pendrive/rh64
#cp /mnt/temp/isolinux/initrd.gz /mnt/pendrive/rh64

 

15 – Demontar a imagem do DVD Red Hat.

#umount /mnt/temp

 

16 – Para ter um menu com opções ao iniciar um servidor/computador com o pendrive com syslinux, precisará ter um menu com as opções de boot. O syslinux buscará o arquivo syslinux.cfg, usando o seu editor favorito, seguindo essa nota, ficará como abaixo:

#vi /mnt/pendrive/syslinux.cfg
DEFAULT menu.c32
 
MENU TITLE Instalação Automatizada por pendrive
 
LABEL Debian Lenny
    MENU LABEL Debian Lenny  AMD 64 bits
    KERNEL debian64/linux
    APPEND linux initrd=debian64/initrd.gz priority=low vga=normal quiet –
 
LABEL Red Hat 5 Update 2 AMD64
    MENU LABEL Red Hat 5 Update 2 AMD 64
    KERNEL rh64/vmlinuz
    APPEND linux load_ramdisk=1 initrd=rh64/initrd.img

 

    O "MENU TITLE" pode escrever o que for mais conveniente. O "MENU LABEL" é o descritivo de opção que aparecerá no momento do boot. O APPEND são as opções para iniciar de cada instalação, no caso do Debian está configurado para o debconf fazer todas as perguntas da instalação. Pode mudar para o padrão das imagens de CD/DVD que é o médio alterando de "priority=low" para "priority=medium". Também é possível automatizar a instalação do Debian e Redhat usando os recursos de Seed (Debian) ou  o Kickstart (Red Hat) mas isso ficar para outra nota.
 

17 – Por fim, copiar as imagens de instalação (Debian e Red Hat) para "/mnt/pendrive". Lembre-se que o tamanho do pendrive pode limitar a quantidade de imagens que pode usar ao mesmo tempo, como uso um pendrive de 4GB, foi copiado a instalação do Debian Lenny via Rede (netinstall) e o DVD completo da instalação do Red Hat 5.2.

#cp debian-testing-amd64-netinst.iso /mnt/pendrive
#cp rhel-5.2-server-x86_64-dvd.iso /mnt/pendrive

 

18 –  O fim com uma imagem de um exemplo de um pendrive preparado para múltiplos instaladores Linux. Outras distribuições Linux também permitem este tipo de instalação, teste aí e avise. :)

 

10 Comments

  1. Absolutamente totalmente incrivelmente sensacional!!!!!!!1!!!oneoneone hehehehehe

  2. ae tigre! boa… enfim…. ficou catedral mas saiu! ehehhehe :)

    []‘s

  3. Toy says:

    Salve, Fernando!

    Estou postando aqui agradecimentos pelo conteúdo do post que foi utilissímo no trabalho que estou desenvolvendo aqui com um maquina de automação comercial.

    Um grande abraços e parabéns!

  4. gutocarvalho says:

    Post salvando vidas ;)

    []‘s
    Guto

  5. Adriano Machado says:

    Cara, ficou fantastico, você não tem idéia de como isso irá me ajudar.
    Obrigado.

  6. everson tomaz says:

    CAROS AMIGOS, EU NÃO ENTENDI OS PASSOS 8 E 9 E ONDE EU DEVO DESCOMPACTAR O ISNTALADOR, NA PASTA DA DISTRIBUIÇÃO OU NO RAIZ DO PENDRIVE? NO MEU CASO EU ESTOU TENTANDO FAZER UMA UMA ISO DO UBUNTU 9.04 ALTERNATE. TEM COMO?

    DESDE JÁ AGRADEÇO.

  7. andre says:

    <p>cara como faço para  da um  boot  com pendrive em  uma  maquina que  não tem essa opçao  ou usando um disquete</p>

  8. gostaria de ver um tutorial com estas caracteristicas mas que associasse windows e linux ficaria tão interessante quanto essa…
    fica aí a idéia pois eu msm estou em busca de como colocar 2 linux (slitaz e ubuntu) e 2 windows (XP e Seven) todos num msm pendrive para instalações tanto em servidores como estações…

  9. Beco says:

    Olá, estou tentando realizar essa proeza. Já o fiz seguindo o tal UNETBOOTIN. Vou ver como me saio com o syslinux que parece mais fácil.

    Só não entendi um negócio. No seu passo 17 você copiou:
    #cp debian-testing-amd64-netinst.iso /mnt/pendrive

    Eu copiei:
    #cp debian-6.0.3-amd64-DVD-1.iso /mnt/pendrive

    A questão é: (1) como o instalador sabe o nome da imagem iso? Não foi configurada em nenhum lugar? (2) não seria o certo copiar para dentro da pasta /mnt/pendrive/debian64 ao invés de colocar na raíz do pendrive?

    Muito obrigado pelo post!
    Beco

  10. Fernando Ike says:

    Tentando responder sua questão 1:

    - As imagens tem um conjunto de instruções mínimas para iniciar o sistema até chegar a parte de como ele irá carregar o restante dos componentes usados por ele. No caso do Debian, o debian-installer fará a pergunta para você e no Fedora, Red Hat e Cent OS isso ficará com o Kickstart.

    2 – Até pode, só um passo a mais. É coisa para se testar. :)

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word