Προς το περιεχόμενο

Grub 2 οδηγός χρήσης-ρυθμισης Αγγλικά


chek2fire

Προτεινόμενες αναρτήσεις

Βρήκα αυτόν εδώ τον φοβερό οδηγό για την ρύθμιση του grub 2 στο kubuntu forum.

 

http://kubuntuforums.net/forums/index.php?topic=3106368.msg195838#msg195838

 

Ο οδηγός έχει γραφτεί από το μέλος Qqmike και καθώς πιστεύω ότι στην γνώση δεν υπάρχουν πνευματικά δικαιώματα ανεβάζω και εδώ το φοβερά χρήσιμο post του.

 

 

GRUB 2 A Guide for Users Updated: 9/10/09

 

 

In Progress -- DRAFT -- this still needs testing, expansion, and awaits the completion of the GRUB 2 Manual: http://grub.enbug.org/'>http://grub.enbug.org/Manual'>http://grub.enbug.org/Manual'>http://grub.enbug.org/Manual . I've left various To Do's for myself throughout the text.

 

> Keep an eye on SECTION 5: Tutorials: Where to go to study Grub 2.

 

First thing to do: Get Super Grub Disk bootable rescue CD.

 

From a user's view, in many ways, GRUB 2 is simpler than GRUB Legacy; certainly cleaner, more elegant, more logical (hierarchical, modular).

 

Tech stuff: see references.

 

GRUB 2 Practical Reminders (a cheat sheet for those who know what they are doing) -- you'll find this at the end of SECTION 4 Special Topics. You may wish to modify this, customizing it for what you need.

 

TABLE of CONTENTS

 

SECTION 1

Introduction

History: Grub Legacy, Grub 2

Differences between Grub Legacy and Grub 2

Grub 2 commands

 

SECTION 2

Key Facts About the Boot menu, grub.cfg

Quick version -- Overview -- Details

/etc/grub/default --> /etc/grub.d --> /boot/grub/menu.lst

Rules for editing grub.cfg, /etc/default/grub, and the script files in /etc/grub.d

 

SECTION 3 Fixing Things

A checklist of things to try to fix a broken system

Ctrl+Alt+Del will reboot your PC (at any time)

Super Grub Disk: Very Important

Key commands: sudo update-grub and sudo grub-install

-- Install/re-install GRUB 2 to a MBR or to a partition boot sector:

sudo grub-install [iNSTALL_DEVICE]

Exs.: INSTALL_DEVICE may be /de/sda, /dev/sda1, hd0, hd1, etc.

-- Generate a new boot menu configuration file /boot/grub/grub.cfg:

sudo update-grub

Timeout & Default OS, changing

Kernel options, changing

Missing OS entry in the boot menu

Editing the boot menu during booting: "e" key

You get a grub> prompt instead of a boot menu

Using the GRUB prompt grub> to fix your system: "c" key

Key: Re-installing GRUB 2 using Live CD

 

SECTION 4

Special Topics

Installing Grub 2 to your PC

The various types of command lines!

emu, "c," grub>, Konsole BASH, edit "e"

How to get information about your drives and devices

Boot menu: Adding or removing an OS entry

Boot menu: Create a custom boot entry

Boot menu: Making your own custom grub.cfg

Dual booting: How to set it up

Dedicated Grub 2 partition: How to build it

4 ways to boot an OS

direct booting configfile, symlinks, chainloader

grub> Grub's CLI from the boot menu, "c" key

Use of the term "root"

GRUB's Root Device, the Linux statement, root=UUID=,

--root-directory=DIR INSTALL_DEVICE

 

Cheat sheet:

GRUB 2 Practical Reminders: listing of key files, commands, methods

 

SECTION 5

Tutorials: Where to go to study Grub 2

Rely on these few references for comprehensive, detailed treatment.

 

Appendix: Techniques

 

--- Working as root, editing a file -- see below

--- Permissions: read, write, execute; change the execute bit -- see below

--- Chroot -- how to -- see below

--- Konsole

Commands at Konsole: Beginners: 3 parts

http://kubuntuforums.net/forums/index.php?topic=3091607.0'>http://kubuntuforums.net/forums/index.php?topic=3091607.0'>http://kubuntuforums.net/forums/index.php?topic=3091607.0'>http://kubuntuforums.net/forums/index.php?topic=3091607.0'>http://kubuntuforums.net/forums/index.php?topic=3091607.0

--- GRUB Legacy

How To GRUB Methods - Toolkit

http://kubuntuforums.net/forums/index.php?topic=3081671.0'>http://kubuntuforums.net/forums/index.php?topic=3081671.0'>http://kubuntuforums.net/forums/index.php?topic=3081671.0'>http://kubuntuforums.net/forums/index.php?topic=3081671.0

 

References

 

= = = = = = = = = = = = = = = = = = = =

SECTION 1

Introduction

History: GRUB Legacy, GRUB 2

Differences between GRUB Legacy and GRUB 2

GRUB 2 commands

 

History: GRUB Legacy, GRUB 2

"Briefly, boot loader is the first software program that runs when a computer starts. It is responsible for loading and transferring control to the operating system kernel software (such as the Hurd or the Linux). The kernel, in turn, initializes the rest of the operating system (e.g. GNU)." (gnu.org)

 

The original GRUB (GRand Unified Bootloader) was developed by Erich Stefan Boleyn, from which came the GRUB most of us know, GRUB version 0.9x, and that is now referred to as GRUB Legacy (or even GRUB 1 by some writers). GRUB 2 replaces GRUB Legacy. (GRUB 2 is actually the end result of versions GRUB 1.xx; e.g., 1,96, 1.97, ...)

 

For the history of GRUB and some interesting links, see

http://www.gnu.org/software/grub/'>http://www.gnu.org/software/grub/

 

GRUB 2 is cleaner, more efficient, powerful, and more elegant, in many ways it is simpler to use than GRUB Legacy.

GRUB 2: http://www.gnu.org/software/grub/grub-2.en.html'>http://www.gnu.org/software/grub/grub-2.en.html

Its mailing list for development,

GRUB-devel: http://lists.gnu.org/mailman/listinfo/grub-devel

And the Wiki: http://grub.enbug.org/

 

GRUB 2 is the default bootloader in 9.10

https://lists.ubuntu.com/archives/ubuntu-devel-announce/2009-June/000573.html'>https://lists.ubuntu.com/archives/ubuntu-devel-announce/2009-June/000573.html

 

Differences between GRUB Legacy and GRUB 2

From the user's view, the biggest difference between the two versions of GRUB concerns the configuration file. The configuration file in GRUB Legacy is /boot/grub/menu.lst (it is used to generate the boot menu you see at boot time). In GRUB 2, it is /boot/grub/grub.cfg (again, grub/cfg generates the boot menu you see at boot time). In GRUB Legacy, you can edit menu.lst directly and in any way you wish. In GRUB 2, you should not edit grub.cfg directly. Instead, you edit the file /etc/default/grub (which contains some default settings); this file feeds data to scripts in the folder /etc/grub.d. And you may edit the scripts (text files) in the folder /etc/grub.d; these scripts are used to generate the configuration file /boot/grub/grub.cfg. When you need a new grub.cfg, simply do sudo update-grub.

 

The configuration file in GRUB 2 grub.cfg looks different than the GRUB Legacy menu.lst. For example, in GRUB legacy, you use

default 0

timeout 5

In GRUB 2, default and timeout are variables, and it is

set default =0

set timeout=5

 

 

A boot entry in GRUB Legacy menu.lst might look like this:

title Ubuntu 8.04.3 LTS, kernel 2.6.24-24-generic

root (hd1,2)

kernel /boot/vmlinuz-2.6.24-24-generic root=UUID=0df17bc5-0056-4ef7-bfca-251194b6eb44 ro quiet splash

initrd /boot/initrd.img-2.6.24-24-generic

 

In GRUB 2 grub.cfg, it would look like this:

 

### BEGIN /etc/grub.d/10_Linux ###

menuentry "Ubuntu 8.04.3 LTS, kernel 2.6.24-24-generic" {

set root=(hd1,2)

linux /boot/vmlinuz-2.6.24-24-generic root=UUID=0df17bc5-0056-4ef7-bfca-251194b6eb44 ro quiet splash

initrd /boot/initrd.img-2.6.24-24-generic

}

### END /etc/grub.d/10_Linux ###

 

Note how the title line is changed in GRUB 2: Use menuentry instead, put the text in quotes, and start the boot entry with a left brace {, ending it with a right brace }. Instead of kernel, the word linux is used; initrd is the same. Instead of root=, in GRUB 2 it is set root= (in GRUB 2, root is not a constant value, it is a variable).

 

In GRUB Legacy, the user may open a GRUB shell by typing sudo grub, and then use it to install/re-install GRUB (root-setup-quit) to a Master Boot Record or to a partition boot sector. In GRUB 2, there is no such option. Instead, the key command is the Konsole (BASH) command grub-install. At Konsole, as root, you will use sudo grub-install to install/re-install GRUB 2 to a Master Boot Record or to a partition boot sector.

 

