Objet | Amorce d'un système de fichier OSTree |
---|---|
Niveau requis | débutant, avisé |
Débutant, à savoir | |
Suivi | :DRAFT: |
Voici quelques notes sur la façon d'amorcer une arborescence de systèmes de fichiers gérés par OSTree.
Suivre les instructions générales de la page GnomeOSTree, mais pour la dernière étape, demander à ostadmin de sauter la génération de l'image initramfs: on ajustera un initramfs pour prendre en charge le démarrage à l'aide d'OSTree plus tard.
Résumé des commandes (en tant que root):
ostadmin init cd /ostree ostree --repo=repo remote add gnome http://ostree.gnome.org/repo \ trees/gnomeos-3.6-i686-{runtime,devel} ostree-pull --repo=repo --related --depth=3 gnome ostadmin deploy --checkout-only gnomeos-3.6-i686-devel
Changer un initramfs existant permet de grarntir que tout fonctionnera très bien, même les configurations complexes qui cryptent LVM et/ou LUKS dans le système de fichiers racine. Le résultat est: si le système fonctionne maintenant , cela fonctionnera également avec ostree.
Tout d'abord, créer un répertoire de travail et décompresser les initramfs actuels. Il faudra peut-être remplacer unxz par gunzip / bunzip2 selon la méthode de compression des initramfs. En tant que root:
mkdir /tmp/workdir cd /tmp/workdir unxz -c /boot/initramfs-linux.img | bsdcpio -i
Modifier le script init, faites défiler jusqu'à la fin et ajouter les lignes suivantes avant la dernière ligne (celle qui utilise exec pour basculer vers le système de fichiers réel):
if [ -n "${ostree}" ] && [ ! -d "/new_root/ostree/${ostree}" ] ; then ostree='current' fi if [ -n "${ostree}" ] && \ [ -x /new_root/ostree/ostree-init ] && \ [ -d "/new_root/ostree/${ostree}" ] then msg ":: Booting OSTree '${ostree}'" msg ":: command: ostree-init /new_root ${ostree} /sbin/init $*" exec env -i "TERM=$TERM" /new_root/ostree/ostree-init \ "/new_root" "${ostree}" /sbin/init "$@" || true msg ":: Failed OSTree boot, will do a normal one :-(" fi
l'extrait ci-dessus utilise la variable ${ostree}, qui n'a été définie nulle part. Cela sera transmis comme argument dans la ligne de commande du noyau à partir du chargeur de démarrage.
Maintenant, recompresser les initramfs et enregistrer avec un nom différent:
find . -print0 | bsdcpio -R 0:0 -0oH newc | xz --check=crc32 > /boot/initramfs-gnomeos.img
Ajouter une entrée au fichier de configuration GRUB qui utilise les initramfs modifiés et transmet un paramètre ostree=
non vide dans la ligne de commande du noyau. À titre d'exemple, voici à quoi ressemble une entrée:
title GNOME OS [/boot/vmlinuz-linux] root (hd0,0) kernel /vmlinuz-linux root=/dev/mapper/vg-root cryptdevice=/dev/sda2 lvmcrypt ro quiet ostree=current initrd /initramfs-gnomeos.img
En règle générale, on peut copier l'entrée par défaut, changer le chemin pour utiliser les initramfs modifiés et éditer la ligne du noyau pour ajouter ostree=current
à la fin.