based on a thread or two on some other mailing lists, i'm trying to
clarify what can be de-selected in terms of ramdisk or ramfs or initrd
support when building a kernel.
it all started when someone noticed this in fs/Kconfig:
=====
config RAMFS
bool
default y
---help---
Ramfs is a file system which keeps all files in RAM. It allows
read and write access.
It is more of an programming example than a useable file system. If
you need a file system which lives in RAM with limit checking use
tmpfs.
To compile this as a module, choose M here: the module will be called
ramfs.
=====
i'm sure you can appreciate that it's a little odd to have a Kconfig
option that is hard-selected to yes, while its own help text suggests
that it can be built as a module, and possibly be de-selected in its
entirety. it's also amusing that that same help text claims that
RAMFS is "more of an programming example than a useable file system",
and yet i've been assured that it's absolutely essential to build a
kernel.
is it? is there no possible scenario that you might be able to
build a working kernel without RAMFS support? what exactly do you
need it for?
as i read it, it seems mandatory for initrd support (is that
correct?). but init/Kconfig suggests that initrd is de-selectable:
=====
config BLK_DEV_INITRD
bool "Initial RAM filesystem and RAM disk (initramfs/initrd) support"
depends on BROKEN || !FRV
help
The initial RAM filesystem is a ramfs which is loaded by the
boot loader (loadlin or lilo) and that is mounted as root
before the normal boot procedure. It is typically used to
load modules needed to mount the "real" root file system,
etc. See <file:Documentation/initrd.txt> for details.
If RAM disk support (BLK_DEV_RAM) is also included, this
also enables initial RAM disk (initrd) support and adds
15 Kbytes (more on some other architectures) to the kernel size.
If unsure say Y.
=====
so maybe i choose to leave out initrd support because i'm working
with an embedded system or something. and on top of all that, RAM
disk support is also de-selectable (from drivers/block/Kconfig):
=====
config BLK_DEV_RAM
tristate "RAM disk support"
---help---
Saying Y here will allow you to use a portion of your RAM memory as
a block device, so that you can make file systems on it, read and
write to it and do all the other things that you can do with normal
block devices (such as hard drives). It is usually used to load and
store a copy of a minimal root file system off of a floppy into RAM
during the initial install of Linux.
Note that the kernel command line option "ramdisk=XX" is now
obsolete. For details, read <file:Documentation/ramdisk.txt>.
To compile this driver as a module, choose M here: the
module will be called rd.
Most normal users won't need the RAM disk functionality, and can
thus say N here.
=====
so i'm a bit confused. what's required, and what's not? and are
all the above properly defined in terms of dependencies? i've just
started to read the appropriate docs, but if someone can clarify this,
i'd be ever so appreciative.
rday
p.s. just to sum up, is it possible to build a working kernel without
initrd support? without ramfs support? without initramfs support?
with omitting any combination of the above? and do the Kconfig
entries for those features actually make sense in terms of
dependencies?
--
========================================================================
Robert P. J. Day
Linux Consulting, Training and Annoying Kernel Pedantry
Waterloo, Ontario, CANADA
http://crashcourse.ca
========================================================================
--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to [EMAIL PROTECTED]
Please read the FAQ at http://kernelnewbies.org/FAQ