Device names have changed. In GRUB Legacy, the numbering of both hard drives and partitions start at zero. (hd0,0) is the first hard drive (hd0), the first partition (partition zero). In GRUB 2, the numbering of hard drives also starts at zero: hd0 is the first hard drive. But partition numbering starts at 1: (hd0,1) is the first hard drive, the first partition (partition one).

 

In GRUB Legacy, we use the find command; e.g., grub>find /boot/grub/menu.lst. In GRUB 2, it is the search command: grub>search /boot/grub/grub.cfg.

 

In GRUB legacy, the geometry command (at the grub> prompt) is very useful for listing devices as GRUB sees them on your PC. It is not used in GRUB 2. Instead the list command ls (at the grub> prompt) is used.

 

GRUB Legacy uses stages: stage_1, stage_1.5, and stage_2. Those are replaced in GRUB 2 by boot.img (a 512-byte file that corresponds to stage_1 and is installed to a MBR); there is no stage_1.5 in GRUB 2; and core.img in GRUB 2 takes the place of stage_2 (or, perhaps, of both stage 1.5 and stage_2). The boot.img points at core.img; core.img is embedded in some fixed location (on a disk),

but usually that location is in the same "cylinder" as the MBR that contains boot.img. (Details: the MBR goes into sector 1 and is 512 bytes, and that's where boot.img goes. This first cylinder has 63 sectors, so that leaves 62 sectors or 31,744 bytes (=62*512) where core.img may be embedded. This first cylinder (of 63 sectors containing boot.img and core.img) precedes the start of the first partition on that disk, which would start at sector 63 (counting of sectors starts at zero, so 63 sectors take us to the end of sector 62 = the start of sector 63). You will see this if you run as root fdisk -lu.)

 

GRUB 2 Commands -- compared to GRUB Legacy

Comparison chart:

http://grub.enbug.org/CommandList'>http://grub.enbug.org/CommandList

Key useful items to note:

 

device is replaced by loopback (makes a drive out of a file)

find is replaced with search

geometry is gone and replaced by ls

kernel is replaced by linux (and other terms for different OSs)

map is replaced by drivemap

quit is gone (halt is sometimes used)

root is still used but is now a variable

set is a GRUB 2 term used to set a variable

setup is gone; the work is done by grub-install

title (in menu.lst) is replaced by menuentry (in grub.cfg)

 

 

- - - - - - - - - - - - - - - - - - - -

SECTION 2 Key Facts About the Boot menu, grub.cfg

 

Quick version:

/etc/grub/default --> /etc/grub.d --> /boot/grub/menu.lst

Rules:

-- Do not edit /boot/grub/grub/cfg.

-- You may edit (as root) /etc/default/grub

(timeout, default OS, kernel options, resolution of the boot menu)

-- You may edit (as root) the scripts in /etc/grub.d.

-- Together, /etc/default/grub and the scripts in /etc/grub.d generate /boot/grub/grub.cfg.

-- To create a script, start with a text file as root: kdesudo kate

-- To make filename executable: sudo chmod 744 /etc/grub.d/filename

or, sudo chmod +x /etc/grub.d/filename

-- To remove execute permission from filename: sudo chmod -x /etc/grub.d/filename

-- To open Konqueror (Dolphin) as root: kdesudo konqueror

-- Generate a new configuration file /boot/grub/grub.cfg after editing /etc/default/grub and after editing, creating, or deleting scripts in /etc/grub.d, as follows: sudo update-grub

 

TODO, check this: grub-mkconfig ... used instead of update-grub in Karmic Koala?

sudo grub-mkconfig ?

 

Details

The configuration file is called /boot/grub/grub.cfg, and it generates the boot menu you see on your screen when you boot your PC (and so, /boot/grub/grub.cfg can be called the boot menu configuration file). You are NOT supposed to edit it (it is read-only). It is generated from a folder of scripts called /etc/grub.d. Another key file is /etc/grub/default and it feeds default data to the scripts in /etc/grub.d. You may edit /etc/grub/default (as root). You may also edit the scripts in /etc/grub.d (as root). If you create a new file in /etc/grub.d, you must make it executable if you want the entry included in the configuration file grub.cfg. If you do not want a script to execute (and so remove that entry from grub.cfg), you must remove the execute bit (i.e., remove the execute permission).

 

>>> Key reminder:

Generate a new grub.cfg after changing anything in /etc/default/grub or /etc/grub.d, by:

sudo update-grub

 

Experts: Editing grub.cfg

The file is read-only, so change permission to include Write:

sudo chmod +w /boot/grub/grub.cfg

Then do the edits as root and Save. When update-grub is run, the file returns to read-only, AND your edits may be overwritten (and therefore gone).

Optional: After editing, restore permissions to disallow writing:

sudo chmod -w /boot/grub/grub.cfg or

sudo chmod 444 /boot/grub/grub.cfg

 

The default settings file /etc/grub/default

This file feeds data to the scripts in /etc/grub.d. It contains the The Default operating system, the Timeout, kernel options, resolution of the graphical boot menu, and other default settings. You may edit this file with root privileges.

 

The folder of scripts /etc/grub.d

These scripts generate /boot/grub/grub.cfg when the update-grub command is run (as root). The order of the entries in grub.cfg corresponds to the order of the files in /etc/grub.d, starting with 00_header, then 01_scriptname, etc., through all files starting with NN_ where NN is a 2-digit number and _ is the underscore (Shift+(minus sign)); then comes scripts whose names start with a letter (e.g., a_anotherscript).

 

You may edit the script files (as root) or create new ones. To create a new entry in grub.cfg, you simply create a new script file: a text file that you make executable (like a program). To remove an entry from grub.cfg, remove the execute permission from the corresponding script file in /etc/grub.d. (If the entry corresponds to a custom script you wrote, you may also delete that script file from /etc/grub.d).

See SECTION 4 Special Topics -- Create a custom boot entry.

 

Editing the script files in /etc/grub.d:

Do your work as root.

To make the file /etc/grub.d/filename executable:

sudo chmod 744 /etc/grub.d/filename

To remove the execute bit from the file filename:

sudo chmod -x /etc/grub.d/filename

When done, run

sudo update-grub

to generate a new boot menu configuration file /boot/grub/grub.cfg.

GUI, setting permissions

Open Konqueror or Dolphin as root (e.g., kdesudo konqueror).

Open the file.

Right-click > Properties > Permissions, Advanced Permissions

 

 

Tip: To open a file in /etc/grub.d (as root)

The files in /etc/grub.d are scripts. So, as root, if you click on one, it will want to execute or run like a program. Instead, to open a script for editing/viewing, right-click on the script file, Open With Kate or Kwrite. That opens the file as a text file. Now you can read it or edit it.

Details:

GUI, working as root: Open Konqueror (Dolphin) as root and work from there:

kdesudo konqueror

CLI, working as root: kdesudo kate /etc/grub.d/script_name

 

 

Quick reference

The (standard) files in /etc/grub.d (each is a script) are:

00_header

05_debian_theme: Set background, text colors, themes

10_hurd Locates Hurd kernels

10_linux Locates Linux kernels based on results of the lsb_release command.

20_memtest86+: If the file /boot/memtest86+.bin exists, it is included in the boot menu.

30_os-prober: Searches for Linux and other OS's on all partitions; includes them in the boot menu.

40_custom: A template for adding custom boot menu entries.

 

See Appendix: permissions, working as root, Konsole, and other topics.

 

 

- - - - - - - - - - - - - - - - - - - -

SECTION 3 Fixing Things

A checklist of things to try to fix a broken system:

Ctrl+Alt+Del will reboot your PC (at any time)

Super Grub Disk: Very Important

Key commands: sudo update-grub and sudo grub-install

-- Install/re-install GRUB 2 to a MBR or to a partition boot sector:

sudo grub-install [iNSTALL_DEVICE]

Exs.: INSTALL_DEVICE may be /dev/sda, /dev/sda1, hd0, hd1, etc.

-- Generate a new boot menu configuration file /boot/grub/grub.cfg:

sudo update-grub

Timeout & Default OS, changing

Kernel options, changing

Missing OS entry in the boot menu

Editing the boot menu during booting: "e" key

You get a grub> prompt instead of a boot menu

Using the GRUB prompt grub> to fix your system: "c" key

Re-installing GRUB 2 using Live CD

 

 

Ctrl+Alt+Del will reboot your PC (at any time)

If your PC freezes up during the experiments/testing/troubleshooting of your bootloader, use Ctrl+Alt+Del to re-boot the PC. Be prepared to do something, though!

Examples of what to do:

-- Before using Ctrl+Alt+Del, put the Super Grub Disk CD in the CD tray so you can re-boot to it and rescue your OS.

-- Be prepared to press the key required to enter your BIOS setup. That will buy you some time, or give you a chance to change hard drive booting order, or put a live CD or SGD in the CD tray, or get your notes ready, etc.

-- If you have been getting a boot menu, let the PC reboot into it, then enter Edit mode (pressing the "e" key) or enter the GRUB 2 CLI (pressing the key "c"), then try to fix things from there.

 

 

Super Grub Disk: Very Important

Whether you think you need it or not, get it now, free, as a bootable CD which will get you booted into your operating system in case you can't. SGD can be downloaded here:

http://www.supergrubdisk.org/'>http://www.supergrubdisk.org/

Look for a CD ROM iso version, download it, burn it as an iso image to a CD (using K3b), test it briefly (by running it and stepping through a few menus but not choosing anything; then Quit; or, use it to boot into your OS). Keep your SGD CD handy.

 

Tip (using SGD to boot into your broken OS)

Choose GBU/Linux > Fix Boot, then select the broken partition.

Should you decide to simply Quit the SGD (without doing anything), do so, select reboot, enter your BIOS setup, remove the SGD CD, exit BIOS, and continue rebooting.

 

Key commands: sudo update-grub and sudo grub-install

Use these two commands to "freshen up" your GRUB 2 installation.

update-grub: builds a new boot menu configuration file /boot/grub/grub.cfg.

grub-install: builds a complete, fresh GRUB 2 installation, including /boot/grub/grub.cfg.

 

The command

sudo update-grub

will generate a new boot menu /boot/grub/grub/cfg. To do so, it uses /etc/default/grub and the scripts in /etc/grub.d. You should run update-grub after editing the default file or the scripts.

 

> Man page: (8)UPDATE-GRUB - Generate grub.cfg.

http://grub.enbug.org/FranklinPiat/update-grub.manpage

 

The command

sudo grub-install [iNSTALL_ DEVICE]

installs or re-installs GRUB 2 to INSTALL_DEVICE. For example,

 

sudo grub-install /dev/sda

installs GRUB 2 to the Master Boot Record of drive sda. And

sudo grub-install /dev/sda

installs GRUB 2 to the boot sector of the partition sda1.

In doing so, grub-install does a complete job of setting uo everything:

Here's what it does: It builds the directory /boot/grub (if it doesn't already exit), copies GRUB 2 files to it from the "master" image directory /usr/lib/grub/i386-pc, probes your drives and devices and partition table, makes a new device.map, builds and installs boot.img (to MBR) and core.img, and builds /boot/grub/grub.cfg.

 

 

