====== 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 **[[https://help.ubuntu.com/community/DiskSpace|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 **[[https://grml.org/download/|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