24.07.2013 Views

HOWTO Build Your Own LFD (Linux Floppy Disk) - UFMG

HOWTO Build Your Own LFD (Linux Floppy Disk) - UFMG

HOWTO Build Your Own LFD (Linux Floppy Disk) - UFMG

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>HOWTO</strong> <strong>Build</strong> <strong>Your</strong> <strong>Own</strong> <strong>LFD</strong> (<strong>Linux</strong> <strong>Floppy</strong> <strong>Disk</strong>)<br />

Neste tutorial será descrito passo­a­passo como construir sua própria distro <strong>Linux</strong>, que cabe em 1<br />

disquete. Ele tem como objetivo incentivá­lo a fazer seu próprio LDF, mas adaptando­o às suas<br />

necessidades, como BACKUP, REDE, ou somente por pura curiosidade, e claro, aprofundar os<br />

conhecimentos de como funciona um sistema <strong>Linux</strong>. Aqui nós criaremos um Rescue <strong>Disk</strong>, que pode<br />

acessar partições, que pode ser usado por exemplo caso o S.O não iniciar mais, você poderá acessar<br />

pelo seu <strong>LFD</strong> e transferir os dados para outra partição ou outro HD.<br />

1 – Pacotes necessários para construção.<br />

Nós precisaremos inicialmente desses pacotes:<br />

1° ­ O Kernel do <strong>Linux</strong>, que pode ser baixado em http://kernel.org<br />

OBS: A Versão usada aqui foi a 2.6.17.7, mas você pode usar outra de sua preferência, mas as<br />

referencias aqui, serão dessa versão.<br />

2° ­ O Busybox, que é um conjunto de programas como o ls, chmod, mkdir compactados em um só<br />

binário, e muitos outros, e pode ser obtido em http://busybox.net<br />

3° ­ Você precisa dos compiladores e bibliotecas , certifique­se de que tem instalado o GCC e a<br />

libncursers, com os seu pacotes de desenvolvimento, que geralmente se chama libncurses­dev.<br />

Consulte a documentação e os repositórios de sua distribuição.<br />

4°­ Precisa ter instalado o bootloader SYSLINUX, para que nossa mini­distro possa ser carregada.<br />

Após ter certeza de que tem todas essas dependências satisfeitas, podemos começar!<br />

01


ATENÇÃO: Todos os comandos, a partir daqui devem ser executados<br />

como root !<br />

1 – Criando a base do sistema.<br />

Crie um diretório com o nome de sua preferência, aqui eu criei o “mylinux”.<br />

# mkdir mylinux<br />

Entre nele<br />

# cd mylinux<br />

Iremos agora criar um intrd (ou Initial Ram <strong>Disk</strong>), que é onde ficará armazenada a raiz ( / ou rootfs)<br />

do sistema.<br />

# dd if=/dev/zero of=initrd bs=1440k count=1<br />

Aqui criamos um initrd de 1.4 MB.<br />

Agora criaremos o sistema de arquivos dentro desse initrd, no formato EXT2.<br />

# mke2fs ­F ­m0 ­b 1024 initrd<br />

Agora iremos montar o initrd usando o loop do kernel, para que possamos passar os aquivos para<br />

dentro dele. Antes teremos que criar o ponto de montagem.<br />

Crie o ponto de montagem no lugar de sua preferencia, aqui foi o /mnt/imgs.<br />

# mkdir /mnt/imgs<br />

Agora monte o initrd em /mnt/imgs.<br />

# mount ­o loop initrd /mnt/imgs<br />

Agora que nosso initrd está pronto, iremos compilar os outros componentes, 1° o Busybox e depois<br />

o Kernel.<br />

02


2 – Compilando o busybox.<br />

Depois de baixar o Busybox com o formato .tar.gz em http://busybox.net,<br />

descompacte­o no<br />

diretório que você criou.<br />

OBS: Aqui foi usada a versão 1.3.1, mas como no Kernel, você pode trocar as versões.<br />

# tar zxvf busybox­1.3.1.tar.gz<br />

Será criado um diretório camado busybox­1.3.1, entre nele.<br />

# cd busybox­1.3.1<br />

Agora começaremos a configurar o busybox. Digite o seguinte comando para entrar no menu de<br />

configuração do Busybox.<br />

# make menuconfig<br />

Você deve ver uma tela como essa:<br />

03


Entre no menu Busybox Settings ­­­><br />

General Configuration ­­­> e verá a seguinte tela:<br />

