[FUGSPBR] [OFF-TOPIC] Fazendo um LiveCD com FreeBSD
Pablo Santiago Sanchez
pablo.sanchez em cidades.gov.br
Qua Set 22 09:37:28 BRT 2004
Galera, apesar de ter umas ferramentas para facilitar a criação de
liveCDs ou releases do FreeBSD, eu queria fazer um na mão que
funcionasse de verdade. Tentei usar o rc.diskless, fiz mudancas no
loader.rc e no loader.conf para mudar o root para o CD, e tudo mais, mas
não funcionava nem a pau. Misturei uns 20 tutoriais e no final saí com
esta fórmula torpe, mas que funcionou. Então repasso para vocês.
Basicamente acabei usando as informações de apenas 2 tutoriais (citados
ao final).
=========================================================================
Criando um liveCD do FreeBSD
Autor torpe: Pablo Santiago Sánchez
1 - Crie um subdiretório chamado livecd (por exemplo, pode ser o nome
que você quiser)
2 - Crie a estrutura mínima de diretórios conforme a lista abaixo
/
|-- bin
|-- boot
| `-- defaults
| `-- kernel
|-- dev
|-- etc
| |-- defaults
| |-- mtree
| |-- namedb
| |-- ppp
| |-- ssh
| `-- ssl
|-- mnt
|-- modules
|-- proc
|-- root
|-- sbin
|-- tmp -> /var/tmp (faça um link simbólico para o /var/tmp, fica mais
fácil depois na criação dos ram disks)
|-- usr
| |-- bin
| |-- lib
| `-- aout
| |-- libexec
| |-- local
| `-- etc
| |-- sbin
| `-- share
| `-- misc
`-- var
3 - Copie todos os executáveis,bibliotecas e configurações requeridas,
respeitando a posição original dos mesmo (ex: /bin/ls => livecd/bin/ls,
/etc/rc.conf => livecd/etc/rc.conf). Se quiser, pegue os scripts perl
deste site para facilitar sua vida: http://neon1.net/misc/minibsd.html
4 - Faça todas as alterações necessárias dentro do diretorio livecd/etc
(resolv.conf, rc.conf, etc) e crie todos os subdiretórios e arquivos
necessários no /var. Após tudo pronto, compacte os diretórios (ex: tar
-jcpf var.tbz /var) e coloque os arquivos tbz dentro do diretório /mdfs.
Esse passo é importante pois tais diretórios precisam permissão de
escrita e devem ser criados em memória durante o boot, conforme descrito
mais abaixo. É aconselhável que o liveCD seja configurado para utilizar
DHCP e que exista um servidor DHCP na sua rede.
5 - Recompile seu kernel acrescentando as opções
options CD9660
options ROOTDEVNAME=\"cd9660:acd0\"
device md
6 - Copie seu kernel para o diretorio livecd/boot/kernel. Se quiser,
você pode compactá-lo fazendo "gzip -9 kernel" e copiar o kernel
compactado (kernel.gz) para o diretório citado. O FreeBSD consegue
entender que o kernel está compactado e utilizá-lo mesmo assim. Copie
também todos os módulos necessários.
7 - é impossível criar um FreeBSD que não precise de áreas de escrita.
Essas áreas serão criadas utilizando o recurso de md (Memory Disks).
Para tal é preciso fazer várias mudanças dentro do /etc.
a - no arquivo rc, adicione a seguinte linha, logo após a linah que
contém . /etc/rc.subr
sh /etc/rc.d/rc.livecd.diskless
b - Crie agora o arquivo livecd/etc/rc.d/rc.livecd.diskless e edite-o
da seguinte forma (você pode mudar o tamanho dos discos de acordo com
suas necessidades):
#!/bin/sh
echo -n "Swap"
mdconfig -a -t malloc -o compress -s 20m -u 0
swapon /dev/md0
# /etc
echo -n "MDfs 1"
mdconfig -a -t malloc -o compress -s 2m -u 1
newfs -U -O 2 md1 > /dev/null 2>&1
# /usr/local/etc
echo -n "MDfs 2"
mdconfig -a -t malloc -o compress -s 1m -u 2
newfs -U -O 2 md2 > /dev/null 2>&1
# /var
echo -n "MDfs 3"
mdconfig -a -t malloc -o compress -s 2m -u 3
newfs -U -O 2 md3 > /dev/null 2>&1
# /etc
echo -n "MDfs 4"
mdconfig -a -t malloc -o compress -s 2m -u 4
newfs -U -O 2 md4 > /dev/null 2>&1
# montando todos os MDfs's
mount -a
# descompactando os arquivos dos MDfs's
echo -n " tgz[var"
tar -xjpf /mdfs/var.tbz -C /
echo -n ",etc"
tar -xjpf /mdfs/etc.tbz -C /
echo -n ",local-etc]"
tar -xjpf /mdfs/local-etc.tbz -C/
echo -e "\n"
c - Altere agora seu /etc/fstab deixando-o da seguinte forma:
#Device Mountpoint FSType Options Dump Pass
/dev/acd0 / cd9660 ro 0 0
proc /proc procfs rw 0 0
#MDfs's
/dev/md1 /etc ufs rw 0 0
/dev/md2 /usr/local/etc ufs rw 0 0
/dev/md3 /var ufs rw 0 0
/dev/md4 /root ufs rw 0 0
d - se você precisa está usando FreeBSD 5.x pra cima, copie o
executável /sbin/rcorder para dentro de livecd/sbin/rcorder
8 - Copie do CD original o seguinte arquivo, respeitando a posição
dentro do livecd:
/boot/cdboot
9 - Gere o ISO e queime o CD. Aconselho a utilizar um CD-RW, pois com
certeza algo foi deixado de fora e você verá vários erros no primeiro
boot. Corrija-os e queime um novo CD.
Para gerar o ISO, utilize o seguinte comando:
mkisofs -b boot/cdboot -no-emul-boot -c boot/boot.catalog -r -J -V
"LiVeBSD" -o live.iso livecd
e para gravar o cd
burncd -f /dev/acd0 data live.iso fixate
10 - Tornando seu liveCD algo útil:
Você tem várias motivos para fazer um liveCD
1 - Um firewall com regras bem definidas que não devem ser alteradas e
que possam ser rapidamente reativadas caso o servidor sofra um DoS,
apenas resetando ele (qualquer oreia seca pode resetar para você)
2 - Uma mini-instalação padrão para sua rede, acrescentando um script
para transferência e ativação da instalação em um HD (lembre que no caso
você terá que compilar outro kernel).
3 - Uma mini-instalação com a qual você possa utilizar qualquer
computador onde quer que vá, já com as ferramentas que você está
acostumado.
4 - Uma demo de um produto utilizando FreeBSD (ex: um sistema que
requer um servidor Apache com PHP e banco de dados MySQL)
5 - Uma mini-instalação com ferramentas de auditoria e recuperação.
6 - Tirar onda com o pessoal do Linux mostrando seu LiveCardCD (minha
micro instalação ficou com apenas 22MB e tem de tudo: servidor web,
proxy, servidor de e-mail, firewall, vpn, suporte pra som, etc., só não
tem X - ainda, hehehe, to tentando fazer a versão mais pequena e
ridícula de simples existente - só suporte vesa e coisa e tal, tipo o
Damn Small Linux)
7 - Sei lá! Inventa!
11 - Webliografia
http://neon1.net/misc/minibsd.html <- mostra como selecionar os
arquivos e montar a estrutura de diretórios para o seu liveCD
http://alf.dyndns.ws/numero3/articulo01.php <- mostra como fazer os MDs
--
Pablo Santiago Sánchez
==========================================
Coordenador de Desenvolvimento e Sistemas
Ministério das Cidades
==========================================
Microsoft: "Where do you want to go today?"
Linux: "Where do you want to go tomorrow?"
FreeBSD: "What are you doing back there? Are you coming or what?"
_______________________________________________________________
Para enviar um novo email para a lista: fugspbr em fugspbr.org
Sair da Lista: http://lists.fugspbr.org/listinfo.cgi
Historico: http://www4.fugspbr.org/lista/html/FUG-BR/
Mais detalhes sobre a lista de discussão freebsd