ENTENDENDO O BOOT-UPDATE

ARTIGO

 

Durante a instalação da distribuição Funtoo, o usuário instala o pacote boot-update, que instala o GRUB junto. Tudo segue normal e sem problemas. As dúvidas sobre o boot-update podem surgir quando o usuário faz dual boot.

Primeiramente, o arquivo /etc/boot.cfg é o arquivo de configuração do boot-update. É esse único arquivo que precisa ser editado para gerenciar a inicialização de todos os sistemas instalados no HD. Isso é muito prático, pois tudo o que precisa ser alterado fica nesse arquivo de forma organizada. Não há dor de cabeça.

Aqui está um exemplo do meu boot.cfg atualmente:

boot {
generate grub
default “Funtoo Linux
timeout 3
}

“Funtoo Linux” {
kernel kernel[-v]
initrd initramfs[-v]
params += real_root=auto rootfstype=auto
}

“Linux Arch Linux” {
scan /mnt/arch/boot
kernel vmlinuz-linux
initrd initramfs-linux.img
params root=/dev/sda1
}

A primeira entrada, no caso “boot”, é criada automaticamente pelo boot-update e diz qual é o sistema padrão (default) do GRUB. Perceba que ele aponta para “Funtoo Linux”, descrito logo abaixo.

É possível termos várias distribuições Linux, listadas abaixo, mas é necessário que seja especificado qual será a entrada padrão.

Dentro de cada entrada, como essa do boot, há uma série de parâmetros configuráveis. Quando esses parâmetros não são especificados, são usados os valores padrões.

Por exemplo, o valor do timeout está especificado para 3 no meu boot.cfg. Ou seja, três segundos de espera na tela do GRUB. Se eu remover o parâmetro “timeout” daquela entrada, o tempo de espera será, automaticamente, o valor padrão (cinco segundos).

Para ver todos os parâmetros e seus valores padrões use o comando:

# boot-update –showdefaults

Os principais parâmetros são: type, kernel, initrd e params.

O parâmetro “type”, quando não especificado, usa como “default” o valor “linux”. Por isso não precisa usá-lo se seu HD só tem Linux. Mas é necessário se for fazer dual boot com Windows.

O parâmetro “kernel” especifica o nome da imagem compactada do kernel, após a compilação. Normalmente o nome é bzImage (se for compactado com bzip2) e costuma ser copiada como vmlinuz.

Mas também pode ter o nome “kernel + versão”. No meu caso, essa imagem está nomeada como ” kernel-debian-sources-x86_64-3.19.3-1~exp1″. Sim, estou usando o kernel do Debian por comodidade. Não preciso colocar o nome inteiro, basta colocar “kernel[-v]” para pegar a versão.

O uso do [-v] vai “pegar” ou “casar com” qualquer kernel que tenha o nome “kernel” seguido de algo. Isso é possível graças ao uso dos caracteres curinga. Para mais informações, veja:

Não é obrigatório usar caracteres curinga. Sempre pode-se usar o nome completo da imagem compactada do kernel.

Também é possível usar mais de um nome, por exemplo, para termos várias opções de kerneis:

kernel vmlinuz-linux vmlinuz-linux-2

Isso criará DUAS entradas no GRUB. Uma para “vmlinuz-linux” e outra para “vmlinuz-linux-2”. Dois kerneis diferentes na mesma distribuição.

O parâmetro initrd (initial ramdisk) também precisa ser especificado para que o sistema escolhido no GRUB seja iniciado. A forma de fazer isso é quase idêntica ao do parâmetro “kernel”. Há duas diferenças.

  • Primeira diferença é que só há a opção de usar “[-v]” se for usar caracteres curinga.
  • Segunda diferença é que pode-se usar “+=” para adicionar mais de uma entrada.

Por exemplo, tanto faz usar:

initrd initramfs-1.igz initramfs-2.igz

Como também:

initrd initramfs-1.igz
initrd += initramfs-2.igz

O parâmetro “params” é usado para adicionar uma série de parâmetros no comando da inicialização do kernel. Exemplo:

params += quiet

Para ver todos os parâmetros, acesse:

DUAL BOOT COM GNU/LINUX E WINDOWS

Para fazer dual boot com outra distribuição Linux é necessário montar a partição do outro Linux primeiro. Se você especificar isso no fstab do Funtoo fica mais fácil já que vai montar durante o boot. Exemplo no meu fstab:

/dev/sda1   /mnt/arch   ext4   noatime   0 1

Depois disso basta editar o “boot.conf” e acrescentar:

“Outra distribuição Linux” {
scan <diretório de boot>
kernel <nome da imagem do kernel>
initrd <nome da imagem initrd ou initramfs>
params root=<partição do sistema>
}

No meu caso, com Arch Linux em /dev/sda1, montado em /mnt/arch, ficou:

“Linux Arch Linux” {
scan /mnt/arch/boot
kernel vmlinuz-linux
initrd initramfs-linux.img
params root=/dev/sda1
}

Para dual boot com Windows, use, por exemplo:

“Windows 7” {
type win7
params root=/dev/sda6
}

Troque o “win7” por “win8” ou “winxp” se for o caso.

Após gravar o GRUB na MBR com “grub-install“, editar o arquivo “boot.conf”, pode executar o comando “boot-update” para salvar as modificações no GRUB.

O resultado será algo assim:

boot-update 1.7.2 /
Copyright 2009-2015 Funtoo Technologies

[use option “-l” for license info, “-h” for help]

* Generating config for grub…

DEFAULT > Funtoo Linux – kernel-debian-sources-x86_64-3.19.3-1~exp1
Linux Arch Linux – vmlinuz-linux
* NOTE : Detected MBR boot. Configuring for Legacy MBR booting.
* Completed successfully.

Reinicie o sistema e seja feliz.

Para mais informações:

$ man boot.conf
$ man boot-update

Rolar para cima