Emergency Boot - Including for Dual-Boot: Difference between revisions

From Info Wiki
Jump to navigationJump to search
No edit summary
(refined dedicated boot partition - added caution re EFI)
 
Line 207: Line 207:
==== Dedicated Boot Partition ====
==== Dedicated Boot Partition ====


This is by far the most reliable mode, but requires manual installation & configuration. The procedure is covered in Info Grub[2] -> Configuration -> Multi-boot Manual Config
This is by far the most reliable mode, but with three big provisos:
*does not work on <span style="color:#c93800">'''EFI mainboards'''</span>
*<span style="color:#ef2108">''' this procedure probably overwrites an existing bootloader, possibly one that also boots Windows''' Proceed only if means of recovery are to hand</span>
*requires manual installation & configuration.


The procedure is covered in Info Grub[2] -> Configuration -> Multi-boot Manual Config
#create a small partition of at least 16 MB (keep to partition number #> 3 to avoid other issues)

#create a small partition of at least 16 MB
#*keep to partition number #> 3, if available. to avoid other issues)
#mount this partition to /mnt/boot
#mount this partition to /mnt/boot
#install grub2
#install grub2
##grub2-install --boot-directory=/mnt/boot /dev/hdx
##<nowiki># grub2-install --boot-directory=/mnt/boot /dev/hdx</nowiki>
##check for presence of /mnt/boot/grub(2)
##check for presence of /mnt/boot/grub(2)
#configure boot via dedicated partition
#configure boot via dedicated partition
##write simple /mnt/boot/grub(2)/menu.cfg
##write simple /mnt/boot/grub(2)/menu.cfg
#*the sample in Info Grub suffices as a starting point
##*the sample in Info Grub suffices as a starting point
#*it has the slight drawback that '''two''' sequential boot menus are presented
##*it has the slight drawback that '''two''' sequential boot menus are presented
#*both can be set to default to the most frequently used OS
##*both can be set to default to the most frequently used OS
##*parameters to boot direct to various installed OS could be a later refinement
#configure '''each''' installed OS for compatibilty with dedicated boot partition
#configure '''each''' installed OS for compatibilty with dedicated boot partition
#*GUI bootloader configuration can be used
#*GUI bootloader configuration can be used
Line 225: Line 232:
##set bootloader to be installed in custom location of dedicated partition ie /dev/sdx(n)
##set bootloader to be installed in custom location of dedicated partition ie /dev/sdx(n)
##do '''not''' allow OS to install bootloader to MBR
##do '''not''' allow OS to install bootloader to MBR
#*that was already done by grub-install previously
##*that was already done by grub-install previously
##*an installer not having this option would need to be set to "do not install any bootloader" (and ignore the nagware)


NB - there is no way of testing this setup without rebooting
NB - there is no way of testing this setup without rebooting
*have the 'on-the-fly" procedure above to hand
*have the 'on-the-fly" procedure above to hand
*have a PartedMagic boot CD to hand - it can boot to Grub command line
*have a PartedMagic boot CD to hand - it can boot to Grub command line as well as search out bootable installations
**SystemrescueCD will also boot installed distro via some CLI input


With this setup, regular OS updates '''do''' update Grub code
With this setup, regular OS updates '''do''' update Grub code
*but do not overwrite the grub.cfg in the dedicated boot partition
*but do not overwrite the grub.cfg in the dedicated boot partition
*these '''will''' update a different grub.cfg, in the OS's /boot/grub(2) folder
*these '''will''' update a different grub.cfg, in the OS's /boot/grub(2) folder
**to which the dedicated boot parttiion chains
**to which the dedicated boot parttiion chains, if the code from Info Grub is used

== Strictly for Geeks ==
== Strictly for Geeks ==



Latest revision as of 23:55, 6 April 2014

For General Users

Boot Only Rescue CD

The following CD can often succeed in booting a system which is failing to start from hard disk drive

  • rEFInd
  • Supergrub2

Either can boot most operating systems, including Linux, MacOSX and Windows

Try rEFInd for systems manufactured from early 2011 onwards. If it does not start on your computer then try Supergrub 2 Older computers are likely to require Supergrub 2

  1. Either CD is downloadable, at no cost, as a dotISO file.
  2. Use the following procedure to burn that file to a bootable CD
  3. Then insert the CD in the faulty computer and reboot
  4. enter Setup and move CDROM above HDD in the boot order, if necessary
  5. save changes and exit Setup
  6. after the CD boots menu items can be selected only via arrow keys - mouse does not work at this stage of boot
    • rEFInd should find all bootable operating systems and present an icon that is readily associated with each eg penguin, apple, flying windows
      • highlight the required one and press enter
    • Supergrub requires an additional step
      • select the first menu line and press Enter
      • it should then identify all bootable operating systems, by name
      • highlight the required one and press enter

Systems that don't boot via the above procedures can often still be recovered, but it gets technical. As described below

Getting Technical

GRUB (aka GRUB 2 )

