Logo Hardware.com.br
Carlos E. Morimoto
Carlos E. Mo... General de Pijama Moderador
4.2K Mensagens 125 Curtidas

Como criar sua propria mini-distro

#1 Por Carlos E. Mo... 25/08/2002 - 16:37
Preview do capítulo 08 da 3º Ed do Entendendo e Dominando o Linux.
A quem possa interessar... :-)

Por Carlos E. Morimoto

---

Criando sua mini-distribuição

Atualmente a maioria das distribuições Linux são muito pesadas, adotando uma filosofia de facilitar ao máximo o uso, mesmo que sacrificando o desempenho. Mas, continua sendo possível fazer instalações extremamente reduzidas e leves do Linux, segundo algumas dicas básicas.
Vou usar como base aqui o Slackware 7.1, que utiliza o Kernel 2.2 e o Xfree 3.3, um conjunto substancialmente mais leve que o Kernel 2.4 e Xfree 4.2 usado nas distribuições atuais. O Xfree 3.3 oferece a vantagem adicional de ser compatível com um número maior de placas de vídeo antigas. As explicações presumem que você já tenha lido as instruções básicas de instalação do Slackware do primeiro capítulo. Se você ainda não leu, ainda há tempo :-)
A idéia é que você use estas instruções para criar uma instalação padrão, que depois seja apenas copiada para todos os terminais da rede.
Existem duas formas de fazer isso. A primeira é usando o dd, aquele comando que permite fazer uma cópia exata de um HD para o outro e a segunda é utilizar o G4U, que permite fazer a mesma coisa, só que via rede.

Usando o DD
Em qualquer distribuição Linux você vai encontrar um pequeno programa chamado dd que permite criar e restaurar imagens facilmente. Você pode tanto utilizá-lo tanto para fazer uma cópia direta, de um HD para o outro, quanto para salvar a imagem num arquivo, que poderá ser restaurado posteriormente
A sintaxe do dd é "dd if=origem of=destino". Se você tiver dois HDs, um instalado como primary master e o outro instalado como secondary master e quiser clonar o conteúdo do primeiro para o segundo, o comando seria:
# dd if=/dev/hda of=/dev/hdc
Como a cópia é feita bit a bit, não importa qual é sistema operacional, nem o sistema de arquivos usado no HD de origem. A cópia é completa, incluindo a tabela de partição do HD e o setor de boot.
A idéia é que você faça a instalação num micro e em seguida simplesmente copie para os HDs dos demais, instalando-os no doador e devolvendo-os depois de fazer a cópia.
Não é preciso utilizar HDs da mesma capacidade; pelo contrário: existe uma grande flexibilidade neste aspecto. Se por exemplo o HD doador tiver 1 GB e o destino tiver 3 GB, depois da cópia você ficará com 2 GB de espaço não particionado no HD destino. Bastará criar uma nova partição usando este espaço livre, ou mesmo redimensionar as partições copiadas de forma a englobarem todo o disco.
Mas, e se for o contrário, o HD de origem tiver 3 GB e o destino tiver 1 GB? Neste caso você precisaria primeiro deixar pelo menos 2 GB livres no HD de origem e em seguida redimensionar as partições de forma a deixar 2 GB de espaço não particionados no final do disco para que a imagem "caiba" no HD destino. Não importa qual seja o tamanho dos dois HDs, desde que as partições existentes no HD de origem não ultrapassem a capacidade total do HD destino e eles estejam posicionadas no início do disco. Você pode verificar a posição das partições usando o cfdisk por exemplo.
Existem vários programas que você pode utilizar para redimensionar partições. Dois exemplos são o bom e velho Partition Magic e o DiskDrake, incluído no Mandrake Linux. Você pode dar boot usando o CD 1 do Mandrake 8.1 ou 8.2 CD, seguir a instalação até a etapa de particionamento do disco, redimensionar as partições, salvar a tabela de partição no HD e em seguida abortar a instalação. O Diskdrake é tão fácil de usar quanto o Partition Magic, basta clicar sobre a partição e em seguida em "resize". Uma terceira opção é o GNU Parted, um mini-unix que cabe num único disquete e pode ser baixado em: http://www.gnu.org/software/parted/
No Linux, os HDs IDE são reconhecidos com /dev/hda, /dev/hdb, /dev/hdc e /dev/hdd, onde o hda e o hdb são respectivamente o master e o slave da IDE primária e o hdc e hdd são o master e slave da ide secundária. Você pode alterar o comando de acordo com a localização dos HDs na sua máquina. Para clonar o hdc para o hdd, o comando seria:
# dd if=/dev/hdc of=/dev/hdd.
O comando pode ser dado tanto em modo texto, quanto num terminal dentro da interface gráfica, não faz diferença. O único incômodo é que o dd não mostra nenhum tipo de indicador de progresso e é um pouco demorado. Na minha máquina demorou 35 minutos para copiar 10 GB de dados de um HD Quantum LCT de 20 GB para um Plus AS de 30 GB num Celeron 600. Mas, ao copiar doses menores de arquivos, 200 ou 300 MB por exemplo o processo demora poucos minutos.