> Man page: (8)GRUB-INSTALL - Install GRUB on your drive.

http://grub.enbug.org/FranklinPiat/grub-install.manpage'>http://grub.enbug.org/FranklinPiat/grub-install.manpage

 

Troubleshooting

-- After running sudo update-grub, make sure that the line set default=(hdx,y) is correct (i.e., that the order of the menuentries did not change the default OS position).

-- sudo grub-install --recheck [iNSTALL_DEVICE]

=> If you get an error running sudo grub-install, try it again with sudo grub-install --recheck [iNSTALL_DEVICE].

 

Timeout and Default OS, changing

The timeout is the length of time in seconds before the (highlighted) default OS is automatically booted (if you do not intervene by touching a key). To change these values, open the file /etc/default/grub as root, make the changes, Save, exit, then generate a new /boot/grub/grub.cfg by running sudo update-grub.

 

Opening /etc/default/grub as root

If your file manager supports it, open the file manager, navigate to /etc/default/grub, right-click on the file, Actions, Edit as Root. Otherwise:

Open the file manager as root and work from there:

kdesudo konqueror

kdesudo dolphin

Or, open the file as root using Kate or Kwrite:

kdesudo kate /etc/default/grub

 

Sample (see your file /etc/default/grub):

GRUB_DEFAULT=0

GRUB_TIMEOUT=5

 

GRUB_DEFAULT=0 selects boot entry #0 (i.e., the first entry) as the default OS to be booted automatically. Boot entries can be seen in your /boot/grub/grub.cfg file; they start with a line

menuentry "some descriptive text" {

and end with

}

 

Boot entries are counted from zero; so the first menuentry is boot entry #0, the second menuentry is boot entry #1, etc.

 

Troubleshooting Tip: Check default OS setting after update-grub

If you recently added/removed a boot entry (by editing a /etc/grub.d script) and ran sudo update-grub to generate a new boot menu, you might have to check and edit the line "GRUB_DEFAULT= " if the default sequence number changed.

TO DO: Check also: sudo grub-set-default N.

 

Kernel options, changing

To change these values, open the file /etc/default/grub as root, make the changes, Save, exit. (See Timeout and Default OS above for editing tips.) The line in /etc/default/grub looks like this (or similar):

GRUB_CMDLINE_LINUX="quiet splash"

 

Missing OS entry in the boot menu

If you run update-grub, and there is a missing entry in your boot menu, you can add that entry as a custom entry. See SECTION 4 below, Special Topics Boot menu: Create a custom boot entry.

 

 

Editing the boot menu during booting using the "e" key

When you boot/re-boot your PC, the boot menu appears. If you select an entry (an OS to boot into) and get an error, and if you are able to return to the boot menu (or re-boot again to get it), you may be able to fix things or to experiment with your boot menu to see if something will work. See the help tips at the bottom of the boot menu. At the boot menu, highlight an entry, press the "e" key, and you'll see the menuentry statements for that OS. See the help tips at the bottom of that menu. If you highlight a line, press the "e" key, that line will be displayed so you can edit it (using arrow keys, delete, etc.). Pressing ESC returns you to the previous screen.

 

If you need a grub> prompt, hit "c" key at the original boot menu or Control+c at the Edit mode menu. From the grub> prompt, you may be able to issue commands to help you gather information about your drives or to boot your computer (using SECTION 4 Special Topics, the subsection "4 ways to boot an OS" -- direct booting configfile, symlinks, chainloader; and the subsection "How to get information about your drives and devices"). From the Edit mode menu, when you think you are ready, you may boot your PC (using your edited statements) by pressing Control+x. If you need to re-boot otherwise, get the GRUB 2 prompt, and use grub>reboot.

 

The edits you make to the boot menu are "on-the-fly" edits and are not permanent. To make them permanent, you'll have to edit /etc/default/grub and/or the script files in /etc/grub.d, perhaps even making a custom boot entry if necessary (SECTION 4 Special Topics Boot menu: Create a custom boot entry), then generate a new /boot/grub/grub.cfg file by issuing sudo update-grub.

 

Key:

 

Re-installing GRUB 2 using Live CD

(In progress. See reference:

GRUB 2 Live CD Install Guide

http://grub.enbug.org/Grub2LiveCdInstallGuide'>http://grub.enbug.org/Grub2LiveCdInstallGuide

Comment: TODO -- re-test this; it didn't work yet for me, but it might work for you if you have a more current version of GRUB 2 or in 9.10.)

> See Appendix: Chroot, how-to.

 

 

Steps:

Start your Kubuntu Live CD.

Choose the option to try Kubuntu without installing.

Open Konsole (Terminal): K-Menu > System > Konsole

Explore your partitions using

sudo fdisk -lu

Determine your root partition. Our example to demonstrate this method is sda2.

(If you have a separate /boot partition, see the reference cited.)

Make a mount point (directory) for partition sda2:

sudo mkdir /media/sda2

Mount sda2 on the mount point:

sudo mount /dev/sda2 /media/sda2

Mount the devices in your Live CD session:

sudo mount --bind /dev /media/dev

Chroot into sda2:

sudo chroot /media/sda2

Install (or re-install) GRUB 2 (into the MBR of drive sda):

sudo grub-install /dev/sda

Troubleshooting: If you get Auto-detection of filesystem failed, try:

sudo grub-install --recheck /dev/sda

Exit out of the Chroot by typing exit; or by Control+d.

Unmount both filesystems

sudo umount /dev/sda2 /media/sda2

sudo umount /media/dev

(Reminder: If you have a separate /boot and mounted it above, unmount it now.)

Leave Konsole:

exit

Test it:

Exit out of the Live CD, reboot, see if you fixed your booting problem (by booting into the broken partition).

 

Comment The error messages for me were:

# grub-install /dev/sda

grub-probe: error: cannot find a device for /boot/grub

Auto-detection of a filesystem module failed.

Please specify the module with the option `--modules' explicitly

So, I tried

# grub-install --recheck /dev/sda

grub-probe: error: cannot find a device for /boot/grub

Auto-detection of a filesystem module failed

Please specify the module with the option `--modules' explicitly.

grub-probe: error: Cannot get the real path of `/dev/sda'

Auto-detection of a filesystem module failed.

Please specify the module with the option `--modules' explicitly.

 

 

You get a grub> prompt instead of a boot menu

If you boot or re-boot and instead of seeing your boot menu, you get the grub> prompt, then your boot menu /boot/grub/cfg is either not present or is broken somehow. Examples of what to try:

 

-- Try to boot into an OS using commands at the GRUB 2 prompt, grub>. Use the booting methods explained in SECTION 4 Special Topics: "4 ways to boot an OS" -- direct booting configfile, symlinks, chainloader. Or use the subsection "How to get information about your drives and devices" from a grub> prompt).

 

-- Use Super Grub Disk to boot into your OS and then try to fix things from there.

> run sudo update-grub

> or reinstall GRUB 2 using sudo grub-install

 

-- Live CD: try to re-boot into a Live Kubuntu CD session and reinstall GRUB 2 from there by chrooting into your broken partition. See the subsection above: Re-installing GRUB 2 using Live CD.

 

Using the GRUB prompt grub> to fix your system: "c" key

When you see the boot menu, you can get a grub> prompt by pressing the "c" key. The discussion above applies: Try to boot into an OS using commands at the GRUB 2 prompt, grub>. Use the booting methods explained in SECTION 4 Special Topics: 4 ways to boot an OS -- direct booting configfile, symlinks, chainloader. Or use the subsection "How to get information about your drives and devices" from a grub> prompt).

 

 

 

