module

Beryl::CLI::Bootstrap

Sous-commande beryl bootstrap <host> : installe FreeBSD 15 sur un hôte actuellement en rescue Linux (voie mfsBSD-in-QEMU, ADR-012/013).

Toute la config vient de l'inventaire mergé (_default.yml + <domaine>.yml + éventuel <groupe>.yml + <host>.yml). Les seuls flags CLI sont des overrides ponctuels.

Étapes du journal, dans l'ordre (numérotation propre à la commande) :

1 préparation : image mfsBSD, version, vérification préalable, plan (disques, ashift, comptes), clés de chiffrement ; 2.1-5 rescue : Linux vérifié, disques sans BSD, QEMU installé, image téléchargée, scripts déposés (QemuInRescue) ; 3 installation de FreeBSD dans QEMU ; 4 redémarrage sur le disque, attente SSH, monitoring OVH ; 5 recettes (beryl sync enchaîné).

Constants

EXIT_NOGO = 10
EXIT_OK = 0
EXIT_PKGBASE_NYI = 11
EXIT_SSH_FAILED = 2
EXIT_UNEXPECTED = 3
EXIT_USAGE = 1
MIN_ASHIFT = 12

Plancher de l'ashift : 12 (4 K), comme bsdinstall. Un NVMe qui annonce 512 o écrit en interne par pages de 4 K ou plus : en ashift 9, chaque petite écriture y coûte une lecture-modification-réécriture ; et un disque de remplacement à secteurs natifs de 4 K ne pourrait plus rejoindre le miroir (shingouz, 27 oct. 2026).

Class methods

ashift_for(block_size : Int32) : Int32

ashift = log2(block_size), jamais sous MIN_ASHIFT. block_size est une puissance de 2 (512, 4096, 8192…) : 512→12, 4096→12, 8192→13.

Source
drop_installed_false(content : String) : String

Retire la ligne de PREMIER NIVEAU installed: false (commentaire de fin de ligne toléré) ; le reste du fichier est inchangé. Fonction pure.

Source
pair_by_model(paths : Array(String), known : Hash(String, Beryl::CLI::Scan::Disk)) : Array(String)

Ordre RAID 10 d'un pool : paires de deux modèles (Scan.raid10_order). Un disque déclaré que le rescue ne montre pas → ordre déclaré gardé (le précheck l'a déjà signalé). Pur.

Source
run(config_root : String, args : Array(String)) : Int32
Source