Salvando a imagem num arquivo

Além de fazer uma cópia direta, você pode usar o dd para salvar a imagem num arquivo, que pode ser copiado num CD, transferido via rede, etc. Para isto, basta indicar o arquivo destino, como em:
# dd if=/dev/hdc of=imagem.img
... que salvará todo o conteúdo do /dev/hdc num arquivo chamado imagem.img, dentro do diretório corrente.
Depois de gerar o arquivo, você pode compactá-lo e quebra-lo em vários arquivos para gravar em CDs por exemplo. Na hora de restaurar o sistema, bastará reconstituí-lo e usar o comando inverso para restaurar a imagem, como em:
# dd if=imagem.img of=/dev/hdb
Obs: O recebi um mail do Wooky lembrando que o Kernel do Linux possui uma limitação quanto ao tamanho máximo dos arquivos, que não podem ter mais de 2 GB, assim como na FAT 32. Isto se aplica naturalmente também aos arquivos gerados pelo dd, que não podem superar esta marca. Não tenho certeza se esta limitação se aplica também ao G4U (abaixo), pois ele utiliza o Kernel do NetBSD, não do Linux.

Naturalmente, caso os PCs tenham uma configuração diferente, você precisará reconfigurar o vídeo, som, modem e o que mais for necessário. Mas este é um processo muito mais rápido do que ter que instalar o sistema máquina por máquina.

Usando o G4U

O G4U, ou "Ghost for Unix" é mais um programa gratuito, na verdade uma mini-distribuição do NetBSD que complementa o dd, oferecendo a possibilidade de salvar ou recuperar imagens a partir de um servidor FTP. A principal vantagem é que ele roda a partir de um único disquete, o que permite usa-lo em máquinas rodando qualquer sistema operacional e sem necessidade de abrir a máquina.
Comece baixando a imagem do disquete no
http://www.feyrer.de/g4u/
Para gravar a imagem no disquete, use o comando:
# cat g4u-1.7.fs >/dev/floppy
... no Linux ou use o Rawwritewin para gravá-lo através do Windows.
Como o G4U não oferece outra opção além de salvar as imagens no servidor de FTP, precisaremos sempre de duas máquinas para usá-lo. Mas, hoje em dia é muito fácil encontrar bons servidores de FTP tanto para Linux quanto para Windows.
Se você estiver utilizando o Linux, provavelmente já têm um servidor instalado, o Proftpd. Tudo o que você têm a fazer é ativá-lo. No Mandrake você pode fazer isso através do Mandrake Control Center > Sistema > Serviços. No Conectiva ou Red Hat você pode usar o LinuxConf e em outras distribuições o ntsysv. No Slackware basta descomentar a linha (caso necessário) no arquivo /etc/inetd.conf descomentando a linha com o comando para inicializá-lo.
O Windows não acompanha nenhum servidor de FTP, mas você pode baixar o GildFTPD, que é gratuito no http://www.nitrolic.com/download.htm
A configuração do servidor se resume a:
1- Habilitar um servidor DHCP, que pode ser o compartilhamento de conexão do Windows, ou o serviço DHCPD no Linux.
2- Criar uma conta de usuário chamada "install" que será usada pelo G4U. Não se esqueça que esta conta deverá ter permissão de escrita para a pasta onde serão gravados os arquivos de imagem.
No Linux, usando o Proftpd, existe uma forma muito simples de criar o usuário install já com permissão de escrita, basta adicionar o usuário no sistema utilizando os comandos (como root):
# adduser install (cria o usuário)
# passwd install (define a senha)
O diretório do usuário será /home/install, local onde as imagens ficarão armazenadas.
Se você comprou a idéia de usar os 486 como terminais de rede de um servidor mais bem dotado, você pode usar o próprio servidor para armazenar as imagens do sistema e apenas restaurá-las nos 486 sempre que for necessário. Já pensou que coisa mais prática de administrar? Como todos os arquivos dos usuários ficam armazenados no servidor, sempre que um dos terminais der qualquer problema, você precisa apenas dar bot com o disquete do G4U e reinstalar a imagem.
O G4U detectará automaticamente a placa de rede instalada no cliente durante o boot, e obterá um endereço IP automaticamente a partir do servidor DHCP. A lista de placas de rede compatíveis inclui:
Placas PCI:
DEC 21x4x
ENI/Adaptec ATM
3Com 3c59x
3Com 90x[B]
SMC EPIC/100 Ethernet
Essential HIPPI card
DEC DEFPA FDDI
Intel EtherExpress PRO PCnet-PCI Ethernet
NE2000 Compatível
SiS 900 Ethernet
ThunderLAN Ethernet
DECchip 21x4x Ethernet
VIA Rhine Fast Ethernet
Lan Media Corp SSI/HSSI/DS3Realtek 8129/8139

