thpani Tux's lil' helper
Joined: 20 Mar 2006 Posts: 144 Location: Tulln, Austria
|
Posted: Sat Sep 23, 2006 3:47 pm Post subject: genkernel livecd: missing block devices [SOLVED] |
|
|
I'm currently trying to get a working gentoo-based livecd. I've used genkernel w/ squashfs support.
Now I'm stuck, because the genkernel created initrd doesn't recognize my block devices.
Here's what I have on info:
I get to the point '>> Determining looptype ...', then I get the following error:
Code: | >> Determining looptype ...
!! Invalid loop location: /livecd.squashfs
!! Please export LOOP with a valid location, or reboot and pass a proper loop=...
!! kernel command line |
However, the cause is located a few steps before. What I have found out so far:
- genkernel's linuxrc uses hardcoded wildcarded devices paths, testing each for existance ( [ -e ... ) to find the cd drive.
- However, those wildcarded paths do not get expanded, because the device nodes do not exist.
- Normally udev should be used for node creation, but for some reason (don't know why) udev is disabled and busybox mdev takes its job.
- mdev uses /sys information to populate /dev
- sysfs is mounted, but /sys/block only contains ram and loop devices; not a single block device there
Any ideas what to try next/why udev is replaced by mdev?
SOLVED:
obviously there are some lines in initrd.scripts to *reallyreally* ensure that it's a livecd:
Code: |
# Check for a LiveCD
if [ -e ${NEW_ROOT}/mnt/cdrom/${SUBDIR}/livecd ]
then
REAL_ROOT="${x}"
break
else
umount ${NEW_ROOT}/mnt/cdrom
fi
|
so, touching a file called 'livecd' in the cd root solved the issue.
(-> now the cd root looks like that:
Code: | thomas@pani ~ % ls /mnt/data/livecd/image
boot livecd livecd.squashfs
|
) |
|