Manpages

NOME

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

DESCRIÇÃO

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.

Quando o kernel é carregado diretamente pelo BIOS (digamos, através de um disquete para o qual você tenha copiado um kernel usando "cp zImage /dev/fd0"), você não tem oportunidade de especificar nenhum parâmetro. Então, para tirar proveito dessa possibilidade, você tem de usar software que seja capaz de aceitar os parâmetros, como LILO ou loadlin. Para alguns parâmetros pode-se também modificar a imagem do kernel em si, usando rdev, veja rdev(8) para mais detalhes.

O programa LILO (LInux LOader), escrito por Werner Almesberger é o mais comumente usado. Ele é capaz de carregar diversos kernels e armazenar a informação de configuração em um arquivo de texto puro. (Veja lilo(8) e lilo.conf(5).) LILO pode carregar DOS, OS/2, Linux, FreeBSD, UnixWare, etc., e é bastante flexível.

O outro carregador de Linux comumente usado é o "Loadlin", que é um programa do DOS que tem a capacidade de carregar um kernel de Linux através do prompt do DOS (com argumentos de inicialização), assumindo que certos recursos estão disponíveis. Isto é bom para pessoas que querem iniciar o Linux através do DOS.

É também bastante útil se você possui algum hardware que depende do driver de DOS fornecido para colocar o hardware em um estado reconhecido. Um exemplo comum são as placas de som "compatíveis com SoundBlaster", que requerem o driver de DOS para mexer alguns registros místicos para colocar a placa em modo compatível com SB. Carregando o DOS com o driver fornecido e então carregando o Linux pelo prompt do DOS evita o reset da placa, que ocorre quando se reinicia a máquina.

LISTA DE ARGUMENTOS

A linha de comando do kernel é analisada em uma lista de strings (argumentos de inicialização) separada por espaços. Muitos argumentos usam a forma:

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

onde "nome" é uma palavra-chave única que é usada para identificar para qual parte do kernel os valores associados (se houver algum) devem ser enviados. Note que o limite de 10 é real, uma vez que o código presente só é capaz de manipular 10 parâmetros separados por vírgula por palavra-chave. (De qualquer forma, você pode reutilizar a mesma palavra-chave, com mais 10 parâmetros adicionais, em situações unusuais e complicadas, assumindo que a função do setup suporta isso.)

A maioria das opções está em linux/init/main.c. Primeiro, o kernel checa se o argumento é um dos argumentos especiais, como ’root=’, ’nfsroot=’, ’fsaddrs=’, ’ro’, ’rw’, ’debug’ ou ’init’. O significado desses argumentos está descrito abaixo.

Então ele caminha por uma lista de funções de configuração (contidas no array de setup de inicialização) para verificar se a string 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á na array de setup de boot, 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.

Os argumentos restantes que não são usados pelo kernel nem são interpretados como variáveis de ambiente, são então passados ao processo, o qual usualmente é o programa init. O argumento mais comum, que é passado ao processo do init é a palavra ’single’, a qual instrui init a iniciar o computador em modo de usuário singular e não iniciará nunhum dos daemons usuais. Procure na man page pela versão do init instalada em seu sistema para ver que argumentos ele aceita.

ARGUMENTOS GERAIS DE INICIALIZAÇÃO, DISPOSITIVOS NÃO ESPECÍFICOS

’init=...’
Configura o comando inicial a ser executado pelo kernel. Se não estiver presente, ou não puser ser encontrado, o kernel tentará /etc/init, então /bin/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 string dada. Esse endereço de inicialização é usado no caso de inicialização por rede.

’nfsroot=...’
Configura o nome de root do nfs para a string dada. Se esta string não começa com ’/’ ou ’,’ ou um dígito, então será prefixada por ’tftpboot/’. Este nome de root é usado em caso de inicialização por rede.

’no387’
(somente quando CONFIG_BUGi386 está definido.) Alguns chips de coprocessamento do i387 apresentam bugs, que aparecem quando usados em modo protegido de 32 bits. Por exemplo, alguns dos primeiros chips ULSI-387 causavam travamentos quando estavam lidando com cálculos de ponto flutuante. Usar o argumento ’no387’ faz com que o Linux ignore o co-processador matemático mesmo que você possua um. É claro que você deve então ter seu kernel compilado com suporte a emulação de coprocessador!

’no-hlt’
(somente quando CONFIG_BUGi386 está definido.) Alguns dos primeiros chips i486DX-100 têm problemas com a instrução ’hlt’, pois não conseguem voltar com segurança para o modo operacional após o uso dessa instrução. Usar a instrução ’no-hlt’ diz ao Linux para apenas rodar um loop infinito quando não houver nada a ser feito e não parar a CPU. Isso permite às pessoas que têm esses chips defeituosos usarem Linux.

