don't change disks organisation when updating grub with apt

Asked by Walter Dereck on 2008-01-04

Each time the grub menu.lst is updated, the new version don't respect the disks assignation installed, forcing to rewrite this file with correct grub disk numbers with root access under terminal.
 Thanks, Walter.

Question information

Language:
English Edit question
Status:
Answered
For:
Ubuntu grub Edit question
Assignee:
No assignee Edit question
Last query:
2008-01-06
Last reply:
2008-01-07

This question was reopened

Fred (frederic-lespez) said : #1

Could you provide the content of your grub menu.lst and the corrections you manually do to make it work ?

Walter Dereck (wdereck) said : #2

Hello, in file:
file:///boot/grub/menu.lst
I had to change for each entry in the main part, from:
root (hd1,0) to:
root (hd0,0) having 3 hdd: hda, hdb and hdc on wich my kubuntu is installed.
This changes must be executed under root access rights.
 Hope this will help, Walter.

Walter Dereck (wdereck) said : #3

Sorry, I wonder if the automatic updating program is adept or aptitude instead of apt ?

Fred (frederic-lespez) said : #4

It helps :-)
Open your /boot/grub/menu.lst in gedit by typing in a terminal :
sudo gedit /etc/boot/menu.lst
Search the following lines :
## default grub root device
## e.g. groot=(hd0,0)
# groot=(hd1,0)

Replace the following line :
# groot=(hd1,0)
with this one:
# groot=(hd0,0)

Save the file and close gedit.

Then in terminal, type :
sudo update-grub

Then check that your menu.lst is correct.

Walter Dereck (wdereck) said : #5

Thanks for your answer, but that I knew, that's what I did, but why the update don't copy the same disks organisation as it find on each machine ?

Fred (frederic-lespez) said : #6

Not sure that I follow you...
You mean that things were working but got broken after an update ?
It's not a normal behavior.
You didn't change the disk organization (adding or removing a disk) before the update ?

What could happen is that after a kernel or BIOS version update, the system saw the disk is a different order. It could happen when you mixed PATA and SATA disks or when you have disks on an additional card.
And as grub only knows disk the order of disk and nothing else, if this order change, it breaks grub.

Adept and aptitute both use apt.
The automatic updating program is update-manager (the one notifying you of new updates). Normally, it is launched automatically when you log in.

Walter Dereck (wdereck) said : #7

I did what you told me , and again the update change the menu.lst file in DEBIAN AUTOMAGIC KERNELS LIST with (1.0) instead of (0.0) that was previously set. I made a backup to restore it.
I didn't change the IDE disks before update neither the BIOS.
 The /boot has its own partition on hdc as hdc1 & / as hdc2. Walter.

Fred (frederic-lespez) said : #8

Could you post the whole content of your menu.lst file ?

Walter Dereck (wdereck) said : #9

# menu.lst - See: grub(8), info grub, update-grub(8)
# grub-install(8), grub-floppy(8),
# grub-md5-crypt, /usr/share/doc/grub
# and /usr/share/doc/grub-doc/.

## default num
# Set the default entry to the entry number NUM. Numbering starts from 0, and
# the entry number 0 is the default if the command is not used.
#
# You can specify 'saved' instead of a number. In this case, the default entry
# is the entry saved with the command 'savedefault'.
# WARNING: If you are using dmraid do not change this entry to 'saved' or your
# array will desync and will not let you boot your system.
default 0

## timeout sec
# Set a timeout, in SEC seconds, before automatically booting the default entry
# (normally the first entry defined).
timeout 10

## hiddenmenu
# Hides the menu by default (press ESC to see the menu)
#hiddenmenu

# Pretty colours
color cyan/blue white/blue

## password ['--md5'] passwd
# If used in the first section of a menu file, disable all interactive editing
# control (menu entry editor and command-line) and entries protected by the
# command 'lock'
# e.g. password topsecret
# password --md5 $1$gLhU0/$aW78kHK1QfV3P2b2znUoe/
# password topsecret

#
# examples
#
# title Windows 95/98/NT/2000
# root (hd0,0)
# makeactive
# chainloader +1
#
# title Linux
# root (hd0,1)
# kernel /vmlinuz root=/dev/hda2 ro
#

