Você está na página 1de 20

Viso geral

Este artigo o ajudar a entender a sequncia de boot a partir do BIOS para a


concluso da inicializao e mostrar como:
Fornecer comandos comuns para o carregador de boot
Fornecer opes ao kernel no tempo de boot
Verificar eventos de boot nos arquivos de log
Alguns aspectos do processo de boot so comuns maioria dos sistemas, mas
alguns aspectos relacionados a hardware so especficos a uma arquitetura em
particular. O material neste artigo direcionado especificamente para sistemas
de arquitetura x86 e x86_64 usando BIOS para inicializar o sistema. Um
sistema mais novo usando a Extensible Firmware Interface (ou EFI) e a GUID
Partition Table (GPT) est ganhando popularidade para unidades maiores que
2TB de tamanho. Isso atualmente no parte dos objetivos de LPI e no
coberto neste artigo. Consulte os Recursos para obter mais informaes.
A menos que de outra forma observado, os exemplos neste artigo geralmente
usam Fedora 14, com um kernel 2.6.35. Os resultados em outros sistemas
podem variar.
Este artigo o ajuda a se preparar para o Objective 101.2 do Tpico 101 do
exame 101 do Linux Professional Institute's Junior Level Administration (LPIC-
1). O objetivo tem um peso 3.
Pr-requisitos
Comunique-se com o Ian
Ian um dos nossos autores mais populares e prolficos. Navegue na todos os
artigos do Ian no developerWorks. Confira perfil do Ian e entre em contato com
ele e com outros autores e leitores no My developerWorks.
Para aproveitar ao mximo os artigos nesta srie, necessrio ter um
conhecimento bsico de Linux e um sistema Linux funcional no qual voc
possa praticar os comandos descritos neste artigo. s vezes, verses
diferentes de um programa formatam a sada de forma diferente; portanto, os
seus resultados podem no ser exatamente iguais s listagens e figuras
mostradas aqui. Em particular, as configuraes do BIOS variam muito entre os
sistemas, e as telas iniciais do carregador de boot variam muito entre as
distribuies.
Voc tambm deve estar familiarizado com o material no nosso artigo, Aprenda
Linux 101: Layout do disco rgido."
Voltar para parte superior
Sequncia de boot
Antes de comearmos a falar de carregadores de boot, como LILO e GRUB,
vamos revisar como um PC inicia ou inicializa. Cdigo
chamadoBIOS (para Basic Input Output Service) armazenado em uma
memria no voltil, como ROM, EEPROM ou flash. Quando o PC ligado ou
reinicializado, esse cdigo executado e realiza um power-on self test (POST)
para verificar a mquina. Ele tambm determinar a unidade de boot a partir dos
dispositivos de armazenamento removveis ou fixos disponveis e carrega o
primeiro setor do Master Boot Record (MBR) nessa unidade. A unidade pode
ser um disco rgido tradicional, uma unidade de estado slido, um dispositivo
USB ou pen-drive ou uma unidade com mdia removvel, como disquete, CD ou
DVD. Para o restante deste artigo, focaremos em discos rgidos, mas o
processo similar para os outros tipos de dispositivos de armazenamento.
Conforme discutido no artigo "Aprenda Linux 101: Layout do disco rgido," o
MBR tambm contm a tabela de partio, ento a quantidade de cdigo
executvel no MBR inferior a 512 bytes, o que no muito cdigo. Observe
que todos os discos, mesmo um disquete, CD ou DVD, ou dispositivo de
estado slido, como um pen-drive, contm cdigo executvel no seu MBR,
mesmo se o cdigo for apenas suficiente para enviar uma mensagem como
"Disco no inicializvel na unidade A:". Esse cdigo carregado pelo BIOS a
partir do primeiro setor chamado decarregador de boot de primeiro
estgio ou carregador de boot de estgio 1.
A unidade de disco rgido padro MBR usada pelos sistemas operacionais MS
DOS, PC DOS e Windows verifica a tabela de partio para encontrar uma
partio primria no disco de boot que esteja marcado como ativo, carrega o
primeiro setor dessa partio e passa o controle para incio do cdigo
carregado. Essa nova parte do cdigo tambm conhecida como registro de
boot de partio. O registro de boot de partio na verdade outro carregador
de boot de estgio 1, mas este tem inteligncia apenas suficiente para carregar
um conjunto de blocos da partio. O cdigo nesse novo conjunto de blocos
chamado de carregador de boot de estgio 2. Conforme usado pelo MS-DOS e
pelo PC-DOS, o carregador de estgio 2 segue diretamente para carregar o
restante do sistema operacional. assim que seu sistema operacional inicia-se
por sua autoinicializao at que esteja ativo e operando.
Isso funciona bem para um sistema com um nico sistema operacional. O que
acontece quando deseja ter vrios sistemas operacionais, digamos OS/2,
Windows XP e trs distribuies diferentes do Linux? Voc poderia usa algum
programa (como o programa DOS FDISK) para alterar a partio ativa e
reinicializar. Isso complicado. Alm disso, um disco pode ter apenas quatro
parties primrias, e o MBR padro pode ter apenas uma partio primria
ativa; no pode inicializar a partir de uma partio lgica. Mas nosso exemplo
hipottico citou cinco sistemas operacionais, cada um deles precisando de uma
partio. Oops!
A soluo est em usar algum cdigo especial que permita ao usurio escolher
qual sistema operacional inicializar. Exemplos incluem:
Loadlin
Um programa executvel do DOS que chamado a partir de um sistema
DOS em execuo para inicializar uma partio do Linux. Isso era
popular ao configurar um sistema de diversas inicializaes era um
processo complexo e arriscado.
Gerenciador de boot OS/2
Um programa instalado em uma pequena partio dedicada. A partio
est marcada como ativa, e o processo padro de boot MBR inicia o
Gerenciador de Boot OS/2, que apresenta um menu que permite
escolher qual sistema operacional inicializar.
Um carregador de boot inteligente
Um programa que pode residir em uma partio do sistema operacional
e chamado pelo registro de boot da partio de uma partio ativa ou
pelo registro de boot mestre. Exemplos incluem:
BootMagic, parte do Norton PartitionMagic
LILO, o LInux LOader
GRUB, o carregador GRand Unified Boot (agora referido como GRUB
Legacy)
GRUB2, um novo carregador de boot que est comeando a aparecer
em distribuies comuns
Evidentemente, se voc puder passar o controle do sistema para algum
programa que tenha mais de 512 bytes de cdigo para realizar sua tarefa,
ento no difcil demais permitir a inicializao de parties lgicas, ou
inicializao de parties que no esto na unidade de boot. Todas essas
solues permitem essas possibilidades, seja porque podem carregar um
registro de boot a partir de uma partio arbitrria ou porque tm algum
entendimento de que arquivo ou arquivos carregar para iniciar o processo de
boot.
Carregamento da cadeia
Quando um gerenciador de boot obtm controle, uma coisa que pode carregar
outro gerenciador de boot. Isso chamado de carregamento em cadeia, e
ocorre com mais frequncia quando o gerenciador de boot que est localizado
no master boot record (MBR) carrega o carregador de boot que est em um
registro de boot da partio. Isso quase sempre feito quando o carregador de
boot do Linux solicitado a inicializar uma partio do Windows ou DOS, mas
tambm pode ser feito quando o carregador de boot do Linux para um sistema
for solicitado a carregar o carregador de boot para outro sistema. Por exemplo,
possvel usar LILO em uma partio para fazer o carregamento em cadeia de
GRUB em outra partio para acessar o menu GRUB para essa partio.
Carregadores de boot do Linux
A partir daqui, focaremos no LILO e no GRUB, uma vez que so os
carregadores de boot includos na maioria das distribuies do Linux. O LILO
usado h algum tempo. O GRUB mais novo. O GRUB original agora se
tornou o GRUB Legacy, e o GRUB2 est sendo desenvolvido sob a orientao
da Free Software Foundation (consulte os Recursos para ver os detalhes).
Discutiremos o GRUB2 brevemente para mostrar as principais diferentes e
como o GRUB e o GRUB2 podem coexistir. Para o restante deste artigo,
presumimos que GRUB significa GRUB Legacy, a menos que o contexto
especificamente implique GRUB2. Uma nova verso do LILO,
chamada ELILO (que designada para sistemas de inicializao que usam
a Extensible Firmware Interfaceou EFI da Intel, em vez de BIOS) tambm est
disponvel. Consulte os Recursos para saber mais sobre GRUB2 e ELILO.
O processo de instalao para a sua distribuio provavelmente fornecer uma
opo de definir qual carregador de boot configurar. GRUB ou LILO
funcionaro com a maioria dos discos modernos sob 2TB de tamanho, embora
algumas distribuies, principalmente Fedora, no enviem mais LILO. Lembre-
se de que a tecnologia de disco avanou rapidamente, ento voc deve
sempre garantir que seu carregador de boot escolhido, bem como sua
distribuio do Linux escolhida (ou outro sistema operacional), assim como o
BIOS do sistema, funcionem com seu disco novo. Falha em fazer isso pode
resultar em perda de dados. Da mesma forma, se estiver adicionando uma
nova distribuio a um sistema existente, pode precisar garantir que tenha o
ltimo LILO ou GRUB no seu MBR. Tambm precisar de uma verso
razoavelmente mais nova do GRUB ou LILO se planejar inicializar a partir de
um disco LVM ou RAID.
Os carregadores de estgio 2 usados em LILO e GRUB permitem escolher
entre vrios sistemas operacionais ou verses para carregar. Entretanto, o
LILO e o GRUB diferem significativamente no sentido de que uma mudana no
sistema exige que voc use um comando para recriar a configurao de boot
do LILO sempre que atualizar um kernel ou tiver certas outras mudanas no
seu sistema, enquanto o GRUB pode fazer isso atravs de um arquivo de texto
de configurao que pode ser editado. O GRUB2 tambm requer uma
recriao a partir de um arquivo de configurao que normalmente
armazenado em /etc.
Para resumir o processo de boot para PCs:
1. Quando um PC ligado, o BIOS (Basic Input Output Service)
realiza um autoteste.
2. Quando a mquina aprovada no autoteste, o BIOS carrega
o Master Boot Record (ou MBR, normalmente a partir do primeiro
setor de 512 bytes da unidade de boot). A unidade de boot
normalmente o primeiro disco rgido no sistema, mas tambm
pode ser um disquete, CD ou chave USB.
3. Para uma unidade de disco rgido, o MBR carrega um carregador
de boot de estgio 1, que normalmente tambm um carregador de
boot de estgio 1 LILO ou GRUB em um sistema Linux. Esse
outro registro de setor nico de 512 bytes.
4. O carregador de boot de estgio 1 normalmente carrega uma
sequncia de registros chamada de carregador de boot de estgio 2
(ou s vezes o carregador de estgio 1.5).
5. O carregador de estgio 2 carrega o sistema operacional. Para
Linux, esse o kernel e possivelmente um disco RAM inicial (initrd).
Seu sistema deve poder instalar qualquer um dos carregadores de boot mais
populares LILO (o LInux LOader) ou GRUB (o carregador GRand Unified Boot).
Deve ser possvel usar o carregador de boot escolhido para inicializar
normalmente conforme descrito acima. Consulte o artigo relacionado "Aprenda
Linux, 101: Gerenciadores de boot" se precisar revisar a instalao do
carregador de boot ou a inicializao bsica.
Para influenciar o processo de boot do sistema, possvel:
1. Altere o dispositivo a partir do qual voc inicializa. Normalmente
possvel inicializar a partir de uma unidade de disco rgido, mas s
vezes pode ser necessrio inicializar a partir de um disquete, um
memory key USB ou uma rede. Configurar esses dispositivos de
boot alternativos exige que seu BIOS esteja configurado
adequadamente e pode exigir um pressionamento de tecla em
particular durante o boot para exibir as opes. As opes em um
dos meus sistemas esto ilustradas na Figura 1. O mtodo para
configurar os dispositivos de boot e selecionar um dispositivo de
boot na inicializao especfico para o sistema e o BIOS do
sistema. Tambm est alm do escopo dos requisitos dos objetivos
desta LPI, ento consulte a documentao do sistema.
Figura 1. Escolhendo um dispositivo de boot

