Partizionamento GPT con parted
Ho usato questa ricetta per partizionare un disco GPT e copiarci una installazione GNU/Linux utilizzando dump e restore. Il boot loader uilizzato è GRUB EFI. Il sistema funzionerà con du dischi in modalità RAID mirroring, ma viene preparato inizialmente con un disco solo, attivando il RAID in modalità degradata.
Lo schema di partizione utilizzato è il seguente:
Partizione | Volume RAID | Punto di montaggio | Note |
---|---|---|---|
/dev/sda1 | N/A | Partizione per GRUB | |
/dev/sda2 | N/A | /boot/efi | Partizione per EFI |
/dev/sda3 | /dev/md0 | / | Root filesystem |
/dev/sda4 | /dev/md1 | swap | Partizione swap |
/dev/sda5 | /dev/md2 | /var | Partizione /var |
/dev/sda6 | /dev/md3 | /home | Partizione /home |
Secondo quanto scritto in questo post DiskSpace, la partizione GRUB serve solo se l'installazione dell'host è fatta con disco partizionato GPT e il BIOS in modalità legacy: in una installazione con BIOS EFI serve solo la partizione omonima. Ovviamente in una installazione legacy la partizione EFI non serve.
Dopo aver avviato la macchina con una live da USB (es GRML 2020.06), si esegue parted per partizionare il disco. Quando si esegue parted
è opportuno usare il parametro --align minimal, dovrebbe servire ad evitare gli errori del tipo Warning: The resulting partition is not properly aligned for best performance.
parted --align minimal /dev/sdX
Questi sono i comandi da eseguire al prompt di parted:
mklabel gpt mkpart primary 1.0MB 10.0MB mkpart primary 10.0MB 100.0MB mkpart primary 100.0MB 80.0GB mkpart primary 80.0GB 100.0GB mkpart primary 100.0GB 500.0GB mkpart primary 500.0GB 100% name 3 rootfs name 4 swap name 5 var name 6 home set 1 bios_grub on set 2 boot on set 2 esp on set 3 raid on set 4 raid on set 5 raid on set 6 raid on
Quindi si preparano i volumi RAID in modalità degradata:
mdadm --create /dev/md0 --run --level=1 --raid-devices=2 /dev/sda3 missing mdadm --create /dev/md1 --run --level=1 --raid-devices=2 /dev/sda4 missing mdadm --create /dev/md2 --run --level=1 --raid-devices=2 /dev/sda5 missing mdadm --create /dev/md3 --run --level=1 --raid-devices=2 /dev/sda6 missing
Le partizioni venogno formattate con i filesystem opportuni (il comando mkfs.vfat è fornito dal pacchetto Debian dosfstools):
mkfs.ext4 /dev/md0 mkswap /dev/md1 mkfs.ext4 /dev/md2 mkfs.ext4 -m0 /dev/md3 mkfs.vfat /dev/sda2
Sull'host originale si è provveduto a fare il dump dei filesystem (usare comandi analoghi per /var
e /home
):
dump -0 -a -b 64 -f /data/rootfs.dump /
Infine si può fare il restore del software (usare comandi analoghi per /var
e /home
):
mount /dev/md0 /mnt cd /mnt restore -r -b 64 -f /data/rootfs.dump
Per poter installare GRUB e initramfs si deve eseguire il chroot dall'installazione live:
mount -o bind /dev /mnt/dev mount -o bind /dev/pts /mnt/dev/pts mount -o bind /proc /mnt/proc mount -o bind /sys /mnt/sys chroot /mnt /bin/bash
Nel chroot sistemare i file /etc/fstab e /etc/mdadm/mdadm.conf.
Per /etc/fstab
è necessario indicare gli UUID dei dischi leggendoli da /dev/disk/by-uuid/:
UUID=a019f159-1616-4043-acd6-ca1cbdebb9b4 / ext4 errors=remount-ro 0 1 UUID=3de323f0-fa3d-45f7-a0d3-c8e5ecc38580 /var ext4 defaults 0 2 UUID=97c1e77f-4ac5-4b78-aeab-b983b42c98dd /home ext4 defaults 0 2 UUID=66F9-D107 /boot/efi vfat defaults 0 0 UUID=4003565c-5fd7-422b-954f-8247baeeb3ed none swap sw 0 0
Per compilare /etc/mdadm/mdadm.conf
è possibile copiare l'output del comando /usr/share/mdadm/mkconf:
ARRAY /dev/md/0 metadata=1.2 UUID=bcb43454:0e612109:93a1b65b:4a574a57 name=hostname:0 ARRAY /dev/md/1 metadata=1.2 UUID=be91e095:f1dc27cf:eb827f34:b5027d5a name=hostname:1 ARRAY /dev/md/2 metadata=1.2 UUID=14ccfb36:41584555:1aabc244:4632482e name=hostname:2 ARRAY /dev/md/3 metadata=1.2 UUID=ae49f551:05ebfb5f:ee580a8f:fa8a82be name=hostname:3
Sempre nel chroot verificare che sia installato il pacchetto grub-efi e quindi eseguire:
grub-install /dev/sda update-initramfs -k all -u