’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 no momento da compilação e usualmente é o valor do dispositivo raiz onde o kernel foi construído. Para ignorar esse valor e selecionar o segundo drive de disquete como dispositivo raiz, pode-se usar ’root=/dev/fd1’.(O dispositivo de root também pode ser configurado usando-se rdev(8).)

O dispositivo raiz pode ser especificado simbolicamente ou numericamente. Uma especificação simbólica tem a forma /dev/XXYN, onde XX designa o tipo de dispositivo (’hd’ para discos rígidos compatíveis com ST-506, com Y entre ’a’-’d’; ’sd’ para discos compatíveis com SCSI, com Y entre ’a’-’e’, ’ad’ para discos ACSI atari com Y entre ’a’-’e’, ’ez’ para drive paralelo removível Syquest EZ135, com Y=’a’, ’xd’ para discos compatíveis com XT, com Y sendo ’a’ ou ’b’; ’fd’ para drives de disquete, onde Y é o número do drive de disquete - fd0 seria o drive ’A:’ do DOS e fd1 seria o drive ’B:’ do DOS, Y é a letra do drive ou número e ’N’ é o número (em decimal) da partição do dispositivo (ausente no caso de disquetes). Os kerneis mais recentes permitem muitos outros tipos, a maioria CDROMs: nfs, ram, scd, mcd, cdu535, aztcd, cm206cd, gscd, sbpcd, sonycd, bpcd. (O tipo nfs especifica o boot de rede; ram se refere a um ram disk.)

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 de root possíveis acima em maior/menor formato também é aceita. (E.g., /dev/sda3 é maior 8 e menor 3, então você pode usar ’root=0x803’ como uma alternativa.)

’ro’ e ’rw’
A opção ’ro’ diz ao kernel para montar o sistema de arquivos raiz como ’somente leitura’ (readonly), para que programas de checagem 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), e.g., 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.

A escolha entre somente-leitura e leitura/escrita pode ser feita usando-se rdev(8).

’reserve=...’
Esta é usada para proteger regiões de portas I/O de sondagens. A forma do comando é:

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

Em algumas máquinas, pode ser necessário evitar que os drivers 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 hardware que você não quer que o kernel inicialize.

O argumento de linha de boot reserve especifica uma região de portas E/S que não devem ser sondadas. Um driver de dispositivo não irá sondar uma região reservada, a não ser que outro argumento de boot explicitamente espefique para fazê-lo.

Por exemplo, a linha de inicialização

reserve=0x300,32 blah=0x300

previne todos os drivers de dispositivo, exceto o driver ’blah’ da sondagem de 0x300-0x31f.

’mem=...’
A chamada do BIOS definida nas especificações do PC, que retorna a quantidade de memória, foi desenhada para ser capaz de reportar até o máximo de 64MB. O Linux usa essa chamada da BIOS durante o boot para determinar quanta memória está instalada. Se você tem mais de 64MB de RAM instalados, pode usar esse argumento de boot para dizer ao Linux quanta memória tem. O valor é decimal ou hexadecimal (prefixo 0x), e o sufixo ’k’ (vezes 1024) ou ’M’ (vezes 1048576) podem ser usado. Aqui está uma citação de Linus (Torvalds, criador do Linux), a respeito do uso do parâmetro ’mem=’.

’’O kernel aceitará qualquer parâmetro ’mem=xx’ que você lhe der e se acontecer de você mentir para ele, ele irá travar horrivelmente, cedo ou tarde. O parâmetro indica o endereço de RAM alocável mais alto, então ’mem=0x1000000’ significa que você tem 16MB de memória, por exemplo. Para uma máquina com 96MB ele será ’mem=6000000’.

NOTA NOTA NOTA: algumas máquinas podem usar o topo da memória para BIOS cacheing ou algo assim, então você pode não ter o total de 96MB endereçável. A recíproca é verdadeira: alguns chipsets mapearão a memória física que está coberta pela área do BIOS na área logo acima do topo da memória, então, o topo da memória pode ser realmente 96MB + 384kB, por exemplo. Se você disser ao Linux que possui mais memória do que realmente tem, coisas ruins acontecerão: talvez não imediatamente, mas certamente em algum momento.’’

’panic=N’
Por padrão, o kernel não recarregará (reboot) após um pânico, mas esta opção causará o reboot 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]]’
(somente quando CONFIG_BUGi386 estiver definido.) Desde o 2.0.22 o reboot é 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 (simetrical multi processing - multi processamento simétrico); a opção ’maxcpus=N’ limita o número máximo de CPUs ativadas no modo SMP em N.

ARGUMENTOS PARA USO DE DESENVOLVEDORES DE KERNEL