2. possvel interagir com o carregador de boot para selecionar qual
de vrias configuraes possveis inicializar. Voc aprender como
fazer isso tanto para LILO quanto para GRUB neste artigo.
3. possvel usar GRUB ou LILO para enviar parmetros para o
kernel para controlar a maneira como seu kernel inicia o sistema
quando ele foi carregado pelo carregador de boot.
Voltar para parte superior
LILO
O arquivo de configurao do LILO assume como padro /etc/lilo.conf. Lista 1
mostra um exemplo de um sistema que est executando no momento
Slackware em /dev/sda10, Windows em /dev/sda1 e Fedora 14 em /dev/sdb12.
Os exemplos foram desenvolvidos usando/sbin/liloconfig .
Lista 1. Configurao LILO de amostra
# LILO configuration file
# generated by 'liloconfig'
#
# Start LILO global section
lba32 # Allow booting past 102t! cylinder wit! a recent "IOS
boot # /de$/root
#co%pact # faster& but won't wor' on all syste%s(
# "oot ")* I%age(
# "it%ap in ")* for%at+ ,0-.0-.
bit%ap # /boot/slac'(b%p
# )enu colors /foreground& bac'ground& s!adow& !ig!lig!ted
# foreground& !ig!lig!ted bac'ground& !ig!lig!ted s!adow0+
b%p1colors # 222&0&222&0&222&0
# Location of t!e option table+ location -& location y& nu%ber of
# colu%ns& lines per colu%n /%a- 120& 3spill3 /t!is is !ow %any
# entries %ust be in t!e first colu%n before t!e ne-t begins to
# be used( 4e don't specify it !ere& as t!ere's 5ust one colu%n(
b%p1table # ,0&,&1&1,
# 6i%er location -& ti%er location y& foreground color&
# bac'ground color& s!adow color(
b%p1ti%er # ,2&27&0&222
# Standard %enu(
# Or& you can co%%ent out t!e bit%ap %enu abo$e and
# use a boot %essage wit! t!e standard %enu+
#%essage # /boot/boot8%essage(t-t

