{"id":137542,"date":"2026-05-21T09:00:00","date_gmt":"2026-05-21T07:00:00","guid":{"rendered":"https:\/\/supporthost.com\/it\/?p=137542"},"modified":"2026-05-13T10:53:54","modified_gmt":"2026-05-13T08:53:54","slug":"comando-chroot-linux","status":"publish","type":"post","link":"https:\/\/supporthost.com\/it\/comando-chroot-linux\/","title":{"rendered":"Come si usa il comando chroot su Linux"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Vuoi sapere come usare il comando chroot per cambiare la root directory? In questa guida vedremo a cosa serve questo comando, come si usa in generale e come usarlo in un caso pratico.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Iniziamo!<\/p>\n\n\n\n<div class=\"wp-block-rank-math-toc-block\" id=\"rank-math-toc\"><h2>Indice<\/h2><nav><ul><li><a href=\"#a-cosa-serve-il-comando-chroot\">A cosa serve il comando chroot?<\/a><\/li><li><a href=\"#come-usare-il-comando-chroot\">Come usare il comando chroot<\/a><\/li><li><a href=\"#usare-chroot-per-riparare-il-bootloader\">Usare chroot per riparare il bootloader<\/a><\/li><li><a href=\"#conclusioni\">Conclusioni<\/a><\/li><\/ul><\/nav><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"a-cosa-serve-il-comando-chroot\">A cosa serve il comando chroot?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Il comando chroot (che sta per <em>change root<\/em>) ci permette di modificare in modo <em>apparente<\/em>, la root di sistema, vale a dire la directory principale del sistema.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Definendo una nuova cartella come root, andiamo a creare un ambiente circoscritto: i processi non possono infatti accedere ai file o ai comandi che non sono contenuti nella nuova root. Trattandosi di un ambiente isolato dal resto del sistema, viene perci\u00f2 definito <strong>chroot jail<\/strong> o prigione chroot.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Il comando chroot ci permette di creare un ambiente separato per diversi motivi, vediamo i principali.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Reinstallare il boot loader<\/strong>: se l&#8217;installazione del boot loader \u00e8 fallita o ci sono file mancanti o corrotti, si pu\u00f2 usare il comando chroot per reinstallarlo.<\/li>\n\n\n\n<li><strong>Aggiornare i pacchetti<\/strong>: in chroot si possono fare singoli aggiornamenti e downgrade del kernel in caso di problemi.<\/li>\n\n\n\n<li><strong>Resettare la password di root<\/strong>: uno dei metodi per recuperare la password di root \u00e8 quello di usare una distribuzione live, come un USB bootable, fare il chroot e poi cambiare la password con il comando passwd.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Oltre che a risolvere problemi, il comando chroot ci permette semplicemente di creare un ambiente separato e quindi pu\u00f2 essere usato in certi casi come alternativa a una macchina virtuale.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"come-usare-il-comando-chroot\">Come usare il comando chroot<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Per prima cosa creiamo una cartella che sar\u00e0 la nostra nuova root. Ci basta usare il <a href=\"https:\/\/supporthost.com\/it\/comando-mkdir-linux\/\" data-type=\"post\" data-id=\"125708\">comando mkdir<\/a>, in questo modo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir chroot-jail<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ora proviamo a usare il comando chroot, seguito dal nome della cartella appena creata, in questo modo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>chroot chroot-jail<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Avremo un errore come questo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>chroot: failed to run command \u2018\/usr\/bin\/bash\u2019: No such file or directory<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Questo succede perch\u00e9 la cartella che abbiamo creato \u00e8 vuota, ma il comando chroot cerca di lanciare <em>bash<\/em> e, non trovandolo, restituisce questo errore.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La prima cosa da fare, quindi, \u00e8 copiare dei programmi all&#8217;interno della nuova root. Non ci baster\u00e0 per\u00f2 solo copiare gli <strong>eseguibili<\/strong>, ma dovremo anche copiare le <strong>librerie<\/strong> che questi programmi utilizzano per funzionare.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Per cominciare possiamo partire proprio dal copiare <em>bash<\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ricreiamo quindi l&#8217;albero delle cartelle all&#8217;interno di chroot-jail:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>creiamo la cartella usr<\/li>\n\n\n\n<li>al suo interno creiamo le cartelle &#8220;bin&#8221; e &#8220;lib&#8221;.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Se usiamo il comando which seguito dal nome del comando possiamo risalire alla posizione dell&#8217;eseguibile.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>which bash<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Nel nostro caso, su Arch, l&#8217;output sar\u00e0:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/usr\/bin\/bash<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dopo aver trovato la posizione, copiamo l&#8217;eseguibile:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cp \/usr\/bin\/bash ~\/chroot-jail\/usr\/bin\/bash<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ora \u00e8 il momento di copiare le librerie, per prima cosa per conoscere le dipendenze di un comando possiamo usare il comando ldd cos\u00ec:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ldd \/usr\/bin\/bash<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"232\" src=\"https:\/\/supporthost.com\/it\/wp-content\/uploads\/sites\/2\/2026\/02\/comando-chroot-trovare-dipendenze-eseguibile-1024x232.png\" alt=\"Comando Chroot Trovare Dipendenze Eseguibile\" class=\"wp-image-137545\" srcset=\"https:\/\/supporthost.com\/it\/wp-content\/uploads\/sites\/2\/2026\/02\/comando-chroot-trovare-dipendenze-eseguibile-1024x232.png 1024w, https:\/\/supporthost.com\/it\/wp-content\/uploads\/sites\/2\/2026\/02\/comando-chroot-trovare-dipendenze-eseguibile-300x68.png 300w, https:\/\/supporthost.com\/it\/wp-content\/uploads\/sites\/2\/2026\/02\/comando-chroot-trovare-dipendenze-eseguibile-768x174.png 768w, https:\/\/supporthost.com\/it\/wp-content\/uploads\/sites\/2\/2026\/02\/comando-chroot-trovare-dipendenze-eseguibile-120x27.png 120w, https:\/\/supporthost.com\/it\/wp-content\/uploads\/sites\/2\/2026\/02\/comando-chroot-trovare-dipendenze-eseguibile.png 1285w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">L&#8217;output ci mostrer\u00e0 quali sono le librerie che ci servono e quindi quali sono le librerie da copiare nella cartella chroot-jail.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A questo punto usiamo il <a href=\"https:\/\/supporthost.com\/it\/comando-cp-linux\/\" data-type=\"post\" data-id=\"76900\">comando cp<\/a> per copiare le librerie, nel nostro caso in questo modo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cp \/usr\/lib\/libreadline.so.8 ~\/chroot-jail\/usr\/lib\/libreadline.so.8\ncp \/usr\/lib\/libncursesw.so.6 ~\/chroot-jail\/usr\/lib\/libncursesw.so.6\ncp \/usr\/lib\/libc.so.6 ~\/chroot-jail\/usr\/lib\/libc.so.6\ncp \/usr\/lib64\/ld-linux-x86-64.so.2 ~\/chroot-jail\/usr\/lib\/ld-linux-x86-64.so.2<\/code><\/pre>\n\n\n\n<p class=\"note wp-block-paragraph\">Nel nostro caso specifico, bisogna tenere presente che le librerie in <em>lib64<\/em> sono in realt\u00e0 da inserire nella cartella \/usr\/lib perch\u00e9 \/lib e \/lib64 sono link simbolici che rimandano alla cartella \/usr\/lib.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Una volta copiate le librerie, possiamo cambiare root in questo modo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo chroot chroot-jail<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">A questo punto vedremo nel terminale &#8220;bash&#8221; seguito dal numero della versione, questo ci indica che chroot \u00e8 correttamente in uso. \u00c8 importante ricordarsi che quando si usa chroot si ha automaticamente accesso come root.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Per <strong>uscire<\/strong> ci basta digitare:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>exit<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">In questo modo torneremo al sistema principale.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"usare-chroot-per-riparare-il-bootloader\">Usare chroot per riparare il bootloader<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nel nostro caso \/dev\/sdh2 \u00e8 la root di sistema, \/dev\/sdh1 \u00e8 la partizione di boot. Creiamo innanzitutto una cartella dove montare il dispositivo con il bootloader non funzionante.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir \/mnt\/chroot<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Montiamo la root del sistema con il <a href=\"https:\/\/supporthost.com\/it\/comando-mount-linux\/\">comando mount<\/a>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mount \/dev\/sdh2 \/mnt\/chroot<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Poi montiamo la partizione di boot con il seguente comando:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mount \/dev\/sdh1 \/mnt\/chroot\/boot<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ora passiamo al montaggio delle API del file system che permettono il corretto funzionamento del sistema ed inoltre per i sistemi operativi UEFI \u00e8 necessario montare anche le variabili EFI per far s\u00ec che GRUB si installi correttamente e possa essere funzionante all&#8217;avvio.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mount -t proc \/proc \/mnt\/chroot\/proc\nmount -t sysfs \/sys \/mnt\/chroot\/sys\nmount -o bind \/dev \/mnt\/chroot\/dev\nmount -o bind \/run \/mnt\/chroot\/run<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Infine le variabili EFI per poter ripristinare correttamente il bootloader:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mount -o bind \/sys\/firmware\/efi\/efivars \/mnt\/chroot\/sys\/firmware\/efi\/efivars\/<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Se \u00e8 necessario connettersi ad internet, ad esempio per scaricare dei nuovi pacchetti per la distribuzione, \u00e8 necessario copiare anche il file resolv.conf che contiene le informazioni dei DNS.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cp \/etc\/resolv.conf \/mnt\/chroot\/etc\/resolv.conf<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Fatto questo, il sistema \u00e8 pronto per essere avviato con il comando chroot:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>chroot \/mnt\/chroot\/ \/usr\/bin\/bash<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Se vogliamo distinguere le due shell in maniera pi\u00f9 semplice, nel file .bashrc (il file di configurazione che ci permette anche di memorizzare gli <a href=\"https:\/\/supporthost.com\/it\/comando-alias-linux\/\">alias<\/a>) si pu\u00f2 inserire una variabile che aggiunge (chroot) prima della riga user@hostname:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>export PS1=\"(chroot) $PS1\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">In questo modo ogni volta che apriremo chroot troveremo (chroot) davanti.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"506\" src=\"https:\/\/supporthost.com\/it\/wp-content\/uploads\/sites\/2\/2026\/02\/chroot-collegato-al-sistema-guest-1024x506.png\" alt=\"Chroot Collegato Al Sistema Guest\" class=\"wp-image-137544\" srcset=\"https:\/\/supporthost.com\/it\/wp-content\/uploads\/sites\/2\/2026\/02\/chroot-collegato-al-sistema-guest-1024x506.png 1024w, https:\/\/supporthost.com\/it\/wp-content\/uploads\/sites\/2\/2026\/02\/chroot-collegato-al-sistema-guest-300x148.png 300w, https:\/\/supporthost.com\/it\/wp-content\/uploads\/sites\/2\/2026\/02\/chroot-collegato-al-sistema-guest-768x379.png 768w, https:\/\/supporthost.com\/it\/wp-content\/uploads\/sites\/2\/2026\/02\/chroot-collegato-al-sistema-guest-120x59.png 120w, https:\/\/supporthost.com\/it\/wp-content\/uploads\/sites\/2\/2026\/02\/chroot-collegato-al-sistema-guest.png 1229w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Ritornando al caso di utilizzo iniziale, ovvero recuperare il bootloader, tenendo in considerazione che la distribuzione che stiamo utilizzando \u00e8 Arch Linux e la partizione EFI \u00e8 montata in \/boot possiamo recuperare il sistema operativo con il seguente comando:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>grub-install --target=x86_64-efi --efi-directory=\/boot --bootloader-id=GRUB<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Per assicurarci che non ci siano discrepanze tra gli uuid delle partizioni possiamo anche rigenerare il file di configurazione di GRUB con il seguente comando:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>grub-mkconfig -o \/boot\/grub\/grub.cfg<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Quando abbiamo terminato il nostro lavoro, usciamo da chroot con il comando:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>exit<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">E se il nostro ambiente <em>confinato<\/em> non ci serve pi\u00f9 \u00e8 possiamo smontare i file system montati in precedenza con il comando:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>umount --recursive \/mnt\/chroot<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"conclusioni\">Conclusioni<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Con il comando chroot su Linux possiamo creare un <strong>ambiente isolato<\/strong> rispetto al file system, questo ci permette di creare un ambiente separato, ad esempio per eseguire processi senza dare accesso a tutto il sistema. Inoltre, cambiare la directory root \u00e8 anche utile per <strong>risolvere vari problemi <\/strong>come recuperare la password o risolvere errori con il bootloader.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Vuoi sapere come usare il comando chroot per cambiare la root directory? In questa guida vedremo a cosa serve questo comando, come si usa in generale e come usarlo in un caso pratico. Iniziamo! A cosa serve il comando chroot? Il comando chroot (che sta per change root) ci permette di modificare in modo apparente, [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":137630,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[67],"tags":[],"class_list":["post-137542","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-linux"],"acf":[],"_links":{"self":[{"href":"https:\/\/supporthost.com\/it\/wp-json\/wp\/v2\/posts\/137542","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/supporthost.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/supporthost.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/supporthost.com\/it\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/supporthost.com\/it\/wp-json\/wp\/v2\/comments?post=137542"}],"version-history":[{"count":8,"href":"https:\/\/supporthost.com\/it\/wp-json\/wp\/v2\/posts\/137542\/revisions"}],"predecessor-version":[{"id":145347,"href":"https:\/\/supporthost.com\/it\/wp-json\/wp\/v2\/posts\/137542\/revisions\/145347"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/supporthost.com\/it\/wp-json\/wp\/v2\/media\/137630"}],"wp:attachment":[{"href":"https:\/\/supporthost.com\/it\/wp-json\/wp\/v2\/media?parent=137542"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/supporthost.com\/it\/wp-json\/wp\/v2\/categories?post=137542"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/supporthost.com\/it\/wp-json\/wp\/v2\/tags?post=137542"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}