Apêndice B. Instalação sem o sysinst

Índice
B.1. Partição e instalação: teoria
B.2. A instalação na prática

O autor deste apêndice é Wojciech Puchar

Este apêndice descreve o procedimento que utilizamos para instalar o NetBSD sem fazer uso do sysinst. Pode-se perguntar por que não usá-lo. Eis algumas razões:

Este apêndice descreve apenas a configuração dos sistemas i386, em que o NetBSD será o único sistema operacional presente no disco rígido. Procurei entretanto evidenciar as seções específicas desta arquitetura, esperando receber alguma contribuição sobre as outras (a serem enviadas, em inglês, para wojtek@3miasto.net).

Para o entendimento deste apêndice é suposto certo conhecimento dos comandos de base do Unix (cd, ls, cp, tar, etc.).

B.1. Partição e instalação: teoria

O processo de instalação é dividido da seguinte maneira:

  1. particionamento do disco rígido

  2. criação do/dos sistemas de arquivos

  3. instalação do carregador de boot (dependente da plataforma e não presente em algumas versões como a versão para sparc, etc.)

  4. descompressão dos tarballs nas partições criadas

  5. configuração final (criação dos dispositivos /dev, /etc/fstab, fixação do hostname, etc.)

B.1.4. Sistemas de arquivos

O sistema de arquivos padrão usado pelo NetBSD é aquele a que se denomina "ffs" ou "ufs" (Fast File System ou Unix File System). Ainda que "fast" (rápido) não signifique "o mais veloz do mundo", trata-se de um sistema de arquivos que se presta bem para o uso geral e dotado de mecanismos de proteção em caso de queda do sistema (crash). Para a criação do sistema de arquivos pode-se limitar à execução do comando newfs sem qualquer parâmetro, mas vale a pena procurar otimizar-lhe o uso. Vejamos agora uma breve descrição dos principais parâmetros em que intervir:

-m (percentual)

fixação do percentual de espaço reservado. O default de 10% tende ao despedício. Pode-se descer aos 5% sem muito problema, mas é bom não descer abaixo desse valor porque enchendo muito um sistema de arquivos ffs nós o tornamos mais lento.

-b (dimensão do bloco)

fixação em bytes da dimensão do bloco. Para os discos de grandes dimensões usar 8192 (8KB), enquanto que para os muito pequenos (<500MB) convém usar 4096 para economizar espaço. Usando blocos ainda maiores não se aceleram as operações e se pode desperdiçar espaço, a menos que não se memorize predominantemente arquivos de grandes dimensões como os MP3 e os arquivos de vídeo.

-f (tamanho do fragmento)

fixação da dimensão do fragmento. Um bloco pode ser subdividido até a um máximo de 8 fragmentos e, portanto, convém fixar uma dimensão equivalente a 1/8 da dimensão do bloco: 512 bytes para blocos de 4096 bytes e 1024 bytes para blocos de 8192 bytes. O fragmento é a unidade de alocação mínima para os arquivos (como o cluster para o Windows).

-i (bytes de dados por inode)

os inodes são estruturas usadas para memorizar informações sobre os arquivos. Para cada arquivo deve haver pelo menos um inode (até mesmo mais de um para permitir ao ffs memorizar os dados do arquivo vizinho do próprio arquivo). A dimensão por default de 4096 não se adapta aos discos de grandes dimensões porque permite que se tenha até 5 milhões de arquivos em um dispositivo de 20MB. Uma avaliação pelo máximo aconselha o uso de -i 16384 para discos >2GB e de -i 32768 para discos a partir de 8GB. Usando valores maiores não se economiza mais espaço porque um inode ocupa 128 bytes

Por exemplo, as opções que uso para uma partição >10GB são

newfs -m 5 -b 8192 -f 1024 -i 32768 /dev/{nome_da_partição}

A leitura da página de manual do newfs é enfaticamente aconselhada.

B.2. A instalação na prática

Nos exemplos seguintes suporemos que o disco rígido seja wd0, o CD cd0 (se houver um) e a placa de rede ep0 (se presente). Se os nomes reais no seu sistema são diferentes, basta substituir os nomes dos exemplos.

B.2.3. Criar a partição com disklabel

# disklabel -I -i wd0

O comando precedente serve para dar início ao particionamento de um disco vazio. Não especificar a opção -I se se quer modificar um disklabel existente.

Será mostrado o prompt:

partition> 

O sistema está no aguardo dos comandos. Os comandos mais importantes são ? (ajuda), I (fixa várias informações no disco) e as letras minúsculas de a até h (fixam as informações para as respectivas partições).

Começemos com o comando I. O sistema pergunta o tipo de disco (aceitar o default), o nome do disco (idem) e o label. O label é definido à vontade. Por exemplo, pode-se escrever o próprio nome. Em caso de furto do disco rígido pode-se provar ser o proprietário já que o fdisk do DOS/Windows não cancela esta informação.

Número de partições: escolher 8 (e mesmo mais se houver necessidade). Deixar os valores por default para as outras opções visto que as informações relativas à geometria dos discos modernos são, na realidade, fictícias.

Agora é necessário criar as pertições, começando com as partições "d" e "c" que se referem ao disco inteiro:

partition> d
Filesystem type [?] [unused]: 
Start offset [0c, 0s, 0M]: 0s
Partition size ('$' for all remaining) [39693.8c, 40011300s, 19536.8M]: $
partition> c
Filesystem type [?] [unused]: 
Start offset [0c, 0s, 0M]: 0s
Partition size ('$' for all remaining) [39693.8c, 40011300s, 19536.8M]: $

Depois passa-se à criação da partição a ser posta no início do disco. No particionamento clássico do Unix trata-se da partição "a", de cerca de 50MB. Esta dimensão deve ser aumentada oportunamente quando se pretende ter muita correspondência na spool ou ter espaço vazio em /tmp ou /home sem criar partições separadas para /var ou /home.

partition> a
Filesystem type [?] [unused]: 4.2BSD
Start offset [0c, 0s, 0M]: 0s
Partition size ('$' for all remaining) [0c, 0s, 0M]: 100000s

100000 setores correspondem a cerca de 50MB ou pouco menos.

Criemos a segunda partição (swap) de cerca de 585MB:

partition> a
Filesystem type [?] [unused]: swap
Start offset [0c, 0s, 0M]: 100000s
Partition size ('$' for all remaining) [0c, 0s, 0M]: 1200000s

e enfim a partição"e" para /usr até o fim do disco:

partition> e
Filesystem type [?] [unused]: 4.2BSD
Start offset [0c, 0s, 0M]: 1300000s
Partition size ('$' for all remaining) [0c, 0s, 0M]: $

Verificar se tudo está no lugar com o comando P:

partition> P
8 partitions:
#        size   offset     fstype   [fsize bsize cpg/sgs]
  a:   100000        0     4.2BSD        0     0    0   # (Cyl.    0 - 99*)
  b:  1200000   100000       swap                       # (Cyl.   99*- 1289*)
  c: 40011300        0     unused        0     0        # (Cyl.    0 - 39693*)
  d: 40011300        0     unused        0     0        # (Cyl.    0 - 39693*)
  e: 38711300  1300000     4.2BSD        0     0    0   # (Cyl. 1289*- 39693*)

Enfim executar os comandos:

partition> W
Label disk [n]? y
Label written
partition> Q

O disklabel foi escrito. Congratulações, a parte mais exigente das operações terminou.

B.2.5. Descomprimir os conjuntos (sets) de instalação

Montar as partições em /mnt:

# mount -o async,noatime /dev/wd0a /mnt
# mkdir /mnt/usr
# mount -o async,noatime /dev/wd0e /mnt/usr
...
talvez mais se você criou mais [partições]
...

As opções async e noatime não são obrigatórias: tendem a favorecer a velociade das operações em prejuízo da integridade do sistema de arquivos. A proteção frente às quedas do sistema não é fundamental nesse momento, visto que se pode reparar tudo e reinstalar facilmente em caso de queda.

As seções seguintes descrevem alguns métodos comuns de instalação:

CDROM
FTP
NFS

B.2.5.4. Copiando de uma fita (tape)

Embora as máquinas que funcionam como desktop usualmente não têm drives para tapes, os servidores usualmente os têm, podendo não conter um drive de CDROM apenas para economizar espaço. Instalar usando um tape é muito fácil. Infelizmente os PCs não podem inicializar a partir dos tapes. Então você deve inicialziar com disquetes.

Para preparar a sua fita de instalação você necessita de uma outra máquina com um drive para rolos de fita.

Rebobine a fita:

# mt rewind

estabeleça tamanho de bloco ilimitado para fitas SCSI

# mt setblk 0

Isto vai mudar o tamanho de bloco por default muito pequeno para qualquer tamanho. Usaremos blocos grandes para tornar as coisas mais rápidas. Isso é útil para drives DAT/DDS.

!!!ADVERTÊNCIA!!! Por favor corrija-me se isso vier a não funcionar para outros tipos de fita.

Agora desabilite a compressão, já que diferentes drives a serem acessados podem ser incapazes de ler uma unidade de fita comprimida. Comprimir arquivos já comprimidos, de qualquer modo, não vai melhorar em nada ou até mesmo apresentar taxas negativas de compressão (chegando a -15% para os drives HP DDS!):

# mt compression 0

então grave os arquivos da distribuição:

# cd /onde_estão_os_arquivos_da_distribuição
# tar -b64 -cvf /dev/nrst0 *.tgz

O último comando vai gravar todos os arquivos tgz no tape com blocos do tamanho 64*512 bytes=32 kB. Este é um tamanho de bloco bem testado para todo DAT.

Como você usa /dev/nrst0 (primeiro drive de tape SCSI não rebobinante) agora você pode gravar outro arquivo com, por exemplo, alguns pacotes básicos como os editores.

# cd /onde_estão_os_pacotes/All
# tar -b64 -cvf /dev/nrst0 joe*.tgz screen*.tgz

Isto vai gravar apenas o editor de texto joe e o programa screen. Não ponha muitas coisas neste arquivo.

Agora grave outros pacotes que você vai instalar depois de ter o sistema funcionando em modo multi-usuário.

# tar -b64 -cvf /dev/nrst0 todos_os_pacotes_que_você_precisa

ou talvez até mesmo

# tar -b64 -cvf /dev/nrst0 *.tgz

Agora rebobine e descarregue o tape:

# mt rewoffl

Seu tape de instalação está pronto! Como os drives DDS são compatíveis com regressão, pode ser conveniente comprar barato alguns drives DDS-1 ou DDS-2 usados para a sua máquina doméstica. É uma coisa bem legal - vale $30 para mim :)