Capítulo 9. Discos, Sistemas de Arquivos e Carregadores de Inicialização (Boot Loaders)

9.1. Como eu mudo todo o meu sistema operacional para um disco novo?
9.2. Um disco no modo “dangerously dedicated” pode ser prejudicial a minha saúde?
9.3. Em quais partições podemos seguramente usar o softupdates? Eu tenho ouvido falar de problemas em se usar o softupdates na partição /?
9.4. O que é inapropriado no meu ccd?
9.5. Porque eu não posso editar o disklabel do meu ccd?
9.6. Posso montar outros tipos de partições externas sobre FreeBSD?
9.7. Como montar uma partição DOS secundária?
9.8. Existe um sistema de arquivos criptografado para o FreeBSD?
9.9. Como posso usar o carregador do NT para iniciar o FreeBSD?
9.10. Como posso iniciar o FreeBSD e o Linux com o LILO?
9.11. Como eu inicio o FreeBSD e o Linux usando o BootEasy?
9.12. Como eu altero a tela de inicialização (boot) de ??? para algo mais significativo?
9.13. Possuo uma nova unidade de disco removível, como posso usa-la?
9.14. Por que eu tive o erro Incorrect super block na hora de montar um CDROM?
9.15. Device not configured ocorre na hora de montar o CDROM?
9.16. Porque todos caracteres não-Inglês são apresentados como “?” no sistema de arquivos do CD que acabou de ser montado no FreeBSD?
9.17. Eu queimei um CD no FreeBSD e agora esse disco não pode ser lido em nenhum outro sistema operacional. Por que?
9.18. Como posso criar uma imagem de um CD de dados?
9.19. Por que um CD de áudio não pode ser montado com o comando mount?
9.20. Como eu monto um CD com múltiplas sessões de gravação?
9.21. Como posso permitir que usuários comuns montem disquetes, CDROMs e outros tipos de mídia removível?
9.22. Os comandos du e df apresentam quantias distintas de espaço em disco disponível. O que está havendo?
9.23. Como eu posso adicionar mais espaço para swap?

9.1.

Como eu mudo todo o meu sistema operacional para um disco novo?

A melhor maneira de migrar seu sistema de um disco para o outro é reinstalar completamente o SO na nova unidade de armazenamento e depois migrar os dados dos usuários do disco antigo para nova instalação. Essa forma é a mais recomendada, caso o sistema tenha sido -STABLE por mais de uma versão, ou caso tenha atualizado um Release ao invés de ter instalado um novo sistema. O booteasy pode ser facilmente instalado com o comando boot0cfg(8), de forma a permitir que o sistema possa iniciar dois sistemas distintos, até que você esteja satisfeito com o novo sistema. Pule o próximo parágrafo para saber algumas formas seguras de migrar os dados dos usuários para o novo disco.

Você pode ter decidido por não refazer uma nova instalação; nesse caso será necessário reparticionar o novo disco com o /stand/sysinstall, ou fdisk(8) ou disklabel(8). Também é necessário instalar o booteasy em ambas as unidades com o comando boot0cfg(8), de forma que você possa alternar a inicialização entre o novo sistema e a configuração atual do mesmo, até que a cópia dos dados tenha sido efetuada.

Agora, com um novo disco configurado, você está pronto para começar a mover os dados da antiga para nova unidade de armazenamento. Infelizmente os dados não podem simplesmente ser copiados ao acaso. Existem alguns arquivos especiais (como os arquivos de dispositivos /dev), flags, e links que tendem a não funcionar no novo sistema, visto que esses arquivos ocupam inodes ou tem informações específicas da unidade, e por isso não podem ser copiados como um arquivo comum. É necessário usar ferramentas que entendam esse comportamento. Isso significa que você terá que usar o dump(8). É sempre uma boa idéia realizar esse processo de cópia de dados em modo mono-usuário, contudo tal precaução não é obrigatória - é apenas sinal de cuidado.

Não é aconselhável usar nenhuma outra ferramenta a não ser o dump(8) e restore(8) para copiar o sistema de arquivos da partição raiz ("/"). O tar(1) pode funcionar de forma satisfatória, mas pode ser que não. Também é ótima idéia usar o dump(8) e restore(8) para copiar (ou mover completamente) os dados em uma partição para uma outra partição vazia. Os passos necessários para usar o dump para copiar os dados de uma partição existente para uma nova partição são:

  1. Crie um novo sistema de arquivos com o newfs(8) na nova partição.

  2. Monte a partição em um ponto de montagem temporário.

  3. Entre (cd) no ponto de montagem em questão.

  4. Finalmente mova os dados da partição existente para a nova partição com o dump(8).