’debug’
As mensagens do kernel são enviadas ao demônio de log do kernel, klogd, então elas devem estar armazenadas em disco. Mensagens com a prioridade acima: console_loglevel são também impressas no console. (Para estes níveis, veja <linux/kernel.h>.) Por padrão, esta variável está configurada para catalogar qualquer coisa mais importante que mensagens de debug. Este argumento de inicialização diz ao kernel para imprimir também as mensagens de nível DEBUG. O nível de log de console (console loglevel) configurado durante a execução, através de uma opção no klogd. Veja klogd(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.

’swap=N1,N2,N3,N4,N5,N6,N7,N8’
Configura os oito parâmetros, max_page_age, page_advance, page_decline, page_initial_age, age_cluster_fract, age_cluster_min, pageout_weight, bufferout_weight, que controlam os algoritmos de swap do kernel. Apenas para afinadores de kernel.

’buff=N1,N2,N3,N4,N5,N6’
Configura os seis parâmetros max_buff_age, buff_advance, buff_decline, buff_initial_age, bufferout_weight, buffermem_grace que controlam o gerenciamento de buffers de memória do kernel. Apenas para afinadores de kernel.

ARGUMENTOS DE INICIALIZAÇÃO PARA USO DE DISCO DE RAM (RAMDISK)

(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 (ou criação de disquetes de boot) é 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.

No Linux 1.3.48, o gerenciamento de ramdisk mudou drasticamente. Anteriormente, a memória era alocada estaticamente e havia um parâmetro ’ramdisk=N’ para dizer seu tamanho. (isso pode também ser configurado na imagem do kernel durante a compilação ou pelo uso de rdev(8).) Os discos de RAM atuais usam o cache de buffer e aumentam dinamicamente. Para maior informação (e.g., como usar rdev(8) em combinação com o novo setup de ramdisk), veja /usr/src/linux/Documentation/ramdisk.txt.

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 (e.g. chamada de /sbin/init.

Para uma descrição detalhada das caracteríticas de initrd, veja /usr/src/linux/Documentation/initrd.txt

A opção ’noinitrd’ diz ao kernel, que embora tenha sido compilado para operar com initrd, que não deve executar os passos acima, e sim deixar os dados do initrd em /etc/initrd. (esse dispositivo pode ser usado apenas uma vez -- os dados são liberados tão logo o último processo que o utilizou houver fechado /etc/initrd.)

ARGUMENTOS DE BOOT PARA DISPOSITIVOS SCSI

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

iobase -- a primeira porta I/O 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, drives de disquete, portas seriais, etc.

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-no permanentemente especificado de forma interna. 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, drives 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 boot, 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.

Configuração de Drives de Fita SCSI
Algumas configurações de inicialização do driver de fita SCSI pode ser alcançadas usando-se o seguinte:

st=buf_size[,write_treshold[,max_bufs]]

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

Maiores detalhes podem ser encontrados no arquivo README.st que fica no diretório SCSI da árvore de fontes do kernel.

Configuração de Adaptec aha151x, aha152x, aic6260, aic6360, SB16-SCSI
Os números ’aha’ referem-se a placas e os números ’aic’ referem-se ao chip SCSI real nesse tipo de placas, incluindo a Soundblaster-16 SCSI.

O código de prova para estas controladoras SCSI procuram por uma BIOS instalada e, se nenhum estiver presente, a verificação não encontrará sua placa. Então, você terá de usar um argumento de boot na forma:

aha152x=iobase[,irq[,scsi-id[,reconnect[,parity]]]]

Se o driver foi compilado com debugging habilitado, um sexto valor pode ser adicionado para especificar o nível de debug.

Todos os parâmetros são como descritos no início desta seção e o valor reconnect permitirá ao dispositivo desconectar/conectar se um um valor não-zero for usado. Um exemplo de uso:

aha152x=0x340,11,7,1

Note que os parâmetros devem ser especificados na ordem, significando que se você quiser especificar um valor de paridade, então terá de especificar os valores de io-base, irq, scsi-id e reconnect também.

Configuração de Adaptec aha154x
As placas da série aha1542 têm um controlador de drive de disquetes i82077 onboard, enquanto as da série aha1540 não têm. Essas são placas de busmastering, e possuem parâmetros para configurar a ’’lealdade’’ que será usada para compartilhar o barramento com outros dispositivos. O argumento de inicialização parece-se com o seguinte:

aha1542=iobase[,buson,busoff[,dmaspeed]]

Valores válidos de iobase são usualmente um dos seguintes: 0x130, 0x134, 0x230, 0x234, 0x330, 0x334. Placas clones podem permitir valores diferentes.

Os valores buson, busoff referem-se ao número de microssegundos que a placa dominará o barramento ISA. Os padrões são 11us on e 4us off, então as outras placas (tal como uma placa de rede ISA LANCE) terão uma chance de acessar o barramento ISA.

O valor ’dmaspeed’ refere-se à taxa (em MB/s) em que ocorre a transferência de DMA (Acesso Direto à Memória -- Direct Memory Access). O padrão é 5MB/s. Placas de revisão mais recente permitem a você escolher selecionar esse valor como parte de uma configuração via software. As mais antigas usam jumpers. Você pode usar esses valores até 10MB/s, assumindo que sua placa-mãe seja capaz de manipular essa taxa. Experimente, com cuidado, usar valores acima de 5MB/s.

Configuração de Adaptec aha274x, aha284x, aic7xxx
Essas placas aceitam argumentos na forma:

aic7xxx=extended,no_reset

O valor extended , se não-zero, indica que a tradução estendida para discos grandes está habilitada. O valor no_reset , se não-zero, diz ao driver para não ressetar o barramento SCSI enquanto configura a adaptadora durante a inicialização.

Configuração de controladoras SCSI AdvanSys (’advansys=’)
O driver AdvanSys aceita até 4 endereços de i/o que serão checados por uma placa SCSI AdvanSys. Note que esses valores (se usados) não afetam verificação em EISA ou PCI. São apenas usados para verificação de placas ISA e VLB. A mais, se o driver foi compilado com debugging habilitado, a saída do nível de debugging pode ser configurado adicionando-se um parâmetro 0xdeb[0-f]. O ’0-f’ permite a configuração do nível de mensagens de debugging para qualquer um dos 16 níveis de verbosidade.

AM53C974

AM53C974=host-scsi-id,target-scsi-id,max-rate,max-offset

Configuração de adaptadoras SCSI BusLogic (’BusLogic=’)

BusLogic=N1,N2,N3,N4,N5,S1,S2,...

Para uma discussão mais ampla dos parâmetros de linha de comandos da BusLogic, veja /usr/src/linux/drivers/scsi/BusLogic.c (linhas 3149-3270 na versão do kernel que estou examinando). O texto abaixo é um extrato muito resumido.

Os parâmetros N1-N5 são completos. Os parâmetros S1,... são strings. N1 é o endereço de E/S no qual a adaptadora SCSI está localizada. N2 é o Tagged Queue Depth (profundidade da fila entre tags) para uso em dispositivos alvo que suportem Tagged Queuing. N3 é o Bus Settle Time (tempo de acomodação do barramaento) em segundos. Esta é a quantidade de tempo a ser aguardado entre um reset da controladora que inicia o reset do barramento SCSI e a emissão de comandos SCSI. N4 é o Local Options (opções locais) (para uma controladora.). N5 é o Global Options (opções globais) (para todas as controladoras.).

As opções de strings são usadas para dar controle sobre Tagged Queuing (TQ:Default, TQ:Enable, TQ:Disable, TQ:<Per-Target-Spec>), sobre Error Recovery (recuperação de erro (ER:Default, ER:HardReset, ER:BusDeviceReset, ER:None, ER:<Per-Target-Spec>) e sobre Host Adapter Probing (verficação de controladora) (NoProbe, NoProbeISA, NoSortPCI).

Configuração de EATA/DMA
A lista padrão de portas i/o a serem verificadaspodem ser modificadas por:

eata=iobase,iobase,....

Configuração de Future Domain TMC-16x0

fdomain=iobase,irq[,adapter_id]

Configuração de controladora SCSI Great Valley Products (GPV)

gvp11=dma_transfer_bitmask

Configuração de Future Domain TMC-8xx, TMC-950

tmc8xx=mem_base,irq

O valor mem_base é o valor da região I/O mapeada pela memória que a placa usa. Ele será um dos seguintes valores: 0xc8000, 0xca000, 0xcc000, 0xce000, 0xdc000, 0xde000.

Configuração de IN2000

in2000=S

Onde S é uma string separada de itens ’palavra-chave[:valor]’ separados por vírgula. Palavras chaves reconhecidas (possivelmente com valor) são: ioport:addr, noreset, nosync:x, period:ns, disconnect:x, debug:x, proc:x. Para as funções desses parâmetros, veja /usr/src/linux/drivers/scsi/in2000.c.

Configuração de NCR5380 e NCR53C400
A forma do argumento de inicialização é:

ncr5380=iobase,irq,dma

ou

ncr53c400=iobase,irq

Se a placa não usa interrupções, um valor de IRQ de 255 (0xff) desabilitará interrupções. Um IRQ 254 significa autoverificação. Mais detalhes podem ser encontrados em /usr/src/linux/drivers/scsi/README.g_NCR5380.

"Configuração de NCR53C8xx"

ncr53c8xx=S

onde S é uma string de itens ’palavra-chave:valor’ separados por vírgula. Palavras-chaves reconhecidas: mpar (master_parity), spar (scsi_parity), disc (disconnection), specf (special_features), ultra (ultra_scsi), fsn (force_sync_nego), tags (default_tags), sync (default_sync), verb (vberbose), debug (debug), burst (burst_max). Para a função dos valores assinalados, veja /usr/src/linux/drivers/scsi/ncr53c8xx.c.

Configuração de NCR53c406c

ncr53c406a=iobas[,irq[,fastpio]]

Especifique irq = 0 para modo de drivers sem interrupção. Configure fastpio = 1 para modo pio rápido, 0 para modo lento.

Configuração de IOMEGA PPA3

ppa=iobase[,speed_high[,speed_low[,nybble]]]

Aqui ’iobase’ é o endereço da porta paralela (padrão 0x378), (padrão 6) e ’nybble’ é uma booleana ’force nybble (4-bit) mode)’ (padrão 0=false). Veja também /usr/src/linux/driversscsi/README.ppa.

Configuração de Pro Audio Spectrum
O PAS-16 usa um chip SCSI NC5380 e modelos mais recentes suportam configuração sem jumpers. A forma do argumento de inicialização é:

pas16=iobase,irq

A única diferença é que se você puder especificar um valor de IRQ 255, que dirá ao driver para trabalhar no modo sem interrupção, embora com perda de performance. A iobase padrão é usualmente 0x388.

Configuração de Seagate ST-0x
Se sua placa não for detectada na inicialização, você terá de usar argumentos de boot, na forma:

st0x=mem_base,irq

O valor mem_base é o valor da região I/O mapeada pela memória, que a placa usa. Ele será usualmente um dos valores seguintes: 0xc8000, 0xxca000, 0xcc000, 0xce000, 0xcd000, 0xde000.

Configuração de Trantor T128
Estas placas são também baseadas no chip NCR5380 e aceita as seguintes opções:

t128=mem_base,irq

Os valoes válidos para mem_base são os seguintes: 0xcc000, 0xc8000, 0xdc000, 0xd8000.

Configuração de UltraStor 14F/34F
A lista padrão de portas i/o a serem verificadas podem ser modificadas por:

eata=iobase,iobase,....

Configuração de WD7000

wd7000=irq,dma,iobase

Configuração de controladora SCSI Commodore Amiga A2091/509

wd33c93=S

Onde S é uma string de opções separadas por vírgula. Opções reconhecidas são: nosync:bitmask, nodma:x, period:ns, disconnect:x, debug:x, clock:x, next. Para detalhes, veja /usr/src/linux/drivers/scsi/wd33c93.c

DISCOS RÍGIDOS

Parâmetros do driver de disco/CDROM IDE
O driver 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 drive são especificadas usando-se ’hdX’ com ’X’ entre ’a’-’h’.

Outras opções não específicas de drive, são especificadas com o prefixo ’hd=’. Note que usando um prefixo específico de drive para uma opção não específica de drive continuará funcionando e a opção será aplicada como esperado.

Note também que ’hd=’ pode ser usado para referir-se ao próximo drive não especificado na sequência (a, ..., h). Para as discussões seguintes, a opção ’hd=’ será citada brevemente. Veja o arquivo README.ide em linux/drivers/block para maiores detalhes.

As opções ’hd=cyls,heads,sects[,wpcom[,irq]]’
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 drive reside e não um parâmetro específico de drive.

A opção ’hd=serialize’
O chip de interface dual IDE CMD-640 é quebrado em seu próprio projeto, pois quando os drives da interface secundária são usados ao mesmo tempo que os drives da interface primária, isto corromperá seus dados. Usando esta opção, diz-se ao driver para assegurar-se que as interfaces nunca serão usadas ao mesmo tempo.

A opção ’hd=dtc2278’
Esta opção diz ao driver que você possui uma interface IDE DTC-2278D. O driver então tenta executar operações DTC específicas para habilitar a segunda interface e habilitar modos de transferência mais velozes.

A opção ’hd=noprobe’
Não há verificação do drive especificado. Por exemplo:

hdb=noprobe hdb=1166,7,17

desabilitará a verificação, mas continuará especificando a geometria do drive, para que possa ser registrado como um bloco de dispositivo válido e, conseqüentemente, utilizável.

A opção ’hd=nowerr’
Alguns drives aparentemente tem o WRERR_STAT um tanto imobilizado. Essa opção habilita um paliativo para esses dispositivos quebrados.

A opção ’hd=cdrom’
Isso diz ao driver 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.

Opções do driver de disco standard ST-506 (’hd=’)
O driver de disco standard aceita argumentos de geometria de discos similares ao driver IDE. Note, contudo, que ele só espera três valores (C/H/S) -- algum mais ou algum menos e o driver irá ignorar-te silenciosamente. Além disso, só aceita ’hd=’ como argumento, i.e. ’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.

Opções do driver de disco XT (’xd=’)
Se você for desafortunado o suficiente para estar usando uma dessas velhas placas de 8 bits que movem dados a gritantes 125kB/s, então aqui está a solução. Se a placa não for reconhecida, você terá de usar um argumento de boot, na forma:

xd=type,irq,iobase,dma_chan

O valor ’type’ especifica o fabricante da placa em particular, conforme segue: 0=genérica; 1=DTC; 2,3,4=Western Digital, 5,6,7=Seagate; 8=OMTI. A única diferença entre múltiplos tipos de um mesmo fabricante é a string do BIOS usados na detecção, que não são utilizados se o valor ’type’ estiver especificado.

A função ’xd_setup()’ não checa os valores e assume que você inseriu os quatro valores. Não a desaponte. Aqui está um exemplo de uso para uma controladora WD1002 com o BIOS removido/desabilitado, usando-se o parâmetro ’padrão’ da controladora XT:

xd=2,5,0x320,3

Discos removíveis Syquest EZ*

ez=iobase[,irq[,rep[,nybble]]]

DISPOSITIVOS IBM DE BARRAMENTO MCA
Veja também /usr/src/linux/Documentation/mca.txt.

Discos rígidos PS/2 ESDI
É possível especificar a geometria desejada no momento da inicialização:

ed=cyls,heads,sectors

Para um Thinkpad-720, adicione a opção:

tp720=1

Configuração de subsistema SCSI Microchannel IBM

ibmmcascsi=N

onde ’N’ é o pun (SCSI ID) do subsistema.

CD-ROMS (não-SCSI/ATAPI/IDE)

Interface Aztech
A sintaxe para esse tipo de placa é:

aztcd= iobase,[,magic_number]

Se você configurar o ’magic_number’ para 0x79, então o driver tentará e rodará de qualquer forma, no caso de uma versão desconhecida de ’firmware’. Os outros valores são ignorados.

CD-ROM MicroSolutions ’backpack’
Sintaxe:

bpcd=iobase

Interface Sony CDU-31A e CDU-33A
Esta interface de CD-ROM é encontrada em algumas placas de som Pro Audio Spectrum e outras placas fornecidas pela Sony. A sintaxe é a seguinte:

cdu31a=iobase,[,irq[,is_pas_card]]

Especificando um valor de IRQ 0, diz-se ao driver que interrupções de hardware não são suportadas (como em algumas placas PAS). Se sua placa suporta interrupções, você deve usá-las, pois as mesmas reduzem a utilização de CPU pelo driver.

O parâmetro is_pas_card deve ser inserido como ’PAS’, se se estiver usando uma placa Pro Audio Spectrum e, em outra circunstância, não deverá ser especificado.

Interface Sony CDU-535
A sintaxe para essa interface de CD-ROM é:

sonycd535=iobase[,irq]

Um ’zero’ pode ser utilizado como valor de base I/O como um ’possuidor de lugar’ se alguém desejar especificar um valor de IRQ.

Interface GoldStar
A sintaxe para essa interface de CD-ROM é:

gscd=iobase

Interface de CD-ROM ISP-16
Sintaxe:

isp16=[iobase[,irq[,dma[,type]]]]

(três inteiros e uma string). Se ’type’ for dado como ’noisp16’, a interface não será configurada. Outros tipos reconhecidos são: ’Sanyo’, ’Sony’, ’Panasonic’ e ’Mitsumi’.

A interface padrão Mitsumi
A sintaxe para essa interface de CD-ROM é:

mcd=iobase,[,irq[,wait_value]]

O valor wait_value é utilizado como um valor de timeout interno, para quem esteja tendo problemas com seus drive e pode ou não ser implementado, dependendo de um ’#define’ da compilação. O Mitsumi FX400 é um leitor de CD-ROM IDE/ATAPI e não usa o driver ’mcd’.

Interface Mitsumi XA/Multisession
Isto é para o mesmo hardware acima, mas o driver possui características adicionais. Sintaxe:

mcdx=iobase[,irq]

Interface Optics Storage
A sintaxe para esse tipo de placa é:

optcd=iobase

Interface Phillips CM206
A sintaxe para esse tipo de placa é:

cm206=[iobase][,irq]

O driver assume que números entre 3 e 11 são valores de IRQ e os números entre 0x300 e 0x370 são portas I/O, então você pode especiicar um ou ambos os números, em qualquer ordem. Também é aceita a forma ’cm206=auto’, para habilitar autoverificação.

Interface Sanyo
A sintaxe para esse tipo de placa é:

sjcd=iobase[,irq[,dma_channel]]

Interface SoundBlaster Pro
A sintaxe para esse tipo de placa é:

sbpcd=iobase,type

onde ’type’ é um das seguintes strings (sensível a caixa) ’SoundBlaster’, ’LaserMate’ ou ’SPEA’. A base I/O é aquela da interface do CD-ROM, não a da parte de som da placa.

DISPOSITIVOS ETHERNET

Drivers diversos usam argumentos diversos, mas todos eles, ao menos, se parecem, usando um IRQ, um valor base de porta I/O 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 tipo de placa/driver. 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 I/O no exemplo acima, diz ao driver 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/drivers, onde utilizados. Leitores interessados devem encaminhar-se a seção daquele documento referente especificamente à suas placas.

DRIVER DE LEITOR DE DISQUETE

Há muitas opções de drivers de leitores de disquete e estão todos listados em README.fd, em linux/drivers/block. Esta informação foi tirada diretamente de tal arquivo.

floppy=mask,allowed_drive_mask
Configura o ’bitmask’ de drives permitidos para ’drives permitidos para mask’. Por padrão, apenas as unidades 0 e 1 de cada controladora de disquetes são permitidos. Isso ocorre porque certos hardwares não padrão (placas-mães ASUS PCI) ’bagunçam’ o teclado quando acessam as unidades 2 ou 3. Essa opção está um tanto defasada pela opção de cmos.

floppy=all_drives
Configura o ’bitmask’ de drives permitidos para ’todos os drives’. Use se você possuir mais de dois drives conectados a uma controladora.

floppy=asus_pci
Configura o ’bitmask’ para permitir apenas as unidades 0 e 1 (padrão).

floppy=daring
Diz ao driver de disquete que você possui uma controladora de disquetes bem comportada. Permite operação mais eficiente e uniforme, mas pode falhar em certas controladoras. Pode também aumentar a velocidade de certas operações.

floppy=0,daring
Diz ao driver que sua controladora deve ser usada com cuidado.

floppy=one_fdc
Diz ao driver que você possui apenas uma controladora de disquete (padrão).

floppy=two_fdc ou floppy=address,two_fdc
Diz ao driver de disquete que tem duas controladoras de disquete. Assume-se que a segunda controladora está endereçada. Se nenhum endereço for inserido, 0x370 será adotado.

floppy=thinkpad
Diz ao driver de disquete que você possui um ’Thinkpad’. Os ’Thinkpads’ usam uma convensão inversa para a linha de troca de discos.

floppy=o,thinkpad
Diz ao driver de disquete que você não possui um ’Thinkpad’.

floppy=drive,type,cmos
Configura o tipo de drive do CMOS para ’type’. Adicionalmente, esse drive é permitido no ’bitmask’. Isso é útil se você tem mais de dois drives de disquetes (apenas dois podem ser descritos no CMOS físico) ou, se seu BIOS usa tipos de CMOS não padrão. Configurando o CMOS para ’0’ para os dois primeiros drives (padrão), faz com que o driver de disquete leia o CMOS físico para esses drives.

floppy=unexpected_interrupts
Exibe uma mensagem de aviso quando uma interrupção inesperada é recebida (funcionamento padrão).

floppy=no_unexpected_interrupts ou floppy=L40SX
Não exibe mensagens de aviso quando uma interrupção inesperada é recebida. Isso é necessário em laptops IBM L40SX em certos modos de vídeo. (Parece que há uma relação entre o vídeo e o drive de disquete. As interrupções inesperadas afetam apenas o desempenho e podem ser seguramente ignoradas.)

DRIVER DE SOM

O driver de som pode também aceitar argumentos de inicialização para ignorar os valores compilados internamente. Isso não é recomendado, pois é um pouco complexo. Isto é descrito no arquivo Readme.Linux, em linux/drivers/sound. Aceita um argumento de inicialização na forma:

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 I/O 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 driver de som inteiramente.

DRIVERS DE ISDN

Driver de ISDN ICN
Sintaxe:

icn=iobase,membase,icn_id1,icn_id2

onde ’icn_id1,icn_id2’ são duas strings utilizadas para identificar a placa nas mensagens do kernel.

Driver ISDN PCBIT
Sintaxe:

pcbit=membase1,irq1[,membase2,irq2]

onde ’membaseN’ é a base de memória compartilhada da enésima placa e e membase 0xD0000.

Driver ISDN Teles
Sintaxe:

teles=iobase,irq,membase,protocol,teles_id

onde ’iobase’ é o endereço da porta i/o da placa, ’membase’ é o endereço da memória compartilhada da placa, ’irq’ é o canal da interrupção que a placa usa e ’teles_id’ é uma string de identificação ASCII única.

DRIVERS DE PORTAS SERIAIS

Driver serial multiportas RISCom/8
Sintaxe:

riscom=iobase1[,iobase2[,iobase3[,iobase4]]]]

Mais detalhes podem ser encontrados em /usr/src/linux/Documentation/riscom8.txt.

Driver DigiBoard (’digi=’)
Se esta opção for usada, deverá possuir exatamente seis parâmetros. Sintaxe:

digi=status,type,altpin,numports,iobase,membase

Os parâmetros devem ser inseridos como inteiros ou como strings. Se forem usadas strings, então ’iobase’ e ’membase’ devem ser inseridos como hexadecimal. Os argumentos inteiros (poucos, mas devem ser dados) são, em ordem: status (Habilitar(1) ou Deabilitar(0) esta placa), type (PC/Xi(0), PC/Xe(1), PC/Xeve(2), PC/Xem(3)), altpin (Habilitar(1) ou Desabilitar(0) alternação da disposição da pinagem), numports (número de portas na placa), iobase (porta I/O onde a placa está configurada (em HEXA)), membase (base da janela de memória (em HEXA)). Assim, os seguintes argumentos do prompt de inicialização são equivalentes:

digi=E,PC/Xi,D,16,200,D0000
digi=1,0,0,16,0x200,851968

Mais detalhes podem ser encontrados em /usr/src/linux/Documentation/digiboard.txt.

Radio modem serial/paralelo Baycom
Sintaxe:

baycom=iobase,irq,modem

Aqui estão exatamente três parâmetros: para algumas placas, insira alguns comandos ’baycom=’. O parâmetro ’modem’ é uma string que pode ter um dos valores ’ser12’, ’ser12*’, ’par96’, ’par96*’. Aqui, o ’*’ denota que o DCD de software deve ser usado, e Para mais detalhes, veja: /usr/src/linux/drivers/net/README.baycom.

Driver de placa de som/radio modem
Sintaxe:

soundmodem=iobase,irq,dma[,dma2[,serio[,pario]]],0,mode

Todos os parâmetros, exceto o último, são inteiros; o tolo ’0’ é necessário por conta de um bug no código de configuração. O parâmetro ’mode’ é uma string com sintaxe ’hw:modem’, onde ’hw’é um entre ’sbc’, ’wss’, ’wssfdx’ e ’modem’ é um entre

DRIVER DE LINHA DE IMPRESSORA

’lp=’
Em kernels mais recentes que 1.3.75, você pode dizer ao driver da impressora que portas usar e quais portas não usar. O mais recente é mais prático, se você não quer que o driver de impressora exigindo todas as portas paralelas disponíveis, pois assim outros drivers (e.g. PLIP, PPA) podem usá-las.

O formato do argumento é multiple i/o, IRQ pairs. Por exemplo, usará o IRQ 7 para a porta 0x378. A porta em ’0x278’ (se houver uma) não será verificada, uma vez que a autoverificação só ocorre na ausência de um argumento ’lp=’. Para desabilitar o driver de impressora completamente, pode-se usar ’lp=0’.

Driver de WDT500/501
Sintaxe:

wdt=io,irq

DRIVERS DE MOUSE

O driver do busmouse aceita apenas um parâmetro, que será o valor do IRQ a ser usado pelo hardware.

’msmouse=irq’
E exatamente o mesmo para o driver do msmouse.

Configuração do mouse ATARI
atamouse=threshold,[,y-threshold]

Se apenas um argumento for dado, ele será usado tanto para ’x-threshold’ quanto para ’y-threshold’. Se não, o primeiro argumento é ’x-threshold’ e o segundo ’y-threshold’. Estes valores devem estar entre 1 e 20 (inclusive); o padrão é ’2’.

HARDWARE DE VÍDEO

’no-scroll’
Esta opção diz ao driver do console para não utilizar a rolagem de hardware (onde uma rolagem é efetuada movendo-se a origem da tela da memória de vídeo, ao invés de mover os dados). Isso é necessário em algumas máquinas Braille.

AUTORES

Linus Torvalds (e outros)

VEJA TAMBÉM

klogd(8), lilo.conf(5), lilo(8), mount(8), rdev(8).

Grande parte dessa página de manual é derivada do "Boot Parameter HOWTO" (versão 1.0.1), escrito por Paul Gortmaker. Algumas informações adicionais podem ser encontradas nesse (ou em uma versão mais recente) HOWTO.

TRADUZIDO POR LDP-BR EM 03/08/2000.

Valter ’Geddy’ Ferraz S. <geddy [AT] lawyer.com> (tradução) André L. Fassone Canova <lonelywolf [AT] blv.br> (revisão)