{"id":13,"date":"2013-12-12T14:40:15","date_gmt":"2013-12-12T14:40:15","guid":{"rendered":"http:\/\/fidomenal.com\/?p=13"},"modified":"2013-12-16T14:39:28","modified_gmt":"2013-12-16T14:39:28","slug":"how-to-chroot-a-k-a-recuperar-un-sistema-que-no-bootea","status":"publish","type":"post","link":"http:\/\/fidomenal.com\/?p=13","title":{"rendered":"How to chroot a.k.a. recuperar un sistema que no bootea"},"content":{"rendered":"<p>Muchas veces, sobre todo cuando se anda trasteando, nos hemos visto en el aprieto de no poder acceder al sistema para repararlo, pero la soluci\u00f3n es f\u00e1cil: usar el comando <em>chroot<\/em> desde un LiveCD\/RepairCD cualquiera.<\/p>\n<p>En muchos sitios (foros, blogs&#8230;) se menciona este comando y se da un \u00abcopy\/paste\u00bb del c\u00f3digo, pero mi intenci\u00f3n con este post es explicar un poco esos pasos, para poder hacer un buen uso de esta herramienta, con conocimineto de causa.<\/p>\n<h3>Introducci\u00f3n<\/h3>\n<p>El comando <em>chroot<\/em> es conocido como CHangeROOT, es decir, un comando que te permite cambiar la ra\u00edz del sistema sobre la que est\u00e1s trabajando. En otra palabras: si est\u00e1s desde un LiveCD y quieres que todo lo que est\u00e9s trabajando sobre la consola tenga efecto en el sistema instalado, previamente debes hacer uso de <em>chroot<\/em>.<\/p>\n<p>El problema est\u00e1 en que no basta con usar <em>chroot<\/em> tal cual, antes debemos montar adecuadamente determinadas particiones.<\/p>\n<h3>HOW TO<\/h3>\n<p>Primero necesitamos iniciar alguna terminal, ya sea desde otro sistema instalado (en otra partici\u00f3n\/disco) o desde un LiveCD. IMPORTANTE: la arquitectura del LiveCD debe coincidir con la del sistema a reparar (32 o 64 bits).<br \/>\nUna vez estemos en la terminal empezaremos identificando nuestras particiones:<br \/>\n<code><br \/>\nfdisk -l<br \/>\n<\/code><\/p>\n<ul>\n<li>Con este comando listaremos todas nuestras particiones\/discos. Debemos identificar cu\u00e1l es la partici\u00f3n objetivo, donde est\u00e1 instalado nuestro sistema a reparar, a partir de ahora lo llamaremos <em>sistema roto<\/em>.<\/li>\n<\/ul>\n<p>Para este ejemplo consideraremos que nuestro sistema roto est\u00e1 en <em>\/dev\/sda1<\/em> .<\/p>\n<p>Pasamos a montar el sistema. Primero crearemos la carpeta donde vamos a trabajar y posteriormente montamos la partici\u00f3n donde se encuentra nuestro sistema roto en dicha carpeta<br \/>\n<code><br \/>\nmkdir \/mnt\/my_linux<br \/>\nmount \/dev\/sda1 \/mnt\/my_linux<br \/>\n<\/code><br \/>\nSi ten\u00e9is la carpeta <em>\/home<\/em> o <em>\/var<\/em> o cualquier otra en otra partici\u00f3n, deber\u00edais montarla\/s de la siguiente manera:<br \/>\n<code><br \/>\nmount \/dev\/sda2 \/mnt\/my_linux\/var<br \/>\n<\/code><\/p>\n<ul>\n<li><em>NOTA: he tomado como ejemplo la partici\u00f3n \/dev\/sda2 para la carpeta \/var, que cada uno ajuste el c\u00f3digo a sus caracter\u00edsticas.<\/em><\/li>\n<\/ul>\n<p>Normalmente con esto bastar\u00eda si simplemente se necesita editar archivos a mano, pero si queremos ejecutar algunos comandos que configuran el sistema, nos hace falta montar determinadas carpetas especiales del sistema: <em>\/dev<\/em>, <em>\/proc<\/em> y <em>\/sys.<\/em><br \/>\n<code><br \/>\nmount -t proc proc \/mnt\/my_linux\/proc<br \/>\nmount -t sysfs sys \/mnt\/my_linux\/sys<br \/>\nmount -o bind \/dev \/mnt\/my_linux\/dev<br \/>\n<\/code><\/p>\n<ul>\n<li>Con la opci\u00f3n <em>-t <\/em> le decimos a <em>mount<\/em> el tipo de \u00abfilesystem\u00bb que queremos montar. Es necesario especificarlo por la naturaleza especial de las carpetas <em>\/proc <\/em> y <em>\/sys<\/em>.<\/li>\n<\/ul>\n<ul>\n<li>Con la opci\u00f3n <em>-o <\/em> especificamos las opciones de <em>mount<\/em>. La opci\u00f3n <em>bind<\/em> sirve para \u00ablinkear\u00bb. En UNIX todos los dispositivos hardware son accesibles a trav\u00e9s de la carpeta <em>\/dev<\/em>, por eso debemos montar nuestro actual <em>\/dev<\/em> en la carpeta donde ahora se encuentra nuestro sistema roto. Al ya estar montada esta carpeta, solo es necesario decirle a <em>mount<\/em> d\u00f3nde est\u00e1 originalmente montada.<\/li>\n<\/ul>\n<p>Se hace de esta forma para que <em>chroot<\/em> tenga acceso a estas carpetas como si se tratasen del sistema roto, aunque deben ser del sistema actual (ej: la sesi\u00f3n del LiveCD) ya que guardan relaci\u00f3n con el estado del sistema, los procesos y el hardware.<\/p>\n<p>Ahora llega el momento de poder usar <em>chroot<\/em>:<br \/>\n<code><br \/>\nchroot \/mnt\/my_linux\/ \/bin\/bash<br \/>\n<\/code><\/p>\n<ul>\n<li>Al comando se le pasan como argumentos la ruta de la nueva ra\u00edz \u00ab\/\u00bb (que en nuestro caso es <em>\/mnt\/my_linux<\/em>) y la consola que se desea utilizar (en este caso hemos optado por la archiconocida bash, encontrada en <em>\/bin\/bash<\/em>). Si no especificamos la consola nos encontraremos ante un int\u00e9rprete de \u00f3rdenes un poco arcaico (no rellena al pulsar el tabulador, etc).<\/li>\n<\/ul>\n<p>Ahora ya podemos usar la consola como si tuviesemos la sesi\u00f3n de root iniciada en nuestro sistema roto (editar archivos, revisar scripts, instalar\/desinstalar paquetes&#8230;). \u00a1OJO!, para que los cambios realizados surtan efecto, hay que desmontar el sistema de ficheros despu\u00e9s de salir de <em>chroot<\/em>, mirad el ejemplo de abajo.<\/p>\n<p>M\u00e1s informaci\u00f3n en <a title=\" https:\/\/wiki.archlinux.org\/index.php\/Change_Root\" href=\"https:\/\/wiki.archlinux.org\/index.php\/Change_Root\" target=\"_blank\">https:\/\/wiki.archlinux.org\/index.php\/Change_Root<\/a> (lectura m\u00e1s que recomendada).<\/p>\n<h3>Ejemplo de uso: restauraci\u00f3n de GRUB2<\/h3>\n<p>Uno de los usos m\u00e1s extendidos de <em>chroot<\/em> es como herramienta para poder reparar el GRUB. Ya que si se nos rompe el grub, es pr\u00e1cticamente imposible bootear nuestro sistema para poder arreglarlo.<\/p>\n<p>AVISO: este peque\u00f1o tutorial es un mero ejemplo, funciona en varias distribuciones derivadas de Debian, Ubuntu y openSUSE entre otras. A\u00fan as\u00ed revisen la documentaci\u00f3n propia de vuestra distribuci\u00f3n, ya que en muchas no se encuentra el comando <em>update-grub.<\/em><br \/>\n<em># NOTA: estos comandos se ejecutan una vez dentro de chroot.<\/em><br \/>\n<code><br \/>\nupdate-grub<br \/>\ngrub-install \/dev\/sda<br \/>\n<\/code><\/p>\n<ul>\n<li>Con <em>update-grub<\/em> actualizamos el menu de entrada de GRUB2, a\u00f1adiendo as\u00ed las posibles entradas que falten. Posteriormente reinstalamos GRUB en nuestro disco, ya que ha sido da\u00f1ado.<\/li>\n<\/ul>\n<p>En este caso he tomado <em>\/dev\/sda<\/em> como el disco en donde tenemos nuestro sistema, esto deb\u00e9is adaptarlo a vuestro caso.<\/p>\n<p>Nuestro GRUB ya deber\u00eda estar reparado, asi que debemos salir de <em>chroot<\/em>, desmontar el sistema de ficheros (IMPORTANTE) y reiniciar para que los cambios surtan efecto. Si se nos olvida desmontar el sistema de ficheros, es posible que al reiniciar \u00e9stos no se desmonten correctamente y por lo tanto algunos cambios no tendr\u00edan efecto.<br \/>\n# salimos de chroot<br \/>\n<code><br \/>\nexit<br \/>\n<\/code><br \/>\n# desmontamos el sistema de ficheros y reiniciamos<br \/>\n<code><br \/>\numount \/mnt\/my_linux\/dev<br \/>\numount \/mnt\/my_linux\/sys<br \/>\numount \/mnt\/my_linux\/proc<br \/>\numount \/mnt\/my_linux<br \/>\nreboot<br \/>\n<\/code><br \/>\nY esto es todo. Espero que lo disfruten y que les sirva de utilidad. \u00a1Un saludo!<\/p>\n<p>NOTA: tutorial originalmente escrito para <a title=\"http:\/\/blog.desdelinux.net\/reparacion-del-sistema-howto-chroot\/\" href=\"http:\/\/blog.desdelinux.net\/reparacion-del-sistema-howto-chroot\/\" target=\"_blank\">DesdeLinux<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Muchas veces, sobre todo cuando se anda trasteando, nos hemos visto en el aprieto de no poder acceder al sistema para repararlo, pero la soluci\u00f3n es f\u00e1cil: usar el comando chroot desde un LiveCD\/RepairCD cualquiera. En muchos sitios (foros, blogs&#8230;) se menciona este comando y se da un \u00abcopy\/paste\u00bb del c\u00f3digo, pero mi intenci\u00f3n con &hellip; <a href=\"http:\/\/fidomenal.com\/?p=13\" class=\"more-link\">Seguir leyendo <span class=\"screen-reader-text\">How to chroot a.k.a. recuperar un sistema que no bootea<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[18,15,19,6,17,16],"class_list":["post-13","post","type-post","status-publish","format-standard","hentry","category-linux","tag-boot","tag-chroot","tag-grub","tag-linux-2","tag-recovery","tag-repair"],"_links":{"self":[{"href":"http:\/\/fidomenal.com\/index.php?rest_route=\/wp\/v2\/posts\/13","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/fidomenal.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/fidomenal.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/fidomenal.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/fidomenal.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=13"}],"version-history":[{"count":5,"href":"http:\/\/fidomenal.com\/index.php?rest_route=\/wp\/v2\/posts\/13\/revisions"}],"predecessor-version":[{"id":21,"href":"http:\/\/fidomenal.com\/index.php?rest_route=\/wp\/v2\/posts\/13\/revisions\/21"}],"wp:attachment":[{"href":"http:\/\/fidomenal.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=13"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/fidomenal.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=13"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/fidomenal.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=13"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}