Por exemplo, se a intenção é copiar os dados da partição raiz para a partição /dev/ad1s1a, cujo ponto de montagem temporário é o /mnt, faça o seguinte:

# newfs /dev/ad1s1a
# mount /dev/ad1s1a /mnt
# cd /mnt
# dump 0af - / | restore xf -

Redefinir a estrutura das partições com o dump(8) é um processo um pouco mais trabalhoso. Caso você queira, por exemplo, unir o conteúdo da partição /var com as partições de nível acima, crie uma partição que seja grande o bastante para alocar o conteúdo de ambas, copie a partição principal como no exemplo descrito acima e depois copie as sub-partições para os diretórios vazios que o primeiro comando deve ter criado:

# newfs /dev/ad1s1a
# mount /dev/ad1s1a /mnt
# cd /mnt
# dump 0af - / | restore xf -
# cd var
# dump 0af - /var | restore xf -

Para separar um diretório de sua estrutura atual, ou seja, no mesmo exemplo ainda, alocar os dados de /var em uma partição própria quando na definição atual o /var é apenas um diretório comum, é necessário montar a sub partição no diretório apropriado do ponto de montagem temporário, simulando assim o sistema de arquivos a ser criado a partir da raiz (montada no diretório temporário), depois basta copiar os dados do diretório antigo para nova partição:

# newfs /dev/ad1s1a
# newfs /dev/ad1s1d
# mount /dev/ad1s1a /mnt
# mkdir /mnt/var
# mount /dev/ad1s1d /mnt/var
# cd /mnt
# dump 0af - / | restore xf -

Talvez você prefira usar cpio(1), pax(1), tar(1) ao invés de dump(8) na hora de copiar os dados de usuários. Quando este FAQ foi escrito, esses comandos costumavam perder atributos especiais dos arquivos ou mesmo alterar algumas permissões ou autoridade (dono dos arquivos), portanto use esses comandos com cuidado.

9.2.

Um disco no modo dangerously dedicated pode ser prejudicial a minha saúde?

O processo de instalação permite a escolha entre dois modos distintos de particionar o(s) disco(s) rígido. A maneira tradicional permite que outros sistemas operacionais na mesma estação possam acessar essas partições, criando entradas na tabela do fdisk (entradas chamadas de slices no FreeBSD) sob uma partição FreeBSD própria. Uma característica desse particionamento é permitir múltiplos sistemas operacionais e permitir a instalação de um gerenciador de inicialização (boot) para alternar entre esses sistemas. A segunda maneira, a alternativa ao modo tradicional faz uso do disco todo para o FreeBSD e não faz esforços para se tornar compatível com outros sistemas operacionais.

Então, por que esse modo é chamado de modo perigosamente dedicado? Um disco particionado dessa forma não tem algumas características tradicionais que os PCs poderiam considerar entradas válidas do fdisk. Dependendo das circunstâncias o PC pode reclamar e gerar advertências sobre o disco em questão, assim que o primeiro contato com essa unidade seja feito, ou pior, o PC pode ainda danificar o processo de inicialização (boot) do BSD (bootstrap) sem pedir confirmação da alteração ou até mesmo sem avisar o usuário dessa mudança. O modo perigosamente dedicado ainda costuma confundir várias BIOS, inclusive as BIOS AWARD (encontradas, por exemplo no HP Netserver e em sistemas Micronics assim como em muitos outros) e as BIOS Symbios/NCR (da popular série 53C8xx de controladoras SCSI). Não são apenas esses dois modelos que podem apresentar dificuldades com esse modo de particionamento de disco, a lista completa é ainda maior. O principal sintoma desse tipo de confusão é a presença de mensagens de read error apresentada pelo bootstrap do FreeBSD quando ele tem dificuldades de encontrar-se; outro sintoma é a falta de sistema operacional no momento da inicialização do PC.

