{"id":424,"date":"2008-03-05T10:12:32","date_gmt":"2008-03-05T13:12:32","guid":{"rendered":"http:\/\/www.maurom.com\/blog\/?p=424"},"modified":"2012-09-05T21:42:26","modified_gmt":"2012-09-06T00:42:26","slug":"migrando-a-grub-2","status":"publish","type":"post","link":"https:\/\/maurom.com\/blog\/2008\/03\/05\/migrando-a-grub-2\/","title":{"rendered":"Migrando a GRUB 2"},"content":{"rendered":"<p>Otavio Salvador <a href=\"http:\/\/lists.debian.org\/debian-release\/2007\/04\/msg00328.html\">propuso en la lista de Debian-Release<\/a> pasar a utilizar <a href=\"http:\/\/www.gnu.org\/software\/grub\/grub-2.en.html\">GRUB2<\/a> en la pr\u00f3xima release (Debian Lenny) y comenz\u00f3 un <a href=\"http:\/\/lists.debian.org\/debian-release\/2007\/04\/threads.html#00328\">interesante thread<\/a> al respecto.<\/p>\n<p>Para el que no lo conoce, GRUB es el mnem\u00f3nico de <a href=\"http:\/\/es.wikipedia.org\/wiki\/GRUB\">GRand Unified Bootloader<\/a>. Un <span style=\"font-style: italic;\">boot loader<\/span>, o cargador de arranque, es el primer programa que se ejecuta cuando la computadora arranca (salvando la secuencia de arranque en ROM). El boot loader es responsable de cargar y transferir el control al n\u00facleo, o <span style=\"font-style: italic;\">kernel<\/span>, del sistema operativo. El kernel, luego, incializa el resto del sistema operativo.<\/p>\n<p>GRUB es, para aquellos que tenemos Linux, el &#8220;men\u00fa que aparece en la pantalla&#8221; y que nos permite seleccionar el sistema operativo, o la versi\u00f3n de kernel, que vamos a iniciar. Otro gestor conocido y que muchos hemos utilizado alguna vez, es <a href=\"http:\/\/en.wikipedia.org\/wiki\/LILO_%28boot_loader%29\">LILO<\/a>.<\/p>\n<p>La versi\u00f3n 1 de GRUB, ahora denominada GRUB Legacy, es la que utiliza la mayor\u00eda de las distribuciones de GNU\/Linux actuales y ya no est\u00e1 siendo desarrollada activamente por la comunidad; no se est\u00e1n a\u00f1adiendo nuevas funcionalidades y s\u00f3lo se est\u00e1n aplicando los parches necesarios para mantenerlo al d\u00eda mientras la versi\u00f3n 2 se estabiliza. De ah\u00ed la solicitud de Otavio en la lista de mails.<\/p>\n<p>Los objetivos de esta nueva versi\u00f3n son, entre otros:<\/p>\n<ul>\n<li>Permitir scripting, condicionales, bucles, variables y funciones.<\/li>\n<li>Interfaz gr\u00e1fica.<\/li>\n<li>Extensibilidad mediante carga din\u00e1mica de m\u00f3dulos.<\/li>\n<li>Portabilidad a distintas arquitecturas.<\/li>\n<li>Internacionalizaci\u00f3n. Soporte para caracteres fuera del conjunto ascii, mensajes localizados, etc.<\/li>\n<li>Mejor administraci\u00f3n de memoria.<\/li>\n<li>Marco de trabajo modular, jer\u00e1rquico y orientado a objetos para sistemas de archivo, archivos, dispositivos, unidades, terminales, comandos, tablas de partici\u00f3n y cargadores de SO.<\/li>\n<li>Instalaci\u00f3n multiplataforma.<\/li>\n<li>Modo de rescate para casos en los cuales es imposible iniciar.<\/li>\n<li>Corregir errores de dise\u00f1o de la versi\u00f3n anterior de GRUB, que no pueden resolverse debido a compatibilidad inversa, por ejemplo el numerado de las particiones (he he he &#8230;).<\/li>\n<\/ul>\n<p>Hay que advertir que, sin embargo, <a href=\"http:\/\/grub.enbug.org\/TodoList#head-45b6c08cea58b68a06b6b8e4b29058818c8472d5\">algunos sistemas de archivo todav\u00eda no est\u00e1n soportados<\/a> (faltan reiser3 y reiser4, por ejemplo). Parte del estado de la transici\u00f3n en Debian est\u00e1 documentado en las p\u00e1ginas <a href=\"http:\/\/wiki.debian.org\/Grub\/Grub2\">Grub2<\/a> y <a href=\"http:\/\/wiki.debian.org\/GrubTransition\">GrubTransition<\/a> de la Debian wiki.<\/p>\n<p>Con el objeto de comenzar a testear esta nueva versi\u00f3n, decid\u00ed instalarla en una instalaci\u00f3n de Debian Lenny local. Para ello, en primer lugar hay que descargar e instalar el metapaquete <a href=\"http:\/\/packages.debian.org\/lenny\/grub2\">grub2<\/a>, que se encargar\u00e1 de efectuar la migraci\u00f3n del archivo de configuraci\u00f3n anterior al nuevo formato e instalar el nuevo cargador de arranque en modo chainloading, manteniendo la versi\u00f3n de GRUB anterior para permitir la recuperaci\u00f3n en caso de una falla.<\/p>\n<pre># aptitude install grub2<\/pre>\n<p>El paso siguiente, por cierto bastante evidente, es reiniciar el equipo para verificar el funcionamiento del nuevo cargador de arranque. Ver\u00e1n en la pantalla de selecci\u00f3n que la primer opcion de GRUB es iniciar el nuevo cargador de arranque (&#8220;Chainload into GRUB 2&#8221;).<\/p>\n<p>Al ingresar en GRUB2 notar\u00e1n el cambio en el despliegue de la imagen de fondo (<span style=\"font-style: italic;\">debian-blueish-wallpaper<\/span> en mi caso, y muy agradable por cierto) y el men\u00fa desde el cual podr\u00e1n seleccionar el sistema operativo a iniciar.<\/p>\n<p>Si ocurri\u00f3 alguna falla durante el inicio, pueden volver a iniciar cualquiera de los sistemas operativos instalados mediante el primer men\u00fa de GRUB (Legacy).<\/p>\n<p>Si todo sali\u00f3 bien, ya pueden sobreescribir el cargador de arranque antiguo con el nuevo. Para ello hay que ejecutar como <span style=\"font-style: italic;\">root<\/span>:<\/p>\n<pre># upgrade-from-grub-legacy<\/pre>\n<p>La configuraci\u00f3n en la versi\u00f3n Legacy se almacenaba generalmente en el archivo <span style=\"font-style: italic;\">menu.lst<\/span> dentro del directorio <span style=\"font-style: italic;\">\/boot\/grub<\/span> (o donde tengan instalado el cargador). En GRUB2, la configuraci\u00f3n se almacena en el archivo <span style=\"font-style: italic;\">grub.cfg<\/span>, que es generado autom\u00e1ticamente en Debian por <span style=\"font-style: italic;\">update-grub<\/span> siguiendo las plantillas almacenadas en <span style=\"font-style: italic;\">\/etc\/grub.d<\/span> y el archivo <span style=\"font-style: italic;\">\/etc\/default\/grub<\/span><\/p>\n<p><span style=\"font-style: italic;\"><span style=\"font-weight: bold;\">Actualizaci\u00f3n (29\/04\/2008):<\/span> Ya no es necesario incorporar las entradas de los sistemas operativos a mano en la configuraci\u00f3n del gestor de arranque. La <\/span><a style=\"font-style: italic;\" href=\"http:\/\/packages.debian.org\/lenny\/grub-pc\">versi\u00f3n de grub en Debian Lenny<\/a><span style=\"font-style: italic;\"> puede incorporar autom\u00e1ticamente al men\u00fa de arranque los sistemas operativos existentes en el equipo gracias a la detecci\u00f3n realizada por el paquete <\/span><a style=\"font-style: italic;\" href=\"http:\/\/packages.debian.org\/lenny\/os-prober\">os-prober<\/a><span style=\"font-style: italic;\">. De todas formas, dejo tal cual el procedimiento que sigue pues puede servir ante un fallo.<\/span><\/p>\n<p>Para a\u00f1adir una nueva entrada de sistema operativo en el men\u00fa hay que crear un nuevo archivo en <span style=\"font-style: italic;\">\/etc\/grub.d<\/span>. Por ejemplo, para a\u00f1adir una entrada de arranque a Windows XP podemos seguir los <a href=\"http:\/\/linux.derkeiler.com\/Mailing-Lists\/Debian\/2007-07\/msg01789.html\">pasos indicados en este thread<\/a> y crear un archivo <span style=\"font-style: italic;\">20_windows_xp<\/span> en <span style=\"font-style: italic;\">\/etc\/grub.d<\/span> con las siguientes l\u00edneas<\/p>\n<pre>#! \/bin\/sh -e\r\n\r\ncat &lt;&lt; EOF\r\nmenuentry \"Microsoft Windows XP Professional\" {\r\n    set root=(hd0,1)\r\n    chainloader +1\r\n}\r\nEOF<\/pre>\n<p>Donde <span style=\"font-style: italic;\">(hd0,1)<\/span> ser\u00e1 lo que ten\u00edan definido en <span style=\"font-style: italic;\">menu.lst<\/span> s\u00f3lo que con un n\u00famero m\u00e1s. Vale decir, si era <span style=\"font-style: italic;\">(hd0,0)<\/span> ahora ser\u00e1 <span style=\"font-style: italic;\">(hd0,1)<\/span>. Este cambio viene de larga data y a petici\u00f3n de varios pues, como recordar\u00e1n, las particiones en GRUB Legacy se numeraban desde el 0, con lo cual siempre eran un n\u00famero menor a las indicadas por <span style=\"font-style: italic;\">fdisk<\/span> en Linux, y eso nos ha tra\u00eddo dolores de cabeza a m\u00e1s de uno.<\/p>\n<p>Finalmente queda dar los permisos de ejecuci\u00f3n al script y volver a generar la configuraci\u00f3n en base a estas plantillas con:<\/p>\n<pre># chmod +x \/etc\/grub.d\/20_windows_xp\r\n# update-grub<\/pre>\n<p>Y reiniciar para probar nuevamente&#8230;<\/p>\n<p>Si la imagen de fondo de GRUB2 no les agrada, pueden obtener m\u00e1s im\u00e1genes instalando el paquete <a href=\"http:\/\/packages.debian.org\/lenny\/grub2-splashimages\">grub2-splashimages<\/a> o crear una utilizando GIMP o su editor favorito.<\/p>\n<p>Bien eso es todo. Mucha suerte y en el caso de que no tengan \u00e9xito, siempre tengan a mano un <a href=\"http:\/\/www.debian.org\/CD\/http-ftp\/\">CD o DVD de Debian<\/a> de la arquitectura que est\u00e1n utilizando, para iniciar en modo rescate, jeje&#8230;<\/p>\n<p>Saludos!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Otavio Salvador propuso en la lista de Debian-Release pasar a utilizar GRUB2 en la pr\u00f3xima release (Debian Lenny) y comenz\u00f3 un interesante thread al respecto. Para el que no lo conoce, GRUB es el mnem\u00f3nico de GRand Unified Bootloader. Un boot loader, o cargador de arranque, es el primer programa que se ejecuta cuando la [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[5,3],"_links":{"self":[{"href":"https:\/\/maurom.com\/blog\/wp-json\/wp\/v2\/posts\/424"}],"collection":[{"href":"https:\/\/maurom.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/maurom.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/maurom.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/maurom.com\/blog\/wp-json\/wp\/v2\/comments?post=424"}],"version-history":[{"count":0,"href":"https:\/\/maurom.com\/blog\/wp-json\/wp\/v2\/posts\/424\/revisions"}],"wp:attachment":[{"href":"https:\/\/maurom.com\/blog\/wp-json\/wp\/v2\/media?parent=424"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/maurom.com\/blog\/wp-json\/wp\/v2\/categories?post=424"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/maurom.com\/blog\/wp-json\/wp\/v2\/tags?post=424"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}