Você está na página 1de 7

Como gerar uma imagem Bootvel de 32Mbytes do FreeBSD Marinaldo Oliveira Santos Curso de Implementao de Sistemas Operacionais ETFPalmas - TO

1. Introduo O objetivo deste artigo consiste em apresentar uma viso geral sobre o sistema operacional FreeBSD e demonstrar como gerar uma imagem bootvel do sistema utilizando sistemas de arquivos em imagens e baseados em memria. 2. Viso Geral de um Sistema FreeBSD FreeBSD um sistema operacional livre baseado na verso 4.4BSDLite do Grupo de Pesquisa em Sistemas Computacionais (CSRG) da Universidade da Califrnia, Berkeley, e carrega consigo a distinta tradio do desenvolvimento de sistemas BSD. Em adio ao aprimorado trabalho realizado pelo CSRG, o projeto FreeBSD acrescentou ainda muitos milhares de horas no aperfeioamento do sistema para mxima performance e

confiabilidade em situaes de demanda da vida real. Est disponvel para as plataformas Intel x86, DEC Alpha, Sparc, PowerPC e PC-98 assim como para as arquiteturas baseadas em processadores de 64bits IA-64 e AMD64. As aplicaes para as quais o FreeBSD pode ser utilizado s esto limitadas por sua prpria imaginao. Do desenvolvimento de software automao industrial, controle de inventrio correo remota da orientao de antenas de satlite. Tambm se beneficia de forma significativa de milhares de aplicaes de alta qualidade desenvolvidas por centros de pesquisa e universidades ao redor do mundo, usualmente disponveis a baixo ou nenhum custo. Aplicaes comerciais tambm esto disponveis e surgindo em grande nmero a cada dia. O fato do cdigo fonte do sistema FreeBSD est disponvel devido o mesmo ser um sistema de cdigo fonte aberto, permite ao usurio customizar ao mximo o sistema de acordo com suas necessidades, aplicaes ou

projetos. E baseado nessa caracterstica que iremos trabalhar nesse artigo

uma customizao do sistema reduzindo a instalao para uma imagem bootvel de 32 megabytes. 2. Criando um sistema enjaulado O primeiro passo para criarmos o sistema enjaulado e molda-lo de acordo com a necessidade, no nosso caso reduzir para 32 megabytes, trabalhar em um computador que j possua uma instalao do FreeBSD, a partir da iremos realizar uma nova instalao do sistema dentro da instalao existente, porm utilizando outro ponto de instalao, ou seja, uma instalao dentro da outra, chamamos essa tcnica de sistemas embarcados. Para proceder essa nova instalao alguns passos devero ser seguidos: 1. Colocar o cd 1 de instalao do freebsd no drive de cdrom; 2. Inicializar o FreeBSD, e digitar no prompt do Shell: #sysinstall 3. Selecionar no gerenciador da instalao a opo Custom; 4. Alterar o ponto de instalao para: /usr/jail 5. Voltar para a janela inicial e fazer a instalao novamente. O autor deste artigo fez a instalao mnima do sistema, gerando assim um sistema embarcado com apenas 128 MB; 6. Aps o trmino da instalao, sair do sysinstall. Observar, dentro da pasta /usr/jail, a existncia de uma nova instalao do FreeBSD.

Para tornar a nova instalao o sistema de uso, basta digitar executar o comando chroot: #chroot /usr/jail. Assim o diretrio corrente passa a ser /usr/jail e todas as modificaes feitas no afetaro o sistema principal1. Com isso, o leitor poder moldar o novo sistema de acordo com suas necessidades, retirando aqueles arquivos ou programas que no so do seu interesse. O comando chroot uma abreviao para change root, e ele foi criado para alterar a raiz do filesystem para o ambiente ao qual aplicado. Para retornar ao sistema principal basta digitar o comando: #exit.

Entenda como sistema principal, aquele que foi instalado primeiramente.