Então porque esse modo de particionamento de disco existe? Esse modo economiza o uso de alguns poucos kbytes de espaço em disco, e pode, em contrapartida gerar grandes problemas em uma nova instalação do sistema. O modo perigosamente dedicado em sua origem é um desejo antigo dos usuários do FreeBSD, especialmente durante a instalação, que é simplesmente poder ignorar a geometria de disco reconhecida pela BIOS e usar o disco todo de forma independente, sem prestar satisfação ao sistema básico de entrada/saída do PC.

O conceito de Geometria é ultrapassado, mas infelizmente ainda faz parte do coração da BIOS dos Computadores Pessoais, sendo extremamente necessário para a interação do computador com seus discos. Quando o FreeBSD cria as partições, ele tem que gravar sua localização de forma correspondente a maneira que a BIOS irá procurá-la. Se essa informação não é acessível à BIOS, pode ser que o sistema não consiga iniciar-se.

O modo Dangerously dedicated tenta evitar esse desconforto fazendo a operação se tornar mais simples. Em muitos casos essa forma de particionamento funciona, mas ela foi criada para ser usada como última alternativa à necessidade de definir a geometria do disco - em 99% dos casos existem formas mais vantajosas de resolver problemas com geometria.

Mas então, como evitar a necessidade do modo DD na instalação do sistema? Comece anotando os valores pra geometria que a BIOS diz estar usando pros discos locais. Esses valores podem ser apresentados pelo kernel do FreeBSD, especificando a opção -v no prompt de boot: usando boot -v nas configurações do loader do sistema operacional. Antes do programa de instalação ser carregado o kernel apresenta a listagem dos valores para a Geometria de discos reconhecida pela BIOS do computador; não se precipite nem se preocupe, essas informações podem ser visualizadas paginando a tela para as notações anteriores, sendo possível assim verificar esses valores. Normalmente as unidades de disco da BIOS são apresentadas na mesma ordem que o FreeBSD as encontra, sendo primeiro as unidades IDE seguido das SCSI.

No momento do particionamento do disco, verifique se a geometria apresentada pelo FDISK corresponde ao valor apresentado pela BIOS; caso não corresponda use a tecla g para redefinir esses valores. Também pode ser necessário definir a geometria manualmente em casos onde o disco em questão está vazio e sem nenhum outro tipo de partição criada, ou se o disco foi instalado em um outro computador e foi colocado na estação atual recentemente. Note que esse tipo de complicação não é comum, e quando acontece, acontece apenas com o disco onde o FreeBSD está iniciando; Qualquer outro disco existente no computador será controlado perfeitamente pelo FreeBSD em qualquer situação.

Uma vez existindo a concordância de Geometria entre a BIOS e o FreeBSD, com certeza seus problemas terão acabado, e não existia a necessidade de usar o modo DD. Contudo, se em casos extremos ainda ocorrerem erros de read error então pode cruzar os dedos e usar o modo dedicado (DD), afinal não há nada a perder, visto que das formas tradicionais sua BIOS insiste em não cooperar de forma correta.

Para voltar um disco particionado em modo dangerously dedicated para uso normal em um PC existem duas alternativas. A primeira é alocar dados nulos (NULL bytes) o bastante na MBR do disco, de forma que qualquer instalação posterior acredite que o disco está vazio. Isso pode ser feito, por exemplo, da seguinte maneira:

# dd if=/dev/zero of=/dev/rda0 count=15

E a segunda forma, a opção não documentada do DOS:

C:\> fdisk /mbr

instalará um novo registro mestre de inicialização no disco em questão, sobrepondo inclusive o bootstrap do BSD.

9.3.

Em quais partições podemos seguramente usar o softupdates? Eu tenho ouvido falar de problemas em se usar o softupdates na partição /?

A resposta breve: o softupdates pode ser usado com segurança em todas as partições.

A resposta mais completa: existiam algumas restrições quanto ao uso do softupdates na partição raiz do sistema. Tais restrições se deviam a duas características causadas pelo softupdates, que eram a pouquíssima chance de perder alguns dados da partição raiz se acontecesse algum system crash; apesar das probabilidades de perda de dados serem mínimas, elas existem; não existe uma danificação ou corrosão do sistema de arquivos, apenas alguns arquivos podem ser simplesmente perdidos. E a segunda característica é a diminuição temporária de espaço em disco.

