Looking at do_mounts.c, it does not seem to support the "major:minor"
syntax exported in 'newer' sysfs (according to linux-2.6.15.6/init).
The following is untested, but might work nicely... I will fully test
this when I get home later today. PS, I also added some error output
when it fails to parse the device number, just for kicks.
As I said, I can't test this, so feel free to kick me if this doesn't
work as expected.
On a side note, would it be possible to pull the do_mounts device node
creation out into an external tool, ala fstype/ipconfig/nfsmount (I
named it 'mkrootdev' here), so that the device node can be created
before passing control to kinit? The reason I ask is that I need to
call fstype and load the proper fs module before passing control.
Again, thanks for klibc!
--- usr/kinit/do_mounts.c 2006-03-13 01:14:12.000000000 -0600
+++ usr/kinit/do_mounts.c 2006-03-20 11:32:12.000000000 -0600
@@ -43,6 +43,13 @@
goto fail;
buf[len - 1] = '\0';
res = (dev_t) strtoul(buf, &s, 16);
+ if (*s == ':')
+ {
+ dev_t maj, min;
+ maj = (int)res;
+ min = (dev_t) strtoul(s+1, &s, 16);
+ res = (dev_t) (maj<<8|min);
+ }
if (*s)
goto fail;
@@ -152,6 +161,7 @@
return res;
fail:
+ fprintf(stderr,"Failed to parse device number for
\"%s\"",name);
return (dev_t)0;
}