# Append any additional 'ernel para%eters+
append#3 $t(default8utf.#03
pro%pt
ti%eout # 300
# 9or%al :;A console
$ga # nor%al
# :<SA fra%ebuffer console = 102-7,.-,'
# $ga#7>1
# :<SA fra%ebuffer console = 102-7,.-32'
# $ga#7>0
# :<SA fra%ebuffer console = 102-7,.-22,
# $ga#773
# :<SA fra%ebuffer console = .00-,00-,'
# $ga#7..
# :<SA fra%ebuffer console = .00-,00-32'
# $ga#7.7
# :<SA fra%ebuffer console = .00-,00-22,
# $ga#771
# :<SA fra%ebuffer console = ,0-.0-,'
# $ga#7.2
# :<SA fra%ebuffer console = ,0-.0-32'
# $ga#7.
# :<SA fra%ebuffer console = ,0-.0-22,
# $ga#7,>
# ra%dis' # 0 # paranoia setting
# <nd LILO global section
# Linu- bootable partition config begins
i%age # /boot/$%linu?
root # /de$/sda10
label # Slac'ware13
read1only # *artitions s!ould be %ounted read1only for c!ec'ing
# Linu- bootable partition config ends
# 4indows bootable partition config begins
ot!er # /de$/sda1
label # 4indows
table # /de$/sda
# 4indows bootable partition config ends
# Linu- bootable partition config begins
i%age # /boot/$%linu?
root # /de$/sdb13
label # @edora1
read1only # *artitions s!ould be %ounted read1only for c!ec'ing
# Linu- bootable partition config ends
O arquivo de configurao em Lista 1 contm o conjunto de parmetros bitmap
para /boot/slack.bmp. Essa uma imagem bitmap que ser exibida em vez do
prompt de texto LILO mais tradicional, como mostrado em Figura 2. A imagem
de boot padro, Slackware13, realada e as outras duas, Windows e
Fedora14, so mostradas abaixo. Use as teclas de cursor para selecionar uma
imagem de boot e ento pressioneEnter para inicializar essa escolha. E o
tempo limite no arquivo de configurao no for 0, o sistema aguardar tal
nmero em dcimos de segundo, 300 dcimos ou 30 segundos, no nosso
exemplo, e ento inicializar a opo selecionada.
Figura 2. Tela de boot do LILO Slackware 13

Usando um prompt de texto
No exemplo acima, usamos um bipmap para exibir as opes de boot. O
prompt de boot LILO tradicional foi um prompt de texto muito resumido similar
ao que se v ao pressionar Tab . possvel digitar o nome de uma distribuio
para inicializar ou pressionar Enter para inicializar a primeira. Isso est
ilustrado na Lista 2 e Figura 3.
Lista 2. Prompt de texto bsico do LILO
"oot de Slac'ware13 4indows @edora1+
Figura 3. Prompt de texto bsico do LILO

Em vez do prompt grfico, possvel obter um prompt de texto comentando as
entradas bit%ap e b%p--- e removendo o comentrio do
parmetro %essage para que aponte para um arquivo contendo a mensagem de
texto que voc gostaria de exibir. O prompt de texto no mais resumido e
agora usa a biblioteca de curses para exibir suas escolhas. possvel digitar
parmetros como antes. Na Figura 4, nosso arquivo de mensagem contm o
texto "Booting pinguino >>>", e novamente inicializamos para o modo de um
nico usurio usando S .
Figura 4. Tela de boot de texto (curses) do LILO Slackware 13

Observao: Pode ser necessrio segurar a tecla Shift durante o boot para ver
o prompt, uma vez que o sistema pode ser configurado de modo que efetue o
bypass do prompt.
O comando lilo
Lembre-se de que sempre que fizer alteraes a /etc/lilo.conf, ou sempre que
instalar um novo kernel, voc deve executar lilo. O programalilo regrava o
MBR ou o registro de boot da partio para refletir suas alteraes, incluindo o
registro do local do disco absoluto do kernel. Se seu arquivo de configurao
incluir imagens Linux de vrias parties, preciso montar as parties, porque
o comando lilo precisa acessar a partio para localizar a imagem.
Alm de exibir o arquivo de configurao LILO, preciso usar a opo 1A do
comando lilo para exibir informaes sobre as opes de boot do LILO.
Adicione as opes 1$ para uma sada mais detalhada. Dois exemplos usando
o arquivo de configurao grfica de Lista 1 e o arquivo de configurao de
texto usado em Figura 4 so mostrados em Lista 3.
Lista 3. Exibindo a configurao LILO
root=ec!idna+B# lilo 1A 1C /etc/lilo1grap!ic(conf
Slac'ware13 D
4indows
@edora1

