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