Marque as opções iguais a da imagem acima.<br />

Agora marque as seguintes opções no menu ­> Busybox Settings<br />

­> <strong>Build</strong> Options<br />

[*] <strong>Build</strong> BusyBox as a static binary (no shared libs)<br />

[ ] <strong>Build</strong> shared libbusybox (NEW) //Não marque as que não estão com o * na frente//<br />

[*] <strong>Build</strong> with Large File Support (for accessing files > 2 GB)<br />

[*] Compile all sources at once<br />

04


Em seguida, vá para o menu ­> Busybox Settings<br />

­> Installation Options<br />

Entre na opção “BusyBox installation prefix” e coloque o alias onde foi montado o nosso initrd,<br />

aqui no caso, /mnt/imgs. Então coloque o seu alias dentro dessa opção, que é onde será instalado o<br />

Busybox.<br />

Agora com o busybox com as configurações principais selecionadas, volte ao menu principal em<br />

comece a marcar as opções que você deseja.<br />

OBS: Marque somente o que você precisa, pois senão deixará o busybox muito grande, e não<br />

será possível colocá­lo no initrd. Marque os principais, como ls, chmod, mkdir, mount,<br />

umount, mkswap, fdisk entre muitos outros...<br />

Depois que acabar de selecionar os aplicativos que você vai querer, salve a configuração e<br />

retorne ao Shell.<br />

05


Ao tentar compilar o busybox estaticamente (quer dizer, sem dependência de bibliotecas), tive um<br />

problema que foi rapidamente sanado, com a retirada de uma pequena parte do código do arquivo<br />

“applets.c”. Para corrigir isso entre no diretório onde está contido o busybox, depois no diretório<br />

“applets”e abra com seu editor de texto favorito o arquivo “applets.c”<br />

Olhe o antes e o depois de como ficou o código.<br />

ANTES:<br />

A Parte que está selecionada é a parte que será retirada do código.<br />

06


DEPOIS:<br />

É assim que ficará o código, somente com as linhas que estão marcadas acima.<br />

Agora voltando ao diretório do busybox, dê o comando “make” para começar a compilação<br />

# make<br />

E depois que foi tudo compilado, vamos instalar o busybox dentro do initrd.<br />

# make install<br />

Se aparecer alguma mensagem de erro durante e instalação, veja se o busybox não ficou muito<br />

grande, e não coube dentro do initrd.<br />

Logo em seguida, entre no diretório onde nosso initrd foi montado para criar os diretórios<br />

necessários.<br />

# cd /mnt/imgs<br />

07


Agora crie os diretórios dev, media, etc e proc<br />

# mkdir dev proc media etc<br />

Entre no etc e crie outro diretório com o nome de init.d<br />

#mkdir init.d<br />

Volte ao diretório abaixo<br />

# cd ..<br />

Entre no dev e para criar os dispositivos que serão usados. Usei o Script MAKEDEV para criar os<br />

dispositivos. Primeiro criaremos os terminais.<br />

# MAKEDEV console<br />

Ele criará os dispositivos “console” e mais um monte de tty's... Mas nós só precisamos do<br />

“console”, tty0, tty1, tty2. Delete os demais. Agora crie os dispositivos especias, como o /dev/zero<br />

com o comando:<br />

# MAKEDEV zero<br />

Ele irá criar o loop0, loop1... ram, ram0, ram1... Apague do loop2 até o loop7 e o ram2 até o<br />

ram16. NÃO APAGUE OS OUTROS DISPOSITIVOS!<br />

Depois criaremos o acesso aos HD's, aqui eu tenho somente um HD (hda), então eu crio ele com o<br />

comando:<br />

# MAKEDEV hda<br />

Ele irá criar o hda e os hda1, hda2 e etc... Cloque o dispositivo que você quiser, como hdb, hdc e<br />

etc... Tudo depende dos dispositivo que você tem no computador.<br />

Agora está na hora de criar os arquivos de configuração, como o inittab, rc.S e fstab. Vamos criar<br />

o inittab, o arquivo responsável pela inicialização do sistema. Para que seu sistema tenha suporte<br />

ao arquivo inittab, na configuração do busybox que a opção do init esteja habilitada com suporte<br />

ao inittab:<br />

­> Init Utilities<br />

­> init<br />

[*] init<br />

[ ] debugging aid (NEW)<br />

[*] Support reading an inittab file (NEW)<br />

