bootparam(7) Miscellaneous Information Manual bootparam(7)

bootparam - introdução aos parâmetros de inicialização do kernel do Linux

O kernel do Linux aceita certas 'opções de linha de comandos' ou 'parâmetros de inicialização' no momento em que é iniciado. Em geral, isso é usado para suprir o kernel com informação a respeito do 'hardware' que o mesmo pode não estar apto para determinar por si só, ou para prevenir/ignorar os valores que o kernel possa ter detectado de outra maneira.

When the kernel is booted directly by the BIOS, you have no opportunity to specify any parameters. So, in order to take advantage of this possibility you have to use a boot loader that is able to pass parameters, such as GRUB.

The kernel command line is parsed into a list of strings (boot arguments) separated by spaces. Most of the boot arguments have the form:


name[=value_1][,value_2]...[,value_10]

where 'name' is a unique keyword that is used to identify what part of the kernel the associated values (if any) are to be given to. Note the limit of 10 is real, as the present code handles only 10 comma separated parameters per keyword. (However, you can reuse the same keyword with up to an additional 10 parameters in unusually complicated situations, assuming the setup function supports it.)

Most of the sorting is coded in the kernel source file init/main.c. First, the kernel checks to see if the argument is any of the special arguments 'root=', 'nfsroot=', 'nfsaddrs=', 'ro', 'rw', 'debug', or 'init'. The meaning of these special arguments is described below.

Então ele caminha por uma lista de funções de configuração para verificar se a entrada de argumento especificada (como 'foo') está associada com uma uma função de setup ('foo_setup()') para um dispositivo em particular ou parte do kernel. Se você passou ao kernel a linha foo=3,4,5,6, então o kernel procurará no vetor de inicialização, para verificar se 'foo' estava registrado. Se estiver, então ele chamará a função associada a 'foo' (foo_setup()) e manipulará os argumentos 3, 4, 5 e 6 como passados na linha comandos do kernel.

Qualquer coisa da forma 'foo=bar' que não for aceita como função de setup como descrito acima, é então interpretado como uma variável de ambiente a ser configurada. Um exemplo (inútil?) seria usar 'TERM=vt100' como argumento de inicialização.

Any remaining arguments that were not picked up by the kernel and were not interpreted as environment variables are then passed onto PID 1, which is usually the init(1) program. The most common argument that is passed to the init process is the word 'single' which instructs it to boot the computer in single user mode, and not launch all the usual daemons. Check the manual page for the version of init(1) installed on your system to see what arguments it accepts.

'init=...'
Configura o comando inicial a ser executado pelo kernel. Se não estiver presente, ou não puser ser encontrado, o kernel tentará /sbin/init, então /etc/init, então /sbin/init, então /bin/sh e entrar em pânico se tudo isso falhar.
'nfsaddrs=...'
Configura o endereço NFS de inicialização para entrada dada. Esse endereço de inicialização é usado no caso de inicialização por rede.
'nfsroot=...'
Configura o nome da raiz do NFS para a cadeia de caracteres dada. Se esta não começa com '/' ou ',' ou um dígito, então será prefixada por '/tftpboot/'. Este nome da raiz é usado em caso de inicialização por rede.
'root=...'
Este argumento diz ao kernel que dispositivo será utilizado como sistema de arquivos raiz durante a carga. O padrão dessa configuração é determinado em tempo de compilação e usualmente é o valor do dispositivo raiz onde o kernel foi construído. Para ignorar esse valor e selecionar o segundo controlador de disquete como dispositivo raiz, pode-se usar 'root=/dev/fd1'.
The root device can be specified symbolically or numerically. A symbolic specification has the form /dev/XXYN, where XX designates the device type (e.g., 'hd' for ST-506 compatible hard disk, with Y in 'a'–'d'; 'sd' for SCSI compatible disk, with Y in 'a'–'e'), Y the driver letter or number, and N the number (in decimal) of the partition on this device.
Note que isto nada tem a ver com a designação desses dispositvos em seu sistema de arquivos. A parte '/dev' é puramente convencional.
A especificação numérica mais incômoda e menos portável dos dispositivos raiz possíveis acima no formato principal/secundário também é aceita. (por exemplo, /dev/sda3 é principal 8 e secundário 3, então você pode usar 'root=0x803' como uma alternativa.)
'rootdelay='
This parameter sets the delay (in seconds) to pause before attempting to mount the root filesystem.
'rootflags=...'
This parameter sets the mount option string for the root filesystem (see also fstab(5)).
'rootfstype=...'
The 'rootfstype' option tells the kernel to mount the root filesystem as if it where of the type specified. This can be useful (for example) to mount an ext3 filesystem as ext2 and then remove the journal in the root filesystem, in fact reverting its format from ext3 to ext2 without the need to boot the box from alternate media.
'ro' e 'rw'
A opção 'ro' diz ao kernel para montar o sistema de arquivos raiz como 'somente leitura', para que programas de verificação de consistência de sistemas de arquivos (fsck) possam fazer seu trabalho em um sistema de arquivos imóvel. Nenhum processo pode escrever nos arquivos do sistema em questão, até que o mesmo seja 'remontado' com capacidade de 'leitura/escrita (read/write), por exemplo, por 'mount -w -n -o remount /'. (Veja também mount(8).)
A opção 'rw' diz ao kernel para montar o sistema raiz como 'escrita/leitura'. Este é o padrão.
'resume=...'
This tells the kernel the location of the suspend-to-disk data that you want the machine to resume from after hibernation. Usually, it is the same as your swap partition or file. Example:

