FreeBSD em computadores sem HD

Utilizando o FreeBSD em computadores sem HD.


    Voce ja possui um Servidor FreeBSD em sua rede?
    Se sua resposta foi sim...
    Voce ja tinha conhecimento que disponibilizando os servicos de bootp, tftp e NFS neste servidor, voce pode transformar, quando e pelo tempo que quiser, qualquer PC da sua rede local , em uma WorkStation FreeBSD , com direito a XWindows, sem ter que instalar fisicamente o FreeBSD nestes computadores ? Ou melhor ainda, que estes computadores nao precisam nem mesmo de um HD ? Esta possibilidade se bem aproveitada pode trazer economia e versatilidade a sua empresa, so depende de sua criatividade...
    Se voce se interessou e deseja experimentar, dedique algum tempo lendo o texto abaixo, voce vai ver que nao e dificil por em pratica. Este texto foi baseado no handbook e nas manpages dos aplicativos envolvidos.
    Antes de iniciar, voce deve verificar se seu servidor possui espaco em disco, para abrigar o file system dos computadores clientes, se voce optar por trabalhar em um ambiente compartilhado (/usr comum a todos os clientes) , o minimo seria algo por volta de 250 MB por maquina cliente.

    Antes de iniciar, para efeito de ilustracao, consideremos os seguintes dados de uma rede hipotetica 10.0.0 , netmask 255.255.255.0, nome de dominio pro-unix.org:
    1 servidor FreeBSD , ip 10.0.0.2 , endereco ethernet 0000b01f858a executando os servicos de DNS e NFS.
    1 gateway , ip 10.0.0.1
    1 Pc cliente, sem HD, ip 10.0.0.3 , endereco ethernet 0000b01f844a , hostname omega.
    1 Pc cliente, sem HD, ip 10.0.0.4 , endereco ethernet 0000b01f854a , hostname Andromeda.

    Feitas ests consideracoes , passemos a configuracao:

  • Habilitando e configurando o servidor Bootpd no Server FreeBSD (Internet Boot Protocol)
    Para habilitar o servico de Bootp , voce deve inserir a seguinte linha ao arquivo /etc/inetd.conf, caso a linha ja exista em seu arquivo , apenas remova o caracter # do inicio da linha:
    bootps  dgram  udp  wait    root  /usr/libexec/bootpd  bootpd  /etc/bootptab
    Habilitado o bootpd , sua configuracao e feita no arquivo /etc/bootptab. Para nossa rede hipotetica o arquivo minimo para os clientes ficaria assim:
    omega:\
    :ht=ether:\
    :ha=0000b01f844a:\
    :sm=255.255.255.0:\
    :hn:\
    :ds=10.0.0.2:\
    :ip=10.0.0.3:\
    :gw=10.0.0.1:\
    :vm=rfc1048:
    andromeda:\
    :ht=ether:\
    :ha=0000b01f854a:\
    :sm=255.255.255.0:\
    :hn:\
    :ds=10.0.0.2:\
    :ip=10.0.0.4:\
    :gw=10.0.0.1:\
    :vm=rfc1048:

    No qual as entradas significam:
    ht - Tipo de hardware utilizado
    ha - Endereco ethernet da placa de rede
    sm - Netmask da sua rede
    hn - Envia o hostname do cliente para o cliente
    ds - IP do servidor DNS
    ip - IP do cliente
    gw - IP do gateway
    Para ver a lista completa das outra opcoes consulte bootptab no manual do FreeBSD.

  • Habilitando e configurando o servidor tftpd no Server FreeBSD ( Internet Trivial File Tranfer Protocol )
    Para habilitar o servico de tftp , voce deve inserir a seguinte linha ao arquivo /etc/inetd.conf, caso a linha ja exista em seu arquivo , apenas remova o caracter # do inicio da linha:
    tftp   dgram   udp     wait    nobody  /usr/libexec/tftpd      tftpd -s /tftpboot
    Habilitado o tftp , para configura-lo voce deve inicialmente criar o diretorio /tftpboot e seta-lo com "chmod /tftpboot +rx". Apos criar o diretorio voce deve criar dentro deste diretorio o arquivo que ira fornecer as informacoes necessarias para o boot do client.
    O nome do arquivo e cfg.w.x.y.z onde w.x.y.z e o ip do computador cliente.
    No nosso caso teriamos que criar 2 arquivos: cfg.10.0.0.3 e cfg.10.0.0.4 , o conteudo minimo destes arquivos seria:
    para o cfg.10.0.0.3:
    rootfs  10.0.0.2:/usr/export/omega
    swapfs 10.0.0.2:/usr/export/swapfs
    swapsize 20000
    hostname omega.pro-unix.org
    e para o cfg.10.0.0.4
    rootfs  10.0.0.2:/usr/export/andromeda
    swapfs 10.0.0.2:/usr/export/swapfs
    swapsize 20000
    hostname andromeda.ro-unix.org
    No qual as entradas significam:
    rootfs - Informa ao cliente o root filesystem a ser usado
    swapfs - informa ao cliente o swap filesystem a ser usado
    swapsize - Configura o tamanho, em Kbytes, do swap do cliente
    hostname - Configura o hostanme do ciente

    Agora voce deve criar os diretorios /usr/export/omega , /usr/export/andromeda e /usr/export/swapfs.
    Em seguida deve gerar com o comando ddo "swapfile" que sera utilizados pelos seu computador cliente. O nome deste arquivo e swap.w.x.y.z ( /usr/export/swapfs/swap.w.x.y.z) no qual w.x.y.z e o IP do cliente que ira usar este arquivo.
    A sintaxe do comando para gerar este arquivo, por exemplo para o cliente omega:
    dd if=/dev/zero of=/usr/export/swapfs/swap.10.0.0.3 bs=1k count=20000
    chmod 0600 /usr/export/swapfs/swap.10.0.0.3

  • Configurando o servidor NFS do Server FreeBSD , para exportar os root e swap filesystem para seus clientes.

    Certifique-se que tenha habilitado o servico de NFS em seu server FreeBSD, se voce ainda nao o fez de uma olhada em:Configurando um servidor de NFS no FreeBSD.
    verificado que o servico de NFS esta habilitado, voce deve editar o arquivo /etc/exports para incluir as seguintes linhas:
    /usr/export/omega  -maproot=0:0  omega.pro-unix.org
    /usr/export/andromeda -maproot=0:0 andromeda.pro-unix.org
    /usr/export/swapfs -maproot=0:0 omega.pro-unix.org andromeda.pro-unix.org
  • Gerando o root filesystem para o cliente.
    Para que a configuracao esteja completa , falta gerar o root filesystem dos clientes, para isso voce deve ter em maos o CD de Instalacao do FreeBSD ou acesso a internet para tranferir os arquivos necessarios por FTP.
    Insira o CD-ROM de instalacao do FreeBSD no Drive e de um "mount /cdrom" de pois execute a sequencia de comandos abaixo (por exemplo para a maqina omega):
    cd /cdrom/bin
    cat bin.* >> /usr/export/omega/bin.tgz
    cd /usr/export/omega
    gzip -d bin.tgz
    tar -xf bin.tar
    rm bin.tar
    apos a execucao desta sequencia de comandos, voce tera gerado os seguintes diretorios:
    /usr/export/omega/bin
    /usr/export/omega/dev
    /usr/export/omega/etc
    /usr/export/omega/lkm
    /usr/export/omega/mnt
    /usr/export/omega/proc
    /usr/export/omega/root
    /usr/export/omega/sbin
    /usr/export/omega/stand
    /usr/export/omega/tmp
    /usr/export/omega/usr
    /usr/export/omega/usr/bin
    /usr/export/omega/usr/games
    /usr/export/omega/usr/include
    /usr/export/omega/usr/lib
    /usr/export/omega/usr/libexec
    /usr/export/omega/usr/local
    /usr/export/omega/usr/sbin
    /usr/export/omega/usr/share
    /usr/export/omega/usr/tmp
    /usr/export/omega/var
    /usr/export/omega/var/log
    /usr/export/omega/var/mail
    /usr/export/omega/var/spool
    /usr/export/omega/var/tmp
    Caso voce nao tenha o CD , faca FTP para por exemplo ftp.br.FreeBSD.org, e baixe o diretorio /pub/FreeBSD/releases/i386/4.3-RELEASE/bin inteiro para por exemplo /usr/tmp e execute:
    cd /usr/tmp
    cat bin.* >> /usr/export/omega/bin.tgz
    cd /usr/export/omega
    gzip -d bin.tgz
    tar -xf bin.tar
    rm bin.tar
    Observação:
    O kernel que voce colocou no diretorio que sera o rootfs das suas maquinas clientes , precisa ser substituido por um kernel customizado, compilado com suporte aos devices do seu cliente e contendo ainda as linhas abaixo para habilitar o uso do BOOTP.
      # Kernel BOOTP support 
    options BOOTP
    options BOOTP_NFSROOT
    options BOOTP_NFSV3
    options BOOTP_COMPAT

    De um boot em seu servidor FreeBSD e ele estara pronto para os testes.



    O proximo passo sera gerar o disco de boot para inicializar seu terminal diskless.
    Para isso voce vai precisar compilar o etherboot, disponivel em /usr/ports/net/etherboot para isso execute os seguintes comandos:
    # cd /usr/ports/net/etherboot
    # make
    Agora que voce compilou o etherboot, voce precisa gerar o disco de boot apropriado para a sua placa de rede.
    As seguintes placas de rede sao suportadas:
    # 3Com503, aka Etherlink II, also /16 model
    3c503 ns8390
    # 3Com507 (i82586 based)
    3c507 i82586
    # 3c509, ISA/EISA
    3c509
    # 3c529 == MCA 3c509
    3c529 3c509
    # 3c59x cards (Vortex) and 3c900 cards
    3c590 3c595 0x10b7,0x5900
    3c595 3c595 0x10b7,0x5950
    3c595-1 3c595 0x10b7,0x5951
    3c595-2 3c595 0x10b7,0x5952
    3c900-tpo 3c595 0x10b7,0x9000
    3c900-t4 3c595 0x10b7,0x9001
    3c900b-tpo 3c595 0x10b7,0x9004
    3c900b-combo 3c595 0x10b7,0x9005
    3c900b-tpb2 3c595 0x10b7,0x9006
    3c900b-fl 3c595 0x10b7,0x900a
    # 3C90x cards device IDs
    # Original 90x revisions:
    # 0x9000 : 10 Base TPO
    # 0x9001 : 10/100 T4
    # 0x9050 : 10/100 TPO
    # 0x9051 : 10 Base Combo
    # Newer 90xB revisions:
    # 0x9004 : 10 Base TPO
    # 0x9005 : 10 Base Combo
    # 0x9006 : 10 Base TP and Base2
    # 0x900A : 10 Base FL
    # 0x9055 : 10/100 TPO
    # 0x9056 : 10/100 T4
    # 0x905A : 10 Base FX
    # Newer 90xC revision:
    # 0x9200 : 10/100 TPO (3C905C-TXM)
    3c905-tpo 3c90x 0x10b7,0x9000
    3c905-t4 3c90x 0x10b7,0x9001
    3c905-tpo100 3c90x 0x10b7,0x9050
    3c905-combo 3c90x 0x10b7,0x9051
    3c905b-tpo 3c90x 0x10b7,0x9004
    3c905b-combo 3c90x 0x10b7,0x9005
    3c905b-tpb2 3c90x 0x10b7,0x9006
    3c905b-fl 3c90x 0x10b7,0x900a
    3c905b-tpo100 3c90x 0x10b7,0x9055
    3c905b-t4 3c90x 0x10b7,0x9056
    3c905b-fx 3c90x 0x10b7,0x905a
    3c905c-tpo 3c90x 0x10b7,0x9200
    # Crystal Semiconductor CS89x0
    cs89x0
    # Digital DE100 and DE200
    depca depca
    # Intel Etherexpress Pro/10 (ISA card)
    eepro eepro
    # Intel Etherexpress Pro/100
    eepro100 eepro100 0x8086,0x1229
    82559er eepro100 0x8086,0x1209
    id1029 eepro100 0x8086,0x1029
    id1030 eepro100 0x8086,0x1030
    82562em eepro100 0x8086,0x2449
    # SMC 83c170 EPIC/100
    epic100 epic100 0x10b8,0x0005
    # Exos 205 (i82586 based)
    exos205 i82586
    # Lance PCI PCNet/32
    lancepci lance 0x1022,0x2000
    pcnetfastiii lance 0x1022,0x2625
    # AMD HomePNA
    amdhomepna lance 0x1022,0x2001
    # Linksys LNE100TX and other NICs using this Tulip clone chip
    lc82c115 tulip 0x11ad,0xc115
    # Netgear FA310TX and other NICs using this Tulip clone chip
    lc82c168 tulip 0x11ad,0x0002
    # Tulip clones based on the ADMtek Centaur-P
    admtek0985 tulip 0x1317,0x0985
    # Also ADMtek Centaur-P, found on stmicro NIC by Ranjan Parthasarathy
    admtek0981 tulip 0x1317,0x0981
    # ASIX AX88140, doesn't work yet
    asix88140 tulip 0x125b,0x1400
    # Compex RL100-TX, not verified if it works
    compexrl100tx tulip 0x11f6,0x9881
    # Tulip clones based on the Macronix 987x5
    mx987x5 tulip 0x10d9,0x0531
    # Davicom DM9102
    davicom9102 davicom 0x1282,0x9102
    davicom9009 davicom 0x1282,0x9009
    # NE1000/2000 and clones (ISA)
    ne ns8390
    # Novell NE2100 (Lance based, also works on NE1500)
    ne2100 lance
    # NE2000 PCI clone (RTL8029)
    nepci ns8390 0x10ec,0x8029
    # Winbond 86C940
    winbond940 ns8390 0x1050,0x0940
    # Compex RL2000
    compexrl2000 ns8390 0x11f6,0x1401
    # KTI ET32P2
    ktiet32p2 ns8390 0x8e2e,0x3000
    # NetVin 5000SC
    nv5000sc ns8390 0x4a14,0x5000
    # Racal-Interlan NI5010
    ni5010 ni5010
    # Racal-Interlan NI5210
    ni5210 i82586
    # Racal-Interlan NI6510 (Lance based)
    ni6510 lance
    # Base driver for Tulip clones
    tulip tulip 0x1011,0x0002
    # Tulip-Fast
    tulipfast tulip 0x1011,0x0009
    # Tulip+
    tulip+ tulip 0x1011,0x0014
    # Tulip 21142
    tulip21142 tulip 0x1011,0x0019
    # Realtek 8029 (NE2000 PCI clone)
    rtl8029 ns8390 0x10ec,0x8029
    # Realtek 8139
    rtl8139 rtl8139 0x10ec,0x8139
    # SMC1211 (uses Realtek 8139 but with different IDs)
    smc1211 rtl8139 0x1112,0x1211
    # Schneider and Koch G16
    sk_g16
    # SMC9000
    smc9000
    # Tiara, Fujitsu Lancard
    tiara
    # Old base driver for Tulip clones
    otulip otulip 0x1011,0x0002
    # Rhine-I, e.g. D-Link DFE-530TX
    dlink-530tx via-rhine 0x1106,0x3065
    # Rhine-II
    via-rhine via-rhine 0x1106,0x3065
    # WD8003/8013, SMC8216/8416
    wd ns8390
    # Winbond W89c840
    winbond840 w89c840 0x1050,0x0840
    # Compex RL100-ATX
    compexrl100atx w89c840 0x11f6,0x2011
    # SIS 900 and SIS 7016
    sis900 sis900 0x1039,0x0900
    sis7016 sis900 0x1039,0x7016
    Digamos que a minha placa de rede seja uma 3c905b-combo, os passos para gerar o disco de boot, insira um disquete no drive a: e execute os comandos abaixo:
    # fdformat fd0.1440
    # cd /usr/ports/net/etherboot/work/etherboot-4.7.22/src
    # gmake bin32/3c905b-combo.fd0
    Insira o disquete na maquina cliente e de um boot, Ss tudo correu bem o FreeBSD deve ser carregado.
    Apos o boot , voce pode usar normalmente o FreeBSD nos computadores clientes, pode usar o /stnd/sysinstall para instalar novos componentes como as manpages , XFree86 , codigos fontes , etc.
    Boa सोरते.