> If I understand right, the steps are:
> >
> > 1. Create and compile a kernel of your choice.
> > 2. Create a Minix file system and populate it with
the contents of
> > root.lrp
> > 3. Compress the Minix filesystem with gzip and put on
disk as initrd.gz
> > 4. Modify linuxrc to run /sbin/init at the end
>
> I don't think this is the best way to solve this.
IMHO, it's better to have
> the kernel boot with root=[!ram0], which will get
linuxrc running.  Linuxrc
> should then set the real root device to /dev/ram (or
your tmpfs or ramfs
> device) by writing to /proc/sys/kernel/real-root-dev
(see initrd.txt in the
> kernel Documentation directory).
>
> Everything else looks OK.  I'd only point out that if
the initial ramdisk
> becomes  more of a bootloader, which is what I'd like
to see, and I think
> the direction Jaques is heading, root.lrp is just
another package (although
> likely the first to get loaded), and the initial
ramdisk would be something
> like boot.img, and should not have to change unless you
need to change boot
> methods (ie add new hardware support for a HDD, CD, or
similar).
>
Hello everyone.
Let's try to summarize what I have been trying to do so
far:

1/ Why a 2.4.14 kernel ?

Pros:
Keep-up with the current kernel development tree.
Netfilter
New and latest drivers
Access to the latest FS (TMPS and journaling facilities)
Possibility to have access to a virtual development
environment (see previous post)

Cons:
Size (for a floppy-based version which I think we all
want to keep)
Maturity/Stability

The balance in my opinion is clearly in favor of the pros.

2/ Consequence

To include the latest 2.4 kernels was implying to get rid
of the "historical" LRP patches (or to rewrite them which
was clearly too much of a work for me). As mentionned in
earlier posts they do not pass the changes in initrd that
where introduced in 2.4.10. I also think (personal
opinion) that the more we stick to an original, unpatched
kernel, the better and whatever can be done in userland
should be done in userland. Also note that this lead to a
reduction of 3K of the compressed kernel size :-)

3/ Strategy followed

The idea was to keep the general LRP package architecture
with a dynamic creation of the filesystem and the general
backup facility for every package.

My proposal - and what I have implemented in my last
experimental LEAF 2.4.16 image (the b1 version)- is the
following:

a/ Whatever is provided after the initrd= variable will
contain the smallest possible filesystem. The smallest I
found consists of a 1,2M (uncompressed... ) minix FS
populated with busybox, sed, ash, libc.so.6, linux-ld
a /dev/console and linuxrc.
This compressed fs is loaded in /dev/ram0 then is moved
to tmpfs on which every other packages are loaded after a
pivot_root  instruction. Once the boot process is
completed (end of linuxrc), the initrd fs is unmounted
and /dev/ram0 released.

b/ This file (called initrd.lrp in my latest version) can
be backuped like any other package. This can be done by a
15 lines shell script (lrcfg.back.initrd) called by
lrcfg.back.script.

c/ There are basically 3 options which could be followed:

c1 - We apply that technique to the root.lrp file itself
as it is now in Dachstein. The problem with this is that
it is a bit memory expensive: at the end of linuxrc you
have all your dachstein distro uncompressed in tmpfs plus
root.lrp uncompressed in /initrd. Only at the end of
linuxrc (in fact in the first lines of /etc/init.d/rcS
which is executed nest) are /initrd unmounted
and /dev/ram0 released.

c2 - We apply a "split technique". This is the route I
followed. Original root.lrp is splitted in two pieces:
the bootstrap part (initrd.lrp) and what is left in
root.lrp.

c3 - We look for the smallest possible initrd.lrp. That
would imply the following route: initrd.lrp would only
consist of a statically build version of busybox (against
uClibc) containing only the applets necessary
for /linuxrc to be executed (ash, sed, mkdir, ...). No
more libc in this scheme and the non necessary applets of
busybox would be provided in root.lrp dynamically linked
to libc.so.  This is basically the route followed by
Oxygen. I have not tested that but I think that what will
be gained in memory will be lost in the combined size of
root.lrp and initrd.lrp since you will have both
statiscally build applets and libc.so.


That is why I think that the approach I suggested is a
good compromise. I think this approach can be refined
further in testing the following ideas:
c2a/ Use busybox ash and sed in initrd.lrp
c2b/ Split busybox in two pieces (but ***both***
dynamically linked) between initrd.lrp and root.rlp

I was myself surprised by the fact that these ideas where
not difficult to implement at all in dachstein. It
basically implies:
1/ Modification of /var/lib/lrpkg/root.linuxrc
(i.e. /linurxrc)
2/ Modification of /usr/sbin/lrcfg.back.script
3/ creation of a small /usr/sbin/lrcfg.back.initrd script
4/ Two lines added in /etc/init.d/rcS
And that basically it. And the combined size of the new
root.lrp and initrd.lrp is quite similar to the original
root.lrp size.

OK I think that's all for this topic

The other issue adressed by my last proposal was to rely
on shorewall for the firewall and to
simplify /etc/init.d/network and related files. But
that's another story...

Jacques

--------------
Profitez de l'offre spéciale Tiscali Liberty Surf !
50% de temps en plus pendant 3 mois sur tous les forfaits Internet.

http://register.libertysurf.fr/subscribe_fr/signup.php3



_______________________________________________
Leaf-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/leaf-devel

Reply via email to