- - - - - - - - - - - - - - - - - - - -

SECTION 4 Special Topics

Installing GRUB 2 to your PC

The various types of command lines!

emu, "c," grub>, Konsole BASH, edit "e"

How to get information about your drives and devices

Boot menu: Adding or removing an OS entry

Boot menu: Custom boot entry

Boot menu: Making your own custom grub.cfg

Dual booting: How to set it up

Dedicated GRUB 2 partition: How to build it

4 ways to boot an OS

direct booting configfile, symlinks, chainloader

grub> GRUB's CLI from the boot menu, "c" key

Use of the term "root"

GRUB's Root Device, the Linux statement, root=UUID=,

--root-directory=DIR INSTALL_DEVICE

 

 

Installing GRUB 2 to your PC

CAUTION, fair warning, you have been warned:

Have a bootable Super Grub Disk CD handy in case this messes up booting your PC.

 

To install GRUB 2 files to your PC, open Konsole and run the commands

sudo apt-get update

sudo apt-cache search grub-pc

(returns: grub-pc - GRand Unified Bootloader, version 2 (PC/BIOS version))

sudo apt-get install grub-pc

Then, install GRUB 2 to the Master Boot Record of your first BIOS boot drive. For example, if that MBR is sda, the command would be

sudo grub-install /dev/sda

And then update grub.cfg:

sudo update-grub

Reboot to see what happens.

The old GRUB may also still be there (in which case you saw an entry on the boot menu to chainload into GRUB 2), in which case you may run

sudo update-from-grub-legacy

to replace GRUB Legacy with GRUB 2 IF YOU WISH TO DO SO.

 

Troubleshooting

Installing GRUB 2 to the MBR: using --recheck

Example

sudo grub-install /dev/sda

grub-probe: error: cannot find a GRUB drive for /dev/sda2.

Auto-detection of a filesystem module failed.

Please specify the module with the option `--modules' explicitly.

So, try this:

sudo grub-install --recheck /dev/sda

Installation finished. No error reported.

This is the contents of the device map /boot/grub/device.map.

Check if this is correct or not. If any of the lines is incorrect,

fix it and re-run the script `grub-install'.

(hd0) /dev/sda

 

 

The various types of command lines!

emu, "c," grub>, Konsole BASH, edit "e"

When working with GRUB, you must work with root privileges and so you must use sudo and kdesudo. For example, sudo grub-install /dev/sda, kdesudo konqueror, etc.

The command lines you may use in GRUB 2 are the following.

-- Konsole (BASH), in Kubuntu, at your regular prompt (as root), ~#:

-- GRUB 2 emu (from Konsole, issue sudo grub-emu [OPTION]; this gives you a grub> prompt)

=>TODO: More on this later.

-- GRUB 2 command line interface (CLI), grub>. When you re-boot your PC, get the boot menu, and press the "c" key, you get a GRUB 2 prompt, grub>. That is the GRUB 2 CLI. You will also get grub> upon re-booting if you don't have a boot menu, grub.cfg, or if your boot menu is broken. (See the

subsection below titled "grub> Grub's CLI from the boot menu, 'c' key.")

-- Edit mode. Editing on the fly: when you re-boot and see your GRUB 2 boot menu, you can use the "e" key to edit your boot menu on a temporary basis (the edits are not permanent unless you make them so later). (See SECTION 3 -- Editing the boot menu during booting: "e" key.)

 

=> In all cases, help is nearby, and the commands are generally the same (or nearly so) in all modes, with a few differences.

 

Help:

Konsole BASH CLI:

Appending --help to a command in CLI; for example sudo update-grub --help.

GRUB CLI (grub>):

At the GRUB 2 prompt simply type help and press Enter.

To get help with a command, type help <command name>.

Example: grub>help ls tells you about the command ls.

Edit mode:

The key tips are at the bottom of the screen after your press "e"

to enter the edit mode from your on-screen boot menu.

Also, at that point, you can press Control+c to get a grub>,

then type help and/or use TAB completion.

 

TAB completion (grub>) While typing after the grub>, try pressing the TAB key and see what happens: in many cases, GRUB will try to help you complete the line with something meaningful or with choices. So type as much as you can recall or type a guess, then press TAB.

 

 

How to get information about your drives, devices, and files

Key: at Konsole sudo fdisk -lu; and grub> ls

We'll look at two cases: At the command line in Kubuntu (Konsole); and at the grub> prompt.

 

Konsole (BASH) command line

 

Exploring your hard drive(s): sudo fdisk -lu

=> sudo fdisk -lu is very useful, very important.

GRUB version number: grub-install -v

Drive space: df -h -T

UUIDs (see NOTE below):

blkid (or try sudo blkid); also:

ls /dev/disk/by-uuid/ -alh

grub.cfg, to see it: cat /boot/grub/grub.cfg

fstab (filesystem table), to see it: cat /etc/fstab

Mounting, how filesystems are mounted: cat /etc/mtab or: mount

Boot directory /boot, to find it: df /boot

Kernel version and gcc version (gcc=the GNU compiler used to build the kernel):

cat /proc/version

Kernel version: uname -r

Linux version/name: lsb_release -a

(hold the Shift key and the minus sign key to get _ . LSB = Linux Standard Base)

KDE version (KDE=K Desktop Environment)

for KDE 3.5: kde-config –version and for KDE 4: kde4-config --version

 

NOTE: UUID = Universally Unique Identifier

Starting with Kubuntu version 8.10, UUIDs are used to identify partitions. A UUID is a 16-byte number (= 128 bits). In canonical form, a UUID consists of 32 hexidecimal digits, displayed in 5 groups separated by hyphens.

 

 

At a GRUB prompt, grub>

 

Exploring your hard drive(s): grub> ls

=> Very useful, very important.

(in GRUB Legacy, the geometry command is used instead of ls.)

 

-- TAB completion

While typing after the grub>, try pressing the TAB key and see what happens: in many cases, GRUB will try to help you complete the line with something meaningful or with choices. So type as much as you can recall or type a guess, then press TAB.

 

-- GRUB 2 emulation sudo grub-emu

At Konsole, to get a grub> prompt, type sudo grub-emu.

To exit emu and return to Konsole, type halt.

>>> IMPORTANT sudo grub-emu and then grub>ls

While you are working at Konsole in Kubuntu, you may need to know how GRUB sees your drives and partitions, the (hdx,y)'s. You can switch into emulation made (sudo grub-emu)) and issue the list (ls) command at the GRUB prompt (grub>ls) to see your drives and GRUB devices.

 

 

-- Using search and cat

GRUB files, what partitions they are in: grub>search /boot/grub/boot.img

Boot menu, what partition(s) it is in: grub>search /boot/grub/grub.cfg

Boot menu, to see it: grub>cat (hdx,y)/boot/grub/grub.cfg

Kernel, where it is: grub>search /vmlinuz

fstab, to see it: grub>cat (hdx,y)/etc/fstab

Device.map, to see it: grub>cat (hdx,y)/boot/grub/device.map

 

(NOTE: In GRUB Legacy, the find command is used instead of search.)

 

-- Restart (reboot), or shutdown (halt) your PC at a command line

At Konsole:

sudo shutdown -r now (re-boots the PC)

sudo shutdown -h now (shuts down the PC)

In GRUB:

grub>reboot (re-boots the PC)

grub>halt (shuts down the PC)

 

-- Using ls to list the contents of a directory, grub>ls -l /directory

Example

grub>ls -l /boot

shows you the kernel and initrd files.

(The option -l indicates "long form" and gives more information. To see all files, including hidden files, use the option -a: grub>ls -a -l /boot; or grub>ls -al /boot)

 

 

Boot menu: Adding or removing an OS entry to grub.cfg

Rule: You do NOT edit grub.cfg directly. Instead, you work with script files in the folder /etc/grub.d.

 

-- Linux operating systems, added automatically

Look at your grub.cfg. The section

### BEGIN /etc/grub.d/10_linux ###

### END /etc/grub.d/10_linux ###

contains Linux operating systems that were automatically detected by GRUB 2 using the script file /etc/grub.d/10_linux. Most of your Linux OSs should be detected this way and included in the boot menu grub.cfg. If not, you can create a custom boot entry (see below, "Boot menu: Create a custom boot entry").

 

-- Windows and other OSs added automatically

This is done by the script /etc/grub.d/30_os-prober.

 

-- Adding or removing OSs from your PC. After doing so,

generate a new grub.cfg: sudo update-grub

 

 

-- Add a boot menu entry by making your own custom boot entry, then run:

sudo update-grub

to generate a new grub.cfg.

(See subsection below: "Boot menu: Create a custom boot entry")

 

-- Removing a boot entry from grub.cfg:

Two choices.

(1) Simply remove the execute bit from the script file in /etc/grub.d that corresponds to (i.e., generates) the boot entry.

Example: If that file is named 43_MyOS-1, then run the Konsole commands

sudo chmod -x /etc/grub.d/43_MyOS-1

sudo update-grub

(2) Or, remove the script file (for the boot entry) from the folder /etc/grub.d. Then run

