On Mon, 1 Sep 2008 15:58:15 +0200 maximilian attems <[EMAIL PROTECTED]> wrote:
> On Sat, 30 Aug 2008, Andres Salomon wrote: > > > Package: initramfs-tools > > Version: 0.92f > > > > On OLPC machines, root is a nand device that is mounted as mtd0 (it > > is neither a block device nor a char device). The arguments passed > > to the kernel are "ro root=mtd0 rootfstype=jffs2". > > could you try to give the full device string root=/dev/mtd0 > Already tried that, it simply fails to find root then. I also tried root=/dev/mtdblock0, but that's not a real solution (mtd block emulation is slower than just mtd). > > Unfortunately, attempting to use an initrd based upon > > initramfs-tools on such a machine results in a kernel panic and a > > syntax error. > > > > > > Begin: Mounting root file system ... /init: line 172: syntax error: > > 0xmtd0 > > > > The probably appears to be in parse_numeric(); the init scripts > > assume that normal devices are always prefixed with /, and root= > > strings that aren't are raw device numbers (prefixing them with > > 0x). I'm not sure if there are other devices similar to mtd that > > don't begin with a /. > > parse_numeric is for legacy lilo support, right. does aboves > circumvent it? > > thanks for report! > How about something like the following (untested) patch? It's not foolproof, but it at least ignores things that can't possibly be hex strings. --- /usr//share/initramfs-tools/scripts/functions.orig 2008-09-01 11:14:11.000000000 -0400 +++ /usr//share/initramfs-tools/scripts/functions 2008-09-01 11:18:57.000000000 -0400 @@ -242,11 +242,14 @@ parse_numeric() { minor=${1#*:} major=${1%:*} ;; - *) + [A-Fa-f0-9]*) value=$(( 0x${1} )) minor=$(( ${value} % 256 )) major=$(( ${value} / 256 )) ;; + *) + return + ;; esac mknod -m 600 /dev/root b ${major} ${minor} -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]