{"id":925,"date":"2025-05-15T14:07:34","date_gmt":"2025-05-15T14:07:34","guid":{"rendered":"https:\/\/wiki.graven-ict.nl\/wordpress\/?p=925"},"modified":"2025-05-15T14:11:02","modified_gmt":"2025-05-15T14:11:02","slug":"linux-chroot-env-rescue","status":"publish","type":"post","link":"https:\/\/wiki.graven-ict.nl\/wordpress\/linux-chroot-env-rescue\/","title":{"rendered":"Linux chroot env \/ rescue"},"content":{"rendered":"\n<p>Het gebeurt iedereen wel eens je hebt een linux machine die niet meer wil starten. je hebt een foutje gemaakt of een probleem met de bootloader. in mijn geval een probleem met een qcow2 disk die niet meer wil starten. Om deze te fixen kan je de disk image aan een andere virtual machine koppelen of jhe kan de qcow2 disk ook mounten aan je host systeem volg daarvoor deze\u00a0<a href=\"https:\/\/wiki.graven-ict.nl\/wordpress\/mount-qcow2-disk-image\/\" target=\"_blank\" rel=\"noopener\">handleiding<\/a>. het maakt niet uit welke methode je gebruikt beide kunnen online worden uitgevoerd.\u00a0<\/p>\n<p>Ik gebruik in dit voorbeeld een virtual machine op via kvm, als ik de disk(en) heb toegevoegd worden ze op de meeste moderne linux versies automatich gedetecteerd. ik gebruik standaard voor al mijn systemen lvm en het was handig geweest als je je volume groepen aangemaakt had met de host naam er in heb je dat niet dan krijg je bv 2 keer <strong>vg0<\/strong> te zien en een melding dat er dubbelen namen zijn gebruikt, dat is op zich niet erg je moet alleen even opletten dat je dan de <strong>VG UUID<\/strong> gebruikt in plaats van de vg name.\u00a0<br \/>misschien is dit ook het moment om een vgrename uit te voeren \ud83d\ude42\u00a0<\/p><div id=\"grave-609215379\" class=\"grave-content grave-entity-placement\"><script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js?client=ca-pub-1970734611769428\" crossorigin=\"anonymous\"><\/script><ins class=\"adsbygoogle\" style=\"display:inline-block;width:728px;height:90px;\" \ndata-ad-client=\"ca-pub-1970734611769428\" \ndata-ad-slot=\"1820224830\"><\/ins> \n<script> \n(adsbygoogle = window.adsbygoogle || []).push({}); \n<\/script>\n<\/div>\n<p>Na het toevoegen van de disk zie ik dus 2 volume groepen op mijn systeem. en alleen de<strong> partities\/lv<\/strong> van mijn host machine zijn gemount.\u00a0<\/p>\n\n\n\n<pre>piet@antares:\/$ df -h <br>Filesystem                           Size Used Avail Use% Mounted on<br>tmpfs                                1.6G 1.2M 1.6G  1%   \/run<br>\/dev\/mapper\/antares--vg-root--lv     6.5G 3.1G 3.2G 49%   \/<br>tmpfs                                5.0M    0 5.0M  0%   \/run\/lock<br>\/dev\/mapper\/antares--vg-home--lv     919M 187M 669M 22%   \/home<br>\/dev\/mapper\/antares--vg-minicube--lv  30G  24K  29G  1%   \/opt\/minicube<br>\/dev\/mapper\/antares--vg-tmp--lv      919M 7 2K 856M  1%   \/tmp<br>\/dev\/mapper\/antares--vg-var--lv      9.9G 3.3G 6.2G 35%   \/var<br>\/dev\/vda1                            462M 178M 280M 39%   \/boot<br>tmpfs                                371M 8.0K 371M  1%   \/run\/user\/1000<\/pre>\n<pre>piet@antares:\/$ sudo vgs <br>VG         #PV  #LV #SN Attr   VSize   VFree <br>antares-vg   2    6   0 wz--n- &lt;59.52g &lt;7.28g<br>kongo-vg     1    6   0 wz--n- &lt;19.50g &lt;2.50g<\/pre>\n<pre>piet@antares:\/$ sudo lvs <br>LV          VG         Attr       LSize     Pool Origin Data% Meta% Move Log Cpy%Sync Convert<br>home-lv     antares-vg -wi-ao---- 952.00m <br>minicube-lv antares-vg -wi-ao---- 30.00g <br>root-lv     antares-vg -wi-ao---- &lt;6.66g <br>swap-lv     antares-vg -wi-ao---- 3.72g <br>tmp-lv      antares-vg -wi-ao---- 952.00m <br>var-lv      antares-vg -wi-ao---- 10.00g <br>dockerlv    kongo-vg   -wi-a----- 5.00g <br>homelv      kongo-vg   -wi-a----- 1.00g <br>rootlv      kongo-vg   -wi-a----- 5.00g <br>swaplv      kongo-vg   -wi-a----- 2.00g <br>tmplv       kongo-vg   -wi-a----- 1.00g <br>varlv       kongo-vg   -wi-a----- 3.00g <\/pre>\n\n\n\n<p>de disk is goed toegevoegd en de lv zijn beschikbaar het is tijd om alles in chroot te plaatsen. gebruik hiervoor een lege directory meestal beschikbaar is \/mnt maar je mag ook een nieuwe aanmaken. bv lnx-res<\/p>\n<pre>piet@antares:\/$ sudo mkdir \/lnx-res\n<\/pre>\n<p>Mount nu de root partitie\/lv aan deze dir in mijn geval dus \/dev\/mapper\/kongo&#8211;vg-rootlv<\/p>\n<pre>piet@antares:\/$ sudo mount \/dev\/mapper\/kongo--vg-rootlv \/lnx-res<\/pre>\n<p>als deze is gemount moeten \/proc, \/sys en \/dev nog door zetten<\/p>\n<pre>piet@antares:\/$ sudo mount -t proc \/proc \/lnx-res\/proc \npiet@antares:\/$ sudo mount --rbind \/sys \/lnx-res\/sys\npiet@antares:\/$ sudo mount --rbind \/dev \/lnx-res\/dev\n<\/pre>\n<p>Je kan nu met chroot in de nieuwe omgeving stappen.je kan dan meteen een mount -a uitvoeren en alle mounts zouden automatische gemaakt moeten worden.<\/p>\n<pre>piet@antares:~$ sudo chroot \/lnx-res\n\nroot@antares:\/# mount -a \n\nroot@antares:\/# df -h \nFilesystem                      Size  Used Avail Use% Mounted on\n\/dev\/mapper\/kongo--vg-rootlv    4.9G  4.1G  521M  89% \/\ntmpfs                           6.9G     0  6.9G   0% \/dev\/shm\n\/dev\/mapper\/kongo--vg-homelv    974M  706M  201M  78% \/home\n\/dev\/mapper\/kongo--vg-tmplv     974M   56K  907M   1% \/tmp\n\/dev\/mapper\/kongo--vg-varlv     3.0G  2.3G  536M  82% \/var\n\/dev\/mapper\/kongo--vg-dockerlv  4.9G  2.1G  2.5G  46% \/var\/lib\/docker\n\/dev\/vda2                       488M  365M   87M  81% \/boot\n<\/pre>\n<p>Zoals je ziet ben je nu root en de disken van andere machine. je kan hier alles fixen wat je wilt zelf updaten, ook als het een andere versie of een andere distributie. als het mounten niet is gelukt heb je mischien wel corrupte filesystemen die kan je fixen met fsck of een ander probleem met de \/etc\/fstab<\/p>\n\n\n\n<h2>Alles weer verwijderen \/ unmount<\/h2>\n<p>als je herstel werkzaamheden klaar zijn wil je natuurlijk alles weer verwijderen. je kan in je chroot env een umount -a uitvoeren alles wat niet in gebruik is word dan automatisch geunmount. je krijgt wel een fout melding dat een aantal zaken niet geunmount konden worden maar dat doen we later als we uit de chroot zijn. om nu uit de chroot te stappen type je exit\u00a0<\/p>\n<pre>root@antares:\/# umount -a \numount: \/dev: target is busy.\numount: \/sys\/fs\/cgroup: target is busy.\nroot@antares:\/# df -h \nFilesystem                    Size  Used Avail Use% Mounted on\n\/dev\/mapper\/kongo--vg-rootlv  4.9G  4.1G  521M  89% \/\nroot@antares:\/# exit \nexit\npiet@antares:~$ \n<\/pre>\n<p>als je uit de chroot bent en je controleert middels mount welke filesystemen er nog actief zijn op \/lnx-res krijg zoiets als hier onder te zien.<\/p>\n<pre>piet@antares:~$ mount |grep lnx-res \n\/dev\/mapper\/kongo--vg-rootlv on \/lnx-res type ext4 (ro,relatime)\n\/proc on \/lnx-res\/proc type proc (rw,relatime)\nsysfs on \/lnx-res\/sys type sysfs (rw,nosuid,nodev,noexec,relatime)\ncgroup2 on \/lnx-res\/sys\/fs\/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate,memory_recursiveprot)\nudev on \/lnx-res\/dev type devtmpfs (rw,nosuid,relatime,size=8152512k,nr_inodes=2038128,mode=755,inode64)\ndevpts on \/lnx-res\/dev\/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)\n<\/pre>\n<p>Je kan nu proberen een umount recursieve te geven maar dat gaat waarschijnnlijk niet lukken omdat de \/lnx-res\/dev sysfs niet unmounted kunnen worden.<\/p>\n<pre>piet@antares:~$ sudo umount -R \/lnx-res \numount: \/lnx-res\/dev\/pts: target is busy.\n\npiet@antares:~$ mount |grep lnx-res \n\/dev\/mapper\/kongo--vg-rootlv on \/lnx-res type ext4 (ro,relatime)\n\/proc on \/lnx-res\/proc type proc (rw,relatime)\nsysfs on \/lnx-res\/sys type sysfs (rw,nosuid,nodev,noexec,relatime)\ncgroup2 on \/lnx-res\/sys\/fs\/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate,memory_recursiveprot)\nudev on \/lnx-res\/dev type devtmpfs (rw,nosuid,relatime,size=8152512k,nr_inodes=2038128,mode=755,inode64)\ndevpts on \/lnx-res\/dev\/pts type devpts  (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)\n<\/pre>\n<p>Omdit te voorkomen kan je eerst <b>mount &#8211;make-rslave mountpoint<\/b><\/p>\n<pre>piet@antares:~$ sudo mount --make-rslave \/lnx-res\npiet@antares:~$ sudo umount -R \/lnx-res \npiet@antares:~$ mount |grep lnx-res \npiet@antares:~$\n<\/pre>\n<p>Hier alle mount zijn nu weg nu kan je de disk weer gewoon verwijderen van je virtual systeem.<\/p>\n\n\n\n\n","protected":false},"excerpt":{"rendered":"<p>Het gebeurt iedereen wel eens je hebt een linux machine die niet meer wil starten. je hebt een foutje gemaakt of een probleem met de bootloader. in mijn geval een probleem met een qcow2 disk die niet meer wil starten. Om deze te fixen kan je de disk image aan een andere virtual machine koppelen ..<\/p>\n<div class=\"clear-fix\"><\/div>\n<p><a href=\"https:\/\/wiki.graven-ict.nl\/wordpress\/linux-chroot-env-rescue\/\" title=\"Meer lezen...\">Lees meer<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[18,2,3,1],"tags":[],"class_list":["post-925","post","type-post","status-publish","format-standard","hentry","category-boot","category-linux","category-lvm-filesystemen-raid-disk","category-uncategorized"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wiki.graven-ict.nl\/wordpress\/wp-json\/wp\/v2\/posts\/925","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wiki.graven-ict.nl\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wiki.graven-ict.nl\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wiki.graven-ict.nl\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wiki.graven-ict.nl\/wordpress\/wp-json\/wp\/v2\/comments?post=925"}],"version-history":[{"count":5,"href":"https:\/\/wiki.graven-ict.nl\/wordpress\/wp-json\/wp\/v2\/posts\/925\/revisions"}],"predecessor-version":[{"id":930,"href":"https:\/\/wiki.graven-ict.nl\/wordpress\/wp-json\/wp\/v2\/posts\/925\/revisions\/930"}],"wp:attachment":[{"href":"https:\/\/wiki.graven-ict.nl\/wordpress\/wp-json\/wp\/v2\/media?parent=925"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wiki.graven-ict.nl\/wordpress\/wp-json\/wp\/v2\/categories?post=925"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wiki.graven-ict.nl\/wordpress\/wp-json\/wp\/v2\/tags?post=925"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}