{"id":840,"date":"2010-03-21T16:56:43","date_gmt":"2010-03-21T14:56:43","guid":{"rendered":"http:\/\/linux.leunen.com\/?p=840"},"modified":"2010-03-21T16:56:43","modified_gmt":"2010-03-21T14:56:43","slug":"un-chroot-pour-reparer-une-installation","status":"publish","type":"post","link":"https:\/\/www.leunen.com\/linux\/2010\/03\/un-chroot-pour-reparer-une-installation\/","title":{"rendered":"Un chroot pour r\u00e9parer une installation"},"content":{"rendered":"<p>Un <em>chroot<\/em> est une op\u00e9ration qui modifie le r\u00e9pertoire root courant pour le processus en cours et les processus enfants. Les applications lanc\u00e9es dans ce chroot n&rsquo;ont plus acc\u00e8s aux fichiers \u00e0 l&rsquo;ext\u00e9rieur du chroot. Cela permet donc d&rsquo;isoler un processus.<\/p>\n<p>Il y a plusieurs usages possibles pour un <em>chroot<\/em>; un des usages est de pouvoir modifier ou administrer une distribution inactive. Un exemple? Vous n&rsquo;arrivez plus \u00e0 booter votre Linux parce que <em>Grub<\/em> est corrompu. Vous savez pourtant qu&rsquo;il suffirait de lancer la commande update-grub pour que tout rentre dans l&rsquo;ordre. Coment arriver \u00e0 lancer cette commande comme si votre Linux \u00e9tait actif? La solution est \u00e9videmment de lancer un LiveCD, de monter votre installation de Linux et de cr\u00e9er un <em>chroot<\/em> pour que le root directory devienne celui de votre installation et non plus celui du LiveCD.<\/p>\n<p>Imaginons que le syst\u00e8me Linux \u00e0 r\u00e9parer se trouve sur <em>sda1<\/em>. Il faut commencer par monter le disque dans <em>\/mnt<\/em> par exemple:<\/p>\n<pre class=\"codesource\">\r\n$ sudo mount \/dev\/sda1 \/mnt\r\n<\/pre>\n<p>Il faut aussi monter le syst\u00e8me de fichiers <em>\/dev<\/em>:<\/p>\n<pre class=\"codesource\">\r\n$ sudo mount --bind \/dev \/mnt\/dev\/\r\n<\/pre>\n<p>Maintenant, on peut cr\u00e9er le <em>chroot<\/em> proprement dit. Il existe une commande pour cela qui s&rsquo;appelle&#8230;<em>chroot<\/em> !<\/p>\n<pre class=\"codesource\">\r\n$ sudo chroot \/mnt\r\n<\/pre>\n<p>A partir de maintenant, <em>sudo<\/em> n&rsquo;est plus n\u00e9cessaire puisque nous sommes dans le chroot avec des droits root. On peut lancer les commandes n\u00e9cessaires pour r\u00e9parer notre installation:<\/p>\n<pre class=\"codesource\">\r\n# update-grub\r\n<\/pre>\n<p>Une fois le syst\u00e8me r\u00e9par\u00e9, on sort du <em>chroot<\/em> et on d\u00e9monte les syst\u00e8mes de fichiers:<\/p>\n<pre class=\"codesource\">\r\n# exit\r\n$ sudo umount \/mnt\/dev\r\n$ sudo umount \/mnt\r\n<\/pre>\n<p>Notez que si votre <em>\/home<\/em> est sur une partition s\u00e9par\u00e9e, par exemple <em>sda5<\/em>, il faudra aussi la monter avant de faire le <em>chroot<\/em>:<\/p>\n<pre class=\"codesource\">\r\n$ sudo mount \/dev\/sda5 \/mnt\/home\r\n<\/pre>\n<p>De m\u00eame si <em>\/boot<\/em> est sur une partition s\u00e9par\u00e9e.<br \/>\nD\u00e9pendant de ce que vous devez faire dans le <em>chroot<\/em>, vous serez peut-\u00eatre amener \u00e0 monter aussi le syst\u00e8me de fichiers <em>\/proc<\/em> ou <em>\/sys<\/em>:<\/p>\n<pre class=\"codesource\">\r\n$ sudo mount -t proc \/proc \/mnt\/proc\r\n$ sudo mount -t sysfs \/sys \/mnt\/sys\r\n<\/pre>\n<p>J&rsquo;ai donn\u00e9 ici l&rsquo;exemple d&rsquo;une r\u00e9paration de Grub dans le <em>chroot<\/em> mais on peut bien \u00e9videmment y faire d&rsquo;autre chose; installer des paquets, modifier des fichiers de configs, acc\u00e9der au r\u00e9seau, toutes choses qui peuvent \u00eatre utiles pour restaurer votre Linux.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Un chroot est une op\u00e9ration qui modifie le r\u00e9pertoire root courant pour le processus en cours et les processus enfants. Les applications lanc\u00e9es dans ce chroot n&rsquo;ont plus acc\u00e8s aux fichiers \u00e0 l&rsquo;ext\u00e9rieur du chroot. Cela permet donc d&rsquo;isoler un processus. Il y a plusieurs usages possibles pour un chroot; un des usages est de [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[5],"tags":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/posts\/840"}],"collection":[{"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/comments?post=840"}],"version-history":[{"count":2,"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/posts\/840\/revisions"}],"predecessor-version":[{"id":842,"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/posts\/840\/revisions\/842"}],"wp:attachment":[{"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/media?parent=840"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/categories?post=840"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.leunen.com\/linux\/wp-json\/wp\/v2\/tags?post=840"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}