#
# Put static boot stanzas before and/or after AUTOMAGIC KERNEL LIST

### BEGIN AUTOMAGIC KERNELS LIST
## lines between the AUTOMAGIC KERNELS LIST markers will be modified
## by the debian update-grub script except for the default options below

## DO NOT UNCOMMENT THEM, Just edit them to your needs

## ## Start Default Options ##
## default kernel options
## default kernel options for automagic boot options
## If you want special options for specific kernels use kopt_x_y_z
## where x.y.z is kernel version. Minor versions can be omitted.
## e.g. kopt=root=/dev/hda1 ro
## kopt_2_6_8=root=/dev/hdc1 ro
## kopt_2_6_8_2_686=root=/dev/hdc2 ro
# kopt=root=UUID=f2b83bc2-2219-4e79-b3d5-4966a411436c ro
# kopt_2_6=root=/dev/hdc2 ro

## default grub root device
## e.g. groot=(hd0,0)
# groot=(hd1,0)

## should update-grub create alternative automagic boot options
## e.g. alternative=true
## alternative=false
# alternative=true

## should update-grub lock alternative automagic boot options
## e.g. lockalternative=true
## lockalternative=false
# lockalternative=false

## additional options to use with the default boot option, but not with the
## alternatives
## e.g. defoptions=vga=791 resume=/dev/hda5
# defoptions=quiet splash

## should update-grub lock old automagic boot options
## e.g. lockold=false
## lockold=true
# lockold=false

## altoption boot targets option
## multiple altoptions lines are allowed
## e.g. altoptions=(extra menu suffix) extra boot options
## altoptions=(recovery) single
# altoptions=(recovery mode) single

## controls how many kernels should be put into the menu.lst
## only counts the first occurence of a kernel, not the
## alternative kernel options
## e.g. howmany=all
## howmany=7
# howmany=all

## should update-grub create memtest86 boot option
## e.g. memtest86=true
## memtest86=false
# memtest86=true

## should update-grub adjust the value of the default booted system
## can be true or false
# updatedefaultentry=false

## ## End Default Options ##

title Ubuntu, kernel 2.6.17-12-generic
root (hd0,0)
kernel /vmlinuz-2.6.17-12-generic root=/dev/hdc2 ro quiet splash
initrd /initrd.img-2.6.17-12-generic
quiet
savedefault
boot

title Ubuntu, kernel 2.6.17-12-generic (recovery mode)
root (hd0,0)
kernel /vmlinuz-2.6.17-12-generic root=/dev/hdc2 ro single
initrd /initrd.img-2.6.17-12-generic
boot

title Ubuntu, kernel 2.6.17-11-generic
root (hd0,0)
kernel /vmlinuz-2.6.17-11-generic root=/dev/hdc2 ro quiet splash
initrd /initrd.img-2.6.17-11-generic
quiet
savedefault
boot

title Ubuntu, kernel 2.6.17-11-generic (recovery mode)
root (hd0,0)
kernel /vmlinuz-2.6.17-11-generic root=/dev/hdc2 ro single
initrd /initrd.img-2.6.17-11-generic
boot

title Ubuntu, kernel 2.6.17-10-generic
root (hd0,0)
kernel /vmlinuz-2.6.17-10-generic root=/dev/hdc2 ro quiet splash
initrd /initrd.img-2.6.17-10-generic
quiet
savedefault
boot

title Ubuntu, kernel 2.6.17-10-generic (recovery mode)
root (hd0,0)
kernel /vmlinuz-2.6.17-10-generic root=/dev/hdc2 ro single
initrd /initrd.img-2.6.17-10-generic
boot

title Ubuntu, memtest86+
root (hd0,0)
kernel /memtest86+.bin
quiet
boot

### END DEBIAN AUTOMAGIC KERNELS LIST

# This is a divider, added to separate the menu items below from the Debian
# ones.
title Other operating systems:
root

# This entry automatically added by the Debian installer for a non-linux OS
# on /dev/hda1
title Windows NT/2000/XP (loader)
root (hd1,0)
savedefault
chainloader +1

