Re: [PATCH] 5 year old bug in main.c (initrd). Can this please be fixed?

From: Dave Cinege (dcinege@psychosis.com)
Date: Thu May 25 2000 - 13:52:36 EST


Werner Almesberger wrote:
>
> Dave Cinege wrote:
> > It *precludes* you from using the initrd as your root and executing /linuxrc.
>
> You can always init=/linuxrc and exec the real init at the end. Or

Again, one needs to jump through hoops, instead of being able to use a standard
mechanism in the kernel.

> set root= to someting else and change it to /dev/ram in /linuxrc.

This will not work for initrd-archive.
ftp://ftp.psychosis.com/linux/initrd-arch/README
FYI I just ported this to 2.3 and am enhancing it.

You may be saying big deal about this patch, but it is in VERY wide spread use
by embedded systems developers, that boot and run the entire system out of ram.
 
> > The point is there is NO REASON (but personal
> > preference) to skip /linuxrc when your root is the first ramdisk.
>
> It's "initrd is always magic" and "/linuxrc is there to do that
> root change thing" vs. "A RAM disk root is a regular RAM disk root
> no matter how you load it".

Please rephrase that, since root=/dev/ram1 won't exhibit this.

> You're quite right about the documentation problem, though. While
> I agree that the documented behaviour agrees better with current
> expectations (i.e. everybody expects something magic to happen if
> there's initrd), I'm extremenly reluctant to break existing
> behaviour, because somebody might depend on initrd working exactly
> as it currently does for root=/dev/ram, and sudden boot failure is
> never a nice thing to introduce.

I'd say the REMOTE CHANCE of that is NULL. Why would you have an initrd image,
with /linuxrc, and not want to execute it?

What the current mode of operation is, is confusing. For MONTHS I was trying to
use /linuxrc, before I took the time to go through the kernel code and figure
out why it wasn't working.

It's time to fix it now in this development kernel, and document the change.
 
> > Personally I'd like to see /linuxrc executed if it's present regaudless of
> > initrd, to allow for a standerized 'pre-init'.
>
> Hmm, doesn't look like a good idea to me. First, you're overloading
> /linuxrc. Second, where do you stop - you may as well need a further
> pre-init step ? Third, you can do it already in user space.

Not if you need /linuxrc to create your user space. (Which I do)
For the current LRP version, /dev/ does not even exist at /linuxrc execution.
 
> If you trust init, you can just invoke your initialization from
> /etc/inittab.

There is no /etc/ either.
I would have to

init=/preinit

system /linuxrc
exec /sbin/init

And that still breaks for my needs, since dev isn't ready.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Wed May 31 2000 - 21:00:14 EST