Provided by: manpages-pt_20040726-5_all 

NOME
initrd - carregador de inicialização inicializado com disco RAM
DESCRIÇÃO
O arquivo especial /dev/initrd é um dispositivo de bloco de leitura somente. O dispositivo /dev/initrd é
um disco de ram que é inicializado (isto é, carregado) pelo carreegador de inicialização depois que o
kernel é iniciado. O kernel então pode usar conteúdo do dispositivo de bloco /dev/initrd's para uma
carga do sistema em duas fases.
Na primeira fase, o kernel inicia e monta um sistema de arquivos inical a partir dos conteúdos de
/dev/initrd (isto é, o disco de RAM inicializado pelo carregador de inicialização). Na segunda fase,
controladores adicionais e outros módulos são carregados a partir do dispositivo de conteúdo do super
usuário. Depois carregando módulos iniciais, um novo sistema de arquivos (isto é, o sistema de arquivos
normal) é montado a partir de um dispositivo diferente.
OPERAÇÃO DE CARREGAMENTO DO SISTEMA
Quando o carregamento inicia com initrd, the system boots as follows:
1. O carregador de inicialização carrega o programa kernel e o conteúdo de /dev/initrdna memória.
2. Na inicilização do kernel, o kernel decomprime e copia o conteúdo do dispositivo /dev/initrd para o
dispositivo /dev/ram0 e então a memória livre é usada por /dev/initrd.
3. O kernel então monta o dispostivo em leitura-escrita /dev/ram0 como o sistema de arquivo raiz
inicial.
4. Se a indicação normal do sistema de arquivo raiz é além disto o sistema de arquivo raiz inicial
(isto é, /dev/ram0 ) então o kernel salta o último passo para a seqüência usual de inicialização.
5. Se o arquivo executável /linuxrc está presente no sistema de arquivo raiz inicial, /linuxrc é
executado com uid 0. (O arquivo /linuxrc deve ter permissão de execução. O arquivo /linuxrc pode ser
um executável válido, incluindo um script de interpretador de comando.)
6. Se /linuxrc não é executado ou /linuxrc termina, o sistema de arquivo raiz normal é montado. (Se
/linuxrc existe com qualquer sistema de arquivo raiz montado no sistema de arquivo raiz inicial, então
o comportamento do kernel não é ESPECIFICADO. Veja a seção de NOTAS para o comportamento atual do
kernel.)
7. Se o arquivo raiz normal tem o diretório /initrd, o dispositivo /dev/ram0 é movido a partir de /
para /initrd. De outra forma se o diretório /initrd não é um dispositivo existente/dev/ram0 não é
montado. (Quando movido a partir de / para /initrd, /dev/ram0 não é montado e então processos podem
ficar rodando a paritr de /dev/ram0. Se o diretório /initrd não existe no sistema de arquivo raiz e
quaisquer processos ficam rodando a partir de /dev/ram0 quando /linuxrc existe, o comportamento do
kernel não é ESPECIFICADO. Veja as seções NOTAS para o comportamento atual do kernel.)
8. A seqüência usual de inicialização (isto é, a invocação de /sbin/init) é executado sobre o sistema
de arquivo raiz normal.
OPÇÕES
As seguintes opções do carregador de inicialização quando usadas com initrd, afetam a operação de
carregamento do kernel:
initrd=nomearquivo
Especifica o arquivo para carregar como o conteúdo de /dev/initrd. Para o LOADLIN isto é um opção
de comando de linha. Para o LILO você deve usar este comando no arquivo de configuração do LILO
em /etc/lilo.config. O nome do arquivo especificado com esta opção deverá, tipicamente, ser um]
imagem compactada com o gzip do sistema de arquivo.
noinitrd
Esta opção em tempo de caregamento desativa a segunda fase da operação de carregamento. O kernel
executa aa seqüência usual de inicialização como se /dev/initrd não fosse inicializado. Com esta
opção, qualquer conteúdo carregado de /dev/initrd para dento da memória pelo carregador de
inicialização são preservados. Esta opção permite o conteúdo de /dev/initrd ser qualquer dados e
não necessita ser limitado para uma imagem do sistema de arquivo. De qualquer forma, o
dispositivo /dev/initrd é de somente leitura e pode ser lido somente uma vez depois da
inicialização do sistema.
root=device-name
Especifica o dispositivo para ser usado como o sistema de arquivo raiz normal. Para LOADLIN esta
é uma opção de comando de linha. Para LILO esta é uma opção de tempo de carga ou pode ser usada
com um opção de linha no arquivo de configuração do LILO em /etc/lilo.config. O dispositivo
especificado por esta opção deve ser um dispositivo montável tendo um sistema se arquivo raiz
compatível.
MUDANDO O SISTEMA DE ARQUIVOS RAIZ NORMAL
Por padrão, a seleção do kernel (isto é, marcado no arquivo do kernel com rdev ou compilada dentro do
arquivo do kernel), ou a opção marcada no carregador de inicialização é usada para o sistema de arquivo
raiz normal. Para um sistema de arquivo raiz normal montado via NFS, ele tem que usar as opção de
carregamento nfs_root_name e nfs_root_addrs para determinar as marcações NFS. Para mais informações
sobre NFS veja o arquivo de documentação do kernel nfsroot.txt. Para mais informações sobre marcações do
sistema de arquivo raiz veja além disso a documentação do LILO e LOADLIN .
Isto é além disso possível para o executável /linuxrc alterar o dispositivo raiz normal. Para o /linuxrc
alterar o dispositivo raiz normal, /proc deve ser montado. Depois da montagem de /proc, /linuxrc altera
o dispositivo raiz normal pela escrita dentro dos arquivos proc /proc/sys/kernel/real-root-dev,
/proc/sys/kernel/nfs-root-name, e /proc/sys/kernel/nfs-root-addrs. Para um dispositivo raiz físico, o
dispositivo raiz é alterado por tendo /linuxrc escrito o novo número de dispositivo de sistema de arquivo
raiz dentro de /proc/sys/kernel/real-root-dev. Para um sistema de arquivo raiz NFS, o dispositivo raiz é
alterado por tendo /linuxrc escrito a marcação NFS dentro dos arquivos /proc/sys/kernel/nfs-root-name e
/proc/sys/kernel/nfs-root-addrs e então escrevendo 0xff (isto é, o falso número de dispositivo NFS)
dentro do arquivo /proc/sys/kernel/real-root-dev. Por exemplo, a seguinte linha de comando do
interpretador de comando alteraria o dispositivo raiz normal para /dev/hdb1:
echo 0x365 >/proc/sys/kernel/real-root-dev
Um exemplo NSF, a seguinte linha de comando do interpretador de comando alteraria o dispositivo raiz
normal para para um diretório NSF /var/nfsroot na rede local com número IP 193.8.232.7 para um sistema
com número IP 193.8.232.7 e chamado de 'idefix':
echo /var/nfsroot >/proc/sys/kernel/nfs-root-name
echo 193.8.232.2:193.8.232.7::255.255.255.0:idefix \
>/proc/sys/kernel/nfs-root-addrs
echo 255 >/proc/sys/kernel/real-root-dev
USO
A motivação principal para implementação de initrd é para permitir uma configuração modular do kernel na
isntalação do sistema.
Um cenário possível de instalação do sistema é o seguinte:
1. O programa carregador inicializa a partir do disquete ou outra midia com um kernel mínimo (isto é,
suporte para /dev/ram, /dev/initrd, e o sistema de arquivos ext2) e carrega /dev/initrd com uma versão
compactado em gzip do sitema de arquivo inicial.
2. O executável /linuxrc determina o que é necessário para (1) montar o sistema de arquivo raiz normal
(isto é, tipo de dispositivo, controlador de dispositivo, sistema de arquivo) e (2) a midia da
distribuição (isto é, CD-ROM, network, tape, ...). Isto pode ser feito questionando-se o usuário, pela
auto-checagem, ou usando uma abordagem hibrida.
3. O executável /linuxrc carrega os módulos necessários a partir do sistema de arquivo raiz inicial.
4. O executável /linuxrc cria e propaga o sistema de arquivo raiz. (Neste estágio o sitema de arquivo
raiz normal não é um sitema completo ainda.)
5. O executável /linuxrc marca /proc/sys/kernel/real-root-dev, desmonta /proc, o sistema de arquivo
raiz norma e qualquer outro sistema de arquivo que está montado, e então termina.
6. O kernel então mounta o sistem de arquivo raiz normal.
7. Agora que o sistema de arquivo é acessível e intacto, o carregador de inicialização pode ser
instalado.
8. O carregador de inicalização é configurado para carregar dentro de /dev/initrd um sistema de arquivo
com a marca de módulos que está acostumado executar no sistema. (isto é, O Dispositivo /dev/ram0 pode
ser modificado, então desmontado, e finalmente, a imagem é escrita a partir de /dev/ram0 para um
arquivo.)
9. O sistema é agora inicializável e tarefas de instalações adicionais podem ser executadas.
A função de chave de /dev/initrd no citado acima é para o re-uso dos dados de configuração durante a
operação normal do sistema sem a requisição inicial no seleção do kernel, um kernel genérico longo ou, um
kernel recompilado.
Um segundo cenário é para instalações onde o Linux é executado sobre sistemas com diferentes
configurações de hardware em uma simples rede administrativa. Em casos semelhantes, pode ser desejável
usar somente um pequeno conjunto de kerneis (idealmente somente um) e por economia o sistema especifico
parte de informações de configurações como pequena como possível. Neste caso, cria um arquivo comum com
todos os módulos necessários. Então, somente o arquivo /linuxrc para um arquivo executado por /linuxrc
pode ser diferente.
Um terçeiro cenário é mais conveniente para disco de recuperação. Por causa de informações como a
localização da partição do sistema de arquivo raiz não ser necessária em tempo de cargo, o sistema pode
ser carregado a partir de /dev/initrd que pode usar um diálogo e/ou auto detecção seguida por uma
possível controle de sanidade.
Por último mas não menos importante, as distribuições Linux em CD-ROM podem usar initrd para instalação
facilitada a partir do CD-ROM. A distribuição pode usar LOADLIN para carga diretamentente /dev/initrd a
partir do CD-ROM sem o uso de qualquer disquete. A distribuição pode também usar um disquete de
inicialização LILO e então um grande disco RAM via /dev/initrd a partir do CD-ROM.
CONFIGURAÇÃO
O /dev/initrd é um dispositivo de bloco de leitura somente designado com o maior número de dispositivo 1
e o menor número de dispositivo 250. Tipicamente /dev/initrd é propriedade de root.disk com modo 0400
(acesso de leitura para o super usuário somente). Se o sistema Linux não tem /dev/initrd criado, ele
pode ser criado com os seguintes comandos:
mknod -m 400 /dev/initrd b 1 250
chown root:disk /dev/initrd
Além disso, suporte para ambos "RAM disk" e "Initial RAM disk" (isto é, CONFIG_BLK_DEV_RAM=y e
CONFIG_BLK_DEV_INITRD=y ) suporte dever ser compilado dentro do kernel Linux para uso de /dev/initrd.
Quando usando, /dev/initrd, o controlador de disco RAM não pode ser carregado com um módulo.
ARQUIVOS
/dev/initrd
/dev/ram0
/linuxrc
/initrd
VEJA TAMBÉM
chown(1), mknod(1), /dev/ram(4), freeramdisk(8), rdev(8), O arquivo de documentação initrd.txt na pacote
fonte do kernel, o documentação do LILO e do LOADLIN, a documentação SYSLINUX.
NOTAS
1. Com o kernel atual, qualquer sistema de arquivo fica montado quando /dev/ram0 e movida a partir de /
para /initrd continua sendo acessível. De outra forma, a entrada /proc/mounts não é atualizada.
2. Com o kernel atual, se o diretório /initrd não existe, então /dev/ram0 não irá ser completamente
desmontado se /dev/ram0 é usada por qualquer processo ou qualquer sistema de arquivo é montado nela. Se
/dev/ram0 não é completamente desmontada, então /dev/ram0 ira ficar na memória.
3. Usuários de /dev/initrd não devem depender do comportamento fornecido nas notas acima. O
comportamente pode ser alterado nas futuras versões do kernel Linux.
AUTORES
O código do kernl para o dispositivo initrd foi escrio por Werner Almesberger <almesber@lrc.epfl.ch> e
Hans Lermen <lermen@elserv.ffm.fgan.de>. O código para initrd foi adicionado no kernel Linux na versão
de desenvolvimento 1.3.73.
TRADUZIDO POR LDP-BR em 21/08/2000.
André L. Fassone Canova <lonelywolf@blv.com.br> (tradução) Carlos Augusto Horylka
<horylka@conectiva.com.br> (revisão)
Linux 2.0 6/11/1997 INITRD(4)