Quando o softupdates está ativado o kernel pode levar até trinta segundos para realmente escrever alguns dados fisicamente em disco. Caso algum arquivo grande seja apagado, ela permanece temporariamente em disco até que o kernel realmente o apague, o que pode causar uma condição de corrida simples(simple race condition). Imagine, apenas para ilustrar, que você apague um arquivo enorme do disco, e logo em seguida crie um outro arquivo tão grande quanto o primeiro; a gravação de metadados no disco pode não ter sido realizada ainda quando o segundo arquivo é criado, ou seja o primeiro não foi realmente definido como um arquivo apagado. Nesse caso é provável que você receba uma mensagem dizendo que não existe espaço o bastante em disco para o segundo arquivo, quando você tem certeza absoluta que o espaço que acabou de ser liberado ao apagar o primeiro arquivo é o suficiente para alocar o segundo! Aí você tenta gravar o segundo arquivo mais uma vez, alguns meros segundos depois, e o processo de criação do mesmo, simplesmente funciona como esperado. Esse tipo de comportamento já levou mais de um usuário a balançar sua cabeça e duvidar de sua própria sanidade, ou mesmo da sanidade do sistema de arquivos do FreeBSD; em caso extremos, de dúvidas do bom estado de ambos, a sanidade do sistema de arquivos e do próprio usuário ;-)

Se o sistema falhar antes do kernel aceitar um conjunto de dados que tem que ser escrito no disco antes do mesmo ser gravado, é provável que exista perda dos dados em questão. Esse risco é extremamente baixo, e geralmente é contornável. O uso, por exemplo, das opções de cache de gravação das unidades de disco IDE é um fator que causa a possibilidade desse tipo de desconforto, portanto é altamente recomendável que essa opção seja desativada nos discos IDE quando for usar o softupdates.

Esse comportamento afeta todas as partições que estiverem com softupdates. Portanto, o que isso implica para a partição raiz?

A maioria das informações vitais da partição raiz mudam com pouquíssima freqüência. Arquivos como o /kernel e o conteúdo do /etc são alterados apenas durante a manutenção do sistema operacional, ou quando os usuários alteram suas senhas. Caso o sistema falhe durante essa janela de trinta segundos, depois que uma dessas alterações foi feita, é possível que alguns dados sejam perdidos. Esse risco é baixíssimo e praticamente indiferente para maioria das aplicações, mas deve-se atentar que o risco existe. Caso seu sistema não tolere nem uma possibilidade tão baixa de riscos, não use o softupdates na partição raiz!

A / normalmente é uma das menores partições do sistema. Por padrão o FreeBSD coloca o diretório /tmp na partição /, comportamento este que pode ser modificado por administradores de sistemas mais experientes. Caso seu /tmp costume ocupar muito espaço, pode ser criado um link simbólico para o /var/tmp, o comportamento inverso também é válido e bastante seguro, caso o /tmp seja uma partição grande o bastante para alocar os dados do /var/tmp também.

9.4.

O que é inapropriado no meu ccd?

Os sintomas desse tipo de dúvida:

# ccdconfig -C
ccdconfig: ioctl (CCDIOCSET): /dev/ccd0c: Inappropriate file type or format

Esse problema normalmente ocorre quando se tenta concatenar as partições c cujo tipo padrão é unused. O ccd requer que a partição que ele esteja usando seja do tipo FS_BSDFFS. Edite o disklabel dos discos em questão e altere o tipo das partições para 4.2BSD.

9.5.

Porque eu não posso editar o disklabel do meu ccd?

Os sintomas desse tipo de dúvida:

# disklabel ccd0
(it prints something sensible here, so let us try to edit it)
# disklabel -e ccd0
(edit, save, quit)
disklabel: ioctl DIOCWDINFO: No disk label on disk;
use "disklabel -r" to install initial label

Isso acontece por que o disklabel que o ccd retorna é na verdade um valor falso, que não está realmente gravado no disco. Esse problema pode ser resolvido ao reescrever explicitamente esse dado, da seguinte forma:

# disklabel ccd0 > /tmp/disklabel.tmp
# disklabel -Rr ccd0 /tmp/disklabel.tmp
# disklabel -e ccd0
(agora irá funcionar)

9.6.

Posso montar outros tipos de partições externas sobre FreeBSD?

Digital UNIX

CDROMs do tipo UFS podem ser montados diretamente no FreeBSD, já a montagem de partições de disco do Digital UNIX que usam o UFS pode ser um pouco mais complexa, dependendo dos detalhes do particionamento de disco para o sistema operacional em questão.

Linux