resume=/dev/hda2

'reserve=...'
Esta é usada para proteger regiões de portas de E/S de sondagens. A forma do comando é:

reserve=iobase,extent[,iobase,extent]...

Em algumas máquinas, pode ser necessário evitar que os controladores de dispositivo procurem os mesmos em regiões específicas (auto-probing). Isto pode ocorrer por causa de 'hardware' que reage mal à detecção, ou 'hardware' que é erroneamente identificado ou meramente o 'hardware' que você não quer que o kernel inicialize.
O argumento da linha de inicialização 'reserve' especifica uma região de portas E/S que não devem ser sondadas. Um controlador de dispositivo não irá sondar uma região reservada, a não ser que outro argumento de inicialização explicitamente espefique para fazê-lo.
Por exemplo, a linha de inicialização

reserve=0x300,32  blah=0x300

previne todos os controladores de dispositivo, exceto o controlador 'blah' da sondagem de 0x300-0x31f.
'panic=N'
Por padrão, o kernel não reinicializará após um pânico, mas esta opção causará a reinicialização do kernel, após N segundos (se N > 0). Estee timeout de pânico pode ser configurado por

echo N > /proc/sys/kernel/panic

'reboot=[warm|cold][,[bios|hard]]'
Desde o Linux 2.0.22 a reinicialização é por padrão uma reinicialização fria (cold reboot). Alguém pergunta pelo antigo padrão 'reboot=warm'. (Um 'cold reboot' pode ser necessário para resetar certos 'hardwares', mas pode destruir qualquer dado em 'cache' de disco que não tenha sido escrito. Uma reinicialização quente (warm boot) pode ser mais rápida). Por padrão, uma reinicialização é difícil, requisitando-se que o controlador do teclado para pulsar o fluxo da linha de reset baixa, mas há ao menos um tipo de placa-mãe que não funcionará. A opção 'reboot=bios', ao contrário, passará através do 'BIOS'.
'nosmp' e 'maxcpus=N'
(Somente quando __SMP__ estiver definido.) Uma opção de linha de comando de 'nosmp' ou 'maxcpus=0' irá desabilitar completamente a ativação do SMP (multi processamento simétrico); a opção 'maxcpus=N' limita o número máximo de CPUs ativadas no modo SMP em N.

