[lfs-support] booting don't work with UUIDs

Pierre Labastie pierre.labastie at neuf.fr
Thu Jan 31 09:45:14 PST 2013


Le 31/01/2013 16:48, Sven Bartscher a écrit :
> Am 30.01.2013 17:21, schrieb Pierre Labastie:
>> Le 30/01/2013 15:55, Sven Bartscher a écrit :
>>> Am 29.01.2013 22:02, schrieb Pierre Labastie:
>>>> Le 29/01/2013 13:42, Sven Bartscher a écrit :
>>>>> Am 23.01.2013 18:03, schrieb Bruce Dubbs:
>>>>>> Sven Bartscher wrote:
>>>>>>> hey guys!
>>>>>>> I didn't installed GRUB in the chapter 8 and configured my already
>>>>>>> installed GRUB
>>>>>> That's OK.
>>>>>>
>>>>>> with writing the following text in the /boot/grub.cfg
>>>>>>> set default=0
>>>>>>> set timeout=5
>>>>>>>
>>>>>>> insmod ext2
>>>>>>> set root=(hd0,msdos4) #i tried it with set root=(hd0,4) too
>>>>>>>
>>>>>>> menuentry "GNU/Linux, Linux 3.5.2-lfs-7.2" {
>>>>>>> linux /boot/vmlinuz-3.5.2-lfs-7.2
>>>>>>> root=UUID=4f9f6834-c55b-492e-a70c-4e3bca952f5b ro
>>>>>>> }
>>>>>> The kernel doesn't understand UUIDs. You need an initrd. See BLFS
>>>>>>
>>>>>> http://www.linuxfromscratch.org/blfs/view/svn/postlfs/initramfs.html
>>>>>>
>>>>>> -- Bruce
>>>>>>
>>>>>>> I can't use the /dev/sdxy partition names because i have two hard
>>>>>>> drives
>>>>>>> (IDE and SATA) and the names are after rebooting randomly mixed.
>>>>>>> So i
>>>>>>> can't be sure which is the right /dev/sdxy file.
>>>>>>>
>>>>>>> I try to boot my new lfs system and it don't work instead i get this
>>>>>>> message (a little bit more but i think this is the important part):
>>>>>>> VFS: Cannot open root device
>>>>>>> "UUID=4f9f6834-c55b-492e-a70c-4e3bca952f5b"
>>>>>>> or unknown-block(0,0): error -6
>>>>>>> Please append a correct "root=" boot option; here are the available
>>>>>>> partitions:
>>>>>>> Kernel panic - not syncing: VFS: Unable to mount root fs on
>>>>>>> unknown-block(0,0)
>>>>>>>
>>>>>>> I don't use an extra /boot partition so i have two /boot folders
>>>>>>> one on
>>>>>>> my Ubuntu(containing GRUB and the Ubuntu kernel) partition and one
>>>>>>> on my
>>>>>>> LFS (containing the LFS kernel) partition can this work?
>>>>>>> Can i even use UUIDs for lfs?
>>>>>>> Did i anything else wrong?
>>>>>>>
>>>>>>> my host system: Ubuntu 12.10
>>>>>>> my lfs version 7.2
>>>>>>>
>>>>> I have created an initramfs. Here the log:
>>>>>
>>>>> root:/# mkinitramfs
>>>>> Creating initrd.img-no-kmods... cp: Aufruf von stat f�r
>>>>> �/etc/udev/udev.conf� nicht m�glich: Datei oder Verzeichnis nicht
>>>>> gefunden
>>>>> install: Aufruf von stat f�r �/usr/share/mkinitramfs/init.in� nicht
>>>>> m�glich: Datei oder Verzeichnis nicht gefunden
>>>>> done.
>>>>> root:/#
>>>> I do not understand german, but I have played a lot with mkinitramfs,
>>>>
>>>> So I think you got 2 "file not found" errors.
>>>> The first one (/etc/udev/udev.conf) is harmless, and always occurs
>>>> with modern udev.
>>>> The second one might be the explanation to your problem:
>>>> init.in is renamed to init in the initramfs, and is the heart of the
>>>> initramfs system.
>>>> If it is not there, nothing can work.
>>>>
>>>> Haven't you overlooked the second part of the mkinitramfs installation
>>>> (cat>  /usr/share/mkinitramfs/init.in<<  EOF)?
>>>>
>>>> Also, if you compiled the kernel with module support, you'd better
>>>> type mkinitramfs VERSION, where VERSION is the name of the modules
>>>> directory in /lib/modules.
>>>>
>>>> Actually, the text in the BLFS page is somewhat misleading: When not
>>>> specifying VERSION, you do not include
>>>> the kernel modules in the initramfs at all, so chances are that it
>>>> does not work if your kernel has modules.
>>>>
>>> I don't have any kernel modules. I need the initramfs only for the UUIDs
>>> I didn't created the the init.in. Didn't see that part. Here my new log
>>> from mkinitramfs:
>>> root:/# mkinitramfs
>>> Creating initrd.img-no-kmods... cp: Aufruf von stat f�r
>>> �/etc/udev/udev.conf� nicht m�glich: Datei oder Verzeichnis nicht
>>> gefunden
>>> done.
>>> root:/#
>>> I still get the same error. (WHY?!) Regards Sven
>> Well,
>> You shouldn't...
>>
>> Have you copied the new initrd to /boot ?
>> One thing is sure. If /init is found and executed in the initramfs,
>> then an error could still occur, but should be different.
>>
>> One possibility is:
>> Something got wrong when creating the initrd (including not copying it),
>> and the kernel rejects it because it is malformed.
>> In this case, the kernel continues without the initrd
>> and fails as before. You may see an error message
>> about the initrd if you are able
>> to scroll back the console with shift-PgUp.
>>
>> Regards
>> Pierre
>>
>>
>>
> I really copied it, see:
>
> root:/# mkinitramfs
> Creating initrd.img-no-kmods... cp: Aufruf von stat f�r
> �/etc/udev/udev.conf� nicht m�glich: Datei oder Verzeichnis nicht gefunden
> done.
> root:/# rm /boot/initrd.img-no-kmods #delete the old initramfs
> root:/# mv initrd.img-no-kmods /boot/
> root:/# ls /boot/
> config-3.5.2 initrd.img-no-kmods System.map-3.5.2 vmlinuz-3.5.2-lfs-7.2
> root:/#
>
> and the worst i can't scroll back.
>
> Regards
> Sven
One thing you could try for debugging, but you have to get the mapping 
between the german and the US keyboard: when the grub menu appears type 
c. You are dropped to the grub shell, which allows to type commands 
manually. You can use command completion (TAB lists the possibilities 
you have)
Try:
set root=(hd0,mosdos4)
linux /boot/vmlinuz-3.5.2-lfs-7.2 
root=UUID=4f9f6834-c55b-492e-a70c-4e3bca952f5b ro
initrd /boot/initrd.img-no-kmods
boot
----------------
If you have no error so far, it means you have a well formed initrd and 
kernel. If it still does not boot, then it means you are missing some 
module (or a config option) in the kernel.

Another thing you could try is boot with the host kernel and initrd, but 
with root=<LFS-UUID>

No more idea for now...
Good luck
Pierre





More information about the lfs-support mailing list