root=ec!idna+B# lilo 1A 1$ 1C /etc/lilo1te-t(conf
LILO $ersion 22(.& Copyrig!t /C0 1>>211>>. 4erner Al%esberger
Ee$elop%ent beyond $ersion 21 Copyrig!t /C0 1>>>1200, Fo!n Coff%an
Geleased 1>1@eb12007 and co%piled at 20+0>+2. on @eb 1 2010

Geading boot sector fro% /de$/root
Installed+ 6ue Sep , 12+21+> 2011

;lobal settings+
Eelay before booting+ 0(0 seconds
Co%%and1line ti%eout+ 30(0 seconds
9o unattended booting
9o *C/A6 'eyboard !ardware presence c!ec'
Always enter boot pro%pt
"oot1ti%e "IOS data sa$ed
"oot1ti%e "IOS data auto1suppress write bypassed
Large %e%ory /H12)0 is 9O6 used to load initial ra%dis'
9on1GAIE installation
"oot de$ice will not be used for t!e )ap file
Serial line access is disabled
"oot pro%pt %essage is 10.3 bytes
9o default boot co%%and line
I%ages+
Slac'ware13 D
9o password
"oot co%%and1line won't be loc'ed
9o single1'ey acti$ation
:;A %ode+ 9OG)AL
Iernel is loaded 3!ig!3
9o initial GA) dis'
9o fallbac'
Options+ 3ro root#.0a $t(default8utf.#03
4indows
9o password
"oot co%%and1line won't be loc'ed
9o single1'ey acti$ation
9o fallbac'
9o options
@edora1
9o password
"oot co%%and1line won't be loc'ed
9o single1'ey acti$ation
:;A %ode+ 9OG)AL
Iernel is loaded 3!ig!3
9o initial GA) dis'
9o fallbac'
Options+ 3ro root#.1d $t(default8utf.#03
Carregamento em cadeia com LILO
Voc pode ter observado que a definio de partio para Windows mostra o
dispositivo (/dev/sda1), enquanto as definies de partio Slackware e Fedora
mostram uma imagem de inicializao na partio raiz, /dev/sda10 and
/dev/sdb13, respectivamente. Para sistemas em que posso ter vrias parties
inicializveis, frequentemente configuro uma pequena partio contendo
GRUB, que pode inicializar a partir de qualquer uma das outras parties,
normalmente por carregamento em cadeia, mas por outros meios quando, por
exemplo, o sistema na partio usa um carregador de boot como GRUB2. Uma
vez que a partio executa GRUB Legacy, ela pode ser carregada em cadeia.
Para adicionar uma entrada LILO para carregamento em cadeia de outra
partio, como esta partio GRUB, possvel adicionar uma entrada como
aquela em Lista 4.
Lista 4. Adicionando uma partio para GRUB de carregamento em cadeia
# Linu- bootable partition config begins
ot!er # /de$/sda2
label # ;GJ"
# Linu- bootable partition config ends
Voltar para parte superior
GRUB
O arquivo de configurao GRUB assume como padro /boot/grub/grub.conf ou
/boot/grub/menu.lst. Se ambos estiverem presentes, um normalmente ser um
link simblico para o outro. Lista 5 mostra um exemplo do mesmo sistema que
voc viu acima para LILO. Observe que dividimos as trs instrues de
definio de kernel em vrias linhas para facilitar a leitura.
Lista 5. Configurao GRUB de amostra
# grub(conf generated by anaconda
#
# 9ote t!at you do not !a$e to rerun grub after %a'ing c!anges to t!is file
# 9O6IC<+ Kou do not !a$e a /boot partition( 6!is %eans t!at
# all 'ernel and initrd pat!s are relati$e to /& eg(
# root /!d1&120
# 'ernel /boot/$%linu?1$ersion ro root#/de$/sdb13
# initrd /boot/initrd1Lgeneric1M$ersion(i%g
#boot#/de$/sdb13
default#0
ti%eout#2
splas!i%age#/!d1&120/boot/grub/splas!(-p%(g?
!idden%enu
title @edora /2(,(32(11>2(fc1(-.,8,0
root /!d1&120
'ernel /boot/$%linu?12(,(32(11>2(fc1(-.,8, ro
root#JJIE#2e22a2e012ac217d21b>.a1d2b22eff2.2a
rd89O8LJIS rd89O8L:) rd89O8)E rd89O8E)
LA9;#en8JS(J6@1. SKS@O96#latarcyr!eb1sun1,
I<K6A"L<#us r!gb Auiet
initrd /boot/initra%fs12(,(32(11>2(fc1(-.,8,(i%g
title @edora /2(,(32(131>2(fc1(-.,8,0
root /!d1&120
'ernel /boot/$%linu?12(,(32(131>2(fc1(-.,8, ro
root#JJIE#2e22a2e012ac217d21b>.a1d2b22eff2.2a
rd89O8LJIS rd89O8L:) rd89O8)E rd89O8E)
LA9;#en8JS(J6@1. SKS@O96#latarcyr!eb1sun1,
I<K6A"L<#us r!gb Auiet
initrd /boot/initra%fs12(,(32(131>2(fc1(-.,8,(i%g
title @edora /2(,(32(131>1(fc1(-.,8,0
root /!d1&120
'ernel /boot/$%linu?12(,(32(131>1(fc1(-.,8, ro
root#JJIE#2e22a2e012ac217d21b>.a1d2b22eff2.2a
rd89O8LJIS rd89O8L:) rd89O8)E rd89O8E)
LA9;#en8JS(J6@1. SKS@O96#latarcyr!eb1sun1,
I<K6A"L<#us r!gb Auiet
initrd /boot/initra%fs12(,(32(131>1(fc1(-.,8,(i%g
title ;GJ"
rootno$erify /!d0&10
c!ainloader N1
title Slac'ware 13
rootno$erify /!d0&>0
c!ainloader N1
title 4indows
rootno$erify /!d0&00
c!ainloader N1
GRUB fornece uma interface de menu. Tambm pode usar uma senha
criptografada com o algoritmo MD5 em oposio senha de texto simples do
LILO. E, talvez mais importante, alteraes feitas ao arquivo de configurao
GRUB no exigem que o GRUB seja reinstalado no MBR. Observe que muitas
distribuies automaticamente atualizam o arquivo de configurao GRUB (ou
LILO) ao atualizar para um novo nvel de kernel, mas se voc mesmo instalar
um novo kernel ou criar um novo disco RAM inicial, pode ser preciso editar o
arquivo de configurao.
O GRUB tambm no exige que uma partio seja montada para configurar
uma entrada de boot para ele. Voc observar entradas
comorai? /!d0&>0 e splas!i%age#/!d1&120/boot/grub/splas!(-p%(g?. O
GRUB refere-se aos seus discos rgidos como hd n, em que n um nmero
inteiro iniciando em 0. De maneira similar, as parties em um disco so
numeradas iniciando em 0. Observao: O GRUB2 mudou a maneira como os
discos so nomeados, ento tenha cuidado se estiver trocando entre GRUB e
GRUB2.
Assim, nesse sistema, (hd0,0) representa a partio primria do Windows
/dev/sda1, enquanto (hd0,9) representa a partio lgica Slackware
/dev/sda10. Um disquete normalmente (fd0). Lembre-se de colocar entre
aspas se estiver chamando GRUB com parmetros de um bash shell, por
exemplo, ao instalar GRUB em um disquete, chave USB ou seu MBR.
Verses mais novas do GRUB permitem usar um rtulo ou UUID para
especificar a rai? . Consulte a seo sobre "Rtulos, UUIDs e links" no artigo
relacionado. Aprenda Linux, 101: Controle de montagem e desmontagem de
sistemas de arquivos nessa srie para mais detalhes sobre rtulos e UUIDs.
Quando inicializar um sistema com GRUB, frequentemente ver uma opo
padro apresentada, conforme ilustrado na Figura 5. Se nada for feito, ser
inicializado aps um tempo limite configurado. O tempo limite especificado
em segundos, ento ti%eout#2 na Lista 5 significa um tempo limite de 5
segundos.
Figura 5. Inicializando GRUB para uma opo padro

Se voc pressionar uma tecla para interromper o boot padro, ver um menu
de opes similares quelas na Figura 6.
Figura 6. Opes do menu do GRUB

Quando o menu GRUB exibido, voc seleciona uma imagem de boot usando
as teclas de movimento do cursor para subir e descer na lista.
Planos de fundo personalizados
Se desejar uma imagem inicial diferente para GRUB, est limitado a um
arquivo X Window pixmap (.xpm) de 14 cores que deve ser gzipped. Sua
imagem JPEG favorita pode ficar um pouco diferente quando reduzida para 14
cores, ento ser preciso experimentar. possvel reduzir para 14 cores
usando um programa grfico como o GIMP, em que voc usaria a ao de
menu Image->Mode->Indexed... e definiria o campoMaximum number of
colors para 14. Ou possvel usar as ferramentas de linha de comando como
ImageMagick. Lista 6 mostra uma maneira de reduzir um original de 800x531
pixels para o formato requerido de 640x480 pixels primeiro o redimensionando
para 640 pixels de altura, ento cortando parte da imagem e reduzindo a tela
para adequar-se imagem. A seguir, reduzimos o nmero de cores para 14 e
convertemos a imagem de .jpg para .xpm. Por fim, a imagem colocada em
gzip.
Lista 6. Criando uma imagem inicial do GRUB personalizada
O identify woodenbong(5pg
woodenbong(5pg F*<; .00-231 .00-231N0N0 .1bit EirectClass 210I" 0(000u 0+00(000
O con$ert 1resi?e 3.00-,03 woodenbong(5pg woodenbong2(5pg
O con$ert 1crop 3,0-.0N0N03 Nrepage woodenbong2(5pg grub1in(5pg
O con$ert 1colors 1 grub1in(5pg grub1%enu(-p%
O g?ip grub1%enu(-p%
O shell do GRUB
Diferentemente do LILO, o GRUB comporta-se como um pequeno shell, com
vrios comandos que permite fazer aes como editar os comandos antes de
execut-los, localizar e carregar um arquivo de configurao ou exibir arquivos
usando cat . A partir do menu, possvel pressionar e em qualquer entrada
para edit-la, c para trocar para uma linha de comando GRUB, b para
inicializar o sistema p para inserir uma senha e Esc para retornar para o menu
ou para a etapa anterior. H tambm um comando grub , que cria um shell
simulado no qual possvel testar sua configurao GRUB ou suas habilidades
de comando GRUB. Alguns componentes bsicos esto disponveis no modo
de usurio normal, mas necessrio ter autoridade de raiz para executar
quaisquer comandos. Lista 7 ilustra como iniciar o shell grub como raiz. O
comando grub normalmente encontrado em /sbin ou /usr/sbin.
Lista 7. Iniciando o shell GRUB
# grub

;9J ;GJ" $ersion 0(>7 /,0I lower / 3072I upper %e%ory0

L )ini%al "ASP1li'e line editing is supported( @or t!e first word& 6A"
lists possible co%%and co%pletions( Anyw!ere else 6A" lists t!e possible
co%pletions of a de$ice/filena%e( M

grubH
Dentro do shell GRUB, o comando !elp fornece uma lista de comandos. O uso
de !elp co%%andna%e fornece ajuda para o comando chamadocommandname.
Lista 8 ilusta os comandos disponveis e a ajuda para rootno$erify .
Lista 8. Using the GRUB shell
grubH help
bloc'list @IL< boot
cat @IL< c!ainloader L11forceM @IL<
color 9OG)AL LPI;PLI;P6M configfile @IL<
de$ice EGI:< E<:IC< displayap%
display%e% find @IL<9A)<
geo%etry EGI:< LCKLI9E<G P<AE S<C6OG L !alt L11no1ap%M
!elp L11allM L*A66<G9 (((M !ide *AG6I6IO9
initrd @IL< LAG; (((M 'ernel L11no1%e%1optionM L11type#6K*<M
%a'eacti$e %ap 6O8EGI:< @GO)8EGI:<
%d2crypt %odule @IL< LAG; (((M
%odulenoun?ip @IL< LAG; (((M pager L@LA;M
partnew *AG6 6K*< S6AG6 L<9 parttype *AG6 6K*<
Auit reboot
root LE<:IC< LPE"IASMM rootno$erify LE<:IC< LPE"IASMM
serial L11unit#J9I6M L11port#*OG6M L11 set'ey L6O8I<K @GO)8I<KM
setup L11prefi-#EIGM L11stage2#S6A;<28 ter%inal L11du%bM L11no1ec!oM L11no1ed
ter%info L11na%e#9A)< 11cursor1address test$be )OE<
un!ide *AG6I6IO9 upper%e% I"K6<S
$beprobe L)OE<M

grubH help rootnoverify
rootno$erify+ rootno$erify LE<:IC< LPE"IASMM
Si%ilar to Qroot'& but don't atte%pt to %ount t!e partition( 6!is
is useful for w!en an OS is outside of t!e area of t!e dis' t!at
;GJ" can read& but setting t!e correct root de$ice is still
desired( 9ote t!at t!e ite%s %entioned in Qroot' w!ic! deri$ed
fro% atte%pting t!e %ount will 9O6 wor' correctly(

grubH
Como um exemplo prtico, possvel continuar com o exemplo anterior e usar
o comando find do GRUB para localizar arquivos de configurao. A seguir,
possvel carregar o arquivo de configurao de (hd1,12), que /dev/sdb13,
conforme ilustrado na Lista 9.
Lista 9. Usando o GRUB para localizar e carregar um arquivo de configurao GRUB
grubH find /boot/grub/menu.lst
/!d0&10
/!d0&20
/!d1&,0
/!d1&.0
/!d1&>0
/!d1&100
/!d1&110
/!d1&120

grubH configfile (hd1,12)/boot/grub/menu.lst
*ressione '<SC' para entrar no %enu((( 2
Ao carregar o arquivo de configurao, possvel ver um menu similar quele
na Lista 10. Lembre-se de que isso foi feito sob o shell GRUB, que simula o
ambiente GRUB real e no exibe a imagem inicial. Entretanto, muito similar
ao que se v sobreposto imagem inicial quando realmente inicializa o sistema
usando o GRUB.
Observao: Se seu menu no se parecer com este, e suas teclas de seta
forem ecoadas como algo como ^[[A, ento, sua verso do comando grub pode
no incluir suporte de curses necessrio para exibio adequada do menu.
Sabe-se que isso afeta certas liberaes recentes do Fedora. Neste caso, voc
ter uma capacidade limitada de testar usando o shell grub.
Lista 10. The GRUB menu
;9J ;GJ" $ersion 0(>7 /,0I lower / 3072I upper %e%ory0

N1111111111111111111111111111111111111111111111111111111111111111111111111N
R @edora /2(,(32(11>2(fc1(-.,8,0 R
R @edora /2(,(32(131>2(fc1(-.,8,0 R
R @edora /2(,(32(131>1(fc1(-.,8,0 R
R ;GJ" R
R Slac'ware 13 R
R 4indows R
R R
R R
N1111111111111111111111111111111111111111111111111111111111111111111111111N
Jse t!e S and $ 'eys to select w!ic! entry is !ig!lig!ted(
*ress enter to boot t!e selected OS& 'e' to edit t!e
co%%ands before booting& or 'c' for a co%%and1line(
Suponha que voc realou a terceira entrada para @edora /2(,(32(131
>1(fc1(-.,8,0 e pressione e para edit-la. Voc veria algo similar Lista
11.
Lista 11. Editing a GRUB configuration entry
;9J ;GJ" $ersion 0(>7 /,0I lower / 3072I upper %e%ory0

N1111111111111111111111111111111111111111111111111111111111111111111111111N
R root /!d1&130 R
R 'ernel /boot/$%linu?12(,(32(131>1(fc1(-.,8, ro root#JJIE#2e22a2e012H R
R initrd /boot/initra%fs12(,(32(131>1(fc1(-.,8,(i%g R
R R
R R
N1111111111111111111111111111111111111111111111111111111111111111111111111N
Jse t!e S and $ 'eys to select w!ic! entry is !ig!lig!ted(
*ress 'b' to boot& 'e' to edit t!e selected co%%and in t!e
boot seAuence& 'c' for a co%%and1line& 'o' to open a new line
after /'O' for before0 t!e selected line& 'd' to re%o$e t!e
selected line& or escape to go bac' to t!e %ain %enu(
Novamente, voc usa as teclas de seta para selecionar a linha a ser editada e
ento pressione e para edit-la. Neste exemplo, iremos supor que voc
originalmente tinha instalado Fedora em /dev/sdb14 e ento excluda uma
partio inferior, digamos, /dev/sdb8. Isso baixaria a partio Fedora para
/dev/sdb13 ou hd1,12 na notao GRUB. Use as teclas de cursor para mover
alm de '3' em '(hd1,13)', depois volte para cima para excluir '3' e insira '2' no
lugar. Quando tiver concludo, pressione Enter para aceitar sua alterao ou
pressione Esc para cancelar. Por fim, se voc fosse realmente inicializar o
sistema, em vez de executar o shell GRUB, pressione b para inicializar o
sistema.
Quando voc inicializa para um shell GRUB, ele tem capacidade suficiente
para exibir arquivos no seu sistema de arquivos, e executado como se fosse
o usurio raiz, ento voc realmente precisa proteger o seu sistema com
senhas GRUB. Lembre-se, porm, de que se um usurio pode inicializar a
partir de mdia removvel, o usurio pode fornecer sua prpria configurao de
GRUB. Consulte a seo de segurana no manual do GRUB (consulte
os Recursos) para saber mais sobre segurana do GRUB e outros aspectos do
GRUB. Tambm possvel visualiz-las no sistema usando info grub .
Voltar para parte superior
Parmetros de kernel
Os parmetros de kernel (s vezes chamados de parmetros de inicializao)
fornecem ao kernel informaes sobre os parmetros de hardware que pode
no determinar por si mesmo para substituir valores que pode de outra forma
detectar ou para evitar a deteco de valores inadequados. Por exemplo,
possvel desejar inicializar no modo de um nico usurio para reparar o
sistema, inicializar um sistema SMP no modo de uniprocessador ou especificar
um sistema de arquivos raiz alternativo. Alguns nveis de kernel exigem um
parmetro para permitir suporte a memria grande em sistemas com mais de
uma certa quantidade de RAM.
s vezes, ser necessrio adicionar parmetros ao processo de inicializao.
Por exemplo, pode-se desejar ativar o sistema no modo deusurio nico para o
qual adicionar o cdigo S . Ou pode desejar especificar um kernel
anteriormente em atividade de modo que possa descobrir por que seu kernel
personalizado recm-criado no inicializa. Pressione a tecla Tab para ver uma
lista de imagens para inicializar e o prompt de texto LILO resumido
original boot:. Neste ponto, possvel digitar o nome de uma imagem ou
pressionar Enter para selecionar a primeira entrada. Se precisar adicionar
parmetros, digite-os aps o nome da imagem. Lista 12 e Figura 7 mostra o
que possvel ver se pressionar a tecla Tab , digitar Slac'ware13 para
selecionar a imagem Slackware 13, adicionar o parmetro S para inicializar no
modo de um nico usurio e ento pressionar Enter para iniciar o processo de
boot.
Lista 12. Especificando os parmetros de boot com LILO
"oot do Slac'ware 13 4indows @edora 1+ Slackware13 S
Figura 7. Inicializando o Slackware no modo de um nico usurio

Com o GRUB, possvel digitar outro conjunto de comandos para o kernel e
instrues initrd , ou, preferencialmente, seria possvel usar o recurso de
editar descrito acima para editar uma entrada existente. Por exemplo, adicione
o parmetro S para inicializar no modo de um nico usurio.
O processo init
Quando o kernel termina de carregar, ele normalmente inicia /sbin/init. Esse
programa permanece em execuo at que o sistema seja desligado. Ele
sempre recebe o ID de processo 1, como se pode ver na Lista 13.
Lista 13. O processo init
Lroot=ec!idna BM# ps --pid 1
*IE 66K 6I)< C)E
1 T 00+00+00 init
Agora o programa init inicializa o restante do sistema executando uma srie
de scripts. Esses scripts normalmente residem em /etc/rc.d/init.d or /etc/init.d, e
executam servios como definir o nome de host do sistema, verificar o sistema
de arquivos quanto a erros, montar sistemas de arquivos adicionais, ativar
rede, iniciar servios de impresso, e assim por diante. Quando os scripts so
concludos, init inicia um programa chamado getty, que exibe o prompt de
login nos consoles. Telas de login grficas so tratadas com um gerenciador de
tela grfica, como GDM para Gnome.
Se o sistema carregar um kernel, mas no conseguir executar init com
sucesso, pode-se tentar recuperar especificando um programa de inicializao
alternativo. Por exemplo, especificar init#/bin/s! inicializar o sistema em um
prompt de shell com autoridade de raiz, a partir do qual pode ser possvel
reparar o sistema.
possvel descobrir mais sobre os parmetros de boot disponveis usando as
man pages para bootpara%, ou acessando
/usr/src/linux/Documentation/ramdisk.txt, que pode ser chamado /usr/src/linux-
$(uname -r)/Documentation/kernel-parameters.txt em alguns sistemas.
Nem preciso dizer que se voc tiver de aplicar o mesmo conjunto de
parmetros adicionais toda vez que inicializar, deve adicion-los ao arquivo de
configurao. Lembre-se de executar novamente lilo se estiver usando LILO.
Voltar para parte superior
Eventos de boot
Durante o processo de boot do Linux, um grande nmero de mensagens
emitido para o console, descrevendo o kernel sendo inicializado, o hardware do
sistema e outros elementos relacionados ao kernel. Essas mensagens
normalmente piscam rapidamente e voc provavelmente no ter tempo para
l-las, a menos que haja um atraso enquanto o processo de boot aguarda algo,
como incapacidade de alcanar um servidor de tempo ou um sistema de
arquivos que deve ser verificado. Com o advento do projeto Linux Bootsplash
(consulte os Recursos), essas mensagens podem ser sobrepostas em um
plano de fundo grfico, ou podem ser ocultadas e substitudas por uma simples
barra de status. Se sua distribuio tiver suporte para o modo oculto,
normalmente poder voltar a exibir as mensagens de boot pressionando uma
tecla como F2.
dmesg
bom poder voltar e revisar as mensagens de kernel. Uma vez que a sada
padro est relacionada a um processo, e o kernel no tem um identificador de
processo, ele mantm as mensagens de sada do kernel (e do mdulo) no ring
buffer do kernel. possvel exibir o ring buffer do kernel usando o
comando d%esg , que exibe essas mensagens na sada padro. claro,
possvel redirecionar essa sada para um arquivo para anlise posterior ou
encaminh-la para um desenvolvedor de kernel para fins de depurao. Lista
14 ilustra algumas das sadas possveis de serem vistas.
Lista 14. Sada dmesg parcial
Lroot=ec!idna BM# dmesg | head -n 30
L 0(000000M Initiali?ing cgroup subsys cpuset
L 0(000000M Initiali?ing cgroup subsys cpu
L 0(000000M Linu- $ersion 2(,(32(11>2(fc1(-.,8, /%oc'build=-.,107(p!-2(fedorapro5ec
t(org0 /gcc $ersion (2(1 20100>2 /Ged Pat (2(110 /;CC0 0 #1 S)* 6ue Aug 1, 21+01+2. J
6C 2011
L 0(000000M Co%%and line+ ro root#JJIE#2e22a2e012ac217d21b>.a1d2b22eff2.2a rd89O8LJIS
rd89O8L:) rd89O8)E rd89O8E) LA9;#en8JS(J6@1. SKS@O96#latarcyr!eb1sun1, I<K6A"L<#us r!gb
Auiet
L 0(000000M "IOS1pro$ided p!ysical GA) %ap+
L 0(000000M "IOS1e.20+ 0000000000000000 1 00000000000>dc00 /usable0
L 0(000000M "IOS1e.20+ 00000000000>dc00 1 00000000000a0000 /reser$ed0
L 0(000000M "IOS1e.20+ 00000000000e0000 1 0000000000100000 /reser$ed0
L 0(000000M "IOS1e.20+ 0000000000100000 1 00000000bf,b0000 /usable0
L 0(000000M "IOS1e.20+ 00000000bf,b0000 1 00000000bf,c.000 /AC*I data0
L 0(000000M "IOS1e.20+ 00000000bf,c.000 1 00000000bf,cb000 /AC*I 9:S0
L 0(000000M "IOS1e.20+ 00000000bf,cb000 1 00000000c0000000 /reser$ed0
L 0(000000M "IOS1e.20+ 00000000e0000000 1 00000000f0000000 /reser$ed0
L 0(000000M "IOS1e.20+ 00000000fec00000 1 00000000fec10000 /reser$ed0
L 0(000000M "IOS1e.20+ 00000000fed1c000 1 00000000fed20000 /reser$ed0
L 0(000000M "IOS1e.20+ 00000000fee00000 1 00000000fee01000 /reser$ed0
L 0(000000M "IOS1e.20+ 00000000ff000000 1 0000000100000000 /reser$ed0
L 0(000000M "IOS1e.20+ 0000000100000000 1 000000013000000 /usable0
L 0(000000M 9U /<-ecute Eisable0 protection+ acti$e
L 0(000000M E)I present(
L 0(000000M e.20 update range+ 0000000000000000 1 0000000000001000 /usable0 ##H /reser$
ed0
L 0(000000M e.20 re%o$e range+ 00000000000a0000 1 0000000000100000 /usable0
L 0(000000M 9o A;* bridge found
L 0(000000M last8pfn # 0-13000 %a-8arc!8pfn # 0-00000000
L 0(000000M )6GG default type+ uncac!able
L 0(000000M )6GG fi-ed ranges enabled+
L 0(000000M 000001>@@@@ write1bac'
L 0(000000M A00001"@@@@ uncac!able
L 0(000000M C00001C7@@@ write1protect
L 0(000000M C.0001<3@@@ uncac!able
O ring buffer do kernel usado tambm para alguns eventos aps o sistema
ser inicializado. Isso inclui certas falhas de programa e eventos hot plug. Lista
15 mostra vrias entradas relacionadas a conectar um memory key USB.
Lista 15. Eventos posteriores no ring buffer do kernel
Lroot=ec!idna BM# dmesg | tail -n 19
L7022>(>,>23M usb 11+ 9ew JS" de$ice strings+ )fr#1& *roduct#2& Serial9u%ber#3
L7022>(>,>27M usb 11+ *roduct+ Storage )edia
L7022>(>,>,0M usb 11+ )anufacturer+ Sony
L7022>(>,>,3M usb 11+ Serial9u%ber+ 02020>300,1
L702,0(22.1.7M Initiali?ing JS" )ass Storage dri$er(((
L702,0(22>,0.M scsi + usb1storage 11+1(0
L702,0(22>7>M usbcore+ registered new interface dri$er usb1storage
L702,0(22>722M JS" )ass Storage support registered(
L702,1(2321>2M scsi +0+0+0+ Eirect1Access Sony Storage )edia 0100 *V+ 0 A9SI+
0 CCS
L702,1(23312>M sd +0+0+0+ Attac!ed scsi generic sg3 type 0
L702,1(237>31M sd +0+0+0+ LsdcM 1017. 2121byte logical bloc's+ /21> )"/>2 )i"0
L702,1(23..0>M sd +0+0+0+ LsdcM 4rite *rotect is off
L702,1(23..1M sd +0+0+0+ LsdcM )ode Sense+ 3 00 00 00
L702,1(23..1.M sd +0+0+0+ LsdcM Assu%ing dri$e cac!e+ write t!roug!
L702,1(2322M sd +0+0+0+ LsdcM Assu%ing dri$e cac!e+ write t!roug!
L702,1(232,,M sdc+
L702,1(317222M sd +0+0+0+ LsdcM Assu%ing dri$e cac!e+ write t!roug!
L702,1(3172,1M sd +0+0+0+ LsdcM Attac!ed SCSI re%o$able dis'
L702,1(,1,3>,M S<Linu-+ initiali?ed /de$ sdc& type $fat0& uses genfs8conte-ts
/var/log/messages
Quando o sistema iniciou ao ponto de executar /sbin/init, o kernel ainda
registra eventos no ring buffer como voc viu recentemente, mas os processos
usando o daemon syslog para registrar mensagens, normalmente em
/var/log/messages. Diferente do ring buffer, cada linha de syslog tem um
registro de hora, e o arquivo persiste entre as reinicializaes do sistema. Os
erros ocorridos durante o estgio de scripts da inicializao devem ser
procurados primeiro nesse arquivo.
A maioria dos daemons tem nomes que terminam em 'd'. Lista 16 mostra como
visualizar as ltimas mensagens de status de daemon aps a reinicializao.
Lista 16. Mensagens de daemon de /var/log/messages
Lroot=ec!idna BM# grep "^Sep.*d\:" /var/log/messages|tail -n 14
Sep 7 1.+21+0. ec!idna acpid+ waiting for e$ents+ e$ent logging is off
Sep 7 1.+21+12 ec!idna abrtd+ Gegistered Analy?er plugin 'Ierneloops'
Sep 7 1.+21+12 ec!idna abrtd+ Gegistered Analy?er plugin '*yt!on'
Sep 7 1.+21+12 ec!idna abrtd+ Gegistered Geporter plugin 'Logger'
Sep 7 1.+21+13 ec!idna abrtd+ Gegistered Analy?er plugin 'CCpp'
Sep 7 1.+21+13 ec!idna abrtd+ Gegistered Action plugin 'IerneloopsScanner'
Sep 7 1.+21+13 ec!idna abrtd+ Gegistered Geporter plugin '"ug?illa'
Sep 7 1.+21+13 ec!idna abrtd+ Gegistered Geporter plugin 'IerneloopsGeporter'
Sep 7 1.+21+13 ec!idna abrtd+ C!ec'ing for unsa$ed cras!es /dirs to c!ec'+20
Sep 7 1.+21+13 ec!idna abrtd+ Gegistered Eatabase plugin 'SVLite3'
Sep 7 1.+21+13 ec!idna abrtd+ Eone c!ec'ing for unsa$ed cras!es
Sep 7 1.+21+13 ec!idna abrtd+ Init co%plete& entering %ain loop
Sep 7 1.+21+2, ec!idna auditdL2032M+ Started dispatc!er+ /sbin/audispd pid+ 203
Sep 7 1.+21+2, ec!idna audispd+ audispd initiali?ed wit! A8dept!#120 and 1 acti$e plugins
Voc tambm encontrar logs de muitos outros programas do sistema em
/var/log. Por exemplo, possvel ver o log de inicializao para o sistema X
Window.
Isso conclui a introduo para guiar seu sistema Linux pelo processo de boot.