'debug'
Kernel messages are handed off to a daemon (e.g., klogd(8) or similar) so that they may be logged to disk. Messages with a priority above console_loglevel are also printed on the console. (For a discussion of log levels, see syslog(2).) By default, console_loglevel is set to log messages at levels higher than KERN_DEBUG. This boot argument will cause the kernel to also print messages logged at level KERN_DEBUG. The console loglevel can also be set on a booted system via the /proc/sys/kernel/printk file (described in syslog(2)), the syslog(2) SYSLOG_ACTION_CONSOLE_LEVEL operation, or dmesg(8).
'profile=N'
É possível habilitar uma função de profiling no kernel, se alguém desejar ver onde o kernel está gastando seus ciclos de CPU. O profiling pode ser habilitado configurando a variável prof_shift para um valor que não zero. Isto pode ser feito tanto especificando-se CONFIG_PROFILE durante a compilação, ou dando-se a opção 'profile='. Agora o valor de prof_shift será N, quando dado, ou CONFIG_PROFILE_SHIFT, quando este é dado, ou 2, o padrão. A significância dessa varaiável é que a mesma dá a granularidade do profiling: a cada pulso do clock, se o sistema estiever executando o kernel, um contador é incrementado:

profile[address >> prof_shift]++;

A informação bruta de profiling pode ser lida em /proc/profile. Provavelmente, você irá deseja usar uma ferramenta como readprofile.c para ordená-la. Escrever em /proc/profiles limpará os contadores.

(Apenas se o kernel foi compilado com CONFIG_BLK_DEV_RAM.) Em geral é uma má idéia usar um disco de RAM (ramdisk) no Linux—o sistema usará a memória disponível de forma mais eficiente sozinho. Mas durante a inicialização é frequentemente útil carregar o conteúdo do disquete em um disco de RAM. Alguém pode ter um sistema no qual seja necessário que alguns módulos sejam carregados (para sistemas de arquivos ou 'hardware') antes que o disco principal possa ser acessado.

