Bob Chiodini wrote:
Using the linuxrc script above, what happens if you cd /sysroot, then
run pivot_root . initrd? /sysroot/initrd must exist.
Yes. It does. What happens is that it returns EINVAL, because it is a
CPIO-style image, not a ramfs.
Have you tried building it into a compressed ramfs? Does the 2.6 kernel
support ramfs? Might be an option.
No. I haven't from what everyone has told me (and what Fedora mkinitrd
program does), this is the 'obsolete' way of doing things. I will put
that on my list of things to try, though.
When linuxrc exits the kernel should run init. Is busybox compiled for
x86_64 and statically linked?
Yes. I went so far as to go to the source and get the svn copy/build it.
Ldd reports "not a dynamic executable" and file says ELF 64-bit LSB
executable.
That seemed to work a little better, though pivot_root/switch_root
threw up on my shoes. I was able to get it to chroot into the target
filesystem, though I cannot seem to run init.
Okay that explains the switchroot.
Right,. That was something left over from before I completely stopped
using nash (which is what the Fedora mkinitrd created, btw. :-) )
If you use nash what error does switchroot produce?
The same. It behaves exactly like pivot_root does in busybox wrt the
errors. switch_root (in busybox) gives me a little more verbose output
(which is where I saw the thing about "not rootfs")
I also noticed that switch_root, from busybox has an open bug:
http://bugs.busybox.net/view.php?id=543
Further searching led to this:
http://lkml.org/lkml/2005/11/15/384
Which might be relevant.
Alright. I will take a look at those as well.
From the email in this thread it sounds like
chroot . is what you need. What happens if you do something like this:
--- at the end of linuxrc
echo 0x0100 > /proc/sys/kernel/real-root-dev
echo Starting system
cd $SYSROOT
chroot .
cd /
Letting linuxrc just exit.
From what I saw, I need to use 1792 rather than 0x100, since my sysroot
is not in ram0, but in loop0.... I can do the chroot, but I can't seem
to chroot and start init. I am thinking that for some reason, the script
is not running as process 0, and I cannot for the life of me figure out
what is, so that I can start the next step in booting.
Thanks for your continuing help, though!
Steve