Placas ISA:
AT1700
CS8900 Ethernet
3Com 3c503
3C505
3C501
3C509
3C507
StarLAN
FMV-180 series
EtherExpress/16
EtherExpress 10 ISA DEC EtherWORKS III
DEPCA
NE2100
BICC IsoLan
NE[12]000 ethernet
SMC91C9x Ethernet
IBM TROPIC (Token-Ring)
IBM TROPIC (Token-Ring)
3COM TROPIC (Token-Ring)
WD/SMC Ethernet

Placas PCMCIA
BayStack 650 (802.11FH)
Xircom/Netwave AirSurfer
3Com 3c589 e 3c562
MB8696x based Ethernet
NE2000-compatível Raytheon Raylink (802.11)
Megahertz Ethernet
Lucent WaveLan IEEE (802.11)
Xircom CreditCard Ethernet

Esta lista é bem abrangente, além de incluir a grande maioria das placas PCI e ISA, já inclui várias placas PCMCIA 802.11b. Mas, se mesmo assim a placa do seu PC não for suportada, troque-a por uma Realtek 8139 ou outro modelo barato. Trinta reais não vão pesar no bolso.
Durante o boot o G4U vai contatar automaticamente o servidor. A partir daí o uso do programa se resume a apenas dois comandos: uploaddisk e slurpdisk. O primeiro serve para copiar as imagens para o servidor e o segundo para recuperar as imagens gravadas. As imagens são compactadas no formato gz, isto significa que você terá uma redução de algo entre 30 e 70% do espaço ocupado no HD. Se o servidor tiver um HD grande você poderá usá-lo parar armazenar imagens de várias máquinas diferentes. Mas, em compensação, a compactação exige uma grande carga de processamento no cliente, o que torna a transferência bem mais lenta do que com o dd.
Fazer um backup de uma instalação do Slackware, de pouco mais de 1 GB feita num Pentium 100 gerou um arquivo de 635 MB e demorou pouco mais de 4 horas, devido à lentidão do processador. Um backup de 5 GB, feito num Celeron 600 já foi bem mais rápido, "apenas" duas horas e meia enquanto uma cópia de um HD de 120 MB instalado num 486 DX-100 demorou pouco mais de uma hora.
Ou seja, mesmo usando um micro rápido, prepare-se para uma certa demora.
Para gravar as imagens no servidor use o comando: uploaddisk IP_do_servidor nome_do_arquivo.gz wd0
Como em:
# uploaddisk 192.168.0.1 backup1.gz wd0
O "wd0" indica o HD local que será copiado, caso exista mais de um instalado no cliente. O wd0 é o HD instalado como primary master, o wd1 é o primary slave, enquanto o wd2 e wd3 são respectivamente o secondary master e secondary slave. No caso de HDs SCSI as identificações são sd0, sd1, sd2, etc. de acordo com a posição do HD no bus SCSI.
Para recuperar as imagens basta trocar o comando: slurpdisk IP_do_servidor nome_do_arquivo.gz wd0, como em:
# slurpdisk 192.168.0.1 backup1.gz wd0
Apesar de na teoria parecer um pouco complicada, depois de colocar a mão na massa você vai perceber que o uso destas ferramentas é bastante simples e o quanto elas podem facilitar a sua vida ao manter uma rede com vários clientes.

Fazendo a instalação

