> My recollection from my last job (unemployed for the time being :-),
> where I was building kernels with ext3 is correct.
>
> If you have a kernel with ext2 linked statically and ext3 as a module,
> even if you load the ext3 module in the initrd, the filesystem will
> still be mounted with the ext2 driver.
>
> This is because when the kernel tries to mount the root filesystem, it
> goes through it's list of filesystem drivers and uses the first one
> that recognizes the filesystem. Statically linked drivers are tried
> before modular loaded drivers. Because the disk format of ext2 and
> ext3 are the same, ext2 will successfully mount the root filesystem
> before ext3 gets a try.
>
> There are two possible solutions to this problem. The kernels that I
> was building used both. :-) The first solution is to link ext2
> dynamically (modular) and load it in the initrd on systems where the
> root filesystem is ext2 (no journal). If you want the root filesystem
> mounted using the journal (ext3) then the initrd should load the ext3
> module (before the ext2 module if you wish to load it in the initrd,
> which is really not necessary). The initrd should be a ROMFS
> filesystme with the romfs driver statically linked into the kernel.
>
> The other solution is to use one of the following patches:
>
> http://web.gnu.walfield.org/mail-archive/linux-fsdevel/2000-
> February/0148.html
> http://web.gnu.walfield.org/mail-archive/linux-fsdevel/2000-
> February/0144.html
>
> I think I personally like the first one even though I used the second
> one in my kernels when I worked with Peter.
>
I prefer the second (may be because I am used to it since SVR4).
Mandrake, what would you speak up? :-)
-andrej