#3 Rewrite the GRUB2 section
Merged 6 years ago by lruzicka. Opened 6 years ago by lruzicka.
fedora-docs/ lruzicka/quick-docs master  into  master

file modified
+385 -307
@@ -1,189 +1,195 @@ 

- = GRUB 2

+ = The GRUB2 Bootloader

  

- '''

+ [[introduction]]

+ == Introduction

+ *GRUB2* 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. In Fedora, the kernel is Linux. The kernel then initializes 

+ the rest of the operating system.

  

- [IMPORTANT]

- ======

+ *GRUB2* is the follower of the previous version *GRUB* (version 0.9x). The original version is available under the name *GRUB Legacy*.

  

- This page was automatically converted from https://fedoraproject.org/wiki/GRUB_2

+ Since Fedora 16, *GRUB2* has been the default bootloader on x86 BIOS

+ systems. For upgrades of BIOS systems, the default is also to install

+ *GRUB2*, but you can opt to skip bootloader configuration entirely.

  

- It is probably

+ [[installing-grub-2-on-a-bios-system]]

+ == Installing GRUB2 on a BIOS system

  

- * Badly formatted

- * Missing graphics and tables that do not convert well from mediawiki

- * Out-of-date

- * In need of other love

+ Usually, *GRUB2* will be installed by the installer, *Anaconda*, during the installation process. You will probably never have to deal with manual installation of *GRUB2*. However, in certain situations , you will want to install *GRUB2* manually, if you want to update from an older or different bootloader, for instance. To install *GRUB2*: 

  

- Please fix it, remove this notice, and then add to `_topic_map.yml`

+ . Install *GRUB2* software using the *dnf* package manager

+ +

+ ----

+ $ sudo dnf install grub2

+ ----

  

- Pull requests accepted at https://pagure.io/fedora-docs/quick-docs

+ [[Installing-grub-2-on-the-hard-disk-bios]]

+ == Installing GRUB2 on the hard disk on BIOS systems

  

- Once that is live, go to the original wiki page and add an `{{old}}`

- tag, followed by a note like

+ Installing the *GRUB2* software on your system does not change your bootloader configuration. In order to use *GRUB2* for loading the operating system, you have to install it on the hard disk. There are two possible options to install it:

  

- ....

- {{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

- }}

- ....

+ . in the master boot record (MBR) of the hard disk

+ . on an extra partition on the hard disk

  

- ======

+ *GRUB2* is able to load many operating systems, including Windows, so it is recommended to install it as the default bootloader in the MBR of the primary hard disk, usually the `sda` device.

  

- '''

+ .Before you start

  

+ * Make sure you have installed the *GRUB2* software onto your system. See xref:installing-grub-2-on-a-system[Installing GRUB2 on your system] for more information.

+ * To automatically collect information about your disks and operating systems installed on them, the `os-prober` package needs to be installed on your system.

  