3. Adequando o Sistema Embarcado Para customizar o sistema embarcado de forma que seu tamanho seja reduzido para 32 megabytes, deve-se sempre utilizar o comando chroot, nesse caso: #chroot /usr/jail, caso no seja feito, qualquer alterao estar sendo feita no sistema principal e no no embarcado. Aps o enjaulamento do sistema com chroot voc poder instalar e/ou desinstalar pacotes, apagar arquivos ou diretrios, ou seja, moldar de acordo com as suas necessidades. Os diretrios onde voc poder eliminar alguns utilitrios so: bin, sbin, usr/bin, usr/sbin dentre outros. 4. Gerando um CD de boot de seu sistema enjaulado Aps ter seguido os passos anteriores necessrio preparar o sistema embarcado para ser gravado em um cd bootvel. O leitor deve observar que alguns arquivos no foram gerados durante o processo de instalao do sistema embarcado, como por exemplo: os arquivos do kernel e o arquivo fstab, responsvel por conter os dispositivos que sero montados na hora do boot. Siga os passos abaixo para a gravao do cd: 1. Copiar os arquivos do diretrio /boot/kernel do sistema principal para o diretrio /usr/jail/boot/kernel do sistema embarcado. Caso no faa isso quando der boot pelo CD ele ir gerar um erro de leitura informando que o kernel no foi encontrado. 2. Copiar o arquivo /etc/fstab do sistema principal para /usr/jail/etc do sistema embarcado. 3. Editar o arquivo /usr/jail/etc/fstab do sistema embarcado e informar onde ele dever montar o sistema de arquivos. No caso s deixar a linha abaixo: /dev/acd0 / cd9660 ro 0 0 4. Gerar a imagem do sistema enjaulado com o utilitrio mkisofs (v para a raiz): #mkisofs b boot/cdboot no-emul-boot r o freebsd.iso /usr/jail 5. Gravar a imagem no cd como o utilitrio burncd: #burncd f /dev/acd0 data freebsd.iso fixate

Pronto, agora s reinicializar o computador pelo cd criado e usar o sistema de acordo com as caractersticas que foram dadas a ele.

5. Gerando uma imagem do sistema de arquivos do sistema embarcado para ser instalado em outros dispositivos de armazenamento

Alm dos discos que voc insere fisicamente ao seu computador: disquetes, CDs, discos rgidos, ou qual seja; existe outras formas de discos no FreeBSD, os chamados discos virtuais. Isto inclui sistemas de arquivos em rede como o Network File System e o Coda, sistemas de arquivos baseados em memria e sistema de arquivos baseados em imagens. Dependendo da verso de FreeBSD que voc usa, voc ter que utilizar ferramentas diferentes para criar e utilizar sistemas de arquivos em imagens e baseados em memria. Aps as alteraes feitas no sistema embarcado, o sistema estar pronto para uso, depois s criar um liveCD do sistema como foi explicado no tpico anterior, ou opta-se por gerar uma imagem do sistemas de arquivos do sistema embarcado para coloca-la em outro dispositivo de armazenado , que permite leitura e escrita (hd, cartes flash, pendrivers e etc). Abaixo segue os passos para a construo da imagem do sistema de arquivos: 5.1 O utilitrio dd Esta ferramenta permite gerar uma imagem binria de uma partio, digite o comando abaixo: #dd if=/dev/zero of=/freebsd.bin bs=512 count=64000 Este comando criar um uma imagem de uma partio com o nome de freebsd.bin com o tamanho aproximado de 32MB, que mais tarde receber o sistema embarcado. O parmetro bs determina o tamanho do bloco (em bytes) na partio e o count significa a quantidade de blocos. Multiplicando o bs com o count encontra-se um tamanho em bytes da imagem.

5.2 O utilitrio mdconfig Este utilitrio utilizado para configurar e ativar discos em memria. O mdconfig suporta trs tipos de discos em memria: discos de memria

alocados com o malloc, discos de memria utilizando um arquivo de imagem e alocados na rea de swap. Veja abaixo os passos para utilizao do mdconfig:

#mdconfig -a -t vnode -f embarcado.bin -u 0 Este comando cria uma partio em memria e o associa ao arquivo de imagem freebsd.bin. Ser criado um drive para acesso a parties de memria dentro do diretrio /dev/ chamado md0. O parmetro a informa que criar uma partio em memria, o parmetro t seleciona o tipo de partio de memria que ser criado: vnode especifica que a partio e para um arquivo de imagem; f - parmetro para associar a partio em memria com o arquivo de imagem; u - especfica um nmero que ser associado ao dispositivo que representa uma partio /dev/mdx, onde o x representa o nmero aps o parmetro u. 5.3 O utilitrio bsdlabel Digite o comando abaixo: #bsdlabel -Bw md0 Este comando gravar um label para a imagem de disco e grava o bootstrap (setor de boot) dentro da imagem do arquivo. Aps este comando ser gerado um dispositivo chamado md0a, onde md0 representa o disco e a letra a representa a partio do disco. B - parmetro para tornar a partio bootvel, ou seja, grava o gerenciador de boot na imagem; w - grava um label na partio. 5.4 O utilitrio newfs Digite o comando abaixo: # newfs md0a b 8192 f 2048 Este comando formatar a partio de disco md0a instalando um sistema de arquivo ufs, com blocos de 8192 bytes e fragmentos de 2048 bytes.

5.5 O utilitrio mount Digite o comando abaixo: #mount /dev/md0a /mnt Este comando monta a partio virtual associada ao arquivo de imagem. Tudo o que for copiado dentro de /mnt, na verdade ser copiado para o arquivo de imagem freebsd.bin.

Aps esses passos basta copiar os arquivos do sistema embarcado para dentro da imagem freebsd.bin montada dentro do diretrio /mnt: #cp v R P L /usr/jaula/* /mnt Para liberar os recursos alocados pela imagem basta digitar os comandos abaixo: #umount /mnt - desmonta a imagem montada em /mnt

#mdconfig -d -u 0 - desaloca a partio criada em memria Agora basta transferir essa imagem binria para um dispositivo de armazenamento, uma flash, um outro disco, utilizando o comando dd. Exemplo: #dd if=embarcado.bin of=/dev/dispositivo

6. Gerando o sistema de arquivos baseado em imagem utilizando o utilitrio mdmfs O utilitrio mdconfig muito til, entretanto ele precisa de diversas linhas de comando para criar um arquivo de imagem de um sistema de arquivos. O FreeBSD 5.0 tambm vem com uma ferramenta chamada mdmfs, este utilitro configura um disco md utilizando o mdconfig, e coloca um sistema de arquivos UFS em uso com o newfs, e monta-o utilizando o mount. Por exemplo, se voc quer criar e montar a mesma imagem de sistema de arquivos citada anteriormente, simplesmente digite como segue abaixo: #dd if=/dev/zero of=/freebsd.bin bs=512 count=64000 # mdmfs -F /freebsd.bin -s 32m md0 /mnt

O parmetro F especifica que a partio para um arquivo de imagem e associa ao arquivo. O parmetro s especifica o tamanho da imagem, o md0 nome do dispositivo que ser montado sobre o diretrio /mnt.

7. Criando um novo disco baseado em memria com o mdmfs As mesmas ferramentas so utilizadas para os discos baseados em memria e os baseados em arquivos de imagem: mdmfs ou mdconfig. O armazenamento para os sistemas de arquivos baseados em memria alocado com o malloc, ele pode alocar o espao na memria ou utilizar a rea de swap. Para montar a imagem baseada em memria citada anteriormente basta digitar o comando abaixo: #mdmfs -M -s 32m md2 /mnt O parmetro M, significa que a partio ser alocada na memria com o malloc, -s o tamanho da partio o md2 o dispositivo que ser montado no diretrio /mnt. Para utilizar a rea de swap, mas digitar o comando anterior sem o parmetro M. 8. Consideraes Finais Ao longo do presente trabalho foi possvel informar ao leitor uma viso geral do sistema operacional freeBSD e o contexto no qual se insere. Alm disso, algumas particularidades e funcionalidades foram tratadas,

disponibilizando informaes de como gerar uma imagem inicializvel do FreBSD, criando um LiveCD, ou utilizando imagens de sistemas de arquivos baseado na memria ou em imagens. As informaes aqui disponveis proporcionam ao leitor a possibilidade de utilizar este trabalho como material de apoio na gerao dessas tarefas. 9. Referncias Bibliogrficas FREEBSE HANDBOOK, Projeto de Documentao do freeBSD, http://doc.fug.com.br/doc/pt_BR.ISO8859-1/books/handbook/