Grub
Grub
GRUB bootloader
The GRUB
bootloader
Michael Opdenacker
Thomas Petazzoni
Free Electrons
1
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//freeelectrons.com
Rights to copy
© Copyright 20062009, Free Electrons
feedback@freeelectrons.com
Document sources, updates and translations:
http://freeelectrons.com/docs/grub
Corrections, suggestions, contributions and
translations are welcome!
Attribution – ShareAlike 3.0 Latest update: Sep 15, 2009
You are free
to copy, distribute, display, and perform the work
to make derivative works
to make commercial use of the work
Under the following conditions
Attribution. You must give the original author credit.
Share Alike. If you alter, transform, or build upon this work, you
may distribute the resulting work only under a license identical to
this one.
For any reuse or distribution, you must make clear to others the license
terms of this work.
Any of these conditions can be waived if you get permission from the
copyright holder.
Your fair use and other rights are in no way affected by the above.
License text: http://creativecommons.org/licenses/bysa/3.0/legalcode
2
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//freeelectrons.com
Grub features (1)
Many features and a lot of flexibility!
Supports booting many operating systems:
Linux, Hurd, *BSD, Windows, DOS, OS/2...
Support for different boot devices: hard disk (of course),
cdrom (El Torito), network (tftp)
Support for many filesystems (unlike LILO, it doesn't need to
store the physical location of each kernel):
ext2/3, xfs, jfs, reiserfs, dos, fat16, fat32...
Configuration file: unlike LILO, no need to update the MBR
after making changes to the configuration file.
3
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//freeelectrons.com
Grub features (2)
Support for many network cards
(reusing drivers from the Etherboot bootloader).
Menu interface for regular users.
Advanced command line interface for advanced users.
Remote control from a serial console.
Supports multiple executable formats:
ELF by also a.out variants.
Can uncompress compressed files
Small: possible to remove features and drivers
which are not used (./configure help).
Without recompiling: remove unused filesystem stages.
4
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//freeelectrons.com
Grub size
Example from grub 0.971ubuntu9 (Ubuntu Dapper):
Stage 1:
/lib/grub/i386pc/stage1: 512 bytes
Stage 1.5:
/lib/grub/i386pc/e2fs_stage1_5: 7508 bytes
Stage 2:
/lib/grub/i386pc/stage2: 105428 bytes
Total: only 113448 bytes!
5
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//freeelectrons.com
Installing grub (1)
Install Grub on an embedded target with a blank disk.
Do it from a GNU/Linux host with Grub installed.
Access the disk for the embedded target as external
storage:
Compact Flash disk: use a USB CF card reader.
Hard disk drive: use a USB hard disk drive enclosure.
Create a partition on this disk (useful, but not mandatory):
fdisk /dev/sda (type m for a menu of commands)
Format and mount this partition:
mkfs.ext3 /dev/sda1
sudo mount /dev/sda1 /mnt/sda1
6
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//freeelectrons.com
Installing grub (2)
Install Grub:
grubinstall rootdirectory=/mnt/sda1 /dev/sda
/dev/sda: the physical disk. Grub is installed on its Master Boot
Record.
/mnt/sda1: the directory under which grubinstall creates a
boot/ directory containing the upper stage and configuration file.
Of course, you could have used another partition.
Grub now needs a kernel to boot. Copy a kernel image to
/mnt/sda1/boot/ (for example) and describe this kernel in
/mnt/sda1/boot/grub/menu.lst.
Once you also copied root filesystem files, you can put your storage
device back to the embedded target and boot from it.
7
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//freeelectrons.com
Naming files
Grub names partitions as follows: (hdn,p)
n: nth disk on the system
p: pth partition on this disk
Files are described with the partition they belong to.
Example: (hd0,2)/boot/vmlinuz2.6.18
You can specify a default partition with the root command:
Example:
root (hd0,0)
kernel /boot/vmlinuz2.6.18
8
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//freeelectrons.com
Sample configuration file
/boot/grub/menu.lst
default 0
timeout 10
title Ubuntu, kernel 2.6.1527386
root (hd0,2)
kernel /boot/vmlinuz2.6.1527386 root=/dev/hda3 ro quiet splash
initrd /boot/initrd.img2.6.1527386
boot
title Ubuntu, kernel 2.6.1527386 (recovery mode)
root (hd0,2)
kernel /boot/vmlinuz2.6.1527386 root=/dev/hda3 ro single
initrd /boot/initrd.img2.6.1527386
boot
9
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//freeelectrons.com
Network support
Grub can use the network in several ways
Grub running from disk (floppy, hard drive, cdrom), and
downloading kernel images from a tftp server on the network.
Diskless system:
A first stage bootloader (typically Etherboot)
is booted from ROM.
It then downloads a second stage from Grub:
pxegrub for a PXE ROM, or nbgrub for a NBI loader).
Grub can then get kernel images from the network.
10
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//freeelectrons.com
Grub security (1)
Caution: the Grub shell can be used to display any of your files!
Example:
Boot your system
Type the c command to enter command line mode.
find /etc/passwd
Grub displays all partitions containing such a file.
cat (hd0,2)/etc/passwd
You can see the names of users on the system!
Of course, you can access any file. Permissions are ignored.
11
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//freeelectrons.com
Grub security (2)
Interactive commands can be protected with a password.
Otherwise, people would even be able to view the contents
of files from the Grub shell!
You can also protect menu entries with a password.
Useful to restrict failsafe modes to admin users.
12
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//freeelectrons.com
Grub resources
Grub home page:
http://www.gnu.org/software/grub/
Grub manual:
http://www.gnu.org/software/grub/manual/
13
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//freeelectrons.com
Related documents
All our technical presentations
on http://freeelectrons.com/docs
Linux kernel
Device drivers
Architecture specifics
Embedded Linux system development
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//freeelectrons.com
How to help
You can help us to improve and maintain this document...
By sending corrections, suggestions, contributions and
translations
By asking your organization to order development, consulting
and training services performed by the authors of these
documents (see http://freeelectrons.com/).
By sharing this document with your friends, colleagues
and with the local Free Software community.
By adding links on your website to our online materials,
to increase their visibility in search engine results.
Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//freeelectrons.com
Linux kernel
Linux device drivers
Free Electrons
Board support code Our services
Mainstreaming kernel code
Kernel debugging
Custom Development
System integration
Embedded Linux Training
Embedded Linux demos and prototypes
All materials released with a free license! System optimization
Unix and GNU/Linux basics Application and interface development
Linux kernel and drivers development
Realtime Linux, uClinux Consulting and technical support
Development and profiling tools Help in decision making
Lightweight tools for embedded systems System architecture
Root filesystem creation System design and performance review
Audio and multimedia Development tool and application support
System optimization Investigating issues and fixing tool bugs