você está aqui: Home  → Arquivo de Mensagens Programação Shell Linux: Inscrições Abertas

Mini-Howto Dual boot para terminais leves (tsp e freedos)

Colaboração: Marco Sinhoreli

Data de Publicação: 23 de Abril de 2004

Em: 25/03/2004 Distribuição utilizada: Debian Woody

Introdução:

A idéia é providenciar na inicialização do terminal leve usando GNU/Etherboot e o GNU/Grub um menu para boot do Linux via ltsp ou do GNU/Freedos. Não entrarei em detalhes de como configurar o ltsp pois o projeto já se encontrabem documentado (www.ltsp.org).

Ferramentas necessárias:

  1. Instale o mknbi.
  2. Baixe do site www.ltsp.org na sessão downloads o ltsp_initrd_kit.
  3. Baixe os fontes do Grub:

    $ cd /usr/src
    $ mkdir grub-src
    $ cd grub-src
    $ wget http://ruslug.rutgers.edu/~mcgrof/grub-images/grub-debian-sources/grub_0.93+cvs20030224.orig.tar.gz
    $ wget http://ruslug.rutgers.edu/~mcgrof/grub-images/grub-debian-sources/grub_0.93+cvs20030224-2.diff.gz
    $ tar zxvf grub_0.93+cvs20030224.orig.tar.gz
    $ gunzip grub_0.93+cvs20030224-2.diff.gz
    $ patch -p0 < grub_0.93+cvs20030224-2.diff
    $ cd grub-0.93+cvs20030224
    
  4. Altere as linhas do código fonte dos arquivos:
    $ cd stage2
    fsys_reiserfs.c
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    De:  
           __u32 long j_mount_id;
    Para: 
           /* __u32 long j_mount_id; */
    
    De:
             || desc.j_trans_id != next_trans_id
             || desc.j_mount_id != header.j_mount_id)
    Para:
             || desc.j_trans_id != next_trans_id)
             /*  || desc.j_mount_id != header.j_mount_id) */
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    

    disk_io.c
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    De:
       {"reiserfs", reiserfs_mount, reiserfs_read, reiserfs_dir, 0 reiserfs_embed},
    Para:
       {"reiserfs", reiserfs_read, reiserfs_dir, 0, reiserfs_embed},
    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    

    Após alterado os fontes, verifique os parametros para o configure dos fontes em /usr/src/grub-src/grub-0.93+cvs20030224/netboot/README.netboot

    O exemplo é para o nic rtl8139 e para que seja disponibilizado os arquivos nbgrub e pxegrub (--enable-diskless) e desabilidado reiserfs (desabilitei devido a problemas ao compilar com make):

    $ ./configure --enable-rtl8139 --enable-diskless --disable-reiserfs
    $ make
    
  5. Copie os arquivos binários nbgrub e pxegrub para o diretório do tftp:
    $ mkdir /tftpboot/grub 
    $ cp stage2/nbgrub /tftpboot/grub/nbgrub.rtl8139
    $ cp stage2/pxegrub /tftpboot/grub/pxegrub.rtl8139
    
  6. Baixe do site do freedos a imagem para diquete.
  7. Monte a imagem do freedos no mnt por exemplo:
    $ mount -o loop -t vfat freedos.img /mnt
    
  8. Vamos agora preparar a imagem do freedos para ser inicializavel pelo Eherboot:
    $ mknbi-fdos /mnt/kernel.sys freedos.img > netfreedos.img
    $ cp netfreedos.img /tftpboot/boot
    
  9. No site www.romomatic.net, selecione a versão 5.3.3 para o boot do GNU/Freedos. O motivo para o uso de uma versão da ROM do Etherboot em desenvolvimento é para que se tenha a variável "vendor-class-identifier" diferente da utilizada para o boot inicial. O dhcp identifica a variável enviada pela rom na requisição do serviço e carrega a ação explicita no dhcpd.conf. Como o freedos.img não pode ser carregado pelo nbgrub via tftp, a idéia é que o nbgrub descarregue outra ROM via tftp e que esta ao solicitar novamente as informações do dhcp o dhcp verifica novamente a variavel "vendor-class-identifier" enviada pela ROM e envia o freedos.img.
  10. Selecione a rom da sua placa de rede e o formato de saída "LILO Bootable ROM (.zlilo) Image" (para o boot pelo grub).
  11. Clique em Configure e na área "ASK_BOOT:" deixe o campo em branco.
  12. Clique no botão "Get Rom" e salve o arquivo.
  13. Copie o arquivo salvo para /tftpboot/roms:
    $ mkdir /tftpboot/roms
    $ cp eb-5.3.3-rtl8139b.zlilo /tftpboot/roms/rtl8139b.zlilo
    
    Neste exemplo estou usando a rom para rtl8139 e deixei o nome mais sugestivo :o)
  14. Crie os diretório para os arquivos do grub, o kernel, o initrd e a imagem do freedos.
    $ mkdir -p /tftpboot/boot/grub
    
  15. Descompacte o pacote ltsp_initrd_kit e copie os arquivos bzImage-2.4.xx-ltsp-1 e initrd-2.4.xx-ltsp-1.gz para /tftpboot/boot.
  16. Crie um arquivo /tftpboot/grub/menu.lst:
    ### Inicio do /tftpboot/grub/menu.lst
    
    default = 0
    timeout = 15
    tftpserver 192.168.20.6
    color magenta/blue black/magenta
    splashimage /boot/grub/splash.xpm.gz
    
    title = GNU/Linux (LTSP)
            root (nd)
            kernel /boot/bzImage-2.4.xx-ltsp-1 init=/linuxrc rw root=/dev/ram0
            initrd /boot/initrd-2.4.xx-ltsp-1.gz
     
    title GNU/Freedos
            kernel /boot/rtl8139b.zlilo
    
    ### Fim do /tftpboot/grub/menu.lst
    
    16- Configurando o dhcpd.conf
    
    ### Inicio do dhcpd.conf 
    
    default-lease-time            21600;
    max-lease-time                21600;
    ddns-update-style none;
    allow booting;
    allow bootp;
    option subnet-mask            255.255.255.0;
    option option-128 code 128    = string;
    option option-129 code 129    = text;
    option broadcast-address      192.168.0.255;
    option routers                192.168.0.1;
    option domain-name-servers    200.204.0.10;
    option domain-name            "ltsp";
    use-host-decl-names           on;
     
    shared-network WORKSTATIONS {
      subnet 192.168.20.0 netmask 255.255.255.0 {
        range dynamic-bootp        192.168.0.10 192.168.0.100;
        option root-path           "192.168.0.1:/opt/ltsp";
        if substring (option vendor-class-identifier, 0, 13) = "Etherboot-5.3" {  
          filename                "/boot/netfreedos.img";
        } else {
          filename                "/nbgrub/nbgrub.rtl8139";
        }
      }
    }
    
    ### Fim do dhcpd.conf 
    
  17. Para a sua eprom etherboot ou diquete com a rom utilize versões diferentes (5.2.4 por exemplo) da sugerida para o boot do freedos.

Happy Hacking :)

Referências:



Veja a relação completa dos artigos de Marco Sinhoreli