Table of Contents
OSTree: Lab 1 ammorce d'un OStree avec GRUB
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.
Remplissage du référentiel local
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
Ajuster les initramfs
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
Ajout d'une entrée GRUB
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.