Initboot

Embed Size (px)

Citation preview

  • 8/15/2019 Initboot

    1/20

    Visão geral

    Este artigo o ajudará a entender a sequência de boot a partir do BIOS para aconclusão da inicialização e mostrará como:

    • Fornecer comandos comuns para o carregador de boot• Fornecer opções ao kernel no tempo de boot• Verificar eventos de boot nos arquivos de log

    Alguns aspectos do processo de boot são comuns à maioria dos sistemas, masalguns aspectos relacionados a hardware são específicos a uma arquitetura emparticular. O material neste artigo é direcionado especificamente para sistemasde arquitetura x86 e x86_64 usando BIOS para inicializar o sistema. Umsistema mais novo usando aExtensible Firmware Interface (ou EFI ) e a GUIDPartition Table (GPT ) está ganhando popularidade para unidades maiores que2TB de tamanho. Isso atualmente não é parte dos objetivos de LPI e não écoberto neste artigo. Consulte osRecursos para obter mais informações.A menos que de outra forma observado, os exemplos neste artigo geralmenteusam Fedora 14, com um kernel 2.6.35. Os resultados em outros sistemaspodem variar.Este artigo o ajuda a se preparar para o Objective 101.2 do Tópico 101 doexame 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 prolíficos. Navegue natodos osartigos do Ian no developerWorks. Confiraperfil do Ian e entre em contato comele e com outros autores e leitores no My developerWorks.

    Para aproveitar ao máximo os artigos nesta série, é necessário ter um

    conhecimento básico de Linux e um sistema Linux funcional no qual vocêpossa praticar os comandos descritos neste artigo. Às vezes, versõesdiferentes de um programa formatam a saída de forma diferente; portanto, osseus resultados podem não ser exatamente iguais às listagens e figurasmostradas aqui. Em particular, as configurações do BIOS variam muito entre ossistemas, e as telas iniciais do carregador de boot variam muito entre asdistribuições.Você também deve estar familiarizado com o material no nosso artigo,Aprenda

    Linux 101: Layout do disco rígido."Voltar para parte superior

  • 8/15/2019 Initboot

    2/20

    Sequência de boot

    Antes de começarmos a falar de carregadores de boot, como LILO e GRUB,vamos revisar como um PC inicia ouinicializa . CódigochamadoBIOS (para B asic I nput O utputS ervice) é armazenado em umamemória não volátil, como ROM, EEPROM ou flash. Quando o PC é ligado oureinicializado, esse código é executado e realiza um power-on self test (POST)para verificar a máquina. Ele também determinar a unidade de boot a partir dosdispositivos de armazenamento removíveis ou fixos disponíveis e carrega oprimeiro setor do Master Boot Record (MBR) nessa unidade. A unidade podeser um disco rígido tradicional, uma unidade de estado sólido, um dispositivoUSB ou pen-drive ou uma unidade com mídia removível, como disquete, CD ou

    DVD. Para o restante deste artigo, focaremos em discos rígidos, mas oprocesso é similar para os outros tipos de dispositivos de armazenamento.Conforme discutido no artigo "Aprenda Linux 101: Layout do disco rígido," oMBR também contém a tabela de partição, então a quantidade de códigoexecutável no MBR é inferior a 512 bytes, o que não é muito código. Observeque todos os discos, mesmo um disquete, CD ou DVD, ou dispositivo deestado sólido, como um pen-drive, contém código executável no seu MBR,mesmo se o código for apenas suficiente para enviar uma mensagem como

    "Disco não inicializável na unidade A:". Esse código carregado pelo BIOS apartir do primeiro setor é chamado decarregador de boot de primeiroestágio ou carregador de boot de estágio 1 .A unidade de disco rígido padrão MBR usada pelos sistemas operacionais MSDOS, PC DOS e Windows® verifica a tabela de partição para encontrar umapartição primária no disco de boot que esteja marcado comoativo , carrega oprimeiro setor dessa partição e passa o controle para início do códigocarregado. Essa nova parte do código também é conhecida comoregistro deboot de partição . O registro de boot de partição é na verdade outro carregadorde boot de estágio 1, mas este tem inteligência apenas suficiente para carregarum conjunto de blocos da partição. O código nesse novo conjunto de blocos échamado de carregador de boot de estágio 2 . Conforme usado pelo MS-DOS epelo PC-DOS, o carregador de estágio 2 segue diretamente para carregar orestante do sistema operacional. É assim que seu sistema operacional inicia-sepor sua autoinicialização até que esteja ativo e operando.Isso funciona bem para um sistema com um único sistema operacional. O queacontece quando deseja ter vários sistemas operacionais, digamos OS/2,Windows XP e três distribuições diferentes do Linux? Vocêpoderia usa algum

  • 8/15/2019 Initboot

    3/20

    programa (como o programa DOS FDISK) para alterar a partição ativa ereinicializar. Isso é complicado. Além disso, um disco pode ter apenas quatropartições primárias, e o MBR padrão pode ter apenas uma partição primáriaativa; não pode inicializar a partir de uma partição lógica. Mas nosso exemplohipotético citou cinco sistemas operacionais, cada um deles precisando de umapartição. Oops!A solução está em usar algum código especial que permita ao usuário escolherqual sistema operacional inicializar. Exemplos incluem:Loadlin

    Um programa executável do DOS que é chamado a partir de um sistemaDOS em execução para inicializar uma partição do Linux. Isso erapopular ao configurar um sistema de diversas inicializações era um

    processo complexo e arriscado.Gerenciador de boot OS/2

    Um programa instalado em uma pequena partição dedicada. A partiçãoestá marcada como ativa, e o processo padrão de boot MBR inicia oGerenciador de Boot OS/2, que apresenta um menu que permiteescolher qual sistema operacional inicializar.

    Um carregador de boot inteligenteUm programa que pode residir em uma partição do sistema operacional

    e é chamado pelo registro de boot da partição de uma partição ativa oupelo 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á começando a aparecer

    em distribuições comunsEvidentemente, se você puder passar o controle do sistema para algumprograma que tenha mais de 512 bytes de código para realizar sua tarefa,então não é difícil demais permitir a inicialização de partições lógicas, ouinicialização de partições que não estão na unidade de boot. Todas essassoluções permitem essas possibilidades, seja porque podem carregar umregistro de boot a partir de uma partição arbitrária ou porque têm algumentendimento de que arquivo ou arquivos carregar para iniciar o processo deboot.Carregamento da cadeia

  • 8/15/2019 Initboot

    4/20

    Quando um gerenciador de boot obtém controle, uma coisa que pode carregaré outro gerenciador de boot. Isso é chamado decarregamento em cadeia , eocorre com mais frequência quando o gerenciador de boot que está localizadono master boot record (MBR) carrega o carregador de boot que está em umregistro de boot da partição. Isso é quase sempre feito quando o carregador deboot do Linux é solicitado a inicializar uma partição do Windows ou DOS, mastambém pode ser feito quando o carregador de boot do Linux para um sistemafor solicitado a carregar o carregador de boot para outro sistema. Por exemplo,é possível usar LILO em uma partição para fazer o carregamento em cadeia deGRUB em outra partição para acessar o menu GRUB para essa partição.Carregadores de boot do Linux

    A partir daqui, focaremos no LILO e no GRUB, uma vez que são oscarregadores de boot incluídos na maioria das distribuições do Linux. O LILO éusado há algum tempo. O GRUB é mais novo. O GRUB original agora setornou oGRUB Legacy , e o GRUB2 está sendo desenvolvido sob a orientaçãoda Free Software Foundation (consulte osRecursos para ver os detalhes).Discutiremos o GRUB2 brevemente para mostrar as principais diferentes ecomo o GRUB e o GRUB2 podem coexistir. Para o restante deste artigo,presumimos que GRUB significa GRUB Legacy, a menos que o contextoespecificamente implique GRUB2. Uma nova versão do LILO,chamada ELILO (que é designada para sistemas de inicialização que usama Extensible Firmware Interface ou EFI da Intel, em vez de BIOS) também estádisponível. Consulte osRecursos para saber mais sobre GRUB2 e ELILO.O processo de instalação para a sua distribuição provavelmente fornecerá umaopção de definir qual carregador de boot configurar. GRUB ou LILOfuncionarão com a maioria dos discos modernos sob 2TB de tamanho, emboraalgumas distribuições, principalmente Fedora, não enviem mais LILO. Lembre-se de que a tecnologia de disco avançou rapidamente, então você devesempre garantir que seu carregador de boot escolhido, bem como suadistribuição do Linux escolhida (ou outro sistema operacional), assim como oBIOS do sistema, funcionem com seu disco novo. Falha em fazer isso poderesultar em perda de dados. Da mesma forma, se estiver adicionando umanova distribuição a um sistema existente, pode precisar garantir que tenha oúltimo LILO ou GRUB no seu MBR. Também precisará de uma versãorazoavelmente mais nova do GRUB ou LILO se planejar inicializar a partir deum disco LVM ou RAID.

    Os carregadores de estágio 2 usados em LILO e GRUB permitem escolherentre vários sistemas operacionais ou versões para carregar. Entretanto, o

  • 8/15/2019 Initboot

    5/20

    LILO e o GRUB diferem significativamente no sentido de que uma mudança nosistema exige que você use um comando para recriar a configuração de bootdo LILO sempre que atualizar um kernel ou tiver certas outras mudanças noseu sistema, enquanto o GRUB pode fazer isso através de um arquivo de textode configuração que pode ser editado. O GRUB2 também requer umarecriação a partir de um arquivo de configuração 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 máquina é aprovada no autoteste, o BIOS carregao Master Boot Record (ou MBR , normalmente a partir do primeiro

    setor de 512 bytes da unidade de boot). A unidade de bootnormalmente é o primeiro disco rígido no sistema, mas tambémpode ser um disquete, CD ou chave USB.

    3. Para uma unidade de disco rígido, o MBR carrega um carregadorde boot de estágio 1, que normalmente também é um carregador deboot de estágio 1 LILO ou GRUB em um sistema Linux. Esse éoutro registro de setor único de 512 bytes.

    4. O carregador de boot de estágio 1 normalmente carrega uma

    sequência de registros chamada de carregador de boot de estágio 2(ou às vezes o carregador de estágio 1.5).5. O carregador de estágio 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 maispopulares LILO (o LInux LOader) ou GRUB (o carregador GRand Unified Boot).Deve ser possível usar o carregador de boot escolhido para inicializarnormalmente conforme descrito acima. Consulte o artigo relacionado "AprendaLinux, 101: Gerenciadores de boot" se precisar revisar a instalação docarregador de boot ou a inicialização básica.Para influenciar o processo de boot do sistema, é possível:

    1. Altere o dispositivo a partir do qual você inicializa. Normalmente épossível inicializar a partir de uma unidade de disco rígido, mas àsvezes pode ser necessário inicializar a partir de um disquete, ummemory key USB ou uma rede. Configurar esses dispositivos deboot alternativos exige que seu BIOS esteja configuradoadequadamente e pode exigir um pressionamento de tecla emparticular durante o boot para exibir as opções. As opções em um

  • 8/15/2019 Initboot

    6/20

    dos meus sistemas estão ilustradas na Figura 1. O método paraconfigurar os dispositivos de boot e selecionar um dispositivo deboot na inicialização é específico para o sistema e o BIOS dosistema. Também está além do escopo dos requisitos dos objetivosdesta LPI, então consulte a documentação do sistema.

    Figura 1. Escolhendo um dispositivo de boot

    2. É possível interagir com o carregador de boot para selecionar qualde várias configurações possíveis inicializar. Você aprenderá comofazer isso tanto para LILO quanto para GRUB neste artigo.

    3. É possível usar GRUB ou LILO para enviar parâmetros para okernel para controlar a maneira como seu kernel inicia o sistemaquando ele foi carregado pelo carregador de boot.

    Voltar para parte superior

    LILO

    O arquivo de configuração do LILO assume como padrão /etc/lilo.conf. Lista 1mostra um exemplo de um sistema que está executando no momentoSlackware em /dev/sda10, Windows em /dev/sda1 e Fedora 14 em /dev/sdb12.Os exemplos foram desenvolvidos usando/sbin/liloconfig .Lista 1. Configuração LILO de amostra# LILO configuration file# generated by 'liloconfig'## Start LILO global sectionlba32 # Allow booting past 102 t! 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!adow +b%p colors 2 &0&2 &0&2 &0# Location of t!e option table+ location -& location y& nu%ber of# colu%ns& lines per colu%n %a- 1 & spill 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%p table ,0&,&1&1,# 6i%er location -& ti%er location y& foreground color&# bac ground color& s!adow color(b%p ti%er , &27&0&2# 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+

  • 8/15/2019 Initboot

    7/20

    #%essage /boot/boot8%essage(t-t

    # Append any additional ernel para%eters+append $t(default8utf. 0pro%ptti%eout 300# 9or%al :;A console$ga nor%al# :1# :0# :

  • 8/15/2019 Initboot

    8/20

    Usando um prompt de texto

    No exemplo acima, usamos um bipmap para exibir as opções de boot. Oprompt de boot LILO tradicional foi um prompt de texto muito resumido similarao que se vê ao pressionar Tab . É possível digitar o nome de uma distribuiçãopara inicializar ou pressionarEnter para inicializar a primeira. Isso estáilustrado na Lista 2 e Figura 3.Lista 2. Prompt de texto básico do LILO"oot de Slac ware13 4indows @edora1 +

    Figura 3. Prompt de texto básico do LILO

    Em vez do prompt gráfico, é possível obter um prompt de texto comentando asentradas bit%ap e b%p--- e removendo o comentário doparâmetro %essage para que aponte para um arquivo contendo a mensagem detexto que você gostaria de exibir. O prompt de texto não é mais resumido eagora usa a biblioteca de curses para exibir suas escolhas. É possível digitarparâmetros como antes. Na Figura 4, nosso arquivo de mensagem contém o

    texto "Booting pinguino >>>", e novamente inicializamos para o modo de umúnico usuário usandoS .Figura 4. Tela de boot de texto (curses) do LILO Slackware 13

  • 8/15/2019 Initboot

    9/20

    Observação: Pode ser necessário segurar a tecla Shift durante o boot para vero 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 alterações a /etc/lilo.conf, ou sempre queinstalar um novo kernel, vocêdeve executar lilo . O programalilo regrava oMBR ou o registro de boot da partição para refletir suas alterações, incluindo oregistro do local do disco absoluto do kernel. Se seu arquivo de configuraçãoincluir imagens Linux de várias partições, é preciso montar as partições, porqueo comando lilo precisa acessar a partição para localizar a imagem.Além de exibir o arquivo de configuração LILO, é preciso usar a opção docomando lilo para exibir informações sobre as opções de boot do LILO.Adicione as opções $ para uma saída mais detalhada. Dois exemplos usandoo arquivo de configuração gráfica de Lista 1 e o arquivo de configuração detexto usado em Figura 4 são mostrados em Lista 3.Lista 3. Exibindo a configuração LILOroot=ec!idna+B# lilo C /etc/lilo grap!ic(confSlac ware13 D4indows@edora1

    root=ec!idna+B# lilo $ C /etc/lilo te-t(confLILO $ersion 22(.& Copyrig!t C 1>>2 1>>. 4erner Al%esbergerEe$elop%ent beyond $ersion 21 Copyrig!t C 1>>> 200, Fo!n Coff%anGeleased 1> @eb 2007 and co%piled at 20+0>+2. on @eb 1 2010

    Geading boot sector fro% /de$/rootInstalled+ 6ue Sep , 1 + 1+ > 2011

    ;lobal settings+Eelay before booting+ 0(0 secondsCo%%and line ti%eout+ 30(0 seconds9o unattended booting9o *C/A6 eyboard !ardware presence c!ecAlways enter boot pro%pt"oot ti%e "IOS data sa$ed"oot ti%e "IOS data auto suppress write bypassedLarge %e%ory H1 ) is 9O6 used to load initial ra%dis

  • 8/15/2019 Initboot

    10/20

    9on GAIE installation"oot de$ice will not be used for t!e )ap fileSerial line access is disabled"oot pro%pt %essage is 10.3 bytes9o default boot co%%and line

    I%ages+Slac ware13 D

    9o password"oot co%%and line won't be loc ed9o single ey acti$ation:;A %ode+ 9OG)AL

    ernel is loaded !ig!9o initial GA) dis9o fallbacOptions+ ro root .0a $t(default8utf. 0

    4indows9o password"oot co%%and line won't be loc ed9o single ey acti$ation9o fallbac9o options

    @edora19o password

    "oot co%%and line won't be loc ed9o single ey acti$ation:;A %ode+ 9OG)AL

    ernel is loaded !ig!9o initial GA) dis9o fallbacOptions+ ro root .1d $t(default8utf. 0

    Carregamento em cadeia com LILO

    Você pode ter observado que a definição de partição para Windows mostra odispositivo (/dev/sda1), enquanto as definições de partição Slackware e Fedora

    mostram uma imagem de inicialização na partição raiz, /dev/sda10 and /dev/sdb13, respectivamente. Para sistemas em que posso ter várias partiçõesinicializáveis, frequentemente configuro uma pequena partição contendoGRUB, que pode inicializar a partir de qualquer uma das outras partições,normalmente por carregamento em cadeia, mas por outros meios quando, porexemplo, o sistema na partição usa um carregador de boot como GRUB2. Umavez que a partição executa GRUB Legacy, ela pode ser carregada em cadeia.Para adicionar uma entrada LILO para carregamento em cadeia de outrapartição, como esta partição GRUB, é possível adicionar uma entrada comoaquela em Lista 4.Lista 4. Adicionando uma partição para GRUB de carregamento em cadeia# Linu- bootable partition config beginsot!er /de$/sda2

    label ;GJ"# Linu- bootable partition config ends

    Voltar para parte superior

    GRUB

    O arquivo de configuração GRUB assume como padrão /boot/grub/grub.conf ou /boot/grub/menu.lst. Se ambos estiverem presentes, um normalmente será um

  • 8/15/2019 Initboot

    11/20

    link simbólico para o outro. Lista 5 mostra um exemplo do mesmo sistema quevocê viu acima para LILO. Observe que dividimos as três instruções dedefinição de kernel em várias linhas para facilitar a leitura.Lista 5. Configuração 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 (fc1 (-.,8,

    root !d1&12ernel /boot/$%linu? 2(,(3 (1 > (fc1 (-.,8, ro

    root JJIE e22a2e0 ac2 7d b>.a d b2 eff . ard89O8LJ S rd89O8L:) rd89O8)E rd89O8E)LA9; en8JS(J6@ . SKS@O96 latarcyr!eb sun1,

    2(fc1 (-.,8, (i%g

    title @edora 2(,(3 (13 >1(fc1 (-.,8,root !d1&12

    ernel /boot/$%linu? 2(,(3 (13 >1(fc1 (-.,8, roroot JJIE e22a2e0 ac2 7d b>.a d b2 eff . ard89O8LJ S rd89O8L:) rd89O8)E rd89O8E)LA9; en8JS(J6@ . SKS@O96 latarcyr!eb sun1,

    c!ainloader N1

    title 4indowsrootno$erify !d0&0c!ainloader N1

    GRUB fornece uma interface de menu. Também pode usar uma senhacriptografada com o algoritmo MD5 em oposição à senha de texto simples doLILO. E, talvez mais importante, alterações feitas ao arquivo de configuraçãoGRUB não exigem que o GRUB seja reinstalado no MBR. Observe que muitasdistribuições automaticamente atualizam o arquivo de configuração GRUB (ouLILO) ao atualizar para um novo nível de kernel, mas se você mesmo instalarum novo kernel ou criar um novo disco RAM inicial, pode ser preciso editar oarquivo de configuração.

    O GRUB também não exige que uma partição seja montada para configuraruma entrada de boot para ele. Você observará entradas

  • 8/15/2019 Initboot

    12/20

    comorai? !d0&> e splas!i%age !d1&12 /boot/grub/splas!(-p%(g? . OGRUB refere-se aos seus discos rígidos como hdn , em que n é um númerointeiro iniciando em 0. De maneira similar, as partições em um disco sãonumeradas iniciando em 0.Observação: O GRUB2 mudou a maneira como osdiscos são nomeados, então tenha cuidado se estiver trocando entre GRUB eGRUB2.Assim, nesse sistema, (hd0,0) representa a partição primária do Windows /dev/sda1, enquanto (hd0,9) representa a partição lógica Slackware /dev/sda10. Um disquete normalmente é (fd0). Lembre-se de colocar entreaspas se estiver chamando GRUB com parâmetros de um bash shell, porexemplo, ao instalar GRUB em um disquete, chave USB ou seu MBR.Versões mais novas do GRUB permitem usar umrótulo ou UUID para

    especificar arai? . Consulte a seção sobre "Rótulos, UUIDs e links" no artigorelacionado.Aprenda Linux, 101: Controle de montagem e desmontagem desistemas de arquivos nessa série para mais detalhes sobre rótulos e UUIDs.Quando inicializar um sistema com GRUB, frequentemente verá uma opçãopadrão apresentada, conforme ilustrado na Figura 5. Se nada for feito, seráinicializado após um tempo limite configurado. O tempo limite é especificadoem segundos, então ti%eout na Lista 5 significa um tempo limite de 5segundos.Figura 5. Inicializando GRUB para uma opção padrão

    Se você pressionar uma tecla para interromper o boot padrão, verá um menude opções similares àquelas na Figura 6.Figura 6. Opções do menu do GRUB

  • 8/15/2019 Initboot

    13/20

    Quando o menu GRUB é exibido, você seleciona uma imagem de boot usandoas 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 umarquivo X Window pixmap (.xpm) de 14 cores que deve ser gzipped. Suaimagem JPEG favorita pode ficar um pouco diferente quando reduzida para 14cores, então será preciso experimentar. É possível reduzir para 14 coresusando um programa gráfico como o GIMP, em que você usaria a ação demenu Image->Mode->Indexed... e definiria o campoMaximum number ofcolors para 14. Ou é possível usar as ferramentas de linha de comando comoImageMagick. Lista 6 mostra uma maneira de reduzir um original de 800x531pixels para o formato requerido de 640x480 pixels primeiro o redimensionandopara 640 pixels de altura, então cortando parte da imagem e reduzindo a telapara adequar-se à imagem. A seguir, reduzimos o número de cores para 14 econvertemos a imagem de .jpg para .xpm. Por fim, a imagem é colocada emgzip.Lista 6. Criando uma imagem inicial do GRUB personalizada

    identify woodenbong(5pgwoodenbong(5pg F*

  • 8/15/2019 Initboot

    14/20

    para editá-la,c para trocar para uma linha de comando GRUB,b parainicializar o sistemap para inserir uma senha eEsc para retornar para o menuou para a etapa anterior. Há também um comandogrub , que cria um shellsimulado no qual é possível testar sua configuração GRUB ou suas habilidadesde comando GRUB. Alguns componentes básicos estão disponíveis no modode usuário normal, mas é necessário ter autoridade de raiz para executarquaisquer comandos. Lista 7 ilustra como iniciar o shell grub como raiz. Ocomando grub normalmente é encontrado em /sbin ou /usr/sbin.Lista 7. Iniciando o shell GRUB# grub

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

    )ini%al "ASP li 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 usode !elp co%%andna%e fornece ajuda para o comando chamadocommandname .Lista 8 ilusta os comandos disponíveis e a ajuda pararootno$erify .Lista 8. Using the GRUB shellgrubH help bloc list @IL< bootcat @IL< c!ainloader forceM @IL<color 9OG)AL PI;PLI;P6M configfile @IL<de$ice EGI:< E

  • 8/15/2019 Initboot

    15/20

    grubH find /boot/grub/menu.lst !d0&1!d0&!d1&,!d1&.!d1&>!d1&10!d1&11!d1&12

    grubH configfile (hd1,12)/boot/grub/menu.lst *ressione '

  • 8/15/2019 Initboot

    16/20

    originalmente tinha instalado Fedora em /dev/sdb14 e então excluída umapartição inferior, digamos, /dev/sdb8. Isso baixaria a partição Fedora para /dev/sdb13 ou hd1,12 na notação GRUB. Use as teclas de cursor para moveralém de '3' em '(hd1,13)', depois volte para cima para excluir '3' e insira '2' nolugar. Quando tiver concluído, pressioneEnter para aceitar sua alteração oupressione Esc para cancelar. Por fim, se você fosse realmente inicializar osistema, em vez de executar o shell GRUB, pressioneb para inicializar osistema.Quando você inicializa para um shell GRUB, ele tem capacidade suficientepara exibir arquivos no seu sistema de arquivos, e é executado como se fosseo usuário raiz, então você realmente precisa proteger o seu sistema comsenhas GRUB. Lembre-se, porém, de que se um usuário pode inicializar a

    partir de mídia removível, o usuário pode fornecer sua própria configuração deGRUB. Consulte a seção de segurança no manual do GRUB (consulteos Recursos) para saber mais sobre segurança do GRUB e outros aspectos doGRUB. Também é possível visualizá-las no sistema usandoinfo grub .

    Voltar para parte superior

    Parâmetros de kernel

    Os parâmetros de kernel (às vezes chamados de parâmetros de inicialização)

    fornecem ao kernel informações sobre os parâmetros de hardware que podenão determinar por si mesmo para substituir valores que pode de outra formadetectar ou para evitar a detecção de valores inadequados. Por exemplo, épossível desejar inicializar no modo de um único usuário para reparar osistema, inicializar um sistema SMP no modo de uniprocessador ou especificarum sistema de arquivos raiz alternativo. Alguns níveis de kernel exigem umparâmetro para permitir suporte a memória grande em sistemas com mais deuma certa quantidade de RAM.

    Às vezes, será necessário adicionar parâmetros ao processo de inicialização.Por exemplo, pode-se desejar ativar o sistema no modo deusuário único para oqual adicionará o códigoS . Ou pode desejar especificar um kernelanteriormente em atividade de modo que possa descobrir por que seu kernelpersonalizado recém-criado não inicializa. Pressione a teclaTab para ver umalista de imagens para inicializar e o prompt de texto LILO resumidooriginalboot: . Neste ponto, é possível digitar o nome de uma imagem oupressionar Enter para selecionar a primeira entrada. Se precisar adicionarparâmetros, digite-os após o nome da imagem. Lista 12 e Figura 7 mostra oque é possível ver se pressionar a teclaTab , digitarSlac ware13 para

  • 8/15/2019 Initboot

    17/20

    selecionar a imagem Slackware 13, adicionar o parâmetroS para inicializar nomodo de um único usuário e então pressionarEnter para iniciar o processo deboot.Lista 12. Especificando os parâmetros de boot com LILO

    "oot do Slac ware 13 4indows @edora 1 + Slackware13 S Figura 7. Inicializando o Slackware no modo de um único usuário

    Com o GRUB, é possível digitar outro conjunto de comandos para o kernel einstruções initrd , ou, preferencialmente, seria possível usar o recurso deeditar descrito acima para editar uma entrada existente. Por exemplo, adicioneo parâmetroS para inicializar no modo de um único usuário.O processo init

    Quando o kernel termina de carregar, ele normalmente inicia/sbin/init . Esseprograma permanece em execução até que o sistema seja desligado. Elesempre recebe o ID de processo 1, como se pode ver na Lista 13.Lista 13. O processo init

    root=ec!idna BM# ps --pid 1 *IE 66K 6I)< C)E

    1 T 00+00+00 init

    Agora o programainit inicializa o restante do sistema executando uma sériede scripts. Esses scripts normalmente residem em /etc/rc.d/init.d or /etc/init.d, eexecutam serviços como definir o nome de host do sistema, verificar o sistemade arquivos quanto a erros, montar sistemas de arquivos adicionais, ativarrede, iniciar serviços de impressão, e assim por diante. Quando os scripts sãoconcluídos,init inicia um programa chamadogetty , que exibe o prompt delogin nos consoles. Telas de login gráficas são tratadas com um gerenciador detela gráfica, como GDM para Gnome.Se o sistema carregar um kernel, mas não conseguir executarinit comsucesso, pode-se tentar recuperar especificando um programa de inicializaçãoalternativo. Por exemplo, especificarinit /bin/s! inicializará o sistema em umprompt de shell com autoridade de raiz, a partir do qual pode ser possívelreparar o sistema.É possível descobrir mais sobre os parâmetros de boot disponíveis usando asman 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

    parâmetros adicionais toda vez que inicializar, deve adicioná-los ao arquivo deconfiguração. Lembre-se de executar novamentelilo se estiver usando LILO.

  • 8/15/2019 Initboot

    18/20

    Voltar para parte superior

    Eventos de boot

    Durante o processo de boot do Linux, um grande número de mensagens éemitido para o console, descrevendo o kernel sendo inicializado, o hardware dosistema e outros elementos relacionados ao kernel. Essas mensagensnormalmente piscam rapidamente e você provavelmente não terá tempo paralê-las, a menos que haja um atraso enquanto o processo de boot aguarda algo,como incapacidade de alcançar um servidor de tempo ou um sistema dearquivos que deve ser verificado. Com o advento do projeto Linux Bootsplash(consulte osRecursos), essas mensagens podem ser sobrepostas em umplano de fundo gráfico, ou podem ser ocultadas e substituídas por uma simplesbarra de status. Se sua distribuição tiver suporte para o modo oculto,normalmente poderá voltar a exibir as mensagens de boot pressionando umatecla como F2.dmesg

    É bom poder voltar e revisar as mensagens de kernel. Uma vez que a saídapadrão está relacionada a um processo, e o kernel não tem um identificador deprocesso, ele mantém as mensagens de saída do kernel (e do módulo) noring

    buffer do kernel . É possível exibir o ring buffer do kernel usando ocomando d%esg , que exibe essas mensagens na saída padrão. É claro, épossível redirecionar essa saída para um arquivo para análise posterior ouencaminhá-la para um desenvolvedor de kernel para fins de depuração. Lista14 ilustra algumas das saídas possíveis de serem vistas.Lista 14. Saída dmesg parcial

    root=ec!idna BM# dmesg | head -n 30 0(000000M Initiali?ing cgroup subsys cpuset 0(000000M Initiali?ing cgroup subsys cpu 0(000000M Linu- $ersion 2(,(3 (1 > (fc1 (-.,8, %oc build=-., 07(p!-2(fedorapro5ec

    t(org gcc $ersion ( (1 20100>2 Ged Pat ( (1 ;CC #1 S)* 6ue Aug 1, 21+01+ . J6C 2011

    0(000000M Co%%and line+ ro root JJIE e22a2e0 ac2 7d b>.a d b2 eff . a rd89O8LJ Srd89O8L:) rd89O8)E rd89O8E) LA9; en8JS(J6@ . SKS@O96 latarcyr!eb sun1, dc00 00000000000a0000 reser$ed 0(000000M "IOS e.20+ 00000000000e0000 0000000000100000 reser$ed 0(000000M "IOS e.20+ 0000000000100000 00000000bf,b0000 usable 0(000000M "IOS e.20+ 00000000bf,b0000 00000000bf,c.000 AC*I data 0(000000M "IOS e.20+ 00000000bf,c.000 00000000bf,cb000 AC*I 9:S 0(000000M "IOS e.20+ 00000000bf,cb000 00000000c0000000 reser$ed 0(000000M "IOS e.20+ 00000000e0000000 00000000f0000000 reser$ed 0(000000M "IOS e.20+ 00000000fec00000 00000000fec10000 reser$ed 0(000000M "IOS e.20+ 00000000fed1c000 00000000fed20000 reser$ed 0(000000M "IOS e.20+ 00000000fee00000 00000000fee01000 reser$ed

    0(000000M "IOS e.20+ 00000000ff000000 0000000100000000 reser$ed 0(000000M "IOS e.20+ 0000000100000000 000000013 000000 usable 0(000000M 9U

  • 8/15/2019 Initboot

    19/20

    0(000000M E)I present( 0(000000M e.20 update range+ 0000000000000000 0000000000001000 usable H reser$

    ed 0(000000M e.20 re%o$e range+ 00000000000a0000 0000000000100000 usable 0(000000M 9o A;* bridge found 0(000000M last8pfn 0-13 000 %a-8arc!8pfn 0- 00000000 0(000000M )6GG default type+ uncac!able 0(000000M )6GG fi-ed ranges enabled+ 0(000000M 00000 >@@@@ write bac 0(000000M A0000 "@@@@ uncac!able 0(000000M C0000 C7@@@ write protect 0(000000M C.000 (>, > 3M usb 1 + 9ew JS" de$ice strings+ )fr 1& *roduct 2& Serial9u%ber 3702 >(>, > 7M usb 1 + *roduct+ Storage )edia702 >(>, >,0M usb 1 + )anufacturer+ Sony702 >(>, >,3M usb 1 + Serial9u%ber+ 020 0>300, 1702,0(22.1.7M Initiali?ing JS" )ass Storage dri$er(((702,0(22>,0.M scsi + usb storage 1 +1(0702,0(22>7 >M usbcore+ registered new interface dri$er usb storage702,0(22>7 2M JS" )ass Storage support registered(702,1(2321> M scsi +0+0+0+ Eirect Access Sony Storage )edia 0100 *V+ 0 A9SI+0 CCS702,1(2331 >M sd +0+0+0+ Attac!ed scsi generic sg3 type 0702,1(237>31M sd +0+0+0+ sdcM 101 7. 12 byte logical bloc s+ 1> )"/ > )i"702,1(23..0>M sd +0+0+0+ sdcM 4rite *rotect is off702,1(23..1 M sd +0+0+0+ sdcM )ode Sense+ 3 00 00 00702,1(23..1.M sd +0+0+0+ sdcM Assu%ing dri$e cac!e+ write t!roug!702,1(2 3 M sd +0+0+0+ sdcM Assu%ing dri$e cac!e+ write t!roug!702,1(2 3 ,,M sdc+702,1(317 M sd +0+0+0+ sdcM Assu%ing dri$e cac!e+ write t!roug!

    702,1(317 ,1M sd +0+0+0+ sdcM Attac!ed SCSI re%o$able dis702,1(,1,3>,M S

  • 8/15/2019 Initboot

    20/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!esSep 7 1.+21+13 ec!idna abrtd+ Init co%plete& entering %ain loopSep 7 1.+21+2, ec!idna auditd 2032M+ Started dispatc!er+ /sbin/audispd pid+ 203Sep 7 1.+21+2, ec!idna audispd+ audispd initiali?ed wit! 8dept! 120 and 1 acti$e plugins

    Você também encontrará logs de muitos outros programas do sistema em

    /var/log. Por exemplo, é possível ver o log de inicialização para o sistema XWindow.Isso conclui a introdução para guiar seu sistema Linux pelo processo de boot.