De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
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:
- Instale o mknbi.
- Baixe do site www.ltsp.org na sessão downloads o ltsp_initrd_kit.
- 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
- 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
- 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
- Baixe do site do freedos a imagem para diquete.
- Monte a imagem do freedos no mnt por exemplo:
$ mount -o loop -t vfat freedos.img /mnt
- 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
- 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.
- Selecione a rom da sua placa de rede e o formato de saída
"LILO Bootable ROM (.zlilo) Image" (para o boot pelo grub).
- Clique em Configure e na área "ASK_BOOT:" deixe o campo em branco.
- Clique no botão "Get Rom" e salve o arquivo.
- 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)
- Crie os diretório para os arquivos do grub, o kernel, o initrd e a imagem do freedos.
$ mkdir -p /tftpboot/boot/grub
- 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.
- 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
- 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 :)