mirror of
https://pagure.io/fedora-docs/quick-docs.git
synced 2024-11-28 14:56:35 +00:00
Merge remote-tracking branch 'upstream/master'
This commit is contained in:
commit
f67768263a
1 changed files with 0 additions and 482 deletions
482
en-US/grub2.adoc
482
en-US/grub2.adoc
|
@ -1,482 +0,0 @@
|
|||
= GRUB 2
|
||||
|
||||
'''
|
||||
|
||||
[IMPORTANT]
|
||||
======
|
||||
|
||||
This page was automatically converted from https://fedoraproject.org/wiki/GRUB_2
|
||||
|
||||
It is probably
|
||||
|
||||
* Badly formatted
|
||||
* Missing graphics and tables that do not convert well from mediawiki
|
||||
* Out-of-date
|
||||
* In need of other love
|
||||
|
||||
Please fix it, remove this notice, and then add to `_topic_map.yml`
|
||||
|
||||
Pull requests accepted at https://pagure.io/fedora-docs/quick-docs
|
||||
|
||||
Once that is live, go to the original wiki page and add an `{{old}}`
|
||||
tag, followed by a note like
|
||||
|
||||
....
|
||||
{{admon/note|This page has a new home!|
|
||||
This wiki page is no longer maintained. Please find the up-to-date
|
||||
version at: https://docs.fedoraproject.org/whatever-the-url
|
||||
}}
|
||||
....
|
||||
|
||||
======
|
||||
|
||||
'''
|
||||
|
||||
|
||||
[[introduction]]
|
||||
Introduction
|
||||
------------
|
||||
|
||||
GRUB 2 is the latest version of GNU GRUB, the GRand Unified Bootloader.
|
||||
A bootloader is the first software program that runs when a computer
|
||||
starts. It is responsible for loading and transferring control to the
|
||||
operating system kernel, (Linux, in the case of Fedora). The kernel, in
|
||||
turn, initializes the rest of the operating system.
|
||||
|
||||
GRUB 2 has replaced what was formerly known as GRUB (i.e. version 0.9x),
|
||||
which has, in turn, become GRUB Legacy.
|
||||
|
||||
Starting with Fedora 16, GRUB 2 is the default bootloader on x86 BIOS
|
||||
systems. For upgrades of BIOS systems the default is also to install
|
||||
GRUB 2, but you can opt to skip bootloader configuration entirely.
|
||||
|
||||
[[tasks-common-issues]]
|
||||
Tasks / Common issues
|
||||
---------------------
|
||||
|
||||
[[updating-grub-2-configuration-on-bios-systems]]
|
||||
Updating GRUB 2 configuration on BIOS systems
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The grub2 packages contain commands for installing a bootloader and for
|
||||
creating a bootloader configuration file.
|
||||
|
||||
grub2-install will install the bootloader - usually in the MBR, in free
|
||||
unpartioned space, and as files in /boot. The bootloader is installed
|
||||
with something like:
|
||||
|
||||
....
|
||||
grub2-install /dev/sda
|
||||
....
|
||||
|
||||
grub2-mkconfig will create a new configuration based on the currently
|
||||
running system, what is found in /boot, what is set in
|
||||
/etc/default/grub, and the customizable scripts in /etc/grub.d/ . A new
|
||||
configuration file is created with:
|
||||
|
||||
....
|
||||
grub2-mkconfig -o /boot/grub2/grub.cfg
|
||||
....
|
||||
|
||||
The configuration format has evolved over time, and a new configuration
|
||||
file might be slightly incompatible with the old bootloader. It is
|
||||
therefore a good idea to first run grub2-install whenever you would need
|
||||
to run grub2-mkconfig.
|
||||
|
||||
The Fedora installer, anaconda, will run these grub2 commands and there
|
||||
is usually no reason to run them manually.
|
||||
|
||||
It is generally safe to directly edit /boot/grub2/grub.cfg in Fedora.
|
||||
Grubby in Fedora patches the configuration when a kernel update is
|
||||
performed and will try to not make any other changes than what is
|
||||
necessary. (Other distributions, in particular Debian and Debian-derived
|
||||
distributions provide a software patch that adds an command which is
|
||||
neither included nor needed in Fedora.) Manual changes might however be
|
||||
overwritten with grub2-mkconfig next time the system is upgraded with
|
||||
anaconda. Some customizations can be placed in /etc/grub.d/40_custom or
|
||||
/boot/grub2/custom.cfg and will survive running grub2-mkconfig.
|
||||
|
||||
[[updating-grub-2-configuration-on-uefi-systems]]
|
||||
Updating GRUB 2 configuration on UEFI systems
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
To install or fix GRUB 2 on a UEFI system on Fedora 18 or newer, you
|
||||
need to do four things:
|
||||
|
||||
[[create-an-esp]]
|
||||
Create an ESP
|
||||
^^^^^^^^^^^^^
|
||||
|
||||
UEFI firmware, in general, likes to boot from an EFI System Partition on
|
||||
a disk with a GPT label. In `gdisk`, it looks something like this:
|
||||
|
||||
....
|
||||
Number Start (sector) End (sector) Size Code Name
|
||||
1 2048 264191 128.0 MiB EF00 EFI System
|
||||
....
|
||||
|
||||
That partition should be formatted as FAT. If in doubt, FAT32 is a good
|
||||
dialect of FAT to choose.
|
||||
|
||||
Fedora expects this partition to be mounted at `/boot/efi`.
|
||||
|
||||
[[install-the-bootloader-files]]
|
||||
Install the bootloader files
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
If you don't already have the relevant packages installed, do for Fedora
|
||||
22 and later versions with link:dnf[DNF] or with YUM for older Fedora
|
||||
releases:
|
||||
|
||||
....
|
||||
dnf install grub2-efi grub2-efi-modules shim
|
||||
yum install grub2-efi grub2-efi-modules shim
|
||||
....
|
||||
|
||||
If you do, then try:
|
||||
|
||||
....
|
||||
dnf reinstall grub2-efi grub2-efi-modules shim
|
||||
yum reinstall grub2-efi grub2-efi-modules shim
|
||||
....
|
||||
|
||||
instead.
|
||||
|
||||
Make sure that /boot/efi is mounted when you do this.
|
||||
|
||||
This installs the signed shim and the GRUB 2 binary.
|
||||
|
||||
[[create-a-grub-2-configuration]]
|
||||
Create a GRUB 2 configuration
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Under EFI, GRUB 2 looks for its configuration in
|
||||
`/boot/efi/EFI/fedora/grub.cfg`. For newly installed kernels to work,
|
||||
`grubby` expects `/etc/grub2-efi.cfg` to be a symlink to the real
|
||||
grub.cfg (i.e. `/boot/efi/EFI/fedora/grub.cfg`).
|
||||
|
||||
If you already have a grub 2 EFI config file, you should be okay. If
|
||||
not, grub2-mkconfig can help, but your mileage may vary.
|
||||
|
||||
` grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg`
|
||||
|
||||
[[create-a-boot-menu-entry]]
|
||||
Create a boot menu entry
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
TL;DR: This should happen automatically. If it doesn't, read on.
|
||||
|
||||
When you power on your system, your firmware will look for EFI variables
|
||||
that tell it how to boot. If you're already booted in EFI mode and EFI
|
||||
runtime services are working correctly, you can configure your boot menu
|
||||
with `efibootmgr`. If not, you'll have to bootstrap the process.
|
||||
|
||||
Fortunately, `shim` can help you bootstrap. The EFI program
|
||||
`/boot/efi/EFI/BOOT/fallback.efi` will look for files called `BOOT.CSV`
|
||||
in your ESP and will add boot entries corresponding to them, *if such
|
||||
entries do not already appear to exist*. `shim` provides a `BOOT.CSV`
|
||||
file that will add an entry for `grub2-efi` for you. So just using the
|
||||
EFI Shell to invoke `fallback.efi` should do the trick. You can do this
|
||||
with commands like:
|
||||
|
||||
....
|
||||
> fs0:
|
||||
> cd EFI\BOOT
|
||||
> fallback.efi
|
||||
....
|
||||
|
||||
If you have no boot entries at all, then just booting off your disk in
|
||||
UEFI mode should automatically invoke `/boot/efi/EFI/BOOT/BOOTX64.EFI`,
|
||||
which will, in turn, invoke `fallback.efi`.
|
||||
|
||||
If you already have incorrect boot entries, you'll either need to delete
|
||||
them or to modify `BOOT.CSV` to create new entries with different names.
|
||||
|
||||
[[adding-other-operating-systems-to-the-grub-2-menu]]
|
||||
Adding Other operating systems to the GRUB 2 menu
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
grub2-mkconfig will add entries for other operating systems it can find.
|
||||
That will be done based on the output of the os-prober tool.
|
||||
|
||||
That might however not work so well, especially not for booting other
|
||||
Linux operating systems, and especially not on UEFI systems. See
|
||||
http://www.gnu.org/software/grub/manual/grub.html#Multi_002dboot-manual-config
|
||||
.
|
||||
|
||||
[[setting-default-entry]]
|
||||
Setting default entry
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Due to `grub2-mkconfig` (and os-prober) we cannot predict the order of
|
||||
the entries in `/boot/grub2/grub.cfg`, so we set the default by
|
||||
name/title instead.
|
||||
|
||||
Open `/etc/default/grub` and ensure this line exists:
|
||||
|
||||
....
|
||||
GRUB_DEFAULT=saved
|
||||
....
|
||||
|
||||
and ensure this line not exists:
|
||||
|
||||
....
|
||||
GRUB_SAVEDEFAULT=true
|
||||
....
|
||||
|
||||
or ensure this line exists:
|
||||
|
||||
....
|
||||
GRUB_SAVEDEFAULT=false
|
||||
....
|
||||
|
||||
Apply the change to `grub.cfg` by running:
|
||||
|
||||
....
|
||||
grub2-mkconfig -o /boot/grub2/grub.cfg
|
||||
....
|
||||
|
||||
Now list all possible menu entries
|
||||
|
||||
....
|
||||
grep -P "submenu|^menuentry" /boot/grub2/grub.cfg | cut -d "'" -f2
|
||||
....
|
||||
|
||||
Now set the desired default menu entry
|
||||
|
||||
....
|
||||
grub2-set-default "<submenu title><menu entry title>"
|
||||
....
|
||||
|
||||
Verify the default menu entry
|
||||
|
||||
....
|
||||
grub2-editenv list
|
||||
....
|
||||
|
||||
If you understand the risks involved and still want to directly modify
|
||||
/boot/grub2/grub.cfg, here's how you can do it:
|
||||
|
||||
Edit /boot/grub2/grub.cfg, and change the line
|
||||
|
||||
....
|
||||
set default="0"
|
||||
....
|
||||
|
||||
to
|
||||
|
||||
....
|
||||
set default="5"
|
||||
....
|
||||
|
||||
[[encountering-the-dreaded-grub-2-boot-prompt]]
|
||||
Encountering the dreaded GRUB 2 boot prompt
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
If improperly configured, GRUB 2 may fail to load and subsequently drop
|
||||
to a boot prompt. To address this issue, proceed as follows:
|
||||
|
||||
\0. Load the XFS and LVM modules
|
||||
|
||||
....
|
||||
insmod xfs
|
||||
insmod lvm
|
||||
....
|
||||
|
||||
\1. List the drives which GRUB 2 sees:
|
||||
|
||||
....
|
||||
grub2> ls
|
||||
....
|
||||
|
||||
\2. The output for a dos partition table /dev/sda with three partitons
|
||||
will look something like this:
|
||||
|
||||
....
|
||||
(hd0) (hd0,msdos3) (hd0,msdos2) (hd0,msdos1)
|
||||
....
|
||||
|
||||
\3. While the output for a gpt partition table /dev/sda with four
|
||||
partitions will look something like this:
|
||||
|
||||
....
|
||||
(hd0) (hd0,gpt4) (hd0,gpt3) (hd0,gpt2) (hd0,gpt1)
|
||||
....
|
||||
|
||||
\4. With this information you can now probe each partition of the drive
|
||||
and locate your vmlinuz and initramfs files:
|
||||
|
||||
....
|
||||
ls (hd0,1)/
|
||||
....
|
||||
|
||||
Will list the files on /dev/sda1. If this partition contains /boot, the
|
||||
output will show the full name of vmlinuz and initramfs.
|
||||
|
||||
\5. Armed with the location and full name of vmlinuz and initramfs you
|
||||
can now boot your system.
|
||||
|
||||
5a. Declare your root partition:
|
||||
|
||||
....
|
||||
grub> set root=(hd0,3)
|
||||
....
|
||||
|
||||
5b. Declare the kernel you wish to use:
|
||||
|
||||
....
|
||||
grub> linux (hd0,1)/vmlinuz-3.0.0-1.fc16.i686 root=/dev/sda3 rhgb quiet selinux=0
|
||||
# NOTE : add other kernel args if you have need of them
|
||||
# NOTE : change the numbers to match your system
|
||||
....
|
||||
|
||||
5c. Declare the initrd to use:
|
||||
|
||||
....
|
||||
|
||||
grub> initrd (hd0,1)/initramfs-3.0.0-1.fc16.i686.img
|
||||
# NOTE : change the numbers to match your system
|
||||
....
|
||||
|
||||
5d. Instruct GRUB 2 to boot the chosen files:
|
||||
|
||||
....
|
||||
grub> boot
|
||||
....
|
||||
|
||||
\6. After boot, open a terminal.
|
||||
|
||||
\7. Issue the grub2-mkconfig command to re-create the grub.cfg file
|
||||
grub2 needed to boot your system:
|
||||
|
||||
....
|
||||
grub2-mkconfig -o /boot/grub2/grub.cfg
|
||||
....
|
||||
|
||||
\8. Issue the grub2-install command to install grub2 to your hard drive
|
||||
and make use of your config:
|
||||
|
||||
....
|
||||
grub2-install --boot-directory=/boot /dev/sda
|
||||
# Note: your drive may have another device name. Check for it with mount command output.
|
||||
....
|
||||
|
||||
[[additional-scenario]]
|
||||
Additional Scenario
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
It's also possible to boot into a _configfile_ that's located on another
|
||||
partition. If the user is faced with such a scenario, as is often the
|
||||
case with multi-boot systems containing Ubuntu and Fedora, the following
|
||||
steps in the grub rescue shell might become useful to know:
|
||||
|
||||
....
|
||||
insmod part_msdos
|
||||
insmod xfs
|
||||
insmod lvm
|
||||
set root='hd0,msdos1'
|
||||
configfile /grub2/grub.cfg
|
||||
....
|
||||
|
||||
Where, *hd0,msdos1* is the pertinent _boot_ partition, which holds the
|
||||
grub.cfg file.
|
||||
|
||||
[[other-grub-2-issues]]
|
||||
Other GRUB 2 issues
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
''' Absent Floppy Disk ''': It has been reported by some users that GRUB
|
||||
2 may fail to install on a partition's boot sector if the computer
|
||||
floppy controller is activated in BIOS without an actual floppy disk
|
||||
drive being present. A possible workaround is to run (post OS install)
|
||||
from rescue mode:
|
||||
|
||||
....
|
||||
grub2-install <target device> --no-floppy
|
||||
....
|
||||
|
||||
[[setting-a-password-for-interactive-edit-mode]]
|
||||
Setting a password for interactive edit mode
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
If you wish to password-protect GRUB2's interactive edit mode *but* you
|
||||
do not want to require users to enter a password to do a plain, simple,
|
||||
ordinary boot, create /etc/grub.d/01_users with the following lines:
|
||||
|
||||
....
|
||||
cat << EOF
|
||||
set superusers="root"
|
||||
export superusers
|
||||
password root secret
|
||||
EOF
|
||||
....
|
||||
|
||||
To apply your changes run:
|
||||
|
||||
....
|
||||
grub2-mkconfig -o /boot/grub2/grub.cfg
|
||||
....
|
||||
|
||||
You can encrypt the password by using pbkdf2. Use grub2-mkpasswd-pbkdf2
|
||||
to encrypt the password, then replace the password line with:
|
||||
|
||||
....
|
||||
password_pbkdf2 root grub.pbkdf2.sha512.10000.1B4BD9B60DE889A4C50AA9458C4044CBE129C9607B6231783F7E4E7191D8254C0732F4255178E2677BBE27D03186E44815EEFBAD82737D81C87F5D24313DDDE7.E9AEB53A46A16F30735E2558100D8340049A719474AEEE7E3F44C9C5201E2CA82221DCF2A12C39112A701292BF4AA071EB13E5EC8C8C84CC4B1A83304EA10F74
|
||||
....
|
||||
|
||||
More details can be found at
|
||||
https://help.ubuntu.com/community/Grub2/Passwords[Ubuntu Help: GRUB2
|
||||
Passwords].
|
||||
|
||||
Starting from atleast Fedora 21, the `--md5pass` kickstart option must
|
||||
be set using output from grub2-mkpasswd-pbkdf2.
|
||||
|
||||
[[using-old-graphics-modes-in-bootloader]]
|
||||
Using old graphics modes in bootloader
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Terminal device is chosen with GRUB_TERMINAL; additional quote from
|
||||
http://www.gnu.org/software/grub/manual/grub.html#Simple-configuration
|
||||
|
||||
Valid terminal output names depend on the platform, but may include
|
||||
‘console’ (PC BIOS and EFI consoles), ‘serial’ (serial terminal),
|
||||
‘gfxterm’ (graphics-mode output), ‘ofconsole’ (Open Firmware console),
|
||||
or ‘vga_text’ (VGA text output, mainly useful with Coreboot).
|
||||
|
||||
The default is to use the platform's native terminal output.
|
||||
|
||||
The default in Fedora is gfxterm and to get the legacy graphics modes
|
||||
you need to set GRUB_TERMINAL to right variable from the description
|
||||
above in /etc/default/grub
|
||||
|
||||
[[enable-serial-console-in-grub]]
|
||||
Enable Serial Console in Grub
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
To enable Serial console in grub add the following entry's to
|
||||
/etc/default/grub
|
||||
|
||||
( Adjust baudrate/parity/bits/flow control to fit your environment and
|
||||
cables)
|
||||
|
||||
....
|
||||
GRUB_CMDLINE_LINUX='console=tty0 console=ttyS0,115200n8'
|
||||
GRUB_TERMINAL=serial
|
||||
GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
|
||||
....
|
||||
|
||||
And re-generate grub
|
||||
|
||||
`grub2-mkconfig -o /boot/grub2/grub.cfg`
|
||||
|
||||
[[further-reading]]
|
||||
Further Reading
|
||||
---------------
|
||||
|
||||
* http://www.gnu.org/software/grub/manual/grub.html
|
||||
* Features/Grub2
|
||||
* Anaconda/Features/Grub2Migration
|
||||
'''
|
||||
|
||||
See a typo, something missing or out of date, or anything else which can be
|
||||
improved? Edit this document at https://pagure.io/fedora-docs/quick-docs.
|
Loading…
Reference in a new issue