[E3-hacking] Config / content filesystem

Ralph Corderoy ralph at inputplus.co.uk
Mon Apr 22 15:24:41 BST 2019


Hi Jonathan,

> So, the MTD partitions do not directly map to a kernel or a Linux
> filesystem. The "Q;Q;" blocks are an Amstrad specific way of putting
> data into those partitions, with a type + description associated with
> each one. For example the kernel lives in a Q;Q; block in mtd3 called
> "LINUX". mtd3 also has Q;Q; blocks for LDR (the second stage boot
> loader), and PARMS (the kernel boot parameters).

Agreed.  I guessed a 32-byte struct based on various `Q;Q;'s seen.

    $ qq() {
    >     LC_ALL=C perl -0777ne 'print $& while /Q;Q;.{0,32}/g' "$@" |
    >     hexdump -ve '36/1 "%_p" "\n"';
    > }
    $
    $ qq e3-nand-backup.3
    Q;Q;... at ............MEM.............
    Q;Q;................PARMS...........
    Q;Q;....Hf..........LDR.............
    Q;Q;.....x..........LINUX...........
    $

> The CRAMFS filesystem is in mtd4; Q;Q; block name "LNXFSYS". There are
> 2 of them (I imagine to allow for an active + fallback).

    $ qq e3-nand-backup.4 | grep LNXFSYS
    Q;Q;................LNXFSYS.........
    Q;Q;...6............LNXFSYS.........
    $

> There are various other bits of content in mtd4 too - you can see them
> by doing:
>
>  hexdump -C e3-nand-backup.4 | grep -A 1 "Q;Q;"

That's where my 32-byte-long guess comes unstuck.  A Q;Q; appears within
the structs around LIBC's.

    $ qq e3-nand-backup.4 | fgrep -3 .LIBC
    Q;Q;..^.. ..........WTL_MAILCON.....
    Q;Q;..... ..........WTL_RES.........
    Q;Q;..M.  ........Q;Q;..... ........
    Q;Q;..... ..........LIBC............
    Q;Q;..... ........Q;Q;...Q. ........
    ..WTL_WAV.........Q;Q;..... ........
    ..WTL_CHUNK.......Q;Q;..$.. ........
    $

And so it's out of step for a while.  Perhaps there's Q;Q;-formatted
data inside a Q;Q; block, or the last struct in the initial `list' is
shorter and its struct's content indicate that.

    $ qq e3-nand-backup.4 | grep -1 ^Q | grep -3 ^-
    Q;Q;..... ..........LIBC............
    Q;Q;..... ........Q;Q;...Q. ........
    ..WTL_WAV.........Q;Q;..... ........
    --
    ..M_USERPREF......Q;Q;.....V........
    Q;Q;.....1..........M_WTL_WTAI......
    Q;Q;.....A..........M_VPARSE........
    $

I expect a bit of peering at the words in each struct would spot a
length or similar of each `file's data to save searching through for the
next Q;Q;.

-- 
Cheers, Ralph.



More information about the e3-hacking mailing list