Agora que já vimos como é fácil replicar uma única instalação do Linux para vários micros, vamos tratar de fazer nossa distribuição base.
O Slackware é muito bom para esta tarefa, pois além do sistema ser bastante leve,se comparado com outras distribuições, a configuração é feita direto na fonte, editando os arquivos de configuração, o que nos dispensa de ter de instalar ferramentas de configuração como o Mandrake Control Center, que nos obrigam a instalar várias bibliotecas e consequentemente aumentar assustadoramente o tamanho do sistema.
É muito fácil fazer uma instalação especializada do Slackware, com o X em menos de 100 MB. Você pode ver um exemplo no meu Pulga! Linux, uma mini-distribuição que estou desenvolvendo, para ser usada em terminais leves que vem com o X, SSH, servidor de FTP, Telnet, Opera, processador de textos e outras ferramentas em menos de 70 MB. Ele pode ser usado em qualquer PC, a partir de um 386 com 120 MB de HD e 4 MB de RAM, sendo que a configuração ideal é um 486 com 12 MB. Também é fácil usá-lo em notebooks.
Você pode ver detalhes e baixar a imagem de instalação (que pode ser instalada usando o dd ou G4U, como vimos acima) no:
https://www.hardware.com.br/linux/pulga
No screenshot abaixo ele está rodando num 486 DX2-66 com 8 MB, rede 3com 509 ISA e um HD de 133 MB:


Os pacotes
Você pode fazer uma instalação mínima do Slack 7.1, apenas com os pacotes necessários para o sistema funcionar em menos de 30 MB. A partir deste ponto você pode adicionar apenas os programas que pretender utilizar, como o X, SSH, programas como o links e o mc, algum navegador gráfico, como por exemplo o Opera, gerenciadores de janelas, aplicativos gráficos diversos, etc. e ainda ficar abaixo da marca dos 100 MB.
Como vimos no capítulo 1, os pacotes do Slackware são divididos nas categorias A, AP, D, DES, E, F, GTK, K, KDE, N, T, TCL, X, XAP, XD, XV e Y
A boa notícia é que TODAS estas categorias são opcionais. Sim, os pacotes básicos do slackware (cerca de 25 MB, que incluem o bash, o editor Elvis, usado como substituto do vi, entre outros pacotes) não aparecem na lista, são instalados por default. Os únicos pacotes realmente necessários dentro da categoria A são:
ide: O Kernel com suporte a interfaces IDE. Alternativamente, você pode usar o Kernel scsi (maior) que oferece suporte também a interfaces SCSI.
aoutlibs: Bibliotecas C utilizadas por vários programas.
Além destes, é aconselhável instalar também:
gpm: Acrescenta suporte a mouse em aplicativos de modo texto. Útil no lynx, mc e outros programas.
isapnp: Facilita a instalação de placas ISA.
Kbd: Layouts de teclado alternativos (ou seja, todos além do US :-)
minicom:Um pacote com discador e outras ferramentas necessárias para estabelescer conexões via modem e cabo serial. Não é necessário se o PC for acessar a Web via rede.
pcmcia: Inclui suporte a placas PCMCIA, necessário se você pretender usar a instalação também em notebooks. Este serviço fica ativado por default e é capaz de detectar qualquer placa de rede ou modem suportado pelo Kernel 2.2
Obs: Existe um pacote chamado Bash1 que contém a versão 1.4 do interpretador de comandos. Ele não é necessário, pois o slackware instala o Bash 2.0 por default.
Com a base do sistema e mais o Kernel, ainda estamos abaixo da marca dos 30 MB e já temos um sistema funcional :-) Mas, claro, precisamos de mais algumas coisas para que ele sirva para o que precisamos.
Os pacotes básicos do Slack contém os comandos básicos do Linux, mas talvez você queira adicionar mais algumas ferramentas de modo texto, como o mc, que fazem parte da categoria AP:
mc: Gerenciador de arquivos de modo texto. (2 MB)
vim: A versão aperfeiçoada do Vi. Não é necessário pois o Slackware instala o Elvis, um editor semelhante ao vi por default (4 MB)
manpages: As páginas de manual, opcional. (4 MB)
Outra coisa indispensável é instalar o protocolo TCP/IP e outras ferramentas de conectividade em rede, que fazem parte da categoria N:
tcpip1: O pacote básico do TCP/IP, necessário para conectividade em rede (3 MB)
tcpip2: Inclui o DHCP, Ipchains, Ipfwadm e outras ferramentas. Não é necessário se você for utilizar endereços IP estáticos e não for utilizar o PC como roteador. (4 MB)
lynx: O navegador de modo texto, pode ser útil (2 MB)
Finalmente, não podemos nos esquecer de instalar o X, cujos pacotes, por coincidência, estão listados na categoria X:
xbin: O pacote básico do X (7 MB)
xfnts: O pacote mínimo de fontes obrigatório para rodar o X (2 MB).
xlib: Inclui bitmaps, arquivos de configuração e algumas bibliotecas necessárias para rodar o X. (2 MB)
xsvga: Inclui o servidor X SVGA, que garante compatibilidade com a grande maioria das placas vídeo, mas com apenas 256 cores. Se tiver espaço disponível, você pode adicionar também os outros servidores X, que permitem obter true color nas placas suportadas. Os servidores xvg16 e xmono são necessário apenas para algumas placas não suportadas, que só rodam com 2 ou 16 cores.
Se o seu objetivo é fazer um mero terminal leve, que simplesmente obtém a tela de login a partir de um servidor, você pode parar por aqui. Caso contrário, pode instalar também alguns dos aplicativos da categoria XAP, que contém gerenciadores de janelas e mais alguns aplicativos gráficos, como o Netscape 4. A maioria dos programas maiores necessitam que sejam instaladas as bibliotecas da categoria KDE ou GKT (Gnome) o que torna tudo muito maior e pesado. Daí em diante fica a seu critério.
Algumas sugestões de aplicativos leves que você pode utilizar são o Opera, o Abiword e o Siag Office (http://siag.nu) uma suíte de escritório completa, com editor de texto, planilha, etc. que roda confortavelmente num 486 DX4-100. De qualquer forma, minha recomendação pessoal é que você use os 486 apenas como terminais de um servidor mais rápido, usando o X -query, o que vai lhe dar resultados muito melhores do que tentar rodar aplicativos localmente.

Configuração

Depois de instalado o sistema, chegou a hora de otimiza-lo, desativando todos os recursos desnecessários e ativando o suporte a hardware necessário para roda-lo nas máquinas da rede.
A primeira para é o arquivo /etc/inetd.conf onde se concentram os serviços de rede. Por default ficam ativados vários serviços, entre eles um servidor de FTP e telnet. A menos que pretenda utilizar algum servidor específico, você pode desativar todos, acrescentando uma tralha (#) no início de cada linha:
# These are standard services.
#
# ftp stream tcp nowait root /usr/sbin/tcpd wu.ftpd -l -i -a
# telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd
#
Se você instalou o pacote pcmcia, o assistente fica ativado por default. Você pode desativa-lo nos micros onde ele não for necessário comentando as três linhas abaixo, no arquivo /etc/rc.d/rc.S :
if [ -x /etc/rc.d/rc.pcmcia ] ; then
. /etc/rc.d/rc.pcmcia start
fi
Outro alvo prioritário é o arquivo /etc/rc.d/rc.M, que carrega mais serviços, incluindo o at, cron, syslogd, lpd (porta paralela, necessário apenas para impressão), quota, sendmail, APM, GPM, Apache (linha webserver), Samba, etc. Entre os serviços que citei acima, nenhum é imprescindível. Talvez você queira manter o syslogd para acompanhar os logs do sistema, ou o GPM, para usar o mouse nos aplicativos de modo texto.
Dê uma boa olhada também no arquivo /etc/rc.d/rc.inet2 que carrega mais alguns serviços, entre eles o IPV4_Foward (só necessário se você for utilizar o micro como roteador), suporte a NFS (você monta alguma pasta de um servidor remoto?), o serviço KLOGD (mais logs do sistema) e o servidor SSHD.
Chegou a hora de cuidar do suporte a hardware, o que deve ser feito no arquivo /etc/rc.d/rc.modules
Aqui estão as linhas que ativam os módulos do Kernel responsáveis por ativar a placa de som, rede, placas SCSI, e outros dispositivos suportados. Tudo o que você tem a fazer é descomentar a linha referente ao modelo. Este arquivo está bem comentado, por exemplo, para ativar o suporte a placas de som Sound Blaster a linha a descomentar seria:
### Sound support ###
# Sound Blaster Pro/16 support:
#/sbin/modprobe sb io=0x220 irq=5 dma=3 dma16=5 mpu_io=0x300
Como estamos criando um sistema destinado a redes, creio que o suporte a placas de rede seja a parte mais importante ;-)
Estão disponíveis os módulos para "apenas" todas as placas abaixo, que incluem até mesmo placas raras. Se você utilizar placas diferentes nos outros micros da rede, você pode deixar descomentada mais de uma linha, fazendo com que todos módulos sejam testados durante o boot e o correto seja detectado. Você pode manter o suporte ativado para 3, 5 ou até mesmo 10 placas diferentes. O único problema é que para cada módulo ativado a inicialização do sistema ficará coisa de 1 a 2 segundos mais lenta e você desperdiçará alguns kbytes de memória. De qualquer forma, é um recurso muito útil, pois você pode deixar ativados de uma vez os módulos para todas as placas de rede diferentes que tiver na rede, para que não precise configurar micro por micro.
Módulos de rede disponíveis no /etc/rc.d/rc.modules:

### Ethernet cards based on the 8390 chip.
# 3com 3c503 support:
#/sbin/modprobe 3c503
# Ansel Communications EISA 3200 support:
#/sbin/modprobe ac3200
# Cabletron E21xx support:
#/sbin/modprobe e2100
# HP PCLAN+ (27247B and 27252A) support:
#/sbin/modprobe hp-plus
# HP PCLAN (27245 and other 27xxx series) support:
#/sbin/modprobe hp
# NE2000/NE1000 support (non PCI):
#/sbin/modprobe ne io=0x300 # NE2000 at 0x300
#/sbin/modprobe ne io=0x280 # NE2000 at 0x280
#/sbin/modprobe ne io=0x320 # NE2000 at 0x320
#/sbin/modprobe ne io=0x340 # NE2000 at 0x340
#/sbin/modprobe ne io=0x360 # NE2000 at 0x360
# PCI NE2000 clone support:
#/sbin/modprobe ne2k-pci
# SMC Ultra support:
#/sbin/modprobe smc-ultra
# SMC Ultra32 EISA support:
#/sbin/modprobe smc-ultra32
# Western Digital WD80*3 (and clones) support:
#/sbin/modprobe wd
#
# Other network hardware drivers:
#
# 3com 3c501 (consider buying a new card, since the 3c501 is slow,
# broken, and obsolete):
#/sbin/modprobe 3c501
# 3com 3c503:
#/sbin/modprobe 3c503
# 3com 3c505:
#/sbin/modprobe 3c505
# 3com 3c507:
#/sbin/modprobe 3c507
# 3com 3c509 and 3c579:
/sbin/modprobe 3c509
# 3com 3c515:
#/sbin/modprobe 3c515
# This one works for all 3com 3c590/3c592/3c595/3c597 and the
# EtherLink XL 3c900 and 3c905 cards:
#/sbin/modprobe 3c59x
# Apricot Xen-II on board Ethernet:
#/sbin/modprobe apricot
# Generic ARCnet support:
#/sbin/modprobe arcnet
# AT1700/1720 support:
#/sbin/modprobe at1700
# AT-LAN-TEC/RealTek pocket adapter support:
#/sbin/modprobe atp
# BPQ Ethernet driver:
#/sbin/modprobe bpqether
# Generic DECchip & DIGITAL EtherWORKS PCI/EISA:
#/sbin/modprobe de4x5
# D-Link DE600 pocket adapter support:
#/sbin/modprobe de600
# D-Link DE620 pocket adapter support:
#/sbin/modprobe de620
# DEPCA support:
#/sbin/modprobe depca
# Digi International RightSwitch cards:
#/sbin/modprobe dgrs
# Intel EtherExpress Pro support:
#/sbin/modprobe eepro
# Intel EtherExpress PRO/100 PCI support:
#/sbin/modprobe eepro100
# Intel EtherExpress16 support:
#/sbin/modprobe eexpress
# SMC EtherPower II 9432 PCI support:
#/sbin/modprobe epic100
# ICL EtherTeam 16i/32 support:
#/sbin/modprobe eth16i
# DEC EtherWorks 3 support:
#/sbin/modprobe ewrk3
# Fujitsu FMV-181/182/183/184 support:
#/sbin/modprobe fmv18x
# HP 10/100VG PCLAN (ISA, EISA, PCI) support:
#/sbin/modprobe hp100
# IBM Tropic chipset based adapter support:
#/sbin/modprobe ibmtr
# AMD LANCE and PCnet (AT1500 and NE2100) support:
#/sbin/modprobe lance
# NI5210 support:
#/sbin/modprobe ni52
# NI6510 support:
#/sbin/modprobe ni65
# AMD PCnet32 (VLB and PCI) support:
#/sbin/modprobe pcnet32
# Red Creek Hardware Virtual Private Network (VPN) support:
#/sbin/modprobe rcpci
# RealTek 8129/8139 (not 8019/8029!) support:
/sbin/modprobe rtl8139
# Sangoma S502A FRAD support:
#/sbin/modprobe sdla
# SMC 9194 support:
#/sbin/modprobe smc9194
# DECchip Tulip (dc21x4x) PCI support:
#/sbin/modprobe tulip
# VIA Rhine support:
#/sbin/modprobe via-rhine
# AT&T WaveLAN & DEC RoamAbout DS support:
#/sbin/modprobe wavelan
# Packet Engines Yellowfin Gigabit-NIC support:
#/sbin/modprobe yellowfin
Finalmente, chegamos ao inevitável, que é a configuração do vídeo para rodar o X, feita usando o xf86config. Se todos os micros da rede usarem placas de vídeo do mesmo modelo não há problema, basta configurar uma vez e copiar a imagem para todos os micros. Caso contrário, você terá que fazer uma imagem diferente para cada placa, ou copiar a imagem padrão e configurar o xf86config micro por micro.
O slackware 7.1 ainda utiliza o Xfree 3.3, que inclui suporte a um número muito maior de placas de vídeo que o Xfree 4.2 (quase 800 placas, contra pouco mais de 500), o que facilita o uso em micros antigos.
Depois de configurar o X, você pode configurar a estação para abrir o X automaticamente durante o boot editando o arquivo /etc/inittab, alterando o runlevel padrão de 3 para 4 (e não 5 como em outras distribuições):
# Default runlevel. (Do not set to 0 or 6)
id:3:initdefault:
A linha ficará:
id:4:initdefault:
Se você quiser que a estação automaticamente obtenha a tela de login de um servidor, edite também o arquivo /etc/rc.d/rc.4. Este é o script que é executado quando o sistema entra no runlevel 4. Você precisa comentar as linhas:
#echo "Starting up X11 session manager..."
# KDE's kdm is the default session manager. If you're got this, it's the
# one to use.
#if [ -x /opt/kde/bin/kdm ]; then
# exec /opt/kde/bin/kdm -nodaemon
# GNOME's session manager is another choice:
#elif [ -x /usr/bin/gdm ]; then
# exec /usr/bin/gdm -nodaemon
# If all you have is XDM, I guess it will have to do:
#elif [ -x /usr/X11R6/bin/xdm ]; then
# exec /usr/X11R6/bin/xdm -nodaemon
#fi
# error
#echo
#echo "Hey, you don't have KDM, GDM, or XDM. Can't use runlevel 4 without"
#echo "one of those installed."
#sleep 30
Que inicializam o login gráfico local, substituindo a turma toda pela linha:
/usr/X11/bin/X -query 192.168.0.9
Substituindo naturalmente o "192.168.0.9" pelo endereço IP do servidor. Você pode usar ainda a linha:
/usr/X11/bin/X -broadcast
Que procura automaticamente pelo servidor.
Prontinho, agora você só precisa copiar a imagem para todos os terminais da rede e fazer as alterações necessárias em cada um para para ter sua rede de terminais leves operante. Se preferir, você pode usar a imagem do Pulga!, que já está pronta.
A partir daí você pode ir otimizando e adicionando recursos ao seu sistema até chegar ao nível que deseja. Se o objetivo for diminuir o espaço em disco, comece vasculhando a árvore de diretórios, deletando todas as pastas "man", "info" ou "doc" que encontrar pela frente. Estas são pastas de documentação, que são instaladas junto com os pacotes, que chegam a consumir mais de 10% do espaço em disco total. Você pode ainda deletar os módulos do Kernel que não for utilizar (pasta /bin/modules), programas e comandos que não forem necessários para seu uso (pasta /usr/bin) e assim por diante.
Claro, é preciso pesquisar muito para conseguir descobrir exatamente quais arquivos e bibliotecas são necessários ou não para as tarefas necessárias, mas em alguns casos todo esse zelo pode valer à pena. Imagine que daqui a algum tempo você resolva desenvolver uma mini-distribuição para uso em handhelds, ou algum tipo de embedded system que tenha, digamos, apenas 32 MB de armazenamento? É possível colocar um sistema Linux completo, com X e alguns programas neste espaço. Retirando o SSH, Opera e outros programas "não essenciais" do Pulga por exemplo, você já estaria próximo desta marca.
O Slackware é um bom ponto de partida se você quer aprender este tipo de truque, pois o sistema de gerenciamento de pacotes é muito flexível. É possível abrir um pacote, eliminar alguns componentes "desnecessários" e fecha-lo novamente. É possível baixar o código fonte de cada pacote, recompila-los adicionando algum tipo de otimização e assim por diante. As possibilidades são muitas.
O Slackware também é bastante versátil para criar sistemas especializados, por exemplo um micro que sirva apenas para gravar CDs, sirva apenas como firewall da rede, que sirva como centro de controle de um sistema de automatização doméstica, utilizando o X10 e assim por diante, sempre com requisitos de hardware muito baixos, já que poderemos instalar apenas os pacotes necessários à cada tarefa.
Por exemplo, um mero Pentium 133 com um HD Pio mode 4 já é suficiente para gravar CDs a 8X. Você poderia instalar os pacotes básicos do Slackware 8.1, junto com o X, o Xcdroast e outros programas de gravação, manter ativado o SSH, VNC ou outro programa de acesso remoto, junto com o servidor de FTP para transferir os arquivos e controla-lo via rede usando seu micro titular.
Basta configurar a opção "Halt on" do setup com o valor "no errors" que você pode deixá-lo ligado apenas no cabo de força e na rede, sem monitor nem teclado nem mouse. Na hora de gravar os CDs você transfere os arquivos via FTP, NFS ou outro sistema qualquer, abre o Xcdroast usando o SSH ou VNC e grava os CDs sem precisar se preocupar com lentidão ou buffer underrruns, que o P133 não precisará executar mais nenhuma tarefa durante a gravação. Ele fica lá à disposição, como se fosse uma espécie de eletrodoméstico.
Você pode usar a idéia para fazer um pequeno servidor de FTP para fazer backups dos arquivos da rede (um 486 com um HD razoavelmente grande já seria suficiente) e assim por diante. As possibilidades são muitas.
Um bom ponto de partida se você quiser se especializar neste tema é ler a lista de pacotes do Slackware, para poder decidir o que pode ser incluído no seu sistema.
Slackware 7.1:
ftp://ftp.slackware.com/pub/slackware/slackware-7.1/PACKAGES.TXT
Slackware 8.1:
ftp://ftp.sunet.se/pub/Linux/distributions/slackware/slackware-8.1/PACKAGES.TXT
Eu prefiro usar o Slackware para este tipo de tarefa pela eficiência do sistema de gerenciamento de pacotes e pela facilidade de criar um sistema leve e minimalístico com ele. Mas, você pode colocar esta idéia em prática usando a distribuição que tiver mais familiaridade.
Outra opção é você começar do zero, desenvolvendo sua mini-distribuição desde o início, usando como ponto de partida um PC "hospedeiro" rodando uma distribuição Linux qualquer. Você criaria uma partição de disco exclusiva para os arquivos da distro e iria compilando um a um os programas necessários, adicionando um Kernel personalizado, os scripts de inicialização e assim por diante. Depois de instalar todos os pacotes necessários para ter um sistema funcional, você pode configurar o Lilo para dar boot através da partição onde está o seu mini-Linux, ou mesmo transferi-lo para outro micro.
É bem fácil projetar uma distribuição que possa funcionar "out-of-the-box" em várias configurações de hardware diferentes, pois basta manter ativados os módulos do Kernel necessários para ativar todos os dispositivos necessários. Você pode incluir ainda várias versões do arquivo /etc/XF86Config (onde fica armazenada a configuração do vídeo), do /etc/rc.d/rc.inet1 (configuração da rede) e de qualquer outro componente que não possa ser alterado automaticamente, incluindo um script que se encarregue de fazer as alterações necessárias.
Um shell script no estilo:

mv -f /modelo/XF86Config-micro1 /etc/XF86Config
mv -f /modelo/rc.inet1-micro1 /etc/rc.d/rc.inet1
Já resolveria o problema, substituindo os arquivos por modelos armazenados na pasta "/modelo/". Bastaria executar o script ao transferir a imagem para o micro destino.
Se você gostou da idéia de desenvolver sua mini-distribuição do zero, pode começar seguindo as instruções do livro do Linux From Scratch para ter uma base do que fazer e depois ir seguindo seu próprio caminho.
O livro, junto com os pacotes e outros programas necessários está disponível no:
http://www.linuxfromscratch.org
Creio que não exista muito espaço para novas distribuições Linux de uso geral, afinal já temos o Mandrake. RH, Conectiva, Debian, Slack, Gentoo, Turbo e tantas outras distribuições de ótima qualidade por aí. A menos que você queira desenvolver algo apenas por hobby, seria um negócio com pouco futuro.
Mas, por outro lado, existe um mercado crescente para distribuições especializadas, destinadas a sistemas de operação crítica, embedded systems, handhelds e toda a sorte de portáteis e até mesmo de eletrodomésticos. Enquanto desenvolver um sistema proprietário custaria alguns milhões de dólares e licenciar um sistema como o Palm OS ou o Windows CE significa pagar uma licença de de 10 a 50 dólares por aparelho, uma mini-distribuição Linux pode ser desenvolvida em um final de semana por alguém com conhecimento de causa.
Bom, já vimos alguns exemplos até aqui, o resto é com você :-)
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal