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