Re: [klibc 30/31] Remove in-kernel resume-from-disk invocation code

From: H. Peter Anvin
Date: Wed Jul 05 2006 - 23:09:32 EST


Nigel Cunningham wrote:
Hi again.

(Excuse me replying to myself, but this might help someone else).

On Thursday 06 July 2006 11:45, Nigel Cunningham wrote:
Is there a klibc howto somewhere? I tried googling for 'klibc howto',
reading the files in Documentation/ and browsing your klibc mailing list
archive before asking!

What I'm wondering specifically is: Say a user needs to run some commands
to set up access to encrypted storage before they can resume. At the
moment, we'd tell them to put these commands and the echo > do_resume in
their linuxrc (or init) script prior to mounting their root filesystem.
Forgive me if I'm asking a stupid question but it's not immediately obvious
to me how they would now do that. I'd much rather follow a simple howto
than spend a good amount of time tracing function calls etc. I still see
init/initramfs.c, and it mentions both CONFIG_BLK_DEV_INITRD and
CONFIG_BLK_DEV_RAM. Would I be right in surmising that you can still have
an initrd or ramfs to do such things as the above, after klibc has done its
work? If not, is there some other way I'm ignorant of?

For the record, I've since discovered that what you really want is an initramfs howto. I think I stuck with those old-fangled initrds for too long. Better update my desktop from Mandrake 10 too :)... is there a pattern here?


Okay, let's try to start from the beginning...

initramfs is, indeed, a replacement for initrd, but it's not a 1:1 map. Instead, initramfs contents -- which can come from multiple sources! -- is simply extracted right into rootfs.

kinit is a replacement for the in-kernel root-handling code, as well as other related in-kernel code like resume from disk. It is compiled as a monolithic binary for size reasons.

klibc is a very small C library which *can* be used to produce initramfs binaries; in particular, it's used to produce kinit, and is small enough that it can be realistically included with the kernel distribution.

If you provide your own /init in an initramfs, it will override the default, which is /init -> /kinit. You can then choose to invoke kinit if you want to; for example, you could try to resume from suspend2, and invoke kinit if that fails.

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