- [[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.

+ .Procedure

  

- GRUB 2 has replaced what was formerly known as GRUB (i.e. version 0.9x),

- which has, in turn, become GRUB Legacy.

+ . List devices available on the system.

+ +

+ ----

+ $ lsblk

+ ----  

  

- 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.

+ . Identify the primary hard disk. Usually, it is the `sda` device.

  

- [[tasks-common-issues]]

- Tasks / Common issues

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

+ . Install *GRUB2* in the MBR of the primary hard disk.

+ +

+ ----

+ $ sudo grub2-install /dev/sda

+ ----

  

- [[updating-grub-2-configuration-on-bios-systems]]

- Updating GRUB 2 configuration on BIOS systems

- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ . Create a configuration file for *GRUB2*.

+ +

+ ----

+ $ sudo grub2-mkconfig -o /boot/grub2/grub.cfg

+ ----

  

- The grub2 packages contain commands for installing a bootloader and for

- creating a bootloader configuration file.

+ .More information

  

- 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:

+ * The `grub2-mkconfig` command will create a new configuration based on the currently

+ running system. It collects information from the `/boot` partition (or directory), from the `/etc/default/grub` file, and the customizable scripts in `/etc/grub.d/`. 

+ * 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`.

+ * 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. Manual changes might however be

+ overwritten with `grub2-mkconfig` next time the system is upgraded with

+ *Anaconda*. Customizations can be placed in `/etc/grub.d/40_custom` or

+ `/boot/grub2/custom.cfg` files and will survive running the `grub2-mkconfig` command.

  

- ....

- grub2-install /dev/sda

- ....

+ [[installing-grub-2-configuration-on-uefi-system]]

+ == Installing GRUB2 on a UEFI system

  

- 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:

+ To install or fix *GRUB2* on a UEFI system on Fedora 18 or newer, you

+ need to do three things:

  

- ....

- grub2-mkconfig -o /boot/grub2/grub.cfg

- ....

+ * create an EFI System Partition (ESP)

+ * install the bootloader files

+ * configure the *GRUB2* configuration

  

- 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.

+ [[create-an-esp]]

+ === Create an ESP

  

- The Fedora installer, anaconda, will run these grub2 commands and there

- is usually no reason to run them manually.

+ UEFI firmware, in general, likes to boot from an _EFI System Partition_ on

+ a disk with a GPT label. 

  

- 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.

+ .Before you start

  

- [[updating-grub-2-configuration-on-uefi-systems]]

- Updating GRUB 2 configuration on UEFI systems

- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ . Learn how to create partitions using `gdisk`.

  

- To install or fix GRUB 2 on a UEFI system on Fedora 18 or newer, you

- need to do four things:

+ .Procedure

  

- [[create-an-esp]]

- Create an ESP

- ^^^^^^^^^^^^^

+ . List available block devices to find a place to create your ESP.

+ +

+ ----

+ $ lsblk

+ ----

  

- 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:

+ . Create at least a 128 MiB disk partition using a GPT label on the primary hard disk.

+ +

+ ----

+ $ sudo gdisk /dev/sda

+ ----

  

- ....

- Number  Start (sector)    End (sector)  Size       Code  Name

-    1            2048          264191   128.0 MiB   EF00  EFI System

- ....

+ . Format the partition with the _FAT32_ file system.

+ +

+ ----

+ $ sudo mkfs.vfat /dev/sda1

+ ----

  

- That partition should be formatted as FAT. If in doubt, FAT32 is a good

- dialect of FAT to choose.

+ . Mount the partition to `/boot/efi` mount point. 

+ +

+ ----

+ $ sudo mount /dev/sda1 /boot/efi

+ ----

  

- Fedora expects this partition to be mounted at `/boot/efi`.

  

  [[install-the-bootloader-files]]

- 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:

+ In order to use *GRUB2* with on the UEFI systems, you need to install appropriate packages:

  

- ....

- dnf install grub2-efi grub2-efi-modules shim

- yum install grub2-efi grub2-efi-modules shim

- ....

+ .Before you start

  

- If you do, then try:

+ . Mount the `/boot/efi` mount point. See xref:create-an-esp[Create an ESP] to create it.

  

- ....

- dnf reinstall grub2-efi grub2-efi-modules shim

- yum reinstall grub2-efi grub2-efi-modules shim

- ....

+ .Procedure

+ 

+ . Install the necessary packages.

+ +

+ ----

+ dnf install grub2-efi grub2-efi-modules shim

+ ----

  

- instead.

+ . If they are already installed, reinstall them.

+ +

+ ----

+ dnf reinstall grub2-efi grub2-efi-modules shim

+ ----

  

- Make sure that /boot/efi is mounted when you do this.

+ .More information

  

- This installs the signed shim and the GRUB 2 binary.

+ * This installs the signed shim and the *GRUB2* binary.

  

  [[create-a-grub-2-configuration]]

- Create a GRUB 2 configuration

- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

+ === Create a GRUB2 configuration

  

- Under EFI, GRUB 2 looks for its configuration in

+ Under EFI, *GRUB2* 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`).

+ grub.cfg (for example `/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.

+ If you already have a *GRUB2* EFI config file, you do not need to do anything else. Otherwise, you can try to create the configuration file using the `grub2-mkconfig` command. 

  

- `   grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg`

+ ----

+ $ sudo grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg

+ ----

  

- [[create-a-boot-menu-entry]]

- Create a boot menu entry

- ^^^^^^^^^^^^^^^^^^^^^^^^

+ [[solve-problems-with-uefi-bootloader]]

+ === Solve problems with UEFI bootloader.

  

- TL;DR: This should happen automatically. If it doesn't, read on.

  

+ [[adding-the-boot-menu-entries]]

+ ==== Adding the boot menu entries

  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

+ that tell it how to boot. If you are 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.

+ with `efibootmgr`. If not, you will 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

+ in your ESP and will add boot entries corresponding to them. The `shim` command 

+ provides a `BOOT.CSV` file that will add an entry for `grub2-efi` for you. 

+ 

+ Using the *EFI Shell* to invoke `fallback.efi` should work for you. 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`,
@@ -193,285 +199,357 @@ 

  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

- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ ==== Adding Other operating systems to the *GRUB2* 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.

+ The `grub2-mkconfig` command will add entries for all operating systems it can find.

+ For the command to work, you have to have installed the *os-prober* tool that is provided by the `os-prober` package. 

  

- 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

- .

+ Unfortunately, problem sometimes can appear. See the link:http://www.gnu.org/software/grub/manual/grub.html#Multi_002dboot-manual-config[GRUB manual] to solve issues with booting secondary operating systems.

  

  [[setting-default-entry]]

- Setting default entry

- ~~~~~~~~~~~~~~~~~~~~~

+ ==== Setting default entry

  

- Due to `grub2-mkconfig` (and os-prober) we cannot predict the order of

+ 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:

+ .Before you start

  

- ....

+ . Open `/etc/default/grub` and make sure these lines exist in the file.

+ +

+ ----

  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

- 

- ....

+ ----

+ 

+ . Apply the changes to `grub.cfg` by running.

+ +

+ ----

+ $sudo grub2-mkconfig -o /boot/grub2/grub.cfg

+ ----

+ 

+ .Procedure

+ 

+ . List all possible menu entries.

+ +

+ ----

+ $sudo grep -P "submenu|^menuentry" /boot/grub2/grub.cfg | cut -d "'" -f2

+ ----

+ 

+ . Set the desired default menu entry

+ +

+ ----

+ $sudo grub2-set-default "<submenu title><menu entry title>"

+ ----

+ 

+ . Verify the default menu entry

+ +

+ ----

+ $sudo grub2-editenv list

+ ----

+ 

+ .More information

+ If you understand the risks involved, you can manually modify the

+ `/boot/grub2/grub.cfg` file. In that case, set the number of the default operating system using the `set default` variable. 

+ 

+ For example:

+ ----

  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

+ [[additional-scenario]]

+ == Additional Scenarios

+ 

+ [[restoring-bootloader-using-live-disk]]

+ === Restoring the bootloader using the Live disk.

+ 

+ Sometimes, especially after a secondary operating systems has been installed, the master boot record gets damaged which then prevents the original Linux system from booting.

+ If this happens, it is necessary to reinstall *GRUB2* to recreate the original settings. The process not only discovers all installed operating systems, but usually adds them to the *GRUB2* configuration files, so they will all become bootable by *GRUB2*.

+ 

+ .Before you start

+ 

+ . Get the Fedora Live ISO from link:https://download.fedoraproject.org/pub/fedora/linux/releases/27/Workstation/x86_64/iso/Fedora-Workstation-Live-x86_64-27-1.6.iso[getfedora.org].

+ . Prepare a bootable device using the downloaded ISO, either a CD or a USB.

+ 

+ .Procedure

+ 

+ . Boot the Fedora live system from the bootable device you have created.

+ 

+ . Open the terminal.

+ 

+ . Examine the partition layout and identify the `boot` and the `root` partition.

+ +

+ ----

+ $ sudo fdisk -l

+ ----

+ +

+ If you are using the default Fedora layout, there will be one `/dev/sda1` partition that holds the `/boot` directory and one `/dev/mapper/fedora-root` that holds the root file system.

+ 

+ . Create the mount point for the root partition.

+ +

+ ----

+ $ sudo mkdir -p /mnt/root

+ ---- 

+ 

+ . Mount the root partition on the mount point.

+ +

+ ----

+ $ sudo mount /dev/mapper/fedora-root /mnt/root

+ ----

+ 

+ . Mount the boot partition in the `boot` directory of the filesystem that you have mounted in the previous step.

+ +

+ ----

+ $ sudo mount /dev/sda1 /mnt/root/boot/

+ ----

+ 

+ . Mount system processes and devices into the root filesystem in `/mnt/root`.

+ +

+ ----

+ $ sudo mount -o bind /dev /mnt/root/dev

+ $ sudo mount -o bind /proc /mnt/root/proc

+ $ sudo mount -o bind /sys /mnt/root/sys

+ $ sudo mount -o bind /run /mnt/root/run

+ ----

+ 

+ . Change your filesystem into the one mounted under `/mnt/root`.

+ +

+ ----

+ $ sudo chroot /mnt/root

+ ----

+ 

+ . Reinstall *GRUB2* into the MBR of the primary hard disk.

+ +

+ ----

+ $ sudo grub2-install --no-floppy --recheck /dev/sda

+ ----

+ 

+ . Recreate the *GRUB2* configuration files.

+ +

+ ----

+ $ sudo grub2-mkconfig -o /boot/grub2/grub.cfg

+ ----

+ 

+ . Exit this temporary root filesystem.

+ +

+ ----

+ $ exit

+ ----

+ 

+ . Your bootloader should be now restored. Reboot your computer to boot into your normal system.

+ +

+ ----

+ $ sudo systemctl reboot

+ ----

+ 

+ [[using-the-grub-2-boot-prompt]]

+ ==== Using the GRUB2 boot prompt

+ 

+ If improperly configured, *GRUB2* 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

- 

- ....

+ . Load the XFS and LVM modules

+ +

+ ----

  insmod xfs

  insmod lvm

- ....

+ ----

  

- \1. List the drives which GRUB 2 sees:

- 

- ....

+ . List the drives which *GRUB2* sees:

+ +

+ ----

  grub2> ls

- ....

+ ----

  

- \2. The output for a dos partition table /dev/sda with three partitons

+ . Study the output for the partition table of the `/dev/sda` device. It may look similar to the following example on a dos partition table 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:

- 

- ....

+ ----

+ +

+ or similar to this output on a gpt partition table of the `/dev/sda` device with four

+ partitions.

+ +

+ ----

  (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:

- 

- ....

+ . 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:

+ ----

+ +

+ The outcome of the previous command will list the files on `/dev/sda1`. If this partition contains the `/boot` directory, it will show the full name of `vmlinuz` and `initramfs`.

  

- ....

+ . Set the root partition.

+ +

+ ----

  grub> set root=(hd0,3)

- ....

+ ----

  

- 5b. Declare the kernel you wish to use:

- 

- ....

+ . Set the desired kernel.

+ +

+ ----

  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:

+ ----

  

- ....

-   

+ . Set the desired `initrd`.

+ +

+ ----

  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:

- 

- ....

+ . Boot with the selected settings.

+ +

+ ----

  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:

+ . When the system starts, open a terminal.

  

- ....

+ . Enter the `grub2-mkconfig` command to re-create the `grub.cfg` file to enable *GRUB2* 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:

- 

- ....

+ . Enter the `grub2-install` command to install *GRUB2* to your hard disk to use of your config file.

+ +

+ ----

  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

- ~~~~~~~~~~~~~~~~~~~

+ ----

  

+ [[booting-with-configfile-on-different-partition]]

+ === Booting the system using a configuration file on a different partition.

  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:

+ steps in the *GRUB2* rescue shell might become useful to know:

+ 

+ .Procedure

  

- ....

+ . Load necessary modules to read the partitions.

+ +

+ ----

  insmod part_msdos

  insmod xfs

  insmod lvm

+ ----

+ 

+ . Set the root partition.

+ +

+ ----

  set root='hd0,msdos1'

+ ----

+ 

+ . Set the path to the configuration file.

+ +

+ ----

  configfile /grub2/grub.cfg

- ....

+ ----

  

- Where, *hd0,msdos1* is the pertinent _boot_ partition, which holds the

- grub.cfg file.

+ .More information

+ The *hd0,msdos1* line shows the pertinent _boot_ partition, which holds the

+ `grub.cfg` file.

  

- [[other-grub-2-issues]]

- Other GRUB 2 issues

- ~~~~~~~~~~~~~~~~~~~

+ [[absent-floppy-disk]]

+ === Dealing with the "Absent Floppy Disk" Error

  

- ''' 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:

+ It has been reported by some users that *GRUB2* may fail to install on a partition's boot sector if the computer's floppy controller is activated in BIOS without an actual floppy disk

+ drive being present. Such situations resulted in an _Absent Floppy Disk_ error. 

  

- ....

+ To workaround this issue, go into the rescue mode and install *GRUB2* with the `--no-floppy` option:

+ 

+ ----

  grub2-install <target device> --no-floppy

- ....

+ ----

  

  [[setting-a-password-for-interactive-edit-mode]]

- Setting a password for interactive edit mode

- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ === Setting a password for interactive edit mode

+ 

+ If you wish to password-protect the *GRUB2* interactive edit mode 

+ without forcing users to enter a password to boot the computer, use this procedure.

  

- 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:

+ .Procedure

  

- ....

+ . Create the `/etc/grub.d/01_users` file.

+ +

+ ----

  cat << EOF

  set superusers="root"

  export superusers

  password root secret

  EOF

- ....

+ ----

  

- To apply your changes run:

- 

- ....

+ . Apply your changes.

+ +

+ ----

  grub2-mkconfig -o /boot/grub2/grub.cfg

- ....

+ ----

+ 

+ .More information

  

- You can encrypt the password by using pbkdf2. Use grub2-mkpasswd-pbkdf2

+ 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.

+ [NOTE]

+ ====

+ Starting from Fedora 21, the `--md5pass` kickstart option must

+ be set using output from the `grub2-mkpasswd-pbkdf2` command.

+ ====

  

  [[using-old-graphics-modes-in-bootloader]]

- 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).

+ 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

+ The default in Fedora is `gfxterm` and to get the legacy graphics modes

+ you need to set GRUB_TERMINAL to the right variable from the description

+ above in `/etc/default/grub`.

  

- [[enable-serial-console-in-grub]]

- Enable Serial Console in Grub

- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ [[enabling-serial-console-in-grub]]

+ === Enabling Serial Console in GRUB2

  

- To enable Serial console in grub add the following entry's to

- /etc/default/grub

+ To enable Serial console in grub: 

  

- ( Adjust baudrate/parity/bits/flow control to fit your environment and

- cables)

- 

- ....

+ . Add the following entry to `/etc/default/grub`. Adjust `baudrate`, `parity`, `bits`, and `flow` controls 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

+ ----

  

+ . Re-generate the GRUB2 config file.

+ +

  `grub2-mkconfig -o /boot/grub2/grub.cfg`

  

  [[further-reading]]

- Further Reading

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

+ == Further Reading

  

  * http://www.gnu.org/software/grub/manual/grub.html

  * Features/Grub2

Fix markup.
Edit procedures.
Add info on restoring bootloader.

Pull-Request has been merged by lruzicka

6 years ago
Metadata