GRUB 2 is now the most frequently used bootloader in Linux, but has many remaining issues. Some work-arounds:

"on-the-fly" Mode

GRUB 2 relies on a pre-defined config file /boot/grub(2)/grub.cfg. If this is not located, for any reason, GRUB 2 may boot to a grub> prompt. To boot from here use the following commands, substituting relevant drive and partition numbers:

grub> set root='hd0,gpt10'
grub> linux /boot/vmlinuz root=/dev/sda10
grub> initrd /boot/initrd
grub> boot 
Notes
  • drive numbers start from 0
  • must specify whether partitioned mbr or gpt
  • set root refers to location of partition containing /boot for the operating system to be booted
    • which will often also be the root file system for Linux
    • or merely the system partition for Win
    • partition numbers start from 1 (unlike in GRUB legacy)
  • this procedure is easiest if kernel & initrd have easily remembered names
    • either soft-link generic names or
    • press TAB to see possible names
  • ctrl-x or F10 may be pressed in lieu the "boot" command

The above procedure may be modified to cater for the situation where the menu is presented but the desired OS is not included or fails to boot. either

  • press e to edit a menu item or
  • press Esc to get to command line, then proceed as above.

Menu mode

See GRUB 2 downloadable manual or use "info grub2" to obtain details. Consistent themes amongst various documentation for GRUB 2 are that:

  • it is unreliable beyond the basics
  • OS-probe module is particularly so
  • not putting bootstrap in MBR (protective MBR in case of GPT) will be problematic

Indeed, "info grub2" recommends avoid all automated installs & configs by distro. Instead, manually grub2-install then write a simple, static /boot/grub2/grub.cfg. See below for outline of this procedure.

As of Jan 2014 and following application of two patches to GRUB in openSUSE 13.1, its GRUB has been brought to ver 2.00-39.4.1. The automated process works well enough for most Linux plus Windows

It fails to find ArchLinux - which uses unusual names for kernels & initrd. Simple work-around for that is to add a 90_persistent section at the end of /boot/grub2/grub.cfg

### BEGIN /etc/grub.d/90_persistent ###

 menuentry 'ArchLinux (<your descriptor>) {
 set root='hd<n>,gpt<n>'
 linux /boot/vmlinux-linux root=/dev/sd<x><n>
 initrd /boot/initramfs-linux.img
 }

### END /etc/grub.d/90_persistent ###

Then manually run

#grub2-mkconfig

Essentially, the 90_persistent section gets copied verbatim during any subsequent manual or automated run of grub2-mkconfig. Note that this feature might be unique to openSUSE

Notes
The curly braces are essential and enclose GRUB2 commands.
This was for a HDD partitioned GPT. replace partition number with mbr<n> if applicable.
Multiple menuentries could be put in 90_persistent to cope with multiple Linuxes.

For General Users

Boot Only Rescue CD

The following CD can often succeed in booting a system which is failing to start from hard disk drive

  • rEFInd
  • Supergrub2

Either can boot most operating systems, including Linux, MacOSX and Windows

Try rEFInd for systems manufactured from early 2011 onwards. If it does not start on your computer then try Supergrub 2 Older computers are likely to require Supergrub 2

  1. Either CD is downloadable, at no cost, as a dotISO file.
  2. Use the following procedure to burn that file to a bootable CD
  3. Then insert the CD in the faulty computer and reboot
  4. enter Setup and move CDROM above HDD in the boot order, if necessary
  5. save changes and exit Setup
  6. after the CD boots menu items can be selected only via arrow keys - mouse does not work at this stage of boot
    • rEFInd should find all bootable operating systems and present an icon that is readily associated with each eg penguin, apple, flying windows
      • highlight the required one and press enter
    • Supergrub requires an additional step
      • select the first menu line and press Enter
      • it should then identify all bootable operating systems, by name
      • highlight the required one and press enter

Systems that don't boot via the above procedures can often still be recovered, but it gets technical. As described below

Getting Technical

GRUB (aka GRUB 2 )

GRUB 2 is now the most frequently used bootloader in Linux, but has many remaining issues. Some work-arounds:

"on-the-fly" Mode

GRUB 2 relies on a pre-defined config file /boot/grub(2)/grub.cfg. If this is not located, for any reason, GRUB 2 may boot to a grub> prompt. To boot from here use the following commands, substituting relevant drive and partition numbers:

grub> set root='hd0,gpt10'
grub> linux /boot/vmlinuz root=/dev/sda10
grub> initrd /boot/initrd
grub> boot 
Notes
  • drive numbers start from 0
  • must specify whether partitioned mbr or gpt
  • set root refers to location of partition containing /boot for the operating system to be booted
    • which will often also be the root file system for Linux
    • or merely the system partition for Win
    • partition numbers start from 1 (unlike in GRUB legacy)
  • this procedure is easiest if kernel & initrd have easily remembered names
    • either soft-link generic names or
    • press TAB to see possible names
  • ctrl-x or F10 may be pressed in lieu the "boot" command