[ ] Support running commands with a controlling­tty (NEW)<br />

[*] Be _extra_ quiet on boot (NEW)<br />

[ ] Support dumping core for child processes (debugging only) (NEW)<br />

[*] Support running init from within an initrd (not initramfs) (NEW)<br />

[*] poweroff, halt, and reboot (NEW)<br />

[*] mesg (NEW)<br />

08


Agora abaixo, um exemplo de um arquivo inittab:<br />

#BOF<br />

#Aqui o aquivo que o init usa para executar as funções iniciais.<br />

::sysinit:/etc/init.d/rc.S<br />

#O 1° console<br />

::respawn:­/bin/sh<br />

# O Segundo console<br />

tty2::respawn:­/bin/sh<br />

#Aqui você pode ativar outros consoles, mas para isso você terá que criar as tty's correspondentes<br />

#tty3::askfirst:­/bin/sh<br />

#tty4::askfirst:­/bin/sh<br />

::restart:/sbin/init<br />

# Comandos para reboot...<br />

::ctrlaltdel:/sbin/reboot<br />

::shutdown:/bin/umount ­a ­r<br />

::shutdown:/sbin/swapoff ­a<br />

#EOF<br />

Crie um arquivo chamado inittab, cole esse texto dentro dele, e coloque o arquivo dentro do<br />

diretório etc da distro, ex:<br />

# cp inittab /mnt/imgs/etc<br />

Dê permissão de leitura a todos, escrita somente pelo root e execução por todos:<br />

# chmod 755 /mnt/imgs/etc/inittab<br />

Feito isso, criaremos o arquivo fstab, que é responsável pela montagem das partições. Aqui um<br />

exemplo do arquivo fstab:<br />

#BOF<br />

#/etc/fstab<br />

proc /proc proc defaults 0 0<br />

#EOF<br />

Um arquivo simples, mas de muita importância. Coloque­o no etc em seu initrd e dê as mesmas<br />

permissões do arquivo anterior.<br />

09


Agora o arquivo rc.S, que ficará lá no etc/init.d da distro. Abaixo um exemplo, do arquivo rc.S,<br />

essa é a minha versão, sinta­se a vontade para modificá­lo a seu modo.<br />

#!/bin/sh<br />

echo<br />

echo<br />

echo " My<strong>Linux</strong> versao 0.1"<br />

echo<br />

echo<br />

echo "Montando /proc.....................................................[ OK ]"<br />

mount ­t proc proc /proc<br />

echo "ProcFS Montado em /proc com sucesso................[ OK ]"<br />

sleep 1<br />

echo " Eba! Minha Propria Minidistro!!!"<br />

echo<br />

echo<br />

Salve o arquivo dentro do etc/init.d da distro (/mnt/imgs/etc/init.d), e após copiado, de as seguintes<br />

permissões a ele:<br />

# chmod +x /mnt/imgs/etc/init.d/rc.S<br />

Tudo Pronto!!! Agora desmontaremos a imagem do initrd, a compactaremos e começaremos a<br />

configuração do nosso Kernel!<br />

# umount /mnt/imgs<br />

Agora vamos compactá­la com o gzip<br />

# gzip ­9 initrd<br />

Isso vai criar um arquivo chamado initrd.gz, que é a raiz do nosso sistema (rootfs)<br />

Após todos esses passos, vamos passar para a parte fácil de nossa brincadeira, a configuração e<br />

compilação de nosso Kernel, com as nossas especificações.<br />

10


3­ Compilando o Kernel<br />

Agora vamos começar a configuração do Kernel de nossa distro. Ele deve conter o mínimo<br />

possível de opções marcadas, para que ele possa ficar compacto e caber no disquete.<br />

Depois de baixar o Kernel no formato .tar.bz2 (tenha preferencia por esse formato, pois são mais<br />

compactos e consequentemente, o download é mais rápido), copie o arquivo e descompacte­o no<br />

diretório que você criou lá no inicio, aqui, o “mylinux”.<br />

# tar jxvf linux­2.6.17.7.tar.bz2<br />

Após descompactar, entre no diretório criado.<br />

# cd linux­2.6.17.7<br />

E digite o seguinte comando:<br />

# make allnoconfig<br />

Esse comando desmarca todas as opções que já vem previamente marcadas, prevenindo que não<br />

marcaremos nenhuma opção que não será usada. Agora digite o seguinte comando para começar a<br />

configuração do Kernel:<br />

