Table des matières

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:

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.

En fait 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.

En savoir plus

biblio