Scroll to navigation

INITRD(4) Manual do Programador do Linux INITRD(4)

NOME

initrd - carregador de inicialização inicializado com disco RAM

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

Also, support for both "RAM disk" and "Initial RAM disk" (e.g., CONFIG_BLK_DEV_RAM=y and CONFIG_BLK_DEV_INITRD=y) must be compiled directly into the Linux kernel to use /dev/initrd. When using /dev/initrd, the RAM disk driver cannot be loaded as a module.

DESCRIÇÃO

The special file /dev/initrd is a read-only block device. This device is a RAM disk that is initialized (e.g., loaded) by the boot loader before the kernel is started. The kernel then can use /dev/initrd's contents for a two-phase system boot-up.

Na primeira fase, o kernel inicia e monta um sistema de arquivos inicial 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 superusuário. Depois do carregamento dos módulos iniciais, um novo sistema de arquivos (isto é, o sistema de arquivos normal) é montado a partir de um dispositivo diferente.

Boot-up operation

Quando o carregamento inicia com initrd, o sistema inicia como segue:

1.
O carregador de inicialização carrega o programa kernel e o conteúdo de /dev/initrd na 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 para 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 quando /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:

Especifica o arquivo para carregar como o conteúdo de /dev/initrd. 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.
This boot option disables the two-phase boot-up operation. The kernel performs the usual boot sequence as if /dev/initrd was not initialized. With this option, any contents of /dev/initrd loaded into memory by the boot loader contents are preserved. This option permits the contents of /dev/initrd to be any data and need not be limited to a filesystem image. However, device /dev/initrd is read-only and can be read only one time after system startup.
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.

Changing the normal root filesystem

By default, the kernel's settings (e.g., set in the kernel file with rdev(8) or compiled into the kernel file), or the boot loader option setting is used for the normal root filesystems. For an NFS-mounted normal root filesystem, one has to use the nfs_root_name and nfs_root_addrs boot options to give the NFS settings. For more information on NFS-mounted root see the kernel documentation file Documentation/filesystems/nfs/nfsroot.txt (or Documentation/filesystems/nfsroot.txt before Linux 2.6.33). For more information on setting the root filesystem see also the LILO and LOADLIN documentation.

It is also possible for the /linuxrc executable to change the normal root device. For /linuxrc to change the normal root device, /proc must be mounted. After mounting /proc, /linuxrc changes the normal root device by writing into the proc files /proc/sys/kernel/real-root-dev, /proc/sys/kernel/nfs-root-name, and /proc/sys/kernel/nfs-root-addrs. For a physical root device, the root device is changed by having /linuxrc write the new root filesystem device number into /proc/sys/kernel/real-root-dev. For an NFS root filesystem, the root device is changed by having /linuxrc write the NFS setting into files /proc/sys/kernel/nfs-root-name and /proc/sys/kernel/nfs-root-addrs and then writing 0xff (e.g., the pseudo-NFS-device number) into file /proc/sys/kernel/real-root-dev. For example, the following shell command line would change the normal root device to /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 parapara 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.2 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

Note: The use of /proc/sys/kernel/real-root-dev to change the root filesystem is obsolete. See the Linux kernel source file Documentation/admin-guide/initrd.rst (or Documentation/initrd.txt before Linux 4.10) as well as pivot_root(2) and pivot_root(8) for information on the modern method of changing the root filesystem.

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.
The executable /linuxrc sets /proc/sys/kernel/real-root-dev, unmounts /proc, the normal root filesystem and any other filesystems it has mounted, and then terminates.
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.

ARQUIVOS

/dev/initrd
/dev/ram0
/linuxrc
/initrd

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.

VEJA TAMBÉM

chown(1), mknod(1), ram(4), freeramdisk(8), rdev(8)

Documentation/admin-guide/initrd.rst (or Documentation/initrd.txt before Linux 4.10) in the Linux kernel source tree, the LILO documentation, the LOADLIN documentation, the SYSLINUX documentation

COLOFÃO

Esta página faz parte da versão 5.10 do projeto Linux man-pages. Uma descrição do projeto, informações sobre relatórios de bugs e a versão mais recente desta página podem ser encontradas em https://www.kernel.org/doc/man-pages/.

TRADUÇÃO

A tradução para português brasileiro desta página man foi criada por André Luiz Fassone <lonely_wolf@ig.com.br> e Carlos Augusto Horylka <horylka@conectiva.com.br>

Esta tradução é uma documentação livre; leia a Licença Pública Geral GNU Versão 3 ou posterior para as condições de direitos autorais. Nenhuma responsabilidade é aceita.

Se você encontrar algum erro na tradução desta página de manual, envie um e-mail para a lista de discussão de tradutores.

6 março 2019 Linux