The above procedure may be modified to cater for the situation where the menu is presented but the desired OS is not included or fails to boot. either

  • press e to edit a menu item or
  • press Esc to get to command line, then proceed as above.

Menu mode

See GRUB 2 downloadable manual or use "info grub2" to obtain details. Consistent themes amongst various documentation for GRUB 2 are that:

  • it is unreliable beyond the basics
  • OS-probe module is particularly so
  • not putting bootstrap in MBR (protective MBR in case of GPT) will be problematic

Indeed, "info grub2" recommends avoid all automated installs & configs by distro. Instead, manually grub2-install then write a simple, static /boot/grub2/grub.cfg. See below for outline of this procedure.

As of Jan 2014 and following application of two patches to GRUB in openSUSE 13.1, its GRUB has been brought to ver 2.00-39.4.1. The automated process works well enough for most Linux plus Windows

It fails to find ArchLinux - which uses unusual names for kernels & initrd. Simple work-around for that is to add a 90_persistent section at the end of /boot/grub2/grub.cfg

### BEGIN /etc/grub.d/90_persistent ###

 menuentry 'ArchLinux (<your descriptor>) {
 set root='hd<n>,gpt<n>'
 linux /boot/vmlinux-linux root=/dev/sd<x><n>
 initrd /boot/initramfs-linux.img
 }

### END /etc/grub.d/90_persistent ###

Then manually run

#grub2-mkconfig

Essentially, the 90_persistent section gets copied verbatim during any subsequent manual or automated run of grub2-mkconfig. Note that this feature might be unique to openSUSE

Notes
The curly braces are essential and enclose GRUB2 commands.
This was for a HDD partitioned GPT. replace partition number with mbr<n> if applicable.
Multiple menuentries could be put in 90_persistent to cope with multiple Linuxes.

Dedicated Boot Partition

This is by far the most reliable mode, but with three big provisos:

  • does not work on EFI mainboards
  • this procedure probably overwrites an existing bootloader, possibly one that also boots Windows Proceed only if means of recovery are to hand
  • requires manual installation & configuration.

The procedure is covered in Info Grub[2] -> Configuration -> Multi-boot Manual Config

  1. create a small partition of at least 16 MB
    • keep to partition number #> 3, if available. to avoid other issues)
  2. mount this partition to /mnt/boot
  3. install grub2
    1. # grub2-install --boot-directory=/mnt/boot /dev/hdx
    2. check for presence of /mnt/boot/grub(2)
  4. configure boot via dedicated partition
    1. write simple /mnt/boot/grub(2)/menu.cfg
      • the sample in Info Grub suffices as a starting point
      • it has the slight drawback that two sequential boot menus are presented
      • both can be set to default to the most frequently used OS
      • parameters to boot direct to various installed OS could be a later refinement
  5. configure each installed OS for compatibilty with dedicated boot partition
    • GUI bootloader configuration can be used
    • parameters will vary between distro
    1. disable OS prober
    2. set bootloader to be installed in custom location of dedicated partition ie /dev/sdx(n)
    3. do not allow OS to install bootloader to MBR
      • that was already done by grub-install previously
      • an installer not having this option would need to be set to "do not install any bootloader" (and ignore the nagware)

NB - there is no way of testing this setup without rebooting

  • have the 'on-the-fly" procedure above to hand
  • have a PartedMagic boot CD to hand - it can boot to Grub command line as well as search out bootable installations
    • SystemrescueCD will also boot installed distro via some CLI input

With this setup, regular OS updates do update Grub code

  • but do not overwrite the grub.cfg in the dedicated boot partition
  • these will update a different grub.cfg, in the OS's /boot/grub(2) folder
    • to which the dedicated boot parttiion chains, if the code from Info Grub is used

Strictly for Geeks

Manual Install

Distro run many scripts to provide GUI interface to bootloader configuration. If these are failing either initially or following kernel updates, then the most reliable process is a manually installed and configured GRUB 2. Details will differ between distro.

For openSUSE:

this procedure initially removes all bootloaders, including that for Windows Proceed only if means of recovery are to hand
  1. copy the existing boot menu file /boot/grub2/grub.cfg to a different location eg in /root
  2. Yast2->System->Bootloader
    • set bootloader type to "do not install any bootloader"
      • accept all the warnings
      • press OK to complete
  3. from root's command prompt:
    # grub2-install /dev/sd(x)
    Notes
    • installation to a second HDD eg /dev/sdb, would avoid overwriting bootloader on /dev/sda
    • default location of boot code will become /boot/grub2 on the currently booted system
      • generally suitable but see info grub2 to change location.
  4. Write a static /boot/grub2/grub.cfg consisting solely of multiple menuentries. Each menuentry has the syntax between the ### BEGIN /etc/grub.d/90_persistent ### ### END /etc/grub.d/90_persistent ### section markers in Menu Mode above

Such basic menu works well enough. GRUB2 autoloads most of the modules it needs.

If you get a manual menuentry wrong then on-the-fly editing is available as in Menu Mode

  • press 'e' to edit an entry.

--Rod --