# This entry automatically added by the Debian installer for an existing
# linux installation on /dev/hda2.
title linux (on /dev/hda2)
root (hd1,1)
kernel /boot/vmlinuz root=/dev/hda2 ro vga=0x0303
savedefault
boot

# This entry automatically added by the Debian installer for an existing
# linux installation on /dev/hda2.
title suse (on /dev/hda2)

      When update has occur, the file becomes:

# menu.lst - See: grub(8), info grub, update-grub(8)
# grub-install(8), grub-floppy(8),
# grub-md5-crypt, /usr/share/doc/grub
# and /usr/share/doc/grub-doc/.

## default num
# Set the default entry to the entry number NUM. Numbering starts from 0, and
# the entry number 0 is the default if the command is not used.
#
# You can specify 'saved' instead of a number. In this case, the default entry
# is the entry saved with the command 'savedefault'.
# WARNING: If you are using dmraid do not change this entry to 'saved' or your
# array will desync and will not let you boot your system.
default 0

## timeout sec
# Set a timeout, in SEC seconds, before automatically booting the default entry
# (normally the first entry defined).
timeout 10

## hiddenmenu
# Hides the menu by default (press ESC to see the menu)
#hiddenmenu

# Pretty colours
color cyan/blue white/blue

## password ['--md5'] passwd
# If used in the first section of a menu file, disable all interactive editing
# control (menu entry editor and command-line) and entries protected by the
# command 'lock'
# e.g. password topsecret
# password --md5 $1$gLhU0/$aW78kHK1QfV3P2b2znUoe/
# password topsecret

#
# examples
#
# title Windows 95/98/NT/2000
# root (hd0,0)
# makeactive
# chainloader +1
#
# title Linux
# root (hd0,1)
# kernel /vmlinuz root=/dev/hda2 ro
#

#
# Put static boot stanzas before and/or after AUTOMAGIC KERNEL LIST

### BEGIN AUTOMAGIC KERNELS LIST
## lines between the AUTOMAGIC KERNELS LIST markers will be modified
## by the debian update-grub script except for the default options below

## DO NOT UNCOMMENT THEM, Just edit them to your needs

## ## Start Default Options ##
## default kernel options
## default kernel options for automagic boot options
## If you want special options for specific kernels use kopt_x_y_z
## where x.y.z is kernel version. Minor versions can be omitted.
## e.g. kopt=root=/dev/hda1 ro
## kopt_2_6_8=root=/dev/hdc1 ro
## kopt_2_6_8_2_686=root=/dev/hdc2 ro
# kopt=root=UUID=f2b83bc2-2219-4e79-b3d5-4966a411436c ro
# kopt_2_6=root=/dev/hdc2 ro

## default grub root device
## e.g. groot=(hd0,0)
# groot=(hd1,0)

## should update-grub create alternative automagic boot options
## e.g. alternative=true
## alternative=false
# alternative=true

## should update-grub lock alternative automagic boot options
## e.g. lockalternative=true
## lockalternative=false
# lockalternative=false

## additional options to use with the default boot option, but not with the
## alternatives
## e.g. defoptions=vga=791 resume=/dev/hda5
# defoptions=quiet splash

## should update-grub lock old automagic boot options
## e.g. lockold=false
## lockold=true
# lockold=false

## altoption boot targets option
## multiple altoptions lines are allowed
## e.g. altoptions=(extra menu suffix) extra boot options
## altoptions=(recovery) single
# altoptions=(recovery mode) single

## controls how many kernels should be put into the menu.lst
## only counts the first occurence of a kernel, not the
## alternative kernel options
## e.g. howmany=all
## howmany=7
# howmany=all

## should update-grub create memtest86 boot option
## e.g. memtest86=true
## memtest86=false
# memtest86=true

## should update-grub adjust the value of the default booted system
## can be true or false
# updatedefaultentry=false

## ## End Default Options ##

title Ubuntu, kernel 2.6.17-12-generic
root (hd1,0)
kernel /vmlinuz-2.6.17-12-generic root=/dev/hdc2 ro quiet splash
initrd /initrd.img-2.6.17-12-generic
quiet
savedefault
boot

