Supondo que você já tem o cabo, podemos trabalhar agora na parte
do servidor.
Antes de mais nada olhe no setup da sua placa mãe a configuração
da sua porta paralela e se possível deixe com o IO=0x378, IRQ=7
e DMA=3 (padrão).
Primeiro de tudo, se você já tem um computador com o
nfsd
rodando, configurado e funcionando, você já sabe o que fazer, basta
aprender como conectar via porta paralela e o resto funciona como
uma interface de rede normal. Caso contrário siga os passos abaixo.
Tudo a partir daqui deve ser feito como root, pois estamos
configurando o sistema.
Você deve verificar se o seu kernel dá suporte a interface PLIP
(Parallel Line IP), uma boa maneira de fazer isso é verificar o
"config" do seu kernel, no caso do Slackware é pra ele estar em
/boot/config-algumacoisa e caso você tenha recompilado o kernel
ele vai estar em /usr/src/versaodokernel/.config (isso se você
não apagou o diretório). O padrão do kernel ide do Slackware é
manter o PLIP como módulo. Para verificarmos se o kernel dá
suporte ao PLIP executamos:
$ cat config-algumacoisa | grep PLIP
ou, caso não esteja lá:
$ cat .config | grep PLIP
em qualquer um dos casos devemos obter:
CONFIG_PLIP=m (indica que está como módulo)
ou
CONFIG_PLIP=y (indica que está como nativo)
Se você obter CONFIG_PLIP=n, então seu kernel não foi
compilado com suporte ao PLIP e você vai ter que recompilá-lo,
o que foge do escopo desse artigo (com certeza você encontra
alguma coisa aqui no VOL =D).
Depois disso devemos procurar saber se o kernel está com suporte
a porta paralela com os ítens: CONFIG_PARPORT e CONFIG_PARPORT_PC
igual a y ou m. Para verificar repetimos os passos acima
substituindo ... | grep PLIP respectivamente por ... | grep PARPORT
e ... | grep PARPORT_PC. Aproveitando que estamos verificando isso,
podemos olhar também se os ítens CONFIG_NFS_FS, CONFIG_NFS_V3,
CONFIG_NFSD, CONFIG_NFSD_V3 também estão com suporte, usando os
mesmos comandos acima.
DICA: Se você for recompilar o kernel, deixe PARPORT, PARPORT_PC e
PLIP como módulos, pois depois fica mais fácil de definimos um
endereço de io e um irq para a porta paralela.
Vamos agora trabalhar no servidor em si, vamos configurar uma rede ponto a ponto PLIP com a seguinte configuração:
- destino : 192.168.0.1 netmask 255.255.255.255
- servidor: 192.168.0.2 netmask 255.255.255.255
Para verificar se os hosts destino e servidor já estão definidos em seu sistema, basta dar um ping:
$ ping destino
$ ping servidor
Você deve optar algo como:
$ ping destino
ping: unknown host source
$ ping servidor
ping: unknown host source
Se não, se você obtiver resposta, mude os nomes "servidor" e
"destino" à vontade, desde que obedeça a nomenclatura até o
final do artigo.
Devemos fazer a mesma coisa com os IPs para ver se eles já não
estão definidos:
$ ping 192.168.0.1
connect: Network is unreachable
$ ping 192.168.0.2
connect: Network is unreachable
Caso esteja tudo OK, não precisa mudar nada (você pode escolher
outros nomes, endereços ou outra netmask, desde que a netmask seja
a mesma, tanto no servidor como no destino).
Caso você já esteja rodando o
nfsd (servidor NFS), mas não
esteja utilizando (não deveria =P), você deve matá-lo, mate também
caso esteja rodando o rpc.portmap e o rpc.mountd.
A melhor maneira de fazer isso é indo no diretório /etc/rc.d e ver
se estão com autorização de execução:
# ls -l rc.portmap
# ls -l rc.nfsd
Você deve obter algo como:
-rw-r--r-- 1 root root 905 2003-09-13 19:38 rc.portmap
-rw-r--r-- 1 root root 2449 2003-08-26 23:51 rc.nfsd
Indicando que eles não são executáveis e por padrão não foram
carregados.
Se você obter algo como:
-rwxr-xr-x 1 root root 2449 2003-08-26 23:51 rc.nfsd*
-rwxr-xr-x 1 root root 905 2003-09-13 19:38 rc.portmap*
Isso indica que eles foram carregados, então faça:
# ./rc.portmap stop
# ./rc.nfsd stop
Isso é necessário para parar os dois processos.
Agora edite o seu /etc/hosts adicionando as seguintes linhas:
192.168.0.1 destino
192.168.0.2 servidor
Depois edite o arquivo /etc/exports colocando a linha
do diretório que você quer compartilhar, pode ser qualquer
diretório, desde que lá esteja os arquivos do Slack. Vou supor
aqui que o CDROM do Slack está montado em /mnt/cd, então vou
adicionar:
# This file contains a list of all directories exported to other computers.
# It is used by rpc.nfsd and rpc.mountd.
...
/mnt/cd servidor(ro) destino(ro)
...
Isto faz com que tanto o computador servidor como o destino
tenham acesso ao diretório /mnt/cd quando acessados via NFS, o
(ro) significa read-only (apenas leitura).
Feito isso vamos verificar se o arquivo /etc/nsswitch.conf contém
o ítem files na opção hosts:
# /etc/nsswitch.conf
#
# An example Name Service Switch config file. This file should be
# sorted with the most-used services at the beginning.
...
hosts: files dns
...
Vamos agora colocar a interface PLIP para funcionar (finalmente =P).
OBS: Um computador IBM/PC pode ter até 3 portas paralelas e as
interfaces seriam chamadas
plip0,
plip1 e
plip2,
estou supondo que no seu computador só existe uma, portanto
plip0.
Se você está com uma impressora funcionando, com certeza o daemon
lpd vai estar rodando, para verificar digite:
$ cat /proc/devices
Você deve obter algo como:
Character devices:
...
6 lp
...
Se sim, devemos então matar o daemon lpd e descarregar o modulo
lp do kernel (se seu kernel estiver com o lp como nativo você terá
que recompilar), faça:
# killall lpd
# rmmod lp
Você não é obrigado a fazer isso tudo com o coitado do lp, mas
esse artigo pode não funcionar se o lp estiver ativo. Você pode
tentar continuar, mas não posso garantir nada (comigo funcionou
sem o lp, não testei sem =D).
Verifiquemos agora se os módulos
parport,
parport_pc
e
plip estão ativados:
$ lsmod
Module Size Used by
...
plip 14344 0
parport_pc 31072 1
parport 35264 2 plip,parport_pc
...
Se estiverem carregados descarregue: (nessa ordem)
# rmmod plip
# rmmod parport_pc
# rmmod parport
Agora recarregue usando o seguinte, e nessa ordem:
# modprobe parport
# modprobe parport_pc io=0x378 irq=7 dma=3 (ou o da sua configuração)
E agora? Deu certo? Vamos olhar:
# tail /var/log/messages
Você deve obter algo como:
...
Jun 15 10:38:05 leonel kernel: parport0: PC-style at 0x378 (0x778), irq 7, dma 7 [PCSPP,TRISTATE,COMPAT,ECP,DMA]
...
Agora vamos carregar o PLIP:
# modprobe plip
e
# tail /var/log/messages
...
Jun 14 23:56:09 leonel kernel: NET3 PLIP version 2.4-parport gniibe@mri.co.jp
Jun 14 23:56:09 leonel kernel: parport0: PC-style at 0x378 (0x778) [PCSPP,TRISTATE]
...
Isso significa que tudo foi carregado como deveria. =D
Vamos agora configurar a interface plip0:
# ifconfig plip0 servidor pointopoint destino netmask 255.255.255.255 up (pointopoint e não pointtopoint =D)
Dê uma checada:
# ifconfig plip0
plip0 Link encap:Ethernet HWaddr FC:FC:C0:A8:00:02
inet addr:192.168.0.2 P-t-P:192.168.0.1 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MTU:1500 Metric:1
RX packets:39204 errors:0 dropped:9 overruns:0 frame:0
TX packets:370144 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:10
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Interrupt:7 Base address:0x378
Agora para testar, pingue você mesmo:
# ping servidor
PING servidor (192.168.0.2) 56(84) bytes of data.
64 bytes from servidor (192.168.0.2): icmp_seq=1 ttl=64 time=0.117 ms
64 bytes from servidor (192.168.0.2): icmp_seq=2 ttl=64 time=0.070 ms
64 bytes from servidor (192.168.0.2): icmp_seq=3 ttl=64 time=0.066 ms
64 bytes from servidor (192.168.0.2): icmp_seq=4 ttl=64 time=0.066 ms
64 bytes from servidor (192.168.0.2): icmp_seq=5 ttl=64 time=0.050 ms
--- servidor ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4017ms
rtt min/avg/max/mdev = 0.050/0.073/0.117/0.025 ms
...
Isso significa que você está recebendo resposta de você mesmo (meio inútil? =P).
Faça agora:
# route
Você deve obter algo como:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
target * 255.255.255.255 UH 0 0 0 plip0
loopback * 255.0.0.0 U 0 0 0 lo
...
Se não, vamos definir uma rota:
# route add -host 192.168.0.1 dev plip0
Se você quiser ter certeza ou for muito desconfiado, digite "route" novamente e verifique se está tudo OK.
Finalmente a rede na parte do servidor está pronta =D