A partir do 2.2, o FreeBSD suporta partições do tipo ext2fs. Veja o mount_ext2fs(8) para obter mais informações.

NT

Existe suporte somente-leitura as partições NTFS no FreeBSD. Para obter mais informações leia esse tutorial, escrito por Mark Ovens em http://ukug.uk.FreeBSD.org/~mark/ntfs_install.html.

Mais informações sobre esse assunto seriam bem vindas :-)

9.7.

Como montar uma partição DOS secundária?

As partições secundárias do DOS são encontradas depois que TODAS as partições primárias foram definidas. Por exemplo, se você tem a partição E como a segunda partição DOS no segundo disco SCSI, será necessário criar um arquivo especial para essa quinta partição (slice 5) no /dev, depois montar /dev/da1s5:

# cd /dev
# sh MAKEDEV da1s5
# mount -t msdos /dev/da1s5 /dos/e

9.8.

Existe um sistema de arquivos criptografado para o FreeBSD?

Sim, veja o port security/cfs.

9.9.

Como posso usar o carregador do NT para iniciar o FreeBSD?

Esse procedimento é um pouco diferente entre o FreeBSD 2.2.X e o 3.X (que tem um sistema de inicío (boot) de 3 fases).

A idéia geral se consiste em copiar os primeiros setores da partição raiz nativa do FreeBSD e transforma-los em um arquivo, para ser colocado dentro da partição DOS/NT. Se assumir-mos que você vai chamar esse arquivo de c:\bootsect.bsd (inspirado por c:\bootsect.dos), pode-se então editar o arquivo c:\boot.ini de forma a carregá, mais ou menos assim:

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows NT"
C:\BOOTSECT.BSD="FreeBSD"
C:\="DOS"

No 2.2.X esse procedimento assume que o DOS, o NT, o FreeBSD, ou o que quer que seja, tenha sido instalado em suas partições respectivas do fdisk no mesmo disco. Esse exemplo foi testado em um sistema onde o DOS & NT estavam instalados na primeira partição do fdisk, e o FreeBSD na segunda. O FreeBSD havia sido configurado para iniciar a partir de sua partição nativa, e não pela MBR do disco.

Monte um disquete formatado em DOS (caso ele tenha sido convertido para NTFS) ou em FAT, por exemplo, sob o ponto de montagem /mnt.

# dd if=/dev/rda0a of=/mnt/bootsect.bsd bs=512 count=1

Reinicie o computador no DOS ou NT. Sobre o NTFS, copie o arquivo bootsect.bsd e/ou arquivo bootsect.lnx do disquete para C:\. Modifique os atributos originais(permissões) do boot.ini com:

C:\> attrib -s -r c:\boot.ini

Edite e adicione as entradas apropriadas no boot.ini seguindo o exemplo anterior e volte os atributos originais:

C:\> attrib +s +r c:\boot.ini

Se o FreeBSD estiver inicializando pela MBR, reconstrua-a com o comando fdisk do DOS depois de configurar os sistemas para iniciar a partir de suas partições nativas.

No FreeBSD 3.X esse procedimento é mais simples.

Se o FreeBSD estiver instalado no mesmo disco que a partição de inicialização (boot) do NT está instalada, copie o /boot/boot1 para C:\BOOTSECT.BSD. Contundo, se o FreeBSD estiver em uma partição distinta, o /boot/boot1 não irá funcionar, nesse caso, o /boot/boot0 será necessário.

Atenção:

NÃO COPIE SIMPLESMENTE O /boot/boot0 NO LUGAR DO /boot/boot1, POIS A TABELA DE PARTIÇÃO SERÁ REESCRITA, E O COMPUTADOR SE TORNARÁ NÃO INICIALIZÁVEL!!

O /boot/boot0 precisa ser instalado com o sysinstall, selecionando o gerenciador de inicialização (boot) do FreeBSD na tela que o programa pergunta se você deseja usar um gerenciador de inicialização(boot manager). Isso se deve ao fato que o /boot/boot0 contém informações sobre a área da tabela de partições definidas como caracteres nulos, mas o sysinstall copia a tabela de partições antes de copiar o /boot/boot0 para a MBR.

Quando o gerenciador de inicialização (boot) do FreeBSD é executado, ele grava qual último sistema operacional foi carregado, definindo uma flag de sistema ativo na tabela de partição referente aquele sistema, e depois ele escreve todos os 512 bytes do próprio gerenciador de inicialização (boot) de volta na MBR, portanto se o /boot/boot0 simplesmente for copiado para C:\BOOTSECT.BSD será definida uma tabela de partição vazia com a flag de partição ativa, na MBR.