title Ubuntu, kernel 2.6.17-12-generic (recovery mode)
root (hd1,0)
kernel /vmlinuz-2.6.17-12-generic root=/dev/hdc2 ro single
initrd /initrd.img-2.6.17-12-generic
boot

title Ubuntu, kernel 2.6.17-11-generic
root (hd1,0)
kernel /vmlinuz-2.6.17-11-generic root=/dev/hdc2 ro quiet splash
initrd /initrd.img-2.6.17-11-generic
quiet
savedefault
boot

title Ubuntu, kernel 2.6.17-11-generic (recovery mode)
root (hd1,0)
kernel /vmlinuz-2.6.17-11-generic root=/dev/hdc2 ro single
initrd /initrd.img-2.6.17-11-generic
boot

title Ubuntu, kernel 2.6.17-10-generic
root (hd1,0)
kernel /vmlinuz-2.6.17-10-generic root=/dev/hdc2 ro quiet splash
initrd /initrd.img-2.6.17-10-generic
quiet
savedefault
boot

title Ubuntu, kernel 2.6.17-10-generic (recovery mode)
root (hd1,0)
kernel /vmlinuz-2.6.17-10-generic root=/dev/hdc2 ro single
initrd /initrd.img-2.6.17-10-generic
boot

title Ubuntu, memtest86+
root (hd1,0)
kernel /memtest86+.bin
quiet
boot

### END DEBIAN AUTOMAGIC KERNELS LIST

# This is a divider, added to separate the menu items below from the Debian
# ones.
title Other operating systems:
root

# This entry automatically added by the Debian installer for a non-linux OS
# on /dev/hda1
title Windows NT/2000/XP (loader)
root (hd1,0)
savedefault
chainloader +1

# This entry automatically added by the Debian installer for an existing
# linux installation on /dev/hda2.
title linux (on /dev/hda2)
root (hd1,1)
kernel /boot/vmlinuz root=/dev/hda2 ro vga=0x0303
savedefault
boot

# This entry automatically added by the Debian installer for an existing
# linux installation on /dev/hda2.
title suse (on /dev/hda2)
root (hd1,1)
kernel /boot/vmlinuz.suse root=/dev/hda2 ro vga=0x0303
savedefault
boot

# This entry automatically added by the Debian installer for an existing
# linux installation on /dev/hda2.
title memtest86 (on /dev/hda2)
root (hd1,1)
kernel /boot/memtest.bin ro vga=0x0303
savedefault
boot

root (hd1,1)
kernel /boot/vmlinuz.suse root=/dev/hda2 ro vga=0x0303
savedefault
boot

# This entry automatically added by the Debian installer for an existing
# linux installation on /dev/hda2.
title memtest86 (on /dev/hda2)
root (hd1,1)
kernel /boot/memtest.bin ro vga=0x0303
savedefault
boot

Fred (frederic-lespez) said : #10

This behavior is perfectly normal.

Look at these lines in your menu.lst :
## default grub root device
## e.g. groot=(hd0,0)
# groot=(hd1,0)

They tell update-grub, the tool that update automatically your menu.lst after an update to generate entries looking like that (notice the "root (hd1,0)" line):
title Ubuntu, kernel 2.6.17-11-generic (recovery mode)
root (hd1,0)
kernel /vmlinuz-2.6.17-11-generic root=/dev/hdc2 ro single
initrd /initrd.img-2.6.17-11-generic
boot

So in order to obtain entries like that after an update (notice the "root (hd0,0)" line):
title Ubuntu, kernel 2.6.17-11-generic (recovery mode)
root (hd0,0)
kernel /vmlinuz-2.6.17-11-generic root=/dev/hdc2 ro single
initrd /initrd.img-2.6.17-11-generic
boot

You need to change the line :
# groot=(hd1,0)
by:
# groot=(hd0,0)
Just change the "1" into "0", do not touch anything else.

After that whenever your menu.lst is regenerated by the update-grub tool, the entries will be correct that is to say with "root (hd0,0)".

Keep me posted.

Can you help with this problem?

Provide an answer of your own, or ask Walter Dereck for more information if necessary.

To post a message you must log in.