Sem initramfs?
Sem LVM/RAID por software, um initramfs não tem muito propósito. Podemos pulá-lo e dizer para o kernel montar diretamente o sistema de arquivos de uma partição e executar
Para isso, alguns requerimentos:
- O kernel precisa ter o suporte ao controlador de disco e ao sistema de arquivos usado na partição compilados como bulit-in, ou seja, não podem ser módulos.
- O sistema de arquivos raiz não pode ter o diretório
- O bootloader não deve carregar o initramfs.
Infelizmente o kernel do Arch não tem o primeiro item nem pretende ter. No Fedora, sim; contudo, apenas o driver
Para pular o initramfs, remova a linha "initrd" do bootloader e passe para o kernel as opções:
O sistema de arquivos precisa ser especificado (usar o mesmo nome do módulo), pois, lembre, o kernel está sozinho. Não tem nenhuma libblkid para ajudá-lo a detectar o que existe dentro da partição.
Você logo perguntará: mas indicar
Muitos de nós, entretanto, ainda estamos presos nos BIOS e no particionamento MBR. Felizmente, a partir do kernel 3.8, é suportada uma construção que emula um UUID no particionamento MBR.
Desde o Windows NT, no primeiro setor do disco, antes da tabela de partições (Wikipedia), as ferramentas de particionamento criam uma "Windows NT disk signature", um número randômico de 32-bit. O PARTUUID para partições MBR é formado assim:
Onde "SSSSSSSS" corresponde ao número de 32-bit no formato hexadecimal e "PP" ao número da partição equivalente ao "y" de
Para obter a assinatura:
("Disk identifier")
Automatizando:
Ficaria então para a partição 1 do disco com assinatura 000301dc:
As duas primeiras opções são para deixar o boot bonitinho. O Plymouth deve ser desativado sem initramfs.
As opções podem ser tornadas permanentes seguindo este post. Não consegui um meio para dizer ao grubby não colocar a entrada "initrd" no
/sbin/init
. Daí para frente, o systemd assume o comando.Para isso, alguns requerimentos:
- O kernel precisa ter o suporte ao controlador de disco e ao sistema de arquivos usado na partição compilados como bulit-in, ou seja, não podem ser módulos.
- O sistema de arquivos raiz não pode ter o diretório
/usr
separado.- O bootloader não deve carregar o initramfs.
Infelizmente o kernel do Arch não tem o primeiro item nem pretende ter. No Fedora, sim; contudo, apenas o driver
ext4
(que serve para EXT2/3 também) e os drivers ahci
e ata_piix
são built-in.Para pular o initramfs, remova a linha "initrd" do bootloader e passe para o kernel as opções:
root=/dev/sdxy rootfstype=xyz
O sistema de arquivos precisa ser especificado (usar o mesmo nome do módulo), pois, lembre, o kernel está sozinho. Não tem nenhuma libblkid para ajudá-lo a detectar o que existe dentro da partição.
Você logo perguntará: mas indicar
/dev/sdxy
não é problemático quando temos mais de um HD na máquina? Sim, é. Com o particionamento GPT, cada partição tem um identificador único que podemos usar:root=PARTUUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Muitos de nós, entretanto, ainda estamos presos nos BIOS e no particionamento MBR. Felizmente, a partir do kernel 3.8, é suportada uma construção que emula um UUID no particionamento MBR.
Desde o Windows NT, no primeiro setor do disco, antes da tabela de partições (Wikipedia), as ferramentas de particionamento criam uma "Windows NT disk signature", um número randômico de 32-bit. O PARTUUID para partições MBR é formado assim:
root=PARTUUID=SSSSSSSS-PP
Onde "SSSSSSSS" corresponde ao número de 32-bit no formato hexadecimal e "PP" ao número da partição equivalente ao "y" de
/dev/sdxy
, também em hex. Como dificilmente alguém passará de /dev/sdx9
, não precisará converter. Acima de 9, leia sobre a base hexadecimal.Para obter a assinatura:
# fdisk -l Disk /dev/sda: 160.0 GB, 160041885696 bytes, 312581808 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x000301dc Dispositivo Boot Start End Blocks Id System /dev/sda1 * 2048 312580095 156289024 83 Linux
("Disk identifier")
Automatizando:
# fdisk -l /dev/sda | grep 'Disk identifier' | awk '{print $3}' | cut -c 3- 000301dc
Ficaria então para a partição 1 do disco com assinatura 000301dc:
quiet systemd.show_status=1 plymouth.enable=0 root=PARTUUID=000301dc-01 rootfstype=ext4
As duas primeiras opções são para deixar o boot bonitinho. O Plymouth deve ser desativado sem initramfs.
As opções podem ser tornadas permanentes seguindo este post. Não consegui um meio para dizer ao grubby não colocar a entrada "initrd" no
grub.cfg
a cada atualização do kernel. Por enquanto, tenho editado diretamente o arquivo.
Comentários
Postar um comentário