9.10.

Como posso iniciar o FreeBSD e o Linux com o LILO?

Caso o FreeBSD e o Linux estejam no mesmo disco, basta seguir as instruções de instalação do LILO para carregar sistemas operacionais não-Linux. De forma breve, tais instruções são

Carregue o Linux e adicione as seguintes linhas no /etc/lilo.conf:

other=/dev/hda2
	table=/dev/hda
	label=FreeBSD

(A definição acima assume que a sua partição FreeBSD é conhecida pelo Linux como /dev/hda2; altere esse valor para sua necessidade). Depois basta executar o comando lilo como usuário root e deve estar pronto.

Caso o FreeBSD esteja em um outro disco, será preciso criar uma entrada loader=/boot/chain.b no LILO. Por exemplo:

other=/dev/dab4
        table=/dev/dab
        loader=/boot/chain.b
        label=FreeBSD

Em alguns casos é necessário especificar o número da unidade da BIOS para que o loader do FreeBSD consiga carregar o sistema com sucesso, a partir do segundo disco. Por exemplo, caso o disco SCSI com o FreeBSD seja reconhecido pela BIOS como o disco 1, na tela do carregadir de inicialização (boot loader) do FreeBSD será necessário definir:

Boot: 1:da(0,a)/kernel

No FreeBSD 2.2.5 e posteriores, o boot(8) pode ser configurado para que ele automaticamente defina essa informação na hora da inicialização (boot).

The Linux+FreeBSD mini-HOWTO é uma boa referência sobre a utilização do FreeBSD com o Linux.

9.11.

Como eu inicio o FreeBSD e o Linux usando o BootEasy?

Instale o LILO no começo da sua partição de inicialização (boot) do Linux ao invés de instala-lo na MBR. Agora o LILO pode ser carregado a partir do BootEasy.

Com Windows 9x e Linux essa é uma ação recomendada sempre, para garantir que o Linux possa ser iniciado de forma mais fácil caso seja necessário reinstalar o Windows (que é um sistema operacional que não espera nenhum outro sistema na MBR).

9.12.

Como eu altero a tela de inicialização (boot) de ??? para algo mais significativo?

Você não pode alterar esse comportamento no gerenciador de inicialização (boot) padrão sem reescreve-lo. Existem inúmeros outros gerenciadores de inicialização (boot) na categoria sysutils da da coleção de ports, que oferecem esse recurso.

9.13.

Possuo uma nova unidade de disco removível, como posso usa-la?

Ainda que seja uma unidade removível como um ZIP Drive, um EZ Drive (ou até um disquete, caso queira usa-lo dessa maneira), ou um novo disco, uma vez instalado e reconhecido pelo sistema e assim que o cartucho/disquete/outra-coisa esteja ligado a unidade em questão, as coisas passam a funcionar da mesma forma para qualquer tipo de dispositivo.

(essa seção é baseada no ZIP FAQ de Mark Mayo)

Caso o dispositivo seja um ZIP Drive ou um disquete cujo sistema de arquivos já tenha sido criado como sendo do tipo DOS, o seguinte comando é o bastante para montá-lo:

# mount -t msdos /dev/fd0c /floppy

caso seja um disquete, ou então:

# mount -t msdos /dev/da2s4 /zip

caso seja um disco ZIP com as configurações de fábrica.

Para outros tipos de disco, veja como eles são tratados, usando o fdisk(8) ou sysinstall(8).

Os próximos exemplos serão para um ZIP Drive controlado pela device da2, ou seja, correspondente ao terceiro disco SCSI.

A não ser que se trate de um disquete ou de um disco removível que se planeje compartilhar com outras pessoas, provavelmente é mais sensata a idéia de colocar um sistema de arquivos do tipo BSD nesse disco. Um sistema de arquivos desse tipo possibilita usar o suporte a nomes longos de arquivos, ter uma performance de, pelo menos 2x, e oferece muito mais estabilidade e confiança. O primeiro passo é redefinir a partição DOS da unidade removível de forma que a mesma passe a ser do tipo BSD; o fdisk(8) ou /stand/sysinstall podem ser usados para esse fim, em um disco pequeno onde não se queira preocupações quanto a possibilidade de manter suporte a múltiplos sistemas operacionais. Nesse caso simplesmente elimine toda a partição FAT do disco e use o particionador do BSD:

# dd if=/dev/zero of=/dev/rda2 count=2
# disklabel -Brw da2 auto

O disklabel ou /stand/sysinstall podem ser usados para criar múltiplas partições do tipo BSD. Certamente o usuário vai querer criar mais de uma partição BSD se a intenção for criar espaço de Swap. De qualquer forma, esse tipo de ação é irrelevante em um disco removível do tipo ZIP.

Finalmente, crie um novo sistema de arquivos como esse, que usa todo o disco em um ZIP Drive:

# newfs /dev/rda2c

e monte-o:

# mount /dev/da2c /zip

provavelmente é uma boa idéia adicionar uma entrada no /etc/fstab para facilitar o processo de montagem dessa unidade(veja fstab(5))de forma que seja apenas necessário digitar o comando mount /zip no futuro:

/dev/da2c /zip ffs rw,noauto 0 0

9.14.

Por que eu tive o erro Incorrect super block na hora de montar um CDROM?

É necessário avisar ao mount(8) que tipo de unidade está sendo montada. Essa definição é tratada com mais detalhes em na seção de mídias ópticas do Manual do FreeBSD , mais precisamente na seção Usando CDs de Dados.

9.15.

Device not configured ocorre na hora de montar o CDROM?

Geralmente esse tipo de comportamento indica que não existe nenhum CD na unidade de CDROM, ou então, que o CD em questão não é visível ao barramento de dados do seu PC, comum quando um CD-RW não pode ser lido por um drive tradicional. Por gentileza, queira referir-se a Usando CDs de Dados da seção do Manual do FreeBSD para uma discussão mais detalhada sobre esse assunto.

9.16.

Porque todos caracteres não-Inglês são apresentados como ? no sistema de arquivos do CD que acabou de ser montado no FreeBSD?

Provavelmente seu CDROM usa extensões Joliet para armazenar informações sobre tipos de arquivos e diretórios. Esse assunto é discutido no capítulo de Criação e Uso de CDROMs do Manual do FreeBSD, mais precisamente na seção de Uso de CDs de Dados.

9.17.

Eu queimei um CD no FreeBSD e agora esse disco não pode ser lido em nenhum outro sistema operacional. Por que?

Provavelmente você queimou um CD de forma crua (usando raw mode) no seu sistema, ao invés de criar um sistema de arquivos do tipo ISO 9660. Dê uma olhada no Capítulo de Criação de CDROMs do Manual do FreeBSD, em específico na seção criando CDS de dados puros.

9.18.

Como posso criar uma imagem de um CD de dados?

A criação de imagens de CDs de dados é discutida na seção duplicando CDs de dados do Manual do FreeBSD. Para mais informações sobre unidades ópticas, por gentileza, queira referir-se a seção Criação de CDs no capítulo de Armazenamento do Manual do FreeBSD.

9.19.

Por que um CD de áudio não pode ser montado com o comando mount?

Ao tentar montar um CD de áudio, o mais provável é que ocorra um erro do tipo cd9660: /dev/acd0c: Invalid argument. Isso se deve ao fato que o comando mount trabalha exclusivamente com sistema de arquivos, o que não é o caso de CDs de áudio. CDs de áudio contém apenas dados, e por isso é necessário alguma aplicação capaz de ler tais CDs. Use algum programa como o audio/xmcdna coleção de Ports do FreeBSD para ler dados em CDs desse tipo.

9.20.

Como eu monto um CD com múltiplas sessões de gravação?

Por padrão, o mount(8) tenta montar a última trilha de dados (sessão) de um CD. Caso queira montar uma sessão anterior pode-se usar o argumento -s na linha de comando em questão. Por gentileza, refira-se a página de manual do comando mount_cd9660(8) para obter exemplos específicos do uso dessa e de outras opções.

9.21.

Como posso permitir que usuários comuns montem disquetes, CDROMs e outros tipos de mídia removível?