# make menuconfig<br />

Você verá uma tela como essa abaixo.<br />

11


Colocarei aqui as opções que devem ser marcadas, mas sinta­se livre para customizar a<br />

configuração, mas lembrando que o kernel tem que ficar pequeno, para caber no disquete junto<br />

como o initrd.<br />

OBS: As opções que aparecem abaixo são as que serão marcadas com o * .<br />

Configuração do Kernel 2.6.17.7 :<br />

Code maturity level options ­­­> ( Desabilite essa opção)<br />

General setup ­­­><br />

[*] Support for paging of anonymous memory (swap)<br />

[*] System V IPC<br />

[*] Sysctl support<br />

[*] Kernel .config support<br />

[*] Enable 16­bit UID system calls<br />

[*] Enable VM86 support<br />

[*] Configure standard kernel features (for small systems)<br />

Loadable module support ­­­> ( Desabilite essa opção, pois nossa distro não terá suporte a<br />

módulos, portanto, não é também necessário ter os programas modprobe, rmmod e etc...Mas você<br />

pode habilitá­la caso for desenvolver uma distro maior, com suporte a alguns módulos, como os de<br />

placa de rede, SCSI e etc...)<br />

Block layer ­­­> (Desabilite esta opção)<br />

Processor type and features ­­­><br />

Subarchitecture Type (PC­compatible) ­­­> (Entre nessa opção e escolha PC­compatible)<br />

Processor family (386) ­­­> (Entre nessa opção e escolha 386)<br />

[*] Generic x86 support<br />

[*] Enable seccomp to safely compute untrusted bytecode<br />

Timer frequency (1000 HZ) ­­­> Entre nessa opção e escolha 1000 HZ)<br />

Power management options (ACPI, APM) ­­­> (Desabilite esta opção)<br />

Bus options (PCI, PCMCIA, EISA, MCA, ISA) ­­­><br />

[*] PCI support<br />

[*] ISA support<br />

[*] EISA support<br />

[*] Generic PCI/EISA bridge<br />

Executable file formats ­­­><br />

[*] Kernel support for ELF binaries<br />

Networking ­­­> ( Desabilite esta opção, caso não queira suporte a rede, isso deixa o kernel um<br />

pouco menor)<br />

12


Device Drivers ­­­><br />

Generic Driver Options ­­­><br />

[*] Prevent firmware from being built<br />

Connector ­ unified userspace kernelspace linker ­­­> (Desabilite esta opção)<br />

Memory Technology Devices (MTD) ­­­> (Desabilite esta opção)<br />

Parallel port support ­­­> (Desabilite esta opção)<br />

Plug and Play support ­­­> (Desabilite esta opção)<br />

Block devices ­­­><br />

Normal floppy disk support<br />

Loopback device support<br />

RAM disk support<br />

(16) Default number of RAM disks<br />

(4096) Default RAM disk size (kbytes)<br />

[*] Initial RAM filesystem and RAM disk (initramfs/initrd) support<br />

ATA/ATAPI/MFM/RLL support ­­­><br />

ATA/ATAPI/MFM/RLL support<br />

Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support<br />

­­­ Please see Documentation/ide.txt for help/info on IDE drives<br />

Include IDE/ATA­2 DISK support<br />

Include IDE/ATAPI CDROM support<br />

Include IDE/ATAPI FLOPPY support<br />

­­­ IDE chipset support/bugfixes<br />

generic/default IDE chipset support<br />

[*] Other IDE chipset support<br />

SCSI device support ­­­> (Desabilite esta opção)<br />

Old CD­ROM drivers (not SCSI, not IDE) ­­­> (Desabilite esta opção)<br />

Multi­device support (RAID and LVM) ­­­> (Desabilite esta opção)<br />

Fusion MPT device support ­­­> (Desabilite esta opção)<br />

IEEE 1394 (FireWire) support ­­­> (Desabilite esta opção)<br />

I2O device support ­­­> (Desabilite esta opção)<br />

ISDN subsystem ­­­> (Desabilite esta opção)<br />

Telephony Support ­­­> (Desabilite esta opção)<br />

13


Input device support ­­­><br />

[*] Keyboards ­­­><br />

Character devices ­­­><br />

[*] Virtual terminal<br />

[*] Support for console on virtual terminal<br />

[*] Unix98 PTY support<br />

[*] Legacy (BSD) PTY support<br />

(256) Maximum number of legacy PTY in use<br />

