

{"id":2229,"date":"2021-01-13T20:01:39","date_gmt":"2021-01-13T18:01:39","guid":{"rendered":"https:\/\/fabsk.eu\/blog\/?p=2229"},"modified":"2021-01-13T20:01:40","modified_gmt":"2021-01-13T18:01:40","slug":"btrfs-sur-guix","status":"publish","type":"post","link":"https:\/\/fabsk.eu\/blog\/2021\/01\/13\/btrfs-sur-guix\/","title":{"rendered":"Btrfs sur Guix"},"content":{"rendered":"\n<p>En faisant joujou avec la distribution Linux <a href=\"https:\/\/guix.gnu.org\/\">GNU Guix<\/a> (<a href=\"https:\/\/fr.wikipedia.org\/wiki\/GNU_Guix\">Wikip\u00e9dia<\/a>) dans une VM, j&rsquo;ai voulu utiliser le syst\u00e8me de fichiers <a href=\"https:\/\/fr.wikipedia.org\/wiki\/Btrfs\">Btrfs<\/a>, afin de pouvoir faire des instantan\u00e9s (snapshots) entre deux essais. Mais cela a demand\u00e9 un peu de travail.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>Malheureusement, l&rsquo;installateur de Guix installe tout \u00e0 la racine de la partition btrfs, ce qui fait que si on fait un instantan\u00e9, on ne pourra pas le restaurer facilement en tant que nouveau root. Linux Mint (et peut-\u00eatre Ubuntu) utilise une meilleure strat\u00e9gie: il cr\u00e9e dans la partition btrfs un sous-volume nomm\u00e9 \u00ab\u00a0\/@\u00a0\u00bb et va l&rsquo;utiliser comme racine du syst\u00e8me (d\u00e9clar\u00e9 comme \u00ab\u00a0\/\u00a0\u00bb dans \/etc\/fstab). Ainsi, la racine r\u00e9elle Btrfs n&rsquo;est pas mont\u00e9e. Si on veut faire un instantan\u00e9 de notre FS, on monte cette racine r\u00e9elle de la partition dans un r\u00e9pertoire (ex: \/mnt\/whole_btrfs\u00a0\u00bb), le montage simultan\u00e9 de plusieurs r\u00e9pertoires ou sous-volumes d&rsquo;une partition btrfs \u00e9tant possible, et on fait un instantan\u00e9 de \u00ab\u00a0\/\u00a0\u00bb dans \u00ab\u00a0\/mnt\/whole_btrfs\/@mysnapshot\u00a0\u00bb). Apr\u00e8s, si on veut restaurer l&rsquo;instantan\u00e9, soit on sp\u00e9cifie dans fstab ce sous-volume comme \u00ab\u00a0\/\u00a0\u00bb (ex: avec les options <em>defaults,subvol=\/@mysnapshot<\/em>), ou alors on renomme les sous-volumes pour que l&rsquo;instantan\u00e9 s&rsquo;appelle \u00ab\u00a0\/@\u00a0\u00bb.<\/p>\n\n\n\n<p>Comme faire \u00e7a avec Guix? La seule solution simple que j&rsquo;ai trouv\u00e9 est:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Installer Guix avec comme btrfs type de partition (donc sans \u00ab\u00a0\/@\u00a0\u00bb).<\/li><li>Effectuer toutes les mises \u00e0 jour, ce qui peut mettre \u00e0 jour le noyau, avec \u00ab\u00a0<em>sudo guix reconfigure \/etc\/config.scm<\/em>\u00ab\u00a0<\/li><li>Installer \u00ab\u00a0btrfs-progs\u00a0\u00bb (pour avoir l&rsquo;utilitaire \u00ab\u00a0btrfs\u00a0\u00bb): \u00ab\u00a0<em>sudo guix install btrfs-progs<\/em>\u00ab\u00a0<\/li><li>Cr\u00e9er un instantan\u00e9 de l&rsquo;installation actuelle: \u00ab\u00a0sudo <em>brtfs subvolume snapshot \/ \/@<\/em>\u00ab\u00a0<\/li><li>Dans <em>\/etc\/config.scm<\/em>, ajouter \u00e0 la partition racine \u00ab\u00a0<em>(options defaults,subvol=\/@)<\/em>\u00a0\u00bb comme fils de l&rsquo;instruction \u00ab\u00a0<em>(filesystem<\/em>\u00ab\u00a0:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>  (file-systems\n    (cons* (file-system\n             (mount-point \"\/\")\n             (device\n               (uuid \"abc7bc8e-58b8-48d0-93c8-59b73cc1055a\"\n                     'btrfs))\n             (options \"defaults,subvol=\/@\")\n             (type \"btrfs\"))\n           %base-file-systems)))<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>On r\u00e9applique la config: \u00ab\u00a0<em>sudo guix reconfigure \/etc\/config.scm<\/em>\u00ab\u00a0<\/li><li>On red\u00e9marre.<\/li><li>On nettoie les anciens fichiers et r\u00e9pertoire qui ont \u00e9t\u00e9 dupliqu\u00e9 par l&rsquo;instantan\u00e9:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>cd \/tmp\nmkdir root\nmount \/dev\/sda3 root\ncd root\n# Cette expression exclut le r\u00e9pertoire\/instantan\u00e9 \/@\nrm -Rf &#91;a-z]*\ncd ..\numount root<\/code><\/pre>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>En faisant joujou avec la distribution Linux GNU Guix (Wikip\u00e9dia) dans une VM, j&rsquo;ai voulu utiliser le syst\u00e8me de fichiers Btrfs, afin de pouvoir faire des instantan\u00e9s (snapshots) entre deux essais. Mais cela a demand\u00e9 un peu de travail.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,19],"tags":[],"class_list":["post-2229","post","type-post","status-publish","format-standard","hentry","category-informatique","category-linux"],"_links":{"self":[{"href":"https:\/\/fabsk.eu\/blog\/wp-json\/wp\/v2\/posts\/2229","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fabsk.eu\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fabsk.eu\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fabsk.eu\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fabsk.eu\/blog\/wp-json\/wp\/v2\/comments?post=2229"}],"version-history":[{"count":2,"href":"https:\/\/fabsk.eu\/blog\/wp-json\/wp\/v2\/posts\/2229\/revisions"}],"predecessor-version":[{"id":2231,"href":"https:\/\/fabsk.eu\/blog\/wp-json\/wp\/v2\/posts\/2229\/revisions\/2231"}],"wp:attachment":[{"href":"https:\/\/fabsk.eu\/blog\/wp-json\/wp\/v2\/media?parent=2229"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fabsk.eu\/blog\/wp-json\/wp\/v2\/categories?post=2229"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fabsk.eu\/blog\/wp-json\/wp\/v2\/tags?post=2229"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}