Linux From ScratchThis Forum is for the discussion of LFS.
LFS is a project that provides you with the steps necessary to build your own custom Linux system.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
Though I was booting from GRUB2 shell, supplying it all line by line as follows:
Quote:
set root='(hd0,1)'
linux /linux64 rw root=iso:/dev/disk/by-uuid/0451-5CDC:/lfslivecd.iso rootfstype=vfat rootdelay=20
initrd /initramfs_data64.cpio.gz
boot
It must be some bugs in this relatively new GRUB2 that it can't boot THE SAME from config file. But this way it does boot it.
So the order, it seems, must be this: kernel, then initrd, and not the other way around.
Just maybe try to supply the bold part right after "linux" and not after "append". Perhaps it will work this way?
Cause normally initrd is the very last thing to supply, so it ignores the rest of the line.
Well try this way, perhaps.
I passed that state with root=iso:/dev/disk/by-uuid/07E6-1968:/lfslivecd.iso but i hanged on another state :
My New Error :
/init: line 172: mknod: Command not found
mount: special device /dev/root does not exist
Kernel panic - not syncing: Attempted to kill init!
My syslinux.cfg :
label linux
root (hd0,1)
kernel linux
append initrd=initramfs_data.cpio.gz rw root=iso:/dev/disk/by-uuid/07E6-1968:/lfslivecd.iso rootfstype=vfat rootdelay=20
Another Thanks for your very good hints .
Another option is, perhaps, place the "initrd=..." part in the very end of your "append" command line. That will make sure that the rest of it will be passed to the kernel:
Another interesting bit of information is found HERE and it says:
Quote:
Starting with version 3.71, an initrd can be specified in a separate statement (INITRD) instead of as part of the APPEND statement. This functionally appends "initrd=initrd_file" to the kernel command line.
Which means your configuration can be now like this:
Quote:
kernel ...
initrd ...
append ...(here goes this long kernel argument line about root=iso etc.)
I guess grub just doesn't know the append and the options need to be added to the kernel line.
Right, the "append" command is no more used there. On the other hand, kernel options to be passed to the kernel are just passed on to it on the same line, just as it always used to be.
What bothers me is that, when it loads from the configuration file, it doesn't even load the initrd, as I can see from the boot message, which ends up in kernel panic, prior to which it says that it "can't mount the device "/dev/disk/by-uuid/...etc." Well if initrd WAS loaded it WOULD find the device with no problem.
And WTH, it DOES boot it all when I exit the menu and supply it all from the command prompt! Perhaps, I should email to the GRUB2 developers about this issue?
Dear kostya,
i got same kernel panic with your last suggestion #17 .
I think that i must correct translate of set root='(hd0,1)' into syslinux commands .
because at the start of booting process i got the error of missing root parameters !! ( before kernel loading )
Dear kostya,
i got same kernel panic with your last suggestion #17 .
I think that i must correct translate of set root='(hd0,1)' into syslinux commands .
because at the start of booting process i got the error of missing root parameters !! ( before kernel loading )
Right!
In syslinux syntax it must be, using the new syntax, like this I think:
Because in GRUB2 the partition number in (hd0,1) starts from 1, but in other older bootloaders it starts from "0"! So the 1st partition on the first device will be, not (hd0,1) but (hd0,0) I guess.
Worth trying anyway .
PS. And reading the documentation is always a good idea . Not the whole thing, maybe, but some relevant parts at least.
label linux
root (hd0,0)
kernel linux
initrd initramfs_data.cpio.gz
append rw root=iso:/dev/disk/by-uuid/07E6-1968:/lfslivecd.iso rootfstype=vfat rootdelay=20
And when start boot processes ( before kernel loading ) got me these ERROR
unknown keyword in configuration file: root
boot:
Loading linux....
Loading initramfs_data.cpio.gz....................ready
...
...
...
/init: line 172: mknod: command not found
mount: special device /dev/root does not exist
/init: line 293: ./lib/ld-linux.so.2: No such file or directory
/init: line 294: /.root/../lib/ld-linux.so.2: No such file or directory
/init: line 294: exec: /.root/../lib/ld-linux.so.2: No such file or directory
Kernel panic - not syncing: Attempted to kill init!
Right, syslinux doesn't support "root" argument at all...
Very strange, though! From the boot message it is clear that initrd IS loaded because init is running and it is inside initrd. And yet it can't find the ld-linux.so.2, which must be there inside initrd, too.
Which makes us think that either initrd or kernel is defective. We could, of course, suggest that the computer has not enough RAM, which results in losing data, but that's hardly possible in a computer which can boot from a USB stick...
So, what is the md5sum of your initrd and kernel? I will compare with mine then.
This will compare the original initrd with what is on your USB stick
Quote:
diff /path/to/initrd USBSTICK/initrd
And this will calculate the checksum:
Quote:
md5sum initrd
I must also ask, when you're done with initrd, to try this simple config if you haven't done that already:
Code:
label linux
kernel linux
append rw root=iso:/dev/disk/by-uuid/07E6-1968:/lfslivecd.iso rootfstype=vfat rootdelay=20 initrd=initramfs_data.cpio.gz
I'm asking this again, because I tried it in all various combinations with slightest differences before I got it to boot. So I believe every letter may be essential seeing how tricky it is to boot from USB stick. And it will be a pity to drop it when we are so close!
@ first i tested MD5 of every files with original and never seen any different .
Then i tested your simple config and got same kernel panic !!
meanwhile,i tested these menu.lst with GRUB and got same kernel panic error !!
title LFS_USB_Booting
set root='(hd0,1)'
kernel /linux rw root=iso:/dev/disk/by-uuid/6E17-68F1:/lfslivecd.iso rootfstype=vfat rootdelay=20
initrd /initramfs_data.cpio.gz
boot
which of your grub config you tested OK ?
Tnx for your hints ...
Which version of GRUB are you using?
I'm using GRUB 1.99 (GRUB2) and the syntax "set root='(hd0,1)'" is for GRUB2. For GRUB it would be "root (hd0,0)".
And in GRUB2 instead of keyword "kernel" it uses "linux" and curly brackets are used for each menu entry.
OK, first here are my md5sums so you can compare what md5sums you got:
Quote:
ae824b594c48bff53399082fea093acd linux
07ddbe3e7d480eef416b17e93659a140 initramfs_data.cpio.gz
b44537e4b5ceb72601cdb4dc7e820828 lfslivecd-x86-6.3-r2145-min.iso
Now here is my GRUB2 config part for LFS LiveCD:
Quote:
menuentry "LFS" {
set root='(hd0,1)'
linux /linux64 rw root=iso:/dev/disk/by-uuid/0451-5CDC:/lfslivecd.iso rootfstype=vfat rootdelay=20
initrd /initramfs_data64_cpio.gz
}
As you can see, this GRUB2 syntax is different from GRUB legacy, for which it must be thus:
(notice that you need not the word "boot" in config, you only need it on command line prompt as described below).
And the last but not the least. It is advisable to escape from the GRUB menu to GRUB prompt and supply these argument line by line. It is better for if device (hd0,0) is wrong, it will tell you so and you'll be able to supply the correct device. Print HELP and it will give you the list of commands. In GRUB 2 the command `ls` shows you all available drives.
You then supply each line (root, kernel, initrd) from your config followed by <Enter>, after the last line followed by <Enter> you type "boot" and press <Enter>.
This was the only way I got it to boot correctly for GRUB2 would only receive full kernel command line from prompt. From config it doesn't seem to notice it or fails to load initrd, don't know why.
So after all these pains I'm a little bit surprised: WHY did you choose the LFS LiveCD at all??
I found it to be rather poor stuff for a live cd, it couldn't even find a driver for my network card. There are other LiveCD distros offering far better functionality either as Desktop or as a rescue kit, and no problems booting them from USB.
Im aiming to build LFS with LFS-LiveCD as host. But im using a netbook which doesnt have an optical drive. And ive found an easy way to boot LFS-LiveCD from a thumbdrive.
Im using gujin.
I've got exactly the same difficulty in having a USB flash boot up.
I strictly followed LFS manual and have everything built from scratch on a USB flash. I thought if I could select the correct bootable device, I should be able to boot from that device directly. However, what I obtained is just the following picture: http://visionopen.com/questions/lfs_...flash_boot.jpg
My configuration /boot/grub/grub.cfg on hd1 (I've got 4 hard drives hd0, hd1, hd2, hd3) of booting LFS is also pasted:
Quote:
menuentry "MyLinux distribution (on /dev/sdd1)" --class gnu-linux --class gnu --class os {
insmod gzio
insmod part_msdos
insmod ext2
set root='(hd3,msdos1)'
search --no-floppy --fs-uuid --set=root a2d0f92a-eca8-4121-a998-99c70d4df67b
echo 'Loading MyLinux ...'
linux /boot/vmlinuz-3.7.1-lfs-SVN-20130102 root=UUID=a2d0f92a-eca8-4121-a998-99c70d4df67b ro recovery nomodeset
echo 'Loading MyLinux ...'
}
1) By strictly following LFS manual, there is no initrd produced, but only vmlinuz .
2) from grub terminal, I can see my device has been correctly configured, say: /dev/sdd1 is just (hd3, msdos1), which is of UUID a2d0f92a-eca8-4121-a998-99c70d4df67b
I seriously have no idea how to make this USB flash (with LFS built) boot up. Please help.
Thank you very much.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.