In Linux 1.3.48, ramdisk handling was changed drastically. Earlier, the memory was allocated statically, and there was a 'ramdisk=N' parameter to tell its size. (This could also be set in the kernel image at compile time.) These days ram disks use the buffer cache, and grow dynamically. For a lot of information on the current ramdisk setup, see the kernel source file Documentation/blockdev/ramdisk.txt (Documentation/ramdisk.txt in older kernels).
Existem quatro parâmetros, dois booleanos e dois inteiros.
'load_ramdisk=N'
Se N=1, carrega um ramdisk. Se N=0, Não carrega um ramdisk (Este é o padrão.)
'prompt_ramdisk=N'
Se N=1, pede a inserção do disquete (Este é o padrão). Se N=0, não pede a inserção do disquete (assim, esse parâmetro nunca é necessário).
'ramdisk_size=N' ou (obsoleto) 'ramdisk=N'
Configura o tamanho máximo do(s) ramdisk(s) para N kB. O padrão é 4096 (4 MB).
'ramdisk_start=N'
Configura o número do bloco inicial (a simetria no disquete onde o ramdisk começa) para N. Isso é necessário no caso de o ramdisk seguir uma imagem do kernel.
'noinitrd'
(Somente se o kernel foi compilado com CONFIG_BLK_DEV_RAM e CONFIG_BLK_DEV_INITRD.) Atualmente é possível compilar o kernel para usar initrd. Quando esta característica está habilitada, o processo de inicialização carregará o kernel e um ramdisk inicial; então, o kernel converte initrd em um ramdisk 'normal' que é montado em leitura/escrita como dispositivo raiz; então, /linuxrc é executado; depois, o sistema de arquivos raiz 'real' é montado e o sistema de arquivos initrd é movido para /initrd; finalmente, a sequência de inicialização usual é executada (por exemplo, chamada de /sbin/init.
For a detailed description of the initrd feature, see the kernel source file Documentation/admin-guide/initrd.rst (or Documentation/initrd.txt before Linux 4.10).
The 'noinitrd' option tells the kernel that although it was compiled for operation with initrd, it should not go through the above steps, but leave the initrd data under /dev/initrd. (This device can be used only once: the data is freed as soon as the last process that used it has closed /dev/initrd.)

Notação geral para esta seção:

iobase -- a primeira porta de E/S que a controladora SCSI ocupa. São especificados em notação hexadecimal e usualmente encontram-se na área de 0x200 a 0x3ff.

irq -- a interrupção de 'hardware' em que a placa está configurada para usar. Valores válidos dependerão da placa em questão, mas serão usualmente 5, 7, 9, 10, 11, 12 e 15. Os outros valores são normalmente utilizados por periféricos comuns, como discos rígidos IDE, controladores de disquete, portas seriais, e assim por diante.

scsi-id -- a identidade que a adaptadora usa para se autoidentificar no bus SCSI. Algumas poucas adaptadoras permitem que você modifique este valor, mas a maioria tem permanentemente especificado internamente. O padrão usual é 7, mas as placas Seagate e Domain TMC-950 usam 6.

parity -- se a controladora SCSI deve esperar os dispositivos conectados para fornecer um valor de paridade com toda troca de informação. Especificando um 'um', indica que a checagem de paridade está habilitada e um 'zero' desabilita a checagem de paridade. Novamente, nem todas as adaptadoras suportam a seleção de paridade como um argumento de inicialização.

'max_scsi_luns=...'
Um dispositivo SCSI deve possuir um número de 'subdispositivos' contidos em si. O exemplo mais comum é um desses novos CD-ROMS SCSI que podem manipular mais de um disco por vez. Cada CD está endereçado como um 'Número de Unidade Lógica' (Logical Unit Number -- LUN) daquele dispositivo em particular. Mas a maioria dos dispositivos, como discos rígidos, controladores de fita e outros são apenas um dispositivo e serão designado por LUN zero.
Alguns dispositivos SCSI pobremente projetados não suportam ser testados para LUNs não iguais a zero. Por isso, se a flag de compilação CONFIG_SCSI_MULTI_LUN não estiver configurada, os novos kernels irão, por padrão, testar apenas LUN zero.
Para especificar o número de LUNs provados durante a inicialização, pode-se entrar 'max_scsi_luns=n' como um argumento de inicialização, onde 'n' é um número entre um e oito. Para evitar os problemas descritos acima, pode-se usar n=1 para evitar transtornos bem como dispositivos quebrados.
Algumas configurações de inicialização do controlador de fita SCSI pode ser alcançadas usando-se o seguinte:

st=buf_size[,write_threshold[,max_bufs]]

Os dois primeiros números são especificados em unidades de kB. O buf_size padrão é 32 kB e o tamanho máximo que pode ser especificado são ridículos 16384 kB. O write_treshold é o valor no qual o 'buffer' é enviado à fita, com valor padrão de 30 kB. O número máximo de 'buffers' varia com o número de controladores detectados e possui o padrão de dois. Um exemplo de uso seria:

st=32,30,2

Full details can be found in the file Documentation/scsi/st.txt (or drivers/scsi/README.st for older kernels) in the Linux kernel source.

O controlador IDE aceita vários parâmetros, que variam de especificações da geometria do disco para suporte de chips de controladoras quebrados. Opções específicas do controlador são especificadas usando-se 'hdX' com 'X' entre 'a'–'h'.
Outras opções não específicas do controlador, são especificadas com o prefixo 'hd='. Note que usando um prefixo específico de controlador para uma opção não específica de controlador continuará funcionando e a opção será aplicada como esperado.
Also note that 'hd=' can be used to refer to the next unspecified drive in the (a, ..., h) sequence. For the following discussions, the 'hd=' option will be cited for brevity. See the file Documentation/ide/ide.txt (or Documentation/ide.txt in older kernels, or drivers/block/README.ide in ancient kernels) in the Linux kernel source for more details.
Essas opções são usadas para especificar a geometria física do disco. Apenas os três primeiros valores são requeridos. Os valores de cilindros/cabeças/setores serão aqueles utilizados pelo fdisk. O valor de pre-compensação de escrita é ignorado nos discos IDE. O valor do IRQ especificado será o IRQ utilizado pela interface na qual o controlador reside e não um parâmetro específico do controlador.
O chip de interface dual IDE CMD-640 é quebrado em seu próprio projeto, pois quando os controladores da interface secundária são usados ao mesmo tempo que os controladores da interface primária, isto corromperá seus dados. Usando esta opção, diz-se ao controlador para assegurar-se que as interfaces nunca serão usadas ao mesmo tempo.
Não há verificação do controlador especificado. Por exemplo:

hdb=noprobe hdb=1166,7,17

desabilitará a verificação, mas continuará especificando a geometria do controlador, para que possa ser registrado como um bloco de dispositivo válido e, conseqüentemente, utilizável.
Alguns controladores aparentemente tem o WRERR_STAT um tanto imobilizado. Essa opção habilita um paliativo para esses dispositivos quebrados.
Isso diz ao controlador IDE que há um CD-ROM compatível com ATAPI conectado no lugar de um disco rígido IDE normal. Em muitos casos, o CD-ROM é identificado automaticamente, mas se não for, esta opção pode ajudar.
O controlador de disco padrão aceita argumentos de geometria de discos similares ao controlador IDE. Note, contudo, que ele só espera três valores (C/H/S); algum mais ou algum menos e o controlador irá ignorar-te silenciosamente. Além disso, só aceita 'hd=' como argumento, quer dizer 'hda=' e outros não são válidos aqui. O formato é o seguinte:

hd=cyls,heads,sects

Se houver dois discos instalados, o acima é repetido com os parâmetros da geometria do segundo disco.

Controladores diversos usam argumentos diversos, mas todos eles, ao menos, se parecem, usando um IRQ, um valor base de porta de E/S e um nome. Em sua forma mais genérica, se parece com o que segue:


ether=irq,iobase[,param_1[,...param_8]],name

O primeiro argumento não numérico é entendido como o nome. Os valores de 'param_n' (se aplicáveis) usualmente têm significados diferentes para cada tipo de placa/controlador. Valores 'param_n' típicos são usados para especificar coisas como endereço de memória compartilhada, seleção de interface, canal de DMA e coisas assim.

O uso mais comum desse parâmetro é forçar a verificação da existência de uma segunda placa de rede, pois o padrão é 'procurar' apenas uma. Isso pode ser executado com um simples:


ether=0,0,eth1

Note que os valores de zero para os valores de IRQ e base de E/S no exemplo acima, diz ao controlador para executar autoverificação.

O 'Ethernet-HOWTO' possui extensa documentação sopbre como usar múltiplas placas e sobre a implementação específica de 'param_n' de placas/controladores, onde utilizados. Leitores interessados devem encaminhar-se a seção daquele documento referente especificamente à suas placas.

There are many floppy driver options, and they are all listed in Documentation/blockdev/floppy.txt (or Documentation/floppy.txt in older kernels, or drivers/block/README.fd for ancient kernels) in the Linux kernel source. See that file for the details.

The sound driver can also accept boot arguments to override the compiled-in values. This is not recommended, as it is rather complex. It is described in the Linux kernel source file Documentation/sound/oss/README.OSS (drivers/sound/Readme.linux in older kernel versions). It accepts a boot argument of the form:


sound=device1[,device2[,device3...[,device10]]]

onde cada valor 'deviceN' é um dos seguintes, no formato '0xTaaaId', e usados como segue:

T - tipo de dispositivo: 1=FM, 2=SB, 3=PAS, 4=GUS, 5=MPU401, 6=SB16, 7=SB16-MPU401

aaa - endereço de E/S em hexa.

I - linha de interrupção em hexa (i.e., 10=a, 11=b, ...).

d - canal de DMA.

Como você pode ver, tudo fica bastante complicado, e é melhor compilar seus próprios valores como recomendado. Usando um argumento de inicialização 'sound=0' desabilitará o controlador de som inteiramente.

'lp='

Sintaxe:

lp=0
lp=auto
lp=reset
lp=port[,port...]

Você pode ordenar ao controlador de impressão que porta usar e que portas não usar. Em segundo lugar, mas importante é se você não deseja que o controlador de impressão reinvidicar todas as portas paralelas disponíveis, assim outros controladores (por exemplo, PLIP, PPA) pode então usá-la.
O formato do argumento é um múltiplo de nomes de porta, Por exemplo, lp=none,parport0 para usar a primeira porta paralea para lp1, e desativar lp0. Para desativar o controlador da impresso totalmente, deve usar lp=0.

klogd(8), mount(8)

For up-to-date information, see the kernel source file Documentation/admin-guide/kernel-parameters.txt.

A tradução para português brasileiro desta página man foi criada por Valter Ferraz Sanches <vfs@ezlinux.cjb.net> e André Luiz Fassone <lonely_wolf@ig.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.

31 outubro 2023 Linux man-pages 6.06