Usuários comuns podem ter a permissão de montar dispositivos. Veja como:

  1. Como root defina a variável vfs.usermount do sysctl para 1.

    # sysctl -w vfs.usermount=1
  2. Como root defina as permissões apropriadas nos dispositivos associados ao controle da mídia removível.

    Por exemplo, para permitir que os usuários possam montar a primeira unidade de disquete, use:

    # chmod 666 /dev/fd0

    Para permitir que os usuários do grupo operator montem a unidade de CDROM, use:

    # chgrp operator /dev/cd0c
    # chmod 640 /dev/cd0c
  3. Finalmente, para tornar essa alteração permanente, adicione a linha vfs.usermount=1 no arquivo /etc/sysctl.conf.

Agora todos os usuários podem montar qualquer disquete no /dev/fd0 em algum ponto de montagem que lhes pertença:

% mkdir ~/my-mount-point
% mount -t msdos /dev/fd0 ~/my-mount-point

Os usuários no grupo operator agora tem permissão para montar os CDs no /dev/cd0c em qualquer ponto de montagem que lhes pertença:

% mkdir ~/my-mount-point
% mount -t msdos /dev/cd0c ~/my-mount-point

Desmontar o dispositivo é extremamente simples:

% umount ~/my-mount-point

Contudo, habilitar a opção vfs.usermount, contudo, causa algumas implicâncias quanto ao quesito segurança;. A forma mais racional de acessar mídia do tipo MSDOS no FreeBSD é usando a aplicação mtools , disponível na Coleção de Ports.

9.22.

Os comandos du e df apresentam quantias distintas de espaço em disco disponível. O que está havendo?

É necessário entender o que os comandos du e df realmente fazem. O du percorre a árvore de diretórios medindo o tamanho de cada arquivo e apresentando o total da soma de todos os arquivos encontrados em um dado diretório, e posteriormente apresentando a soma de ambos subdiretórios no diretório de nível seguinte, df simplesmente pergunta ao sistema de arquivos quanto espaço ainda lhe resta. Parece o mesmo comportamento, mas um arquivo alocado fora de um diretório, por exemplo, afeta os dados apresentados pelo df, mas não afeta o du.

Quando um programa está usando algum arquivo, e este é apagado, o arquivo não é retirado do sistema de arquivos até que o programa em questão pare de usá-lo. Contudo, esse arquivo é imediatamente deletado da listagem de diretórios; isso pode ser mais bem observado com algum paginador como o more. Por exemplo, assuma que existe um arquivo grande o bastante que sua presença seja perceptível claramente na saída dos comandos du e df. (Considerando que hoje em dia os discos são bem grandes, o arquivo em questão deve ser um arquivo de tamanho extremamente considerável!) Caso o arquivo seja apagado em quanto ele esteja sendo paginado com o more, pode-se perceber que o more não passa a reclamar que o arquivo não pode mais ser visualizado no mesmo instante. Contudo, a listagem, do diretório em questão não apresentará mais esse arquivo, de forma que nenhum usuário ou outro programa possa acessá-lo. A entrada do arquivo no diretório é simplesmente removida. O du vai mostrar que esse arquivo não existe mais — -- afinal, o du percorreu todo o diretório e não encontrou esse arquivo listado -- contudo o df mostra que o arquivo continua no disco, pois o sistema de arquivos sabe que o more continua usando aquele espaço de dados que se encontram no disco. Uma vez terminada a sessão do more,du e df concordarão entre si.

Note que em sistemas de arquivos com softupdates, a liberação de espaço em disco também pode ser atrasada em até 30 segundos dependendo da situação; apenas depois desse tempo, a alteração em disco será visível!

Esse comportamento é comum e fácil de ser observado em Servidores Web. Muitos usuários configuram algum Servidor Web no FreeBSD e se esquecem de rotacionar os arquivos de log da aplicação, os quais entopem o /var. O novo administrador do sistema deleta os arquivos de log em questão, mas o sistema operacional continua reclamando que a partição está cheia, até que o Servidor Web seja desligado e religado, de forma que a aplicação libera o arquivo e permite que o sistema apague o arquivo, recuperando o espaço em disco em questão. Para prevenir que isso ocorra, configure o newsyslog(8).

9.23.

Como eu posso adicionar mais espaço para swap?

No capítulo Configuração e Ajuste Fino (Tuning) do Manual do FreeBSD, pode ser encontrada uma seção descrevendo como fazer isto.

Este, e outros documentos, podem ser obtidos em ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/

Para perguntas sobre FreeBSD, leia a documentação antes de contatar <questions@FreeBSD.org>.

Para perguntas sobre esta documentação, envie e-mail para <doc@FreeBSD.org>.