Bug 205069

Summary: Repair Install (GRUB) fails because of missing device entries in installed system
Product: [openSUSE] SUSE Linux 10.1 Reporter: Johannes Pöhlmann <johannes>
Component: InstallationAssignee: Hannes Reinecke <hare>
Status: RESOLVED INVALID QA Contact: Jiri Srain <jsrain>
Severity: Normal    
Priority: P5 - None CC: duwe, phn
Version: Final   
Target Milestone: ---   
Hardware: i686   
OS: SuSE Linux 10.1   
Whiteboard:
Found By: Customer Services Priority:
Business Priority: Blocker: ---
Marketing QA Status: --- IT Deployment: ---

Description Johannes Pöhlmann 2006-09-12 09:37:32 UTC
This is a fork of a remark i made to bug NR#172510

You can not reinstall the Boot loader from the rescue system
or with Yast repair installation because of missing device 
entries in the installed system.

Hardware is a HP Compaq nc6320 Laptop with a SATA disk.

The bug is not limited to the case where I found it, it is 
a bug of the installed system image that breaks Boot loader
repair installation. 

*Beware*: in normal operation you do NOT see the device files 
in the /dev subdirectory of the root device BUT udev mounted 
ONTO /dev. You only can see /dev subdirectory of the root device
when booting another system,  e.g. repair installation.

This is what I did:

I tried to restore/clone a system partition from a tar.gz Archive 
to a new machine.

I started the rescue system, partitioned the disk as 
sda1: 83, 15Gig, sda2. 82, 2 Gig, sda3: 83  
and made ext3 filesystems on sda1.

Then I replayed the tar.gz archive into sda1. So far, so good.

But I was not able to install GRUB from the rescue system. Grub
complained about "missing disks". 
Same problem with knoppix.

Same Problem with "repair installation". 

My Solution was  (in a text console:)

mknod /mnt/dev/sda  8 0
mknod /mnt/dev/sda1 8 1

an then Grub installed smoothly with Yast repair installation.

I think the Problem is:

When the installed system is not running, /dev is just a subdirectory
with only a small couple of files in it. sda and sda1 where just missing:

My Proposal:
     When Yast installs the boot loader it should recreate those missing device
     files, that he is going to use. Or just add all the usual suspects to /dev. 

See also my old comment I made to bug NR#172510


>Due to a incorrect installation grub obviously was not installed.
>After the first reboot the system was complaining not to have an OS.

>I tried repair installation - reinstall boot manager.

>I was not able to install lilo or grub.

>grub said: grub>root (hd0,2) Error 21: Selected Disc does not exist.
>lilo said: raid_setup("/dev/hda")

>I found out later that the devcice entries for /dev/hda and /dev/hda* 
>was missing. Creating them allowed to install the bootloader, but i
>will reinstall anyway ;-) 

>Perhaps yast should recreate the usual device file entries before 
>installing the boot manager, this could also fix update problems.


Cheers, Johannes
Comment 1 Torsten Duwe 2006-09-14 16:07:16 UTC
This seems like a udev/hotplug problem to me. This tends to get particularly tricky during installation, update or rescue.

Assigning to Hannes for comment or further redirect.
Comment 2 Hannes Reinecke 2006-09-26 12:51:40 UTC
Starting with SuSELinux 10.0 we're using a dynamic /dev directory. So to able it in a rescue system you have to mount it into that system.

So in your case you have to do a

'mount --bind /dev /mnt/dev'

to have the device nodes available in your installed system.
Comment 3 Johannes Pöhlmann 2006-12-07 13:30:00 UTC
I will retest with opensuse 10.2 if "repair installation - reinstall boot manager" works. This will be the case if only if the solution from Comment #2 has been implemented.