Démarrer sur une architecture de type PC
Il s'agit des machines les plus communes, c'est à dire majoritairement basées sur des puces de type Intel x86 et x86_64. À opposer aux machines PowerPC, ARM, RISC-V ou MIPS.
Sur cette architecture, un micrologiciel (firmware) va chercher à amorcer sur disque-dur selon deux standards:
- BIOS, l'ancienne méthode cherche à lire les premiers secteurs du disque.
- UEFI , le dernier standard, parcours une hiérarchie de fichiers à partir de la première partition de type FAT trouvée.
Le partitionnement décrit dans cet article va vous permettre d'être à la fois compatible UEFIet BIOS.
Disques
Trouvez les références des disques détectés sur votre machine:
root@machine $ geom disk list Geom name: ada0 Providers: 1. Name: ada0 Mediasize: 1000204886016 (932G) Sectorsize: 512 Stripesize: 4096 Stripeoffset: 0 Mode: r1w1e2 descr: WDC WD10EZEX-08WN4A0 lunid: 50014ee263369a74 ident: WD-WCC6Y1YZ7T6R rotationrate: 7200 fwsectors: 63 fwheads: 16
Le paramètre sector size est en général faux, pour des raisons de compatibilité.
Déterminez d'abord votre situation actuelle:
root@machine $ gpart show => 34 1953525101 ada0 GPT (932G) 34 999967 1 efi (488M) 1000001 1757172651 2 linux-data (838G) 1758172652 93389332 - free - (45G) 1851561984 101961728 3 linux-data (49G) 1953523712 1423 - free - (712K)
Si un partitionnement existe déjà comme ci-dessus, détruisez-le au préalable:
root@machine $ gpart destroy ada0
Vous pouvez retrouver les uuid dans /dev/gptid
à l'aide de la clef kern.geom.label.gptid.enable
de loader.conf(5). Pour pouvoir les monter via leur identifiant dans fstab(5), par exemple.
Schémas de partitionnement
La plupart des firmwares reconnaissent le schéma de partitionnement GPT , successeur de MBR.
Au passage, assurons-nous que geom(4) va calculer les alignements au préalable.
root@machine $ sysctl kern.geom.part.mbr.enforce_chs=0 root@machine $ gpart create -s gpt ada0
Partitions
Amorces
En règle générale, il est préférable d'assurer les alignement sur 4096 octets (4k). Les partitions seront numérotées dans l'ordre où on les crée.
Créons une première partition pour l'EFI, qui sera étiquetée efiboot0:
root@machine $ gpart add -a 4k -t efi -s 200M -l efiboot0 ada0
Copions le micro-code que va lire le bios pour amorcer, ici, un saut vers la partition EFI.
root@machine $ gpart bootcode -p /boot/boot1.efifat -i 1 ada0
Un firmware EFI sera capable de monter cette partition et d'exécuter le bootloader qu'elle contient.
boot1.efifat
est une partition FAT entière qui contient aussi bien le lanceur EFI (/EFI/BOOT/BOOTX64.EFI
) que les méta-données de la partition.
Depuis FreeBSD 13, ce fichier n'existe plus (s'il est encore là, c'est un vieux). Copiez directement /boot/loader.efi
dans efi/boot/BOOTx64.efi
, après avoir formaté la partition avec newfs_msdos(8).
Dans le cas du BIOS, il faut ruser.
Ajoutons une partition pour le BIOS:
root@machine $ gpart add -a 4k -t freebsd-boot -s 512k -l gptboot0 ada0 root@machine $ gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 2 ada0
le premier bootcode va s'inscrire dans le schéma GPT lui-même pour aider la machine à trouver la partition freebsd-boot et y exécuter le deuxième, qui se trouve sur la deuxième partition (-i 2
).
FreeBSD
Passons à FreeBSD en lui-même, soit une partition pour le swap et le reste du disque pour un système ZFS.
root@machine $ gpart add -a 1m -s 2G -t freebsd-swap -l swap0 ada0 root@machine $ gpart add -a 1m -t freebsd-zfs -l zfs0 ada0
Et pour finir, déclarons ce disque actif:
root@machine $ gpart set -a active ada0
Résultat
Voyons ce que ça donne:
root@machine $ gpart show => 40 5860533088 ada0 GPT (2.7T) 40 409600 1 efi (200M) 409640 1024 2 freebsd-boot (512K) 410664 984 - free - (492K) 411648 4194304 3 freebsd-swap (2.0G) 4605952 5855926272 4 freebsd-zfs (2.7T) 5860532224 904 - free - (452K)
ou, pour une partition sans EFI:
root@machine:~ # gpart show => 40 3907029088 ada0 GPT (1.8T) 40 1024 1 freebsd-boot (512K) 1064 984 - free - (492K) 2048 67108864 2 freebsd-swap (32G) 67110912 3839918080 3 freebsd-zfs (1.8T) 3907028992 136 - free - (68K)
Un,
root@machine gpart list -a
vous donnera plus de détails.
Pour savoir sous quel mode votre machine a démarré:
david@popeye:~ % sysctl machdep.bootmethod machdep.bootmethod: BIOS
Réplication
Les commande backup
et restore
de gpart(8) vous aideront à reproduire le schéma de partition d'un disque à l'autre. Et si vous utilisez zfs(8), vous pouvez ajouter de nouveaux disques après la mise en service de votre machine.