sudo update-grub to generate the new grub.cfg file.

NOTE: If a custom file contains more than one boot entry, you may remove any number of them, leaving the rest. Then run sudo update-grub to generate your new boot menu, grub.cfg.

 

 

Boot menu: Custom boot entry

This is easy, usually.

-- There are 4 ways to make a boot entry (see "4 Ways To Boot an OS").

-- There is a custom template at /etc/grub.d/40_custom.

-- After you write the script file for your custom boot entry, make it executable.

-- Then generate a new grub.cfg by running sudo update-grub.

 

See the subsection below: "4 Ways To Boot an OS."

(direct booting, configfile, symlinks, chainload)

 

Troubleshooting: Sometimes when you run grub-install or update-grub, it will fail to detect one of your OSs and excludes it from the boot menu grub.cfg. In that case, you could make a custom entry for it (as a script file in /etc/grub.d).

 

Direct booting To get a model for some of the entries, you have two choices: (1) Get it from your old boot menu (/boot/grub/menu.lst) from GRUB Legacy (if that is available on your PC). Or, it may also be here, made by GRUB 2: menu.lst_backup_by_grub2_postinst. (2) Go into the operating system itself (the one you wish to include), or perhaps access its filesystem using a live CD, and get the information from its own boot menu.

 

Example

Making a custom entry for sidux. Method: Direct booting.

It helps if you have a model for some of the entries. In the old boot menu (/boot/grub/menu.lst) from my GRUB Legacy, I had this boot entry for sidux:

 

title Debian GNU/Linux, sidux kernel 2.6.28-5.slh.3-sidux-686

root (hd0,2)

kernel /boot/vmlinuz-2.6.28-5.slh.3-sidux-686 root=UUID=306d94a5-107b-4c9e-ae03-a159e18dc1c7 ro quiet vga=791

initrd /boot/initrd.img-2.6.28-5.slh.3-sidux-686

 

Using a template (e.g., /etc/grub.d/40_custom), create an executable file for the sidux boot entry:

Open an empty text document (as root)

kdesudo kate

Save the new file as, say, /etc/grub.d/41_sidux_sda3

Copy the kernel & initrd lines from menu.lst, change “kernel” to “linux,” adjust the sidux partition number to conform to GRUB 2 convention:

Legacy GRUB: (hd0,2)

GRUB 2: (hd0,3)

Also, double check the UUID for sda3 by running sudo blkid.

Result:

The file /etc/grub.d/41_sidux_sda3 looks like this:

 

#!/bin/sh

 

echo "Adding sidux" >&2

cat << EOF

menuentry "sidux on sda3" {

set root=(hd0,3)

linux /boot/vmlinuz-2.6.28-5.slh.3-sidux-686 root=UUID=306d94a5-107b-4c9e-ae03

a159e18dc1c7 ro quiet vga=791

initrd /boot/initrd.img-2.6.28-5.slh.3-sidux-686

}

EOF

 

The echo statement causes a line to be printed to the screen after executing sudo update-grub that says “sidux on sda3” so you can see it got done (i.e., that sidux got incorporated into the grub.cfg).

 

Make the file executable (it is a script, a type of program):

sudo chmod 744 /etc/grub.d/ 41_sidux_sda3

Or,

sudo chmod +x /etc/grub.d/ 41_sidux_sda3

Or, in GUI,

As root, open Konqueror (kdesudo konqueror), access /etc/grub.d, right click on 41_sidux_sda3, Properties, and check the “Executable” box; check Advanced Permission while you are at it.

 

To incorporate the sidux file 41_sidux_sda3 as a boot entry in the boot menu configuration file /boot/grub/grub.cfg, run

sudo update-grub

Check that sidux is in your boot menu by opening /boot/grub/grub.cfg.

 

Boot menu: Making your own custom grub.cfg

This is easy. (For another example, see the subsection below "Dedicated GRUB 2 partition: How to build it.")

Taken directly from drs305 excellent, detailed guide, GRUB 2 Basics:

http://ubuntuforums.org/showthread.php?t=1195275'>http://ubuntuforums.org/showthread.php?t=1195275'>http://ubuntuforums.org/showthread.php?t=1195275

 

Building a Totally Customized Menu: Ok, admit you are a control freak and you want to see only what you build yourself - customized titles, no "memtest86+" and no extra kernels. Here is how you do it:

-- Run sudo update-grub to get the current available kernels.

-- Copy the desired "menuentry" listings from /boot/grub/grub.cfg to /etc/grub.d/40_custom The entry begins with the line starting with "menuentry" and ends with a line containing "}".

-- Add any other "menuentry" items you wish to see on the boot menu.

-- Edit the titles of the "menuentry" line if desired (between the quotation symbols). Do not change the lines following the "menuentry" line. Each entry should start with a "menuentry" line and end with a "}" on the last line.

-- Remove the executable bit from /etc/grub.d/10_linux, /etc/grub.d/20_memtest86+ and /etc/grub.d/30_os-prober

Removing the executable bit from any file in /etc/grub.d will exclude the file from being included in GRUB updates. To do it:

sudo chmod -x /etc/grub.d/grub.d/10_linux /etc/grub.d/20_memtest86+ /etc/grub.d/30_os-prober

-- Run "sudo update-grub"

-- The updated /boot/grub/grub.cfg file should now contain only sections for "00_header", "05_debian_theme" and "40_custom".

-- The grub.cfg file will not be updated with the addition of a new kernel. To add a new kernel, make

"10_linux" executable, run "sudo update-grub" to refresh the available kernels, and repeat these instructions.

 

 

Dual booting: How To Set It Up

This should follow the same guidelines as for GRUB Legacy, so see my GRUB Legacy how-to:

How To GRUB Methods - Toolkit

http://kubuntuforums.net/forums/index.php?topic=3081671.0

(See Sections 5 and 6)

 

The differences will only involve how to edit things, especially the boot menu grub.cfg. As you know, in GRUB 2, you do NOT edit grub.cfg directly. Instead you edit the defaults file /etc/default/grub and the script files in /etc/grub.d following the present how-to you are reading now.

 

Dedicated GRUB 2 Partition: How To Build It

Again, this is straightforward, much easier than in GRUB Legacy.

 

1 Create the GRUB 2 partition.

Create a partition to be used as your dedicated GRUB 2 partition and format it. I use GParted Live CD to do this. At that time, you may if you wish, again using GParted, set a Label on your partition; e.g., “GRUB2” (without the quotation marks) (in GParted, use Partition > Labels).

(Check the size of the /boot/grub folder to determine how big to make the partition. GRUB 2 files use just 572 KB (96 files, including 12 old ones) on my installation.)

 

2 Create grub.cfg.

In your home directory, create a text file called grub.cfg and build your custom boot menu for the dedicated GRUB 2 partition. (For a sample, see below.)

(To create the text file, two ways: (1) Right-click on your Desktop, Create New > Text File; or (2) open text editor Kate to an empty document by typing at Konsole kate and save it under the name grub.cfg in your home directory only! To do this as root, use kdesudo kate, but that is not necessary at this point.)

Caution: You may want to completely build your boot menu now and have it ready to go. To make your boot entries in your grub.cfg, see the subsection below "4 Ways To Boot an OS."

 

3 Install GRUB 2 to the MBR.

From your Kubuntu OS, install GRUB 2 to the Master Boot Record (of your first BIOS boot drive) using GRUB 2 files set up in your dedicated GRUB 2 partition.

Example

Suppose sdb1 is your dedicated GRUB 2 partition, and assume it is mounted as /media/sdb1 (or, if you set the label GRUB2 on sdb1, this might be /media/GRUB2). And suppose you wish to install GRUB 2 to the MBR of sda which is set in BIOS to be your first boot drive.

Do it this way:

sudo grub-install –root-directory=/media/sdb1 /dev/sda

See: http://grub.enbug.org/FranklinPiat/grub-install.manpage

(That will also build the directory /boot/grub for you in your GRUB 2 partition.)

 

4 As root, copy your grub.cfg frm your home directory to the GRUB 2 partition under the folder /boot/grub. (To do this in GUI, open your file manager as root and work from there; e.g., kdesudo konqueror or kdesudo dolphin.)

 

5 Re-boot your PC to test it.

CAUTION: Remember to keep Super Grub Disk live CD handy.

 

Example Here's my dedicated GRUB 2 /boot/grub/grub.cfg:

 

# grub.cfg

# This is my custom boot menu, called /boot/grub/grub.cfg, located in my dedicated GRUB 2 partition sdb1.

 

# Set the timeout

set timeout=10

 

# Set the default boot entry.

set default=0

 

# Kubuntu 8.04.3 on sda2, by configfile

menuentry “Kubuntu 8.04.3 on sda2, by configfile” {

set root=(hd0,2)

configfile /boot/grub/grub.cfg

}

 

sidux on sda3, by direct booting

menuentry "sidux on sda3" {

set root=(hd0,3)

linux /boot/vmlinuz-2.6.28-5.slh.3-sidux-686 root=UUID=306d94a5-107b-4c9e-ae03-a159e18dc1c7 ro quiet vga=791

initrd /boot/initrd.img-2.6.28-5.slh.3-sidux-686

}

 

 

4 Ways To Boot an OS

configfile, symlinks, direct booting, chainloader

 

You can use these methods

-- in a boot menu

-- at a grub> prompt (at the GRUB CLI)

to boot OSs. If you use them at the GRUB CLI, you must type the command boot at the end to make the methods symlinks, direct booting and chainloader work. You do not need the command boot in a configfile menu. You do not need the boot command in grub.cfg (it is implied there).

 

First, we'll describe each method; then show examples.

(See below: Sample boot menu. Examples of the 4 types of booting.)

 

NOTE: These are done the same as in GRUB Legacy but with a new format.

But see the note on configfile below.

 

NOTE: Each boot entry starts with a line

menuentry "...some text..." {

and ends with

}

 

Configfile booting

This is easy and flexible; however, there's a caveat:

Both OSs must use the same version of GRUB--both the OS you are working in (where the boot menu is kept) and the OS you are booting.

 

For example, consider these two statements in a menuentry:

set root=(hd1,2)

configfile /boot/grub/grub.cfg

 

That tells your GRUB 2 to access partition (hd1,2), find the file /boot/grub/grub.cfg, show you that file so you can make a choice of which OS to boot, then boot the OS you choose. The GRUB doing the work is your native GRUB, the one you are using, not the GRUB in (hd1,2). Your native GRUB must be able to interpret the commands it finds in the grub.cfg of the OS you wish to boot.

 

Symlinks used in a boot entry

Symlinks are like shortcuts, and they direct control from the link to the file they point at. Symlinks for the kernel and initrd files are already set up for you. Look for yourself:

At Konsole, run

ls -a -l /

to see them:

lrwxrwxrwx 1 root root 33 2009-08-02 11:01 initrd.img -> boot/initrd.img-2. 6.24-24-generic

lrwxrwxrwx 1 root root 33 2009-04-19 17:14 initrd.img.old -> boot/initrd.im g-2.6.24-23-generic

lrwxrwxrwx 1 root root 30 2009-08-02 11:01 vmlinuz -> boot/vmlinuz-2.6.24-2 4-generic

lrwxrwxrwx 1 root root 30 2009-04-19 17:14 vmlinuz.old -> boot/vmlinuz-2.6. 24-23-generic

 

The symlink for the kernel is vmlinuz, and vmlinuz points at the NEWEST kernel.

The symlink for the initrd is initrd.img, and initrd.img points at the NEWEST initrd.

 

NOTE: The "l" at the left indicates "link." Note how the links point at their target files following the symbol ->. Note that the symlinks are stored in your OS at the root level. (Notice the root directory called for in the list statement, indicated by /: ls -a -l / says to list all files, in long form, under the root directory.)

NOTE: Thus, if you wish to make a boot entry for the older kernel and initrd, you must use the symlinks for them, vmlinuz.old and initrd.img.old.

 

If you use direct booting, you have to write out the exact kernel and initrd names:

linux /boot/vmlinuz-2.6.24-24-generic root=UUID= vb687f89-ggjd-6ach-7755-77241i4b4fk3 ro quiet splash

initrd /boot/initrd.img-2.6.24-24-generic

With symlinks, vmlinuz starts at root and points at vmlinuz-2.6.24-24-generic and initrd.img starts at root and points at initrd.img-2.6.24-24-generic, so you can write more simply,

linux /vmlinuz root=UUID= vb687f89-ggjd-6ach-7755-77241i4b4fk3 ro quiet splash

initrd /initrd.img

 

NOTE: Notice the paths to the symlinks start at root / (since the symlinks are stored under root /); whereas the paths to the actual kernel & initrd files start at /boot (since the kernel and initrd are stored under /boot)

 

Direct booting

In direct booting, you use the actual kernel and initrd file names in the boot menuentry.

NOTE

If you use direct booting at the GRUB CLI, ie., at grub> prompt, you may use TAB completion to make your job easier.

For example,

grub>linux /boot/<Press TAB key now>

and you will get some choices, such as vmlinuz-2.6.24-24-generic

 

Chainloader booting

When you boot an OS by chainloading, you use the chainloader command to pass control of the booting from your native GRUB to some other bootloader located in the MBR of a disk somewhere or in the boot sector of a partition.

 

NOTE: For this to work, a bootloader must first be installed to the target MBR or boot sector.

 

A Linux example

 

menuentry “Kubuntu 9.10 on sdb7, by chainloader” {

set root=(hd1,7)

chainloader +1

}

 

"chainlaoder +1" says to go to sector 1 (of (hd1,7)) and turn control over to the bootloader found there.

 

For this example to work, a bootloader (e.g., GRUB 2) must be installed to the partition (hd1,7).

To install GRUB 2 to the boot sector of partition sdb7 (=(hd1,7)):

sudo grub-install /dev/sdb7

 

This is another way to write the same boot entry:

menuentry “Kubuntu 9.10 on sdb7, by chainloader” {

chainloader (hd1,7) +1

}

 

NOTE/Caveat? -- TODO -- Qqmike to check this.

Herman says: If you're trying to chainload a partition boot sector, you might need to use the -f option, which tells GRUB to ignore the fact that there might not be a bootable disc signature there, (!= 0xaa55). I'm not sure about exactly when that's needed or isn't needed yet. It seems to be only needed in CLI Mode GRUB.

 

Another Linux example

 

menuentry “Drive sdc = hd2 by chainloader” {

chainloader (hd2)+1

}

 

If a bootloader (e.g., GRUB 2) has been installed to the Master Boot Record of drive sdc (= hd2), the menuentry will boot that hard drive by turning control over to the bootloader in its MBR.

 

For this example to work, a bootloader (e.g., GRUB 2) must be installed to the Master Boot Record of drive sdc (= hd2). To install GRUB 2 to the Master Boot Record of drive sdc:

sudo grub-install /dev/sdc

 

Now, to demonstrate the 4 ways to boot an OS.

 

# Sample boot menu

# Examples of the 4 types of booting

# Sample boot menu /boot/grub/grub.cfg for a dedicated GRUB 2 partition

#

# The sign # indicates a comment and is ignored by GRUB.

# You may write anything you wish after the # sign.

 

# This is a custom boot menu, called /boot/grub/grub.cfg,

# located in a dedicated GRUB 2 partition sda1.

 

# Set the timeout

set timeout=10

 

# Set the default boot entry

set default=0

 

# Kubuntu 8.04.3 on sdb2, by configfile

menuentry “Kubuntu 8.04.3 on sdb2, by configfile” {

set root=(hd1,2)

configfile /boot/grub/grub.cfg

}

 

# Kubuntu 9.10 on sdb7 symlinks, normal mode

# This is normal mode! If you want recovery mode (single user),

# replace the kernel options “ro quiet splash” with “ro single” (without quotes),

menuentry “Kubuntu 9.10 on sdb7, by symlinks” {

set root=(hd1,7)

linux /vmlinuz root=UUID= vb687f89-ggjd-6ach-7755-77241i4b4fk3 ro quiet splash

initrd /initrd.img

}

 

# Kubuntu 8.04 on sdb3, direct booting

menuentry "Kubuntu 8.04 on sdb3, direct booting" {

set root=(hd1,3)

linux /boot/vmlinuz-2.6.24-24-generic root=UUID=db287e84-cbdd-4ca1-8745-85241a3b3fe2 ro quiet splash

initrd /boot/initrd.img-2.6.24-24-generic

}

 

# Windows XP on sda1

menuentry “Windows XP on sda1, by chainloader” {

set root=(hd0,1)

chainloader +1

}

 

# End of /boot/grub/grub.cfg

 

 

grub> GRUB's CLI From the Boot Menu; the "c" key

 

When you re-boot or boot your PC, and see the boot menu, press any arrow key to stop the timer and freeze the menu. Read the tips at the bottom of the menu. To get a grub> prompt, press the "c" key. From the grub> prompt, you may be able to issue commands to help you gather information about your drives or to boot your computer (using this SECTION 4 Special Topics, the subsection "4 ways to boot an OS" -- direct booting configfile, symlinks, chainloader; and the subsection "How to get information about your drives and devices"). To reboot at the GRUB prompt: grub>reboot; or shutdown your PC: grub>halt.

 

Use of the Term "root"

GRUB's Root Device, the Linux statement, root=UUID=, --root-directory=DIR INSTALL_DEVICE

(To Do -- expand/clarify further)

 

Example

Consider this menuentry:

### BEGIN /etc/grub.d/10_Linux ###

menuentry "Ubuntu 8.04.3 LTS, kernel 2.6.24-24-generic" {

set root=(hd1,2)

linux /boot/vmlinuz-2.6.24-24-generic root=UUID=0df17bc5-0056-4ef7-bfca-251194b6eb44 ro quiet splash

initrd /boot/initrd.img-2.6.24-24-generic

}

 

The line

set root=(hd1,2)

sets the GRUB root device. The GRUB root device is the partition containing the kernel vmlinuz and initrd files. Thus, it is the partition containing the directory /boot. Also, since the GRUB boot files are contained in /boot/grub, the GRUB files are in that same /boot partition. Note this part of the linux line: root=UUID=0df17bc5-0056-4ef7-bfca-251194b6eb44. The UUID corresponds to the partition containing the root filesystem (/) of the OS (in this case, Ubuntu 8.04.3 LTS, kernel 2.6.24-24-generic) That partition (identified by its UUID) is passed to the Linux kernel using root=UUID=0df17bc5-0056-4ef7-bfca-251194b6eb44 in the linux line.

So, the line "set root=(hd1,2)" is a message to GRUB 2; and "root=UUID=0df17bc5-0056-4ef7-bfca-251194b6eb44" is a message to the Linux kernel.

 

Normally, for most users, the GRUB root partition (location of the kernel & initrd files) is the same as the root partition of the OS. In this case, the GRUB root device (partition) (hd1,2) would be the same as the root of the Kubuntu filesystem (and thus the UUID 0df17bc5-0056-4ef7-bfca-251194b6eb44 would be that of (hd1,2)). However, this need not be the case. If you have a separate /boot partition (separate from the root filesystem of the OS), then the

set root=(hdx,y)

statement and the

root=UUID=xxx

statement in the linux line will correspond to two different partitions.

 

 

Another use of the word "root" and setting a "root" for GRUB occurs in the statement

sudo grub-install --root-directory=DIR INSTALL_DEVICE; for example

sudo grub-install --root-directory=/sdb1 sda

where DIR is sdb1 and INSTALL_DEVICE is sda (i.e., the MBR of drive sda).

This directs GRUB to install GRUB images to INSTALL_DEVICE (using the files in the GRUB image directory /usr/lib/grub/i386-pc/) under the directory DIR instead of the root directory (/) of the OS.

 

 

- - - - - - - - - -

Cheat Sheet

 

GRUB 2 Practical Reminders -- for those who know what they are doing Smiley

 

boot/grub/grub.cfg Configuration file for the boot menu. Do NOT edit.

/etc/default/grub Default settings file (Timeout, Default OS, kernel options)

/etc/grub.d Folder of boot menu scripts:

00_header; 05_debian_theme: Background, text colors, themes

10_hurd Locates Hurd kernels; 10_linux Locates Linux kernels; 20_memtest86+

30_os-prober: Searches for Linux and other OS's on all partitions

40_custom: Template for custom boot menu entries

More: /usr/lib/grub/i386-pc/, /boot/grub/device.map, boot.img (MBR), core.img

 

Fixing Things, Rescue

Ctrl+Alt+Del reboot PC; Super Grub Disk

New grub.cfg: sudo update-grub

Install, re-install entire GRUB 2: sudo grub-install [iNSTALL_DEVICE]

sudo grub-install /dev/sdxn or to MBR: sudo grub-install /dev/sdx

If error: grub-install --recheck /dev/sdx

Install GRUB 2 to MBR of sda using GRUB in /sdb1/boot/grub:

sudo grub-install –root-directory=/media/sdb1 /dev/sda

Live CD rescue: Re-install GRUB 2 (mount, chroot into broken partition)

Install GRUB 2 to PC: sudo apt-get install grub-pc

 

Drives, partitions, information Keys: sudo fdisk -lu & grub>ls

Konsole: sudo fdisk -lu; df -hT; mounting: cat /etc/mtab; or: mount

UUIDs: sudo blkid; ls /dev/disk/by-uuid/ -alh

Kernel ver: uname -r; cat /proc/version; Linux ver: lsb_release -a

sudo grub-emu and then grub>ls

GRUB devices/drives: grub>ls; grub>ls -al directory

Finding: grub>search /boot/grub/grub.cfg; grub>search /boot/grub/boot.img

 

Syntax, booting

set root=(hdw,z) and configfile /boot/grub/grub.cfg

configfile (hdx,y)/boot/grub/grub.cfg

Symlinks: linux /vmlinuz root=UUID= xxx ro quiet splash; initrd /initrd.img

set root=(hdx,y) and chainloader +1; chainloader (hdx,y)+1; chainloader (hdx)+1

> Booting choices: direct booting, configfile, symlinks, chainlaoder

 

Permissions

Executable: sudo chmod 744 /etc/grub.d/file; Remove: sudo chmod -x /etc/grub.d/file

Read only, everyone: sudo chmod 444 /etc/grub.d/file

GUI: kdesudo konqueror (dolphin), rt-click, Properties, Permissions

grub.cfg: sudo chmod +w /boot/grub/grub.cfg; sudo chmod -w /boot/grub/grub.cfg

 

Create a script called /etc/grub.d/NN_myscript

Empty text doc: kdesudo kate; File > Save As /etc/grub.d/NN_myscript

Type it (see template below).

Make executable: sudo chmod 744 /etc/grub.d/NN_myscript

or, sudo chmod +x /etc/grub.d/NN_myscript

GUI: kdesudo konqueror (dolphin), rt-click, Properties, Permissions

Make new grub.cfg: sudo update-grub

 

> Template, custom boot entry for file /etc/grub.d/NN_name

 

#!/bin/sh

echo "Adding name" >&2

cat << EOF

menuentry "name of OS boot entry" {

set root=(hdx,y)

linux /boot/vmlinuz-xyz root=UUID=xxx

initrd /boot/initrd.img-xyz

}

EOF

 

Edit a script

GUI, kdesudo konqueror, rt-click on script file, Open With Kate/Kwrite.

CLI, kdesudo kate /etc/grub.d/script_name

Edit the file, File>Save, Exit. New grub.cfg: sudo up-date grub

 

Working as root (8.10+: kdesudo; 8.04: kdesu)

kdesudo kate /path-to-file; kdesudo konqueror (or dolphin)

Terminal as root: sudo –i; sudo su

GUI file manager, navigate to file, right-click on file, Actions, Edit as Root.

sudo [COMMAND]; sudo grub-install {INSTALL_DEVICE]; sudo update-grub

 

[End of GRUB 2 Practical Reminders]

 

- - - - - - - - - - - - - - - - - - - -

SECTION 5

Tutorials: Where to go to study Grub 2

 

Grub 2 Basics, by drs305

http://ubuntuforums.org/showthread.php?t=1195275

Absolutely excellent treatment of editing the boot menu and some basic key concepts of Grub 2.

 

Grub 2 Manual

http://grub.enbug.org/Manual

We hope this will be all you need, along with the man pages.

 

GNU GRUB 1.96/2

http://members.iinet.net/%7Eherman546/p20.html'>http://members.iinet.net/%7Eherman546/p20.html

Looks like an encyclopedic, comprehensive coverage.

 

Ubuntu versus Kubuntu tutorials:

A GRUB 2 tutorial written for Ubuntu applies to Kubuntu. Watch for obvious differences in a few commands and OS tools. In Ubuntu you will see

gksudo gedit /boot/grub/grub.cfg

used for opening grub.cfg as root using text editor gedit.

In Kubuntu, you would use

kdesudo kate /boot/grub/grub.cfg.

In Kubuntu, you will probably use Konqueror or Dolphin as your file manager. Also, there are different package managers used in each OS, even within the same OS at times! I think you'll be able to sort it out, and you can always post questions under one of the regular Kubuntu forums.

>>> The GRUB commands are the same in both Ubuntu and Kubuntu and other Linus OSs.

 

See also the References which include both basic topics and advanced/special topics.

 

 

= = = = = = = = = = = = = = = = = = = =

Appendix: Techniques

 

--- Working as root -- see below

--- Permissions: read, write, execute; change the execute bit -- see below

--- Chroot -- how to -- see below

--- Konsole, see:

Commands at Konsole: Beginners: 3 parts

http://kubuntuforums.net/forums/index.php?topic=3091607.0

--- GRUB Legacy, see:

How To GRUB Methods - Toolkit

http://kubuntuforums.net/forums/index.php?topic=3081671.0

 

--------------------------

Working as root

 

Opening a text editor (e.g., Kate, Kwrite, etc.) to see the file and/or to edit it:

kdesudo kate path-to-file

Example: kdesudo kate /etc/fstab

 

Opening an empty text document as root:

kdesudo kate

(then File > Save As)

 

Opening a file manager as root:

in 8.10 and after: kdesudo konqueror (or dolphin)

in 8.04: kdesu konqueror (dolphin)

 

Opening a terminal as root:

sudo –i (to get a “root” terminal)

or:

sudo su

 

Your file manager may support this feature:

Open the file manager, navigate to the file, right-click on the file, Actions, Edit as Root.

 

At Konsole (BASH) command line: Use sudo.

Example: sudo fdisk -lu

To open a graphical application (a text editor, a file manager), use either kdesudo or kdesu (see above).

 

--------------------------

Permissions: read, write, execute; change the execute bit

 

See Part 2 of

Commands at Konsole: Beginners: 3 parts

http://kubuntuforums.net/forums/index.php?topic=3091607.0

Ownership and Permissions Use ls -l to see them; chown & chmod to change them.

See tuxfiles

http://www.tuxfiles.org/linuxhelp/filepermissions.html

(symbolic mode)

Here's a brief reminder sheet for those who know this stuff:

 

Setting ownership and permissions in GUI

Open Konqueror or Dolphin as root (kdesudo konqueror), navigate to the file or directory, right-click, Properties, Permission, make changes, OK. In Konqueror/Dolphin, click the Advanced Permissions button to see all choices: owner, group, others and read, write, execute.

 

CLI

owner--group--others

For each class: read, write, execute

ls -l: list files, use a long listing format => shows ownership and permissions

 

 

Permissions – numerical mode

There are 8 possibilities (2*2*2) for read (on or off) - write (on or off) - execute (on or off) permissions on a file or directory (2*2*2 = 8 ). The octal equivalents for these binary numbers are:

 

0: ---; 1: --x; 2: -w-; 3: -wx; 4: r--; 5: r-x; 6: rw-: 7: rwx

 

744: Owner can do anything, Group can only read, Others can only read

 

Permissions – symbolic mode

Suppose the file xyzfile is owned by root.

To make it executable for ALL users

sudo chmod +x xyzfile

To remove the execute permission from all users

sudo chmod -x xyzfile

 

--> See Tuxfiles

 

--------------------------

Chroot -- how to

From, Part 3 of

Commands at Konsole: Beginners: 3 parts

http://kubuntuforums.net/forums/index.php?topic=3091607.0

 

To “chroot into a partition” is to enter the partition with root privileges (“as root”). (The root directory is set equal to the partition.)

Here's how:

Let's say Kubuntu is in partition sda2, something is broken there, and you need to use your Kubuntu

Live CD to chroot into sda2 and fix the problem. From the Live Kubuntu CD at Konsole:

sudo mkdir /media/fixthings

sudo mount /dev/sda2 /media/fixthings

sudo chroot /media/fixthings

=> Now you are “in” sda2 “as root” and can work from there as if you were actually booted into it. The command prompt is a root prompt “... :/#” You can enter the commands you will use to fix the problem in sda2. When done, type exit to leave the root prompt:

exit

Now the prompt is a regular, non-root prompt “... :~$”

To be safe, unmount the partition:

sudo umount /dev/sda2 /media/fixthings

=> CAUTION Do not use chroot unless you know what you are doing; you can damage your Kubuntu filesystem if you make a mistake while using chroot.

 

 

= = = = = = = = = = = = = = = = = = = =

References

 

Grub 2 Basics, by drs305

http://ubuntuforums.org/showthread.php?t=1195275

Absolutely excellent treatment of editing the boot menu and some basic key concepts of Grub 2.

 

Grub 2 Manual

http://grub.enbug.org/Manual

We hope this will be all you need, along with the man pages.

 

GRUB 2: Live CD Install Guide

http://grub.enbug.org/Grub2LiveCdInstallGuide

Looks like this is the original and definitive treatment as of 9-9-2009.

 

GNU GRUB 1.96/2

http://members.iinet.net/%7Eherman546/p20.html

Looks like an encyclopedic, comprehensive coverage.

 

GRUB 2 now default for new installations

https://lists.ubuntu.com/archives/ubuntu-devel-announce/2009-June/000573.html

 

Grub 2 now default for Ubuntu 9.10

http://www.ubuntugeek.com/grub-2-now-default-for-ubuntu-910-karmic-koala.html

 

GRUB 2 -- Ubuntu Wiki -- FrontPage

http://grub.enbug.org/

 

GRUB 2 -- Ubuntu Wiki

https://wiki.ubuntu.com/Grub2

 

FranklinPiat, Wiki -- good stuff!

Grub v2 manual, Manpages

http://grub.enbug.org/FranklinPiat/GrubManual

 

GRUB 2, official site

http://www.gnu.org/software/grub/grub-2.en.html

 

GNU GRUB, main site, Legacy GRUB

http://www.gnu.org/software/grub/

 

GRUB Wiki: grub.cfg

http://grub.enbug.org/grub.cfg

 

GRUB 2 Commands, GRUB Wiki

http://grub.enbug.org/CommandList

Compares GRUB Legacy to GRUB 2 commands.

 

StartUp-Manager

https://help.ubuntu.com/community/StartUpManager

 

GRUB & GRUB 2 Boot Process

http://www.pixelbeat.org/docs/disk/

 

Boot Options

https://help.ubuntu.com/community/BootOptions

 

Kernel Parameters

http://www.kernel.org/doc/Documentation/kernel-parameters.txt

 

Grub Legacy

-- How To GRUB Methods - Toolkit

http://kubuntuforums.net/forums/index.php?topic=3081671.0

 

GParted Live CD

http://gparted.sourceforge.net/livecd.php

For partitioning, formatting your hard drive.

 

Super Grub Disk

http://www.supergrubdisk.org/

Will boot you into your OS when you can't do it alone.

 

Arch Linux, ArchWiki GRUB 2

http://wiki.archlinux.org/index.php/GRUB2

 

Experiences in the Community, Jaunty and GRUB2

http://flossexperiences.wordpress.com/2008/11/19/jaunty-and-grub2/

 

GRUB 2 installation

http://www.techenclave.com/guides-and-tutorials/grub-2-installation-92883.html

 

GRUB2 Theming

http://ubuntuforums.org/showthread.php?t=1182436

 

KernelTeam/Grub2Testing

https://wiki.ubuntu.com/KernelTeam/Grub2Testing

 

Using UUID

https://help.ubuntu.com/community/UsingUUID

 

BIOS Boot Partition, and what does GRUB use it for?

http://grub.enbug.org/BIOS_Boot_Partition

 

GUID Partition Table

http://en.wikipedia.org/wiki/GUID_Partition_Table

 

Technical Note TN2166, Secrets of the GPT

http://developer.apple.com/mac/library/technotes/tn2006/tn2166.html

 

Boot an iso via Grub 2

http://michael-prokop.at/blog/2009/05/25/boot-an-iso-via-grub2/

 

MultiBoot USB with Grub2 (boot directly from iso files)

http://www.panticz.de/MultiBootUSB

 

GRUB Graphical Menu Development Journal

http://grub.gibibit.com/Journal

 

Debian Wiki, GRUB, grub.cfg

http://wiki.debian.org/Grub/grub.cfg.manpage

As of 9-9-09, it doesn't exist.

 

Tweaking GRUB 2

http://www.drlock.com/blog/2008/07/11/tweaking-grub-2/

 

GRUB 2 configuration, shirish

http://www.techenclave.com/guides-and-tutorials/grub-2-configuration-93512.html

 

How To Install GRUB 2 On Ubuntu 9.04

http://www.linuxtoday.com/news_story.php3?ltsn=2009-09-02-005-35-OS-HL-SM

 

Making a Dedicated Grub Partition

http://www.troubleshooters.com/linux/grub/grubpartition.htm

 

Konsole, command line:

Commands at Konsole: Beginners: 3 parts

http://kubuntuforums.net/forums/index.php?topic=3091607.0

and

tuxfiles

http://www.tuxfiles.org/linuxhelp/dirs.html

Permissions, filesystems, using the command line.

 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • 6 μήνες μετά...

O οδηγός πλέον έχει μεταφραστεί από παιδιά στο ubuntu-gr και είναι διαθέσιμος στα ελληνικά ακόμα και σε pdf μορφή. Δείτε εδώ

 

http://forum.ubuntu-gr.org/viewtopic.php?f=9&t=7278&p=109643#p109643'>http://forum.ubuntu-gr.org/viewtopic.php?f=9&t=7278&p=109643#p109643

 

μπορείτε να το κατεβάσετε από εδώ

 

http://rapidshare.com/files/362008934/grub2.pdf.html

 

ενώ μπορείτε να διαβάσετε εδώ

 

http://forum.ubuntu-gr.org/viewtopic.php?f=9&t=7278

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Έλεος πια, βγάλτε ένα GUI tool να τελειώνουμε. Το grub2 θέλει τρελό διάβασμα για να παίξεις μαζί του.

 

Υ.Γ. Και δεν εννοώ το startup manager που μόνο να αλλάξεις default επιλογή και 1-2 settings ακόμα μπορείς να κάνεις.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Έλεος πια, βγάλτε ένα GUI tool να τελειώνουμε. Το grub2 θέλει τρελό διάβασμα για να παίξεις μαζί του.

 

Υ.Γ. Και δεν εννοώ το startup manager που μόνο να αλλάξεις default επιλογή και 1-2 settings ακόμα μπορείς να κάνεις.

 

Και τί διαφορά θα έκανε να υπήρχε ένα GUI tool με 10 tabs, 42 check boxes και 20 drop-down lists? Ξαφνικά δεν θα χρειαζόσουν διάβασμα για να επιλέξεις τις επιλογές που θέλεις? Έλεος ρε παιδιά ΔΕΝ είναι πανάκεια το GUI, το διάβασμα είναι διάβασμα και ειδικά όταν μιλάμε για τον τρόπο που γίνεται load και initialize του λειτουργικό σου σύστημα...

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Φίλε nullscan, με το GUI θα μπορούσα εύκολα να σετάρω τον grub όταν ξέρω τι θέλω να κάνω, όσα tabs και να είχε. Τώρα πρέπει να αφιερώσω χ ώρες να διαβάσω για να το πετύχω. Εν τω μεταξύ έχω δουλειά, υποχρεώσεις και γυναίκα έγκυο και αυτή τη στιγμή δεν μπορώ να αλλάξω 2-3 πραγματάκια στον grub που θα ήθελα. Ναι το διάβασμα είναι διάβασμα, αλλά καλό είναι να υπάρχει gui εναλλακτική.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...