I2C support ­­­> (Desabilite esta opção)<br />

SPI support ­­­> (Desabilite esta opção)<br />

Dallas's 1­wire bus ­­­> (Desabilite esta opção)<br />

Hardware Monitoring support ­­­> (Desabilite esta opção)<br />

Misc devices ­­­> (Desabilite esta opção)<br />

Multimedia devices ­­­> (Desabilite esta opção)<br />

Graphics support ­­­><br />

Support for frame buffer devices<br />

[*] Enable firmware EDID<br />

VGA 16­color graphics support<br />

[*] VESA VGA graphics support<br />

Console display driver support ­­­><br />

[*] VGA text console<br />

Framebuffer Console support<br />

Logo configuration ­­­> (Essa é opcional, somente colocarei para ter o tux no canto<br />

superior esquerdo da tela.)<br />

[*] Bootup logo<br />

[*] Standard 16­color <strong>Linux</strong> logo<br />

Sound ­­­> (Desabilite esta opção)<br />

USB support ­­­> (Desabilite esta opção)<br />

MMC/SD Card support ­­­> (Desabilite esta opção)<br />

LED devices ­­­> (Desabilite esta opção)<br />

14


InfiniBand support ­­­> (Desabilite esta opção)<br />

EDAC ­ error detection and reporting (RAS) (EXPERIMENTAL) ­­­> (Desabilite esta opção)<br />

Real Time Clock ­­­> (Desabilite esta opção)<br />

File systems ­­­><br />

Second extended fs support<br />

[*] Ext2 extended attributes<br />

[*] Ext2 POSIX Access Control Lists<br />

[*] Ext2 execute in place support<br />

Ext3 journalling file system support<br />

[*] Ext3 extended attributes<br />

[*] Ext3 POSIX Access Control Lists<br />

Reiserfs support<br />

[*] ReiserFS extended attributes<br />

[*] ReiserFS POSIX Access Control Lists<br />

Minix fs support<br />

Filesystem in Userspace support<br />

CD­ROM/DVD Filesystems ­­­><br />

ISO 9660 CDROM file system support<br />

[*] Microsoft Joliet CDROM extensions<br />

[*] Transparent decompression extension<br />

DOS/FAT/NT Filesystems ­­­><br />

MSDOS fs support<br />

VFAT (Windows­95) fs support<br />

(437) Default codepage for FAT<br />

(iso8859­1) Default iocharset for FAT<br />

NTFS file system support<br />

Pseudo filesystems ­­­><br />

[*] /proc file system support<br />

[*] /proc/kcore support<br />

[*] sysfs file system support<br />

[*] Virtual memory file system support (former shm fs)<br />

Kernel hacking ­­­> (Desabilite esta opção)<br />

Security options ­­­> (Desabilite esta opção)<br />

Cryptographic options ­­­> (Desabilite esta opção)<br />

15


Library routines ­­­><br />

CRC­CCITT functions<br />

CRC16 functions<br />

­­­ CRC32 functions<br />

CRC32c (Castagnoli, et al) Cyclic Redundancy­Check<br />

Finalmente, acaba por aqui a configuração do Kernel. Salve a configuração e compile­o com o<br />

comando:<br />

# make<br />

Essa etapa demora um pouquinho, vá tomar um refrigerante ou um café, relaxe um pouco, pois<br />

estamos quase chegando na etapa final! Após a compilação chegar ao final, temos basicamente<br />

tudo feito, só falta criar um arquivo vazio de 1,4 MB, formata­lo com um sistema de arquivos<br />

FAT, colocar e configurar o Bootloader, copiar o kernel junto com o initrd.gz para dentro dela e<br />

pronto!<br />

Vamos lá!<br />

Crie o arquivo vazio com o comando:<br />

# dd if=/dev/zero of=mylinux.img bs=1440k count=1<br />

Formate­o com o comando:<br />

# mkdosfs mylinux.img<br />

Depois instalaremos o bootloader SYSLINUX na nossa distro, assim:<br />

# syslinux ­s mylinux.img<br />

Agora, montaremos nosso arquivo usando o loop do kernel, como já fizemos antes, e também<br />

podemos usar o ponto de montagem que criamos antes, o “/mnt/imgs”.<br />

# mount ­o loop mylinux.img /mnt/imgs<br />

Agora copie o kernel e o initrd.gz para dentro da imagem<br />

# cp linux­2.6.17.7/arch/i386/boot/bzImage /mnt/imgs/vmlinuz<br />

