[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