Product SiteDocumentation Site

8.8. Configurando o carregador de boot (bootloader)

Isso provavelmente já é funcional, mas é sempre bom saber configurar e instalar o carregador de inicialização em caso dele desaparecer da MBR (Master Boot Record). Isso pode ocorrer depois da instalação de outro sistema operacional, como o Windows. A seguinte informação pode também ajudar você a modificar a configuração do carregador de inicialização caso necessário.

8.8.1. Identificando os Discos

A configuração do carregador de inicialização tem que identificar os diferentes discos rígidos e suas partições. O Linux usa arquivos “block” especiais arqmazenados no diretório /dev/, para esse propósito. Historicamente, /dev/hda era o disco principal (master) na primeira controladora IDE, e /dev/hdb seu primeiro secundário (slave), /dev/hdc e /dev/hdd sendo, respectivamente, os discos principal (master) e secundário (slave) na segunda controladora IDE, e assim por diante para os seguintes. /dev/sda corresponde ao primeiro drive SCSI, /dev/sdb sendo o segundo, etc. A partir do Debian Squeeze, esse esquema de nomeação foi unificado pelo kernel Linux, e todos os discos rígidos (IDE/PATA, SATA, SCSI, USB, IEEE 1394) são agora representados por /dev/sd*.
Cada partição é representada por seu número no disco no qual reside: por exemplo, /dev/sda1 é a primeira partição do primeiro disco, e /dev/sdb3 é a terceira partição do segundo disco.
A arquitetura PC (ou “i386”) é limitada a quatro partições “primarias” por disco. Para ir além desta limitação, uma delas deve ser criada como uma partição “estendida”, e assim conter partições “secundárias” adicionais. Essas partições secundárias devem ser numeradas a partir de 5. Assim a primeira partição secundária poderia ser /dev/sda5, seguida por /dev/sda6, etc.
Nem sempre é fácil lembrar qual disco está conectado a qual controladora SATA, ou na terceira posição da cadeia SCSI, especialmente a partir da nomeação de discos rígidos "hotplugged" (que inclui, entre outros, a maioria dos discos SATA e discos externos) que podem mudar de uma inicialização para outra. Felizmente, o udev cria, em adição ao /dev/sd*, ligações simbólicas com um nome fixo, o qual você poderia, então, usar se você deseja identificar um disco rígido de maneira não ambigua. Essas ligações simbólicas são armazenadas em /dev/disk/by-id. Em uma máquina com dois discos físicos, por exemplo, pode-se encontrar o seguinte:
mirexpress:/dev/disk/by-id# ls -l
total 0
lrwxrwxrwx 1 root root  9 23 jul. 08:58 ata-STM3500418AS_9VM3L3KP -> ../../sda
lrwxrwxrwx 1 root root 10 23 jul. 08:58 ata-STM3500418AS_9VM3L3KP-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 23 jul. 08:58 ata-STM3500418AS_9VM3L3KP-part2 -> ../../sda2
[...]
lrwxrwxrwx 1 root root  9 23 jul. 08:58 ata-WDC_WD5001AALS-00L3B2_WD-WCAT00241697 -> ../../sdb
lrwxrwxrwx 1 root root 10 23 jul. 08:58 ata-WDC_WD5001AALS-00L3B2_WD-WCAT00241697-part1 -> ../../sdb1
lrwxrwxrwx 1 root root 10 23 jul. 08:58 ata-WDC_WD5001AALS-00L3B2_WD-WCAT00241697-part2 -> ../../sdb2
[...]
lrwxrwxrwx 1 root root  9 23 jul. 08:58 scsi-SATA_STM3500418AS_9VM3L3KP -> ../../sda
lrwxrwxrwx 1 root root 10 23 jul. 08:58 scsi-SATA_STM3500418AS_9VM3L3KP-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 23 jul. 08:58 scsi-SATA_STM3500418AS_9VM3L3KP-part2 -> ../../sda2
[...]
lrwxrwxrwx 1 root root  9 23 jul. 08:58 scsi-SATA_WDC_WD5001AALS-_WD-WCAT00241697 -> ../../sdb
lrwxrwxrwx 1 root root 10 23 jul. 08:58 scsi-SATA_WDC_WD5001AALS-_WD-WCAT00241697-part1 -> ../../sdb1
lrwxrwxrwx 1 root root 10 23 jul. 08:58 scsi-SATA_WDC_WD5001AALS-_WD-WCAT00241697-part2 -> ../../sdb2
[...]
lrwxrwxrwx 1 root root  9 23 jul. 16:48 usb-LaCie_iamaKey_3ed00e26ccc11a-0:0 -> ../../sdc
lrwxrwxrwx 1 root root 10 23 jul. 16:48 usb-LaCie_iamaKey_3ed00e26ccc11a-0:0-part1 -> ../../sdc1
lrwxrwxrwx 1 root root 10 23 jul. 16:48 usb-LaCie_iamaKey_3ed00e26ccc11a-0:0-part2 -> ../../sdc2
[...]
lrwxrwxrwx 1 root root  9 23 jul. 08:58 wwn-0x5000c50015c4842f -> ../../sda
lrwxrwxrwx 1 root root 10 23 jul. 08:58 wwn-0x5000c50015c4842f-part1 -> ../../sda1
[...]
mirexpress:/dev/disk/by-id# 
Note que alguns discos são listados várias vezes (porquê eles se comportam simultaneamente como discos ATA e discos SCSI), porém a informação relevante são principalmente os números "model" e "serial" dos discos, a partir dos quais você pode encontrar o arquivo periférico.
Os arquivos de configuração de exemplo dados nas seções seguintes são baseados na mesma configuração: um único disco SATA, onde a primeira partição é uma antiga instalação Windows e a segunda contém o Debian GNU/Linux.

8.8.2. Configurando o LILO

O LILO (LInux LOader) é o carregador de inicialização mais antigo — sólido, porém rústico. Ele escreve o endereço físico do kernel a ser carregado na MBR, o que faz com que a cada atualização do LILO (ou de seu arquivo de configuração) deva ser seguida pelo comando lilo. Esquecendo de fazer, isso fará com que o sistema seja incapaz de inicializar, se o antigo kernel foi removido ou substituído, já que o novo não estará no mesmo local no disco.
O arquivo de configuração do LILO é o /etc/lilo.conf; um arquivo simples para configurações padrão é ilustrado no exemplo abaixo.

Exemplo 8.3. LILO arquivo de configuração

# The disk on which LILO should be installed.
# By indicating the disk and not a partition.
# you order LILO to be installed on the MBR.
boot=/dev/sda
# the partition that contains Debian
root=/dev/sda2
# the item to be loaded by default
default=Linux

# the most recent kernel image
image=/vmlinuz
  label=Linux
  initrd=/initrd.img
  read-only

# Old kernel (if the newly installed kernel doesn't boot)
image=/vmlinuz.old
  label=LinuxOLD
  initrd=/initrd.img.old
  read-only
  optional

# only for Linux/Windows dual boot
other=/dev/sda1
  label=Windows

8.8.3. Configuração do GRUB 2

GRUB (GRand Unified Bootloader) é mais recente. Não é necessário invocá-lo após cada atualização do; o GRUB sabe como ler o sistema de arquivos e achar a posição do kernel no disco por conta própria. Para instalá-lo na MBR do primeiro disco, simplesmente digite grub-install /dev/sda.
A configuração do GRUB 2 é armazenada no /boot/grub/grub.cfg, mas esse arquivo (no Debian) é gerado a partir de outros. Tenha o cuidado de não modificá-lo a mão, já que modificações locais serão perdidas na próxima vez que o update-grub for executado (o que pode ocorrer durante a atualização de vários pacotes). A modificações mais comuns no arquivo /boot/grub/grub.cfg (adicionar parâmetros de linha de comando para o kernel ou alterar a duração que o menu é exibido, por exemplo) são feitas através de variáveis em /etc/default/grub. Para adicionar entradas no menu, você pode tanto criar um arquivo /boot/grub/custom.cfg quanto modificar o arquivo /etc/grub.d/50_custom. Para configurações mais complexas, você pode modificar outros arquivos em /etc/grub.d, ou adicionar outros arquivos; esses scripts devem retornar trechos de configurações, possivelmente fazendo uso de programas externos. Esses scripts são os que irão atualizar a lista de kernels a serem inicializados: 10_linux leva em consideração os kernels Linux instalados; 20_linux_xen leva em consideração sistemas virtuais Xen, e 30_os-prober lista outros sistemas operacionais (Windows, Mac OSX, Hurd).

8.8.4. Para Computadores Macintosh (PowerPC): Configurando Yaboot

Yaboot é o carregador de boot usado por computadores Macintosh antigos que usam processadores PowerPC. Eles não iniciam como PCs, mas sim usando uma partição “bootstrap”, a partir da qual a BIOS (ou OpenFirmware) executa o carregador, e na qual o programa ybin instala o yaboot e seu arquivo de configuração. Você vai precisar executar apenas este comando de novo se o /etc/yaboot.conf for modificado (ele é duplicado na partição bootstrap, e o yaboot sabe como encontrar a posição do núcleo (kernel) nos discos).
Antes de executar o ybin, você deve primeiro ter um /etc/yaboot.conf válido. O seguinte é um exemplo de uma configuração minimalista.

Exemplo 8.4. Arquivo de configuração Yaboot

# partição bootstrap
boot=/dev/sda2
# o disco
device=hd:
# a partição Linux
partition=3
root=/dev/sda3
# inicializar após 3 segundos de inatividade
# (tempo de espera é em décimos de segundos)
timeout=30

install=/usr/lib/yaboot/yaboot
magicboot=/usr/lib/yaboot/ofboot
enablecdboot

# último kernel instalado
image=/vmlinux
        label=linux
        initrd=/initrd.img
        read-only

# kernel antigo
image=/vmlinux.old
        label=old
        initrd=/initrd.img.old
        read-only

# apenas para Linux/Mac OSX dual-boot
macosx=/dev/sda5

# bsd=/dev/sdaX e macos=/dev/sdaX
# também são possíveis