e<br />

# cp initrd.gz /mnt/imgs<br />

16


Teremos que criar o arquivo de configuração do syslinux. Crie dois arquivos, um chamado<br />

“syslinux.cfg”, que é o arquivo de configuração e outro “mylinux.msg” , que é uma mensagem que<br />

será mostrada na tela antes do boot.<br />

Coloque as seguintes linha dentro do arquivo syslinux.cfg:<br />

default linux<br />

prompt 1<br />

display mylinux.msg<br />

label linux<br />

KERNEL vmlinuz<br />

APPEND load_ramdisk=1 initrd=initrd.gz root=/dev/ram0 rw<br />

TIMEOUT 200<br />

Copie o arquivo para dentro da imagem montada no /mnt/imgs<br />

# cp syslinux.cfg /mnt/imgs<br />

Agora crie o arquivo “mylinux.msg” e coloque as seguintes linhas:<br />

Mylinux 0.1<br />

/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\<br />

Press para continuar...<br />

E também copie­o para o /mnt/imgs<br />

# cp mylinux.msg /mnt/imgs<br />

PRONTO!!!!!!!<br />

Só falta desmontar a imagem e dar boot!<br />

Desmonte com o comando:<br />

# umount /mnt/imgs<br />

Agora é só testar. Você pode queimar em um disquete e reiniciar a máquina para testar ou usar um<br />

emulador como o Bochs ou Qemu.<br />

Pode­se passar a imagem para o disquete como o comando:<br />

# dd if=mylinux.img of=/dev/fd0<br />

17


Eu usei o Qemu, que é prefeito para esse tipo de teste. Teste com Qemu assim:<br />

# qemu ­fda mylinux.img<br />

Bom, se tudo funcionar direitinho, como você queria, fique feliz, pois agora você tem sua própria<br />

distro <strong>Linux</strong> personalizada, que roda inteiramente de um disquete!!!<br />

Agora podemos ver alguns screenshots do “My<strong>Linux</strong>” funcionando no Qemu...<br />

Tela de Boot.<br />

Boot<br />

18


Inicialização<br />

Em funcionamento...<br />

19


Os Screenshots acima mostram o processo de boot, inicialização e funcionamento da nossa<br />

minidistro. Use­a da forma que for mais conveniente para você. Um exemplo de como ela pode<br />

ser usada, uma experiência própria:<br />

“Certa vez um Pentium 100 MHz com 32 MB de memória, não iniciava mais o seu Windows 95,<br />

mas dentro dele haviam contidas algumas informações importantes, como cadastro de telefones e<br />

endereços de alunos. Como ele não era capaz de iniciar um Live CD para que eu pudesse fazer<br />

backup das informações e repassa­las para outro HD, tirei meu <strong>LFD</strong>, espetei outro HD na máquina<br />

e pude fazer backup com sucesso das informações.”<br />

Essa é só uma das formas de como usar seu <strong>LFD</strong>. A partir de agora, com os conhecimentos<br />

adquiridos com o tutorial, você pode fazer um <strong>LFD</strong> totalmente personalizado, com uma tela de<br />

boot mais bonita, um nome legal, um kernel mais recente ou com suporte a outras coisa, para que<br />

o <strong>LFD</strong> tenha uma função específica, como servidor de DHCP, ou o que você queira. Sua<br />

imaginação é o limite!<br />

Base de Desenvolvimento:<br />

Todos os precedimentos apresentados aqui foram testados no Debian Etch 4.0 Testing/Unstable,<br />

com o GCC 4.0.<br />

Sobre o Autor:<br />

Gabriel Duarte Guimarães Costa – Usuário <strong>Linux</strong> a 5 anos, técnico em informática e cursa o 2°<br />

Grau técnico em Processamento de Dados na FAETEC ­ E.T.E República – RJ e Desenvolvedor<br />

do <strong>LFD</strong> Terabeauts, que pode ser baixado em http://code.google.com/p/terabeauts<br />

Mande comentários, sugestões, críticas ou idéias para confusosk8@gmail.com<br />

Nota de Copyright<br />

Copyright © 2007 Gabriel Duarte<br />

Esse manual está licenciado nos termos da GNU FDL (Free Documentation License). Ele é<br />

feito na intenção de ser útil à comunidade mas vem sem nenhuma garantia.<br />

20


Visite http://code.google.com/p/terabeauts e colabore com o projeto.<br />

21

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!