swift 12/07/13 18:06:52 Modified: metadoc.xml Added: grub2-migration.xml Log: Fix #316603 (part 1) - introduce grub2 migration guide
Revision Changes Path 1.240 xml/htdocs/doc/en/metadoc.xml file : http://sources.gentoo.org/viewvc.cgi/gentoo/xml/htdocs/doc/en/metadoc.xml?rev=1.240&view=markup plain: http://sources.gentoo.org/viewvc.cgi/gentoo/xml/htdocs/doc/en/metadoc.xml?rev=1.240&content-type=text/plain diff : http://sources.gentoo.org/viewvc.cgi/gentoo/xml/htdocs/doc/en/metadoc.xml?r1=1.239&r2=1.240 Index: metadoc.xml =================================================================== RCS file: /var/cvsroot/gentoo/xml/htdocs/doc/en/metadoc.xml,v retrieving revision 1.239 retrieving revision 1.240 diff -u -r1.239 -r1.240 --- metadoc.xml 22 Apr 2012 03:37:37 -0000 1.239 +++ metadoc.xml 13 Jul 2012 18:06:52 -0000 1.240 @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE metadoc SYSTEM "/dtd/metadoc.dtd"> -<!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/en/metadoc.xml,v 1.239 2012/04/22 03:37:37 nightmorph Exp $ --> +<!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/en/metadoc.xml,v 1.240 2012/07/13 18:06:52 swift Exp $ --> <metadoc lang="en"> - <version>1.161</version> + <version>1.162</version> <members> <lead>nightmorph</lead> <member>cam</member> @@ -322,6 +322,7 @@ <file id="hpc-howto">/doc/en/hpc-howto.xml</file> <file id="gnap-userguide">/proj/en/base/embedded/gnap-userguide.xml</file> <file id="grub-error-guide">/doc/en/grub-error-guide.xml</file> + <file id="grub2-migration">/doc/en/grub2-migration.xml</file> <file id="usb-guide">/doc/en/usb-guide.xml</file> <file id="liveusb">/doc/en/liveusb.xml</file> <file id="fluxbox-config">/doc/en/fluxbox-config.xml</file> @@ -994,6 +995,9 @@ <doc fileid="grub-error-guide"> <memberof>install_other</memberof> </doc> + <doc fileid="grub2-migration"> + <memberof>upgrade</memberof> + </doc> <doc fileid="usb-guide"> <memberof>install_other</memberof> </doc> 1.1 xml/htdocs/doc/en/grub2-migration.xml file : http://sources.gentoo.org/viewvc.cgi/gentoo/xml/htdocs/doc/en/grub2-migration.xml?rev=1.1&view=markup plain: http://sources.gentoo.org/viewvc.cgi/gentoo/xml/htdocs/doc/en/grub2-migration.xml?rev=1.1&content-type=text/plain Index: grub2-migration.xml =================================================================== <?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE guide SYSTEM "/dtd/guide.dtd"> <!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/en/grub2-migration.xml,v 1.1 2012/07/13 18:06:52 swift Exp $ --> <guide> <title>GRUB2 migration from GRUB Legacy</title> <author title="Author"> <mail link="cardoe"/> </author> <abstract> The goal of this guide is to provide you with a smooth migration from GRUB Legacy to GRUB2. </abstract> <!-- The content of this document is licensed under the CC-BY-SA license --> <!-- See http://creativecommons.org/licenses/by-sa/2.5 --> <license/> <version>1</version> <date>2012-07-13</date> <chapter> <title>Background</title> <section> <title>What's Grub?</title> <body> <p> Grub is one of the most commonly found boot loaders in use on non-embedded Linux machines. The role of Grub is to facilitate the Linux kernel being loaded from your disk into memory and start executing the Linux kernel. </p> </body> </section> <section> <title>So Why Migrate?</title> <body> <p> Firstly, GRUB Legacy is no longer maintained and as such no longer receives updates. GRUB Legacy was created at a time when the developers felt safe in making several assumptions which no longer hold true today. For example, GRUB Legacy is unable to boot from disks larger than 2TB and assumes that newer filesystems wouldn't come to replace <path>/boot</path>. </p> <p> GRUB2 aims to be more robust, more portable, more powerful and is maintained with a cleaner code base. GRUB2 supports more hardware configurations, more filesystems and more drive layouts than its predecessor. </p> </body> </section> </chapter> <chapter> <title>Migration to GRUB2</title> <section> <body> <p> Migration to GRUB2 is fairly straightforward: it will be pulled in as part of your regular upgrade process by your package manager. If it is not pulled in automatically, you can always install <c>sys-boot/grub:2</c>. </p> </body> </section> <section id="boot_drive"> <title>Boot Drive</title> <body> <p> The first important part is to understand what your bootable drive is. For many people it will be <path>/dev/sda</path>. The easiest way to find this is to look at how your existing GRUB Legacy is setup by viewing <path>/boot/grub/grub.conf</path>. An example one is provided below. </p> <note> You must have your <path>/boot</path> mounted to be able to view these files. It should be as simple as <c>mount /boot</c> to mount <path>/boot</path>. </note> <pre caption="/boot/grub/grub.conf"> default 0 timeout 30 splashimage=(hd0,0)/boot/grub/splash.xpm.gz title Gentoo Linux 3.2.12 root (hd0,0) kernel /boot/kernel-3.2.12-gentoo root=/dev/sda3 quiet dolvm initrd /boot/initramfs-genkernel-x86_64-3.2.12-gentoo </pre> <p> Based on the above file we know that <c>(hd0)</c> is the boot drive but we must map this to a real device. To know this you must view <path>/boot/grub/device.map</path>. An example one is provided below. </p> <pre caption="/boot/grub/device.map"> (fd0) /dev/fd0 (hd0) /dev/sda (hd1) /dev/sdb </pre> <p> Based on the above file we know that <path>/dev/sda</path> is the boot drive. </p> </body> </section> <section id="grub_install"> <title>Installing and Configuring GRUB2</title> <body> <p> The next step is to install and configure GRUB2 on your <path>/boot</path> partition without removing GRUB Legacy from your MBR. The example below uses <path>/dev/sda</path> but you must replace it with your boot drive path. The first step installs the necessary GRUB2 files to <path>/boot/grub2</path>, while the second step scans your available kernels and generates a suitable config file to <path>/boot/grub2/grub.cfg</path>. </p> <pre caption="Installing and configuring GRUB2"> # <i>grub2-install --grub-setup=/bin/true /dev/sda</i> Installation finished. No error reported. # <i>grub2-mkconfig -o /boot/grub2/grub.cfg</i> Generating grub.cfg ... Found linux image: /boot/kernel-3.2.12-gentoo Found initrd image: /boot/initramfs-genkernel-x86_64-3.2.12-gentoo done </pre> <note> GRUB2 has strict naming requirements for kernels and initramfs images. A kernel must be named <c>kernel-${version}</c> while an initramfs must be named <c>initramfs-${version}</c>, <c>initramfs-genkernel-${version}</c>, <c>initramfs-genkernel-${arch}-${version}</c>, <c>initrd-${version}.img</c>, <c>initrd.img-${version}</c>, <c>initrd-${version}.gz</c>, or <c>initrd-${version}</c>. Together with ${version}, the filename must match a corresponding kernel that is available in <path>/boot</path>. </note> </body> </section> <section id="chainload"> <title>Chainloading GRUB2 from GRUB Legacy to test the setup</title> <body> <p> Because a broken GRUB configuration could mean an unbootable system, we want to test our GRUB2 configuration before making it permenant. To do this we will chainload GRUB2 from GRUB Legacy. This is done by adding a new section into <path>/boot/grub/grub.conf</path>. An example is shown below. </p> <note> Beaware that your root maybe different from <c>(hd0,0)</c> used in the example and make sure you reuse the same root value from your <path>/boot/grub/grub.conf</path>. </note> <pre caption="/boot/grub/grub.conf"> default 0 timeout 30 splashimage=(hd0,0)/boot/grub/splash.xpm.gz <i>title GRUB2 Chainload root (hd0,0) kernel /boot/grub2/i386-pc/core.img boot</i> title Gentoo Linux 3.2.12 root (hd0,0) kernel /boot/kernel-3.2.12-gentoo root=/dev/sda3 quiet dolvm initrd /boot/initramfs-genkernel-x86_64-3.2.12-gentoo </pre> <p> At this point you should reboot your machine and select the <c>GRUB2 Chainload</c> from the GRUB menu when your machine begins to boot. You will be presented with another GRUB menu which should advertise itself as GRUB 2.0.0 or higher at the top and show your available kernel(s) to boot. Should this not work, simply reboot your system and pick your normal boot option instead of <c>GRUB2 Chainload</c>. </p> </body> </section> <section id="replacement"> <title>Replacing and removing GRUB Legacy</title> <body> <p> At this point if everything worked successfully you can replace GRUB Legacy and remove it from your system. </p> <note> Since you've rebooted your system, you may need to mount <path>/boot</path> again. You should also take note to use your boot drive path instead of <path>/dev/sda</path>. </note> <pre caption="Replacing GRUB Legacy"> # <i>grub2-install /dev/sda</i> Installation finished. No error reported. # <i>rm -rf /boot/grub/</i> </pre> <p> At this point you can use your package manager to remove <c>sys-boot/grub:0</c>. The migration is complete. </p> </body> </section> </chapter> <chapter> <title>Maintaining GRUB2</title> <section> <body> <p> Whenever you install a new kernel, you must perform the next step so that your GRUB2 configuration recognizes the new kernel. </p> <note> You must have your <path>/boot</path> partition mounted for this step. </note> <pre caption="Installing a new kernel"> # <i>grub2-mkconfig -o /boot/grub2/grub.cfg</i> Generating grub.cfg ... Found linux image: /boot/kernel-3.3.8-gentoo Found initrd image: /boot/initramfs-genkernel-x86_64-3.3.8-gentoo Found linux image: /boot/kernel-3.2.12-gentoo Found initrd image: /boot/initramfs-genkernel-x86_64-3.2.12-gentoo done </pre> </body> </section> </chapter> <chapter> <title>FAQ / Known Problems / Gotchas</title> <section> <body> <p> Content to come. </p> </body> </section> </chapter> </guide>
