Difference between revisions of "Emergency Boot - Including for Dual-Boot"

From Info Wiki
Jump to: navigation, search
(refined dedicated boot partition - added caution re EFI)
 
(4 intermediate revisions by the same user not shown)
Line 42: Line 42:
 
grub> boot
 
grub> boot
   
 
;Notes
notes
 
 
*drive numbers start from 0
 
*drive numbers start from 0
 
*must specify whether partitioned mbr or gpt
 
*must specify whether partitioned mbr or gpt
Line 65: Line 65:
 
*it is unreliable beyond the basics
 
*it is unreliable beyond the basics
 
*OS-probe module is particularly so
 
*OS-probe module is particularly so
*not putting bootstrap in MBR (protective MBR in case of GPT) will
+
*not putting bootstrap in MBR (protective MBR in case of GPT) will be problematic
be problematic
 
   
 
Indeed, "info grub2" recommends avoid all automated installs & configs by
 
Indeed, "info grub2" recommends avoid all automated installs & configs by
Line 75: Line 74:
 
automated process works well enough for most Linux plus Windows
 
automated process works well enough for most Linux plus Windows
   
It failed to find ArchLinux - which uses unusual names for kernels & initrd.
+
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
 
Simple work-around for that is to add a 90_persistent section at the end of
 
/boot/grub2/grub.cfg
 
/boot/grub2/grub.cfg
   
<nowiki>### BEGIN /etc/grub.d/90_persistent ###</nowiki>
+
<nowiki>### BEGIN /etc/grub.d/90_persistent ###
   
 
menuentry 'ArchLinux (<your descriptor>) {
 
menuentry 'ArchLinux (<your descriptor>) {
Line 87: Line 86:
 
}
 
}
   
<nowiki>### END /etc/grub.d/90_persistent ###</nowiki>
+
### END /etc/grub.d/90_persistent ###</nowiki>
  +
  +
Then manually run
  +
  +
<nowiki>#grub2-mkconfig</nowiki>
   
 
Essentially, the 90_persistent section gets copied verbatim during any
 
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
 
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.
+
:The curly braces are essential and enclose GRUB2 commands.
   
This was for a HDD partitioned GPT. replace partition number with mbr<n> if
+
:This was for a HDD partitioned GPT. replace partition number with mbr<n> if applicable.
applicable.
 
   
Multiple menuentries could be put in 90_persistent to cope with multiple
+
:Multiple menuentries could be put in 90_persistent to cope with multiple Linuxes.
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
  +
  +
#Either CD is downloadable, at no cost, as a dotISO file.
  +
#*http://sourceforge.net/projects/refind/files/0.7.7/refind-cd-0.7.7.zip/download
  +
#*http://developer.berlios.de/project/showfiles.php?group_id=10921&release_id=19361
  +
#Use the following procedure to burn that file to a '''bootable''' CD
  +
#*[[Using dotISO Files]]
  +
#Then insert the CD in the faulty computer and reboot
  +
#enter Setup and move CDROM above HDD in the boot order, if necessary
  +
#save changes and exit Setup
  +
#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
  +
  +
<nowiki>### 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 ###</nowiki>
  +
  +
Then manually run
  +
  +
<nowiki>#grub2-mkconfig</nowiki>
  +
  +
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 <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, if available. to avoid other issues)
  +
#mount this partition to /mnt/boot
  +
#install grub2
  +
##<nowiki># grub2-install --boot-directory=/mnt/boot /dev/hdx</nowiki>
  +
##check for presence of /mnt/boot/grub(2)
  +
#configure boot via dedicated partition
  +
##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
  +
#configure '''each''' installed OS for compatibilty with dedicated boot partition
  +
#*GUI bootloader configuration can be used
  +
#*parameters will vary between distro
  +
##'''disable''' OS prober
  +
##set bootloader to be installed in custom location of dedicated partition ie /dev/sdx(n)
  +
##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 ==
 
== Strictly for Geeks ==
Line 108: Line 252:
   
 
For openSUSE:
 
For openSUSE:
**<span style="color:#ef2108; background:#black">''' this procedure initially removes all bootloaders, including that for Windows''' Proceed only if means of recovery are to hand</span>
+
::<span style="color:#ef2108; background:#black">''' this procedure initially removes all bootloaders, including that for Windows''' Proceed only if means of recovery are to hand</span>
 
#copy the existing boot menu file /boot/grub2/grub.cfg to a different location eg in /root
 
#copy the existing boot menu file /boot/grub2/grub.cfg to a different location eg in /root
 
#Yast2->System->Bootloader
 
#Yast2->System->Bootloader
*set bootloader type to "do not install any bootloader"
+
#*set bootloader type to "do not install any bootloader"
**accept all the warnings
+
#**accept all the warnings
**press OK to complete
+
#**press OK to complete
 
#from root's command prompt:
 
#from root's command prompt:
<nowiki># grub2-install /dev/sd(x)</nowiki>
+
#:<nowiki># grub2-install /dev/sd(x)</nowiki>
  +
#;Notes
 
 
#*installation to a second HDD eg /dev/sdb, would avoid overwriting bootloader on /dev/sda
Notes
 
 
#*default location of boot code will become /boot/grub2 on the currently booted system
*installation to a second HDD eg /dev/sdb, would avoid overwriting bootloader on /dev/sda
 
 
#**generally suitable but see info grub2 to change location.
*default location of boot code will become /boot/grub2 on the currently booted system
 
  +
#:
**generally suitable but see info grub2 to change location.
 
 
#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 [[Emergency_Boot_-_Including_for_Dual-Boot#Menu_mode | Menu Mode]] above
 
#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 [[http://www.pcug.org.au/info/index.php/Emergency_Boot_-_Including_for_Dual-Boot#Menu_mode]] above
 
   
 
Such basic menu works well enough. GRUB2 autoloads most of the modules it needs.
 
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 http://www.pcug.org.au/info/index.php?title=User:Rpeters&action=submit#.22on-the-fly.22_Mode
+
If you get a manual menuentry wrong then on-the-fly editing is available as in[[Emergency_Boot_-_Including_for_Dual-Boot#Menu_mode | Menu Mode]]
 
*press 'e' to edit an entry.
 
*press 'e' to edit an entry.
  +
  +
--[[User:Rpeters|Rod]]
  +
--[[Category:Technical Info]]

Latest revision as of 10:55, 7 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 --