Thread (1 message) 1 message, 1 author, 2002-05-02
  • (off-list ancestor, not in this archive)
  • Re: initrd in 2.4.19 · Brad Parker <hidden> · 2002-05-02

Re: initrd in 2.4.19

From: Brad Parker <hidden>
Date: 2002-05-02 11:27:34

Brian Kuschak wrote:
I noticed initrd handling has changed recently in the
kernel (init/do_mounts.c).  This new code is causing
me problems.  Has anyone else run into this?
heh.  I found that every shred of documentation on this was 1/2 right and
1/2 wrong.

I came to the conclusion that you can either pivot_root or use /linuxrc
but not both.

i.e. if you 'turn on' the special /linuxrc running code you can't pivot
root from it.  it's designed to modload a few modules, enough so the kernel's
own code can mount a file system.  that's it.  and it better return since
the kernel is not done initializing.

I want to use pivot_root, so I don't use the special /linuxrc running
code.  Instead I use "init=/linuxrc" as part of the command line.  If
you do this your first script should work fine (pivot follwed by
chroot).  But to be honest, I don't chroot.  I don't think it's
necessary.

I'd love to hear comments on this.

(actually, looking closer, your 2nd script solves the big problem, which
it the changing of the real root dev #.   I'll bet it would work if it
unmounted /dev/hda2 before returning)

-brad
Using the 'new style' (not terminating linuxrc)
/linuxrc runs the following sequence:
 mount -o ro /dev/hda2 /new-root
 cd /new-root
 mkdir initrd
 pivot_root . initrd
 exec chroot . sbin/init dev/console 2>&1
But /linuxrc seems to be runnnig as PID 10, and
sbin/init doesn't start.

Using the 'old style' (linuxrc terminates and kernel
starts init):
 mount -o ro /dev/hda2 /new-root
 cd /new-root
 mkdir initrd
 echo 0x0302 > /proc/sys/kernel/real-root-dev
 exit 0
The mount fails with EBUSY in mount_block_root()
because the root device is already mounted:

Attempting to find a root file system on hda2...
hda1 hda2
hda: hda1 hda2
XFS mounting filesystem ide0(3,2)
Starting XFS recovery on filesystem: ide0(3,2) (dev:
3/2)
Ending XFS recovery on filesystem: ide0(3,2) (dev:
3/2)
VFS: busy inodes on changed media.
err=-16, p=ext2, name=/dev/root  <--
VFS: Cannot open root device "" or 03:02
Please append a correct "root=" boot option
Kernel panic: VFS: Unable to mount root fs on 03:02


For the old style to work, I have to not mount the
filesystem at all in my /linuxrc. I'm using
2.4.19-pre7 from bk (1.948)

-Brian

** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help