você está aqui: Home  → Arquivo de Mensagens

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

 

 

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script