Quando o Grub inicializa, ele se carrega usando informações fornecidas pelo BIOS. Contanto que todas as partes estejam no mesmo disco, isso deve funcionar perfeitamente.
Quando o Grub carrega o Linux, ele pode encontrar o kernel no mesmo disco que o Grub ou pesquisando os discos disponíveis. Novamente, se você colocar o kernel no mesmo disco que o Grub, isso deve funcionar perfeitamente.
Quando o kernel do Linux vai montar o sistema de arquivos raiz, ele usa sua própria numeração de disco. O Grub passa um argumento de linha de comando ao kernel para que ele saiba onde encontrar o sistema de arquivos raiz; o argumento tem que ser em termos do que o kernel entende. Os números de disco (por exemplo, sda
, sdb
, hda
, etc.) são imprevisíveis se você mudar de sistema para sistema. A maneira mais fácil de garantir que isso funcione é colocar o sistema de arquivos raiz (e qualquer outro sistema de arquivos ou espaço de troca) no LVM. No momento da inicialização (especificamente no estágio de execução initrd / initramfs), o sistema examinará todos os volumes físicos disponíveis do LVM, montará os grupos e fornecerá acesso a todos os volumes lógicos que eles contêm. Como os volumes do LVM possuem nomes e não números de disco, não importa quais são os números do disco.
O Grub precisa saber a localização física exata no disco de suas peças. Você não pode fazer um cartão SD inicializável apenas copiando arquivos para ele, você tem que fazer uma instalação de bootloader. Para lidar com dispositivos de tamanhos diferentes facilmente, uma boa maneira é criar uma partição de tamanho fixo no início do disco para o sistema operacional e usar o restante do espaço como uma partição de dados extra. Nesse tópico, consulte Clonagem um stick USB inicializável para um stick de tamanho diferente .