Utilizar UUIDs ou LABELs no Bootloader

Disco USB  Durante a actualização da nossa “distribuição” de linux para os servidores da Lan Party Moita que aí vem, e para poder testar se a configuração está a funcionar bem para o mais variado hardware, decidi instalar uma cópia num disco usb.

  Devido a utilizar um disco usb, o device do disco é quase sempre diferente em cada computador. E para o sistema funcionar bem, independentemente do device que lhe é atribuído, alterei os devices na fstab para a identificação dos mesmos por UUID.

  O UUID de uma partição, pode ser vista com o comando vol_id –uuid <device>, que no meu caso retornou que o UUID era f49c6899-b56b-40c5-8197-508fa6a444d1, ou seja, na fstab em vez de /dev/hda1 coloquei UUID=f49c6899-b56b-40c5-8197-508fa6a444d1. Fiz o mesmo para o resto das partições (incluindo a swap), e o sistema passou a montar as partições listadas na fstab pelos UUIDs.

  O passo seguinte foi também alterar o device da partição de root que está no bootloader, mas por mais voltas que desse não consegui por a funcionar. O kernel dizia-me sempre que não conseguia montar o root. Depois de muita pesquisa, descobri que o kernel não consegue descobrir qual é o device a que corresponde um UUID ou um LABEL.

  A solução foi criar um initramfs que é executado depois do kernel acabar de carregar, e descobre qual é o device a que corresponde um UUID ou LABEL. Desta forma a minha configuração do grub ficou a seguinte:

title Gentoo 2.6.28 Hardened
root (hd0,0)
kernel /boot/linux-2.6.28-hardened root=UUID=f49c6899-b56b-40c5-8197-508fa6a444d1 quiet
initrd /boot/initramfs.igz

  Se precisares desta funcionalidade podes consultar o init que criei, e fazer o teu initramfs (a única dependência é o busybox), ou fazer download do meu initramfs e usar directamente. Se utilizares o meu initramfs, ele por defeito espera 15 segundos para o caso do disco usb demorar a ser detectado, mas podes saltar esse tempo se adicionares o parâmetro initrdnosleep no bootloader.

Comentar

Technorati Profile