From: Rob Landley <rob@landley.net>
To: Jason Lunz <lunz@acm.org>, Denys Vlasenko <vda.linux@googlemail.com>
Cc: dedekind1@gmail.com,
"richard -rw- weinberger" <richard.weinberger@gmail.com>,
Sam Ravnborg <sam@ravnborg.org>,
David Woodhouse <dwmw2@infradead.org>,
atom ota <atomota@sleepyhammer.com>,
user-mode-linux-devel@lists.sourceforge.net,
Jeff Dike <jdike@addtoit.com>,
lkml <linux-kernel@vger.kernel.org>,
linux-mtd@lists.infradead.org
Subject: Re: [PATCH] mtd: allow mtd and jffs2 when ARCH=um
Date: Wed, 15 Dec 2010 00:31:18 -0600 [thread overview]
Message-ID: <201012150031.21417.rob@landley.net> (raw)
In-Reply-To: <20101215011904.GA24292@falooley.org>
On Tuesday 14 December 2010 19:19:05 Jason Lunz wrote:
> On Tue, Dec 14, 2010 at 06:49:02PM -0600, Rob Landley wrote:
> > The problem is that jffs2 is a filesystem, and thus something people
> > would really like to be able to loopback mount, but it's hardwired to
> > assume it's only ever stored on a certain type of hardware, and thus
> > requies incestuous knowledge of the erase granularity of the flash layer
> > in order to function.
>
> I assume you can turn your jffs2 image file into a block dev using
> losetup, then turn the corresponding loop device into an mtd device
> using block2mtd, at which point you ought to be able to mount it with
> jffs2. I've never tried it.
That is awesome and I'm not finding any documentation on it... Ah:
http://wiki.maemo.org/Modifying_the_root_image#Block_device_emulating_an_MTD_device
Wow that's awkward. Let's see, that says...
mknod /tmp/mtdblock0 b 31 0
modprobe loop
losetup /dev/loop0 rootfs.jffs2
modprobe mtdblock
modprobe block2mtd
# Note the ,128KiB is needed (on 2.6.26 at least) to set the
# eraseblock size.
echo "/dev/loop0,128KiB" > /sys/module/block2mtd/parameters/block2mtd
modprobe jffs2
mount -t jffs2 /tmp/mtdblock0 /media/jffs2
So the system isn't automatically loading mtdblock, udev isn't creating any
/dev nodes for it even thought it is for loop, the associations are created by
writing strings into a filesystem with a _notoriously_ unstable API (and it
expects a three letter mixed case suffix to specify units), and despite
"mtdblock0" I have no idea how that echo syntax would specify more than one
association at a time.
I'm trying to figure out whether creating a shell script for this or trying to
modify the busybox mount command would be a better approach to beating some
sort of usability out of doing this.
Hmmm, mkfs.jffs2 is named as a mkfs but acts a a generator ala genext2fs. How
about...
mkdir empty
mkfs.jffs2 -r empty -o rootfs.jffs2 -e 128 -l -n
And it created an empty (zero byte) file. That's nice. If I touch a file in
"empty" now 116 bytes. Adding -p makes it one erase block, but adding "-p
2048" doesn't specify a multiple of the erase block size, it instead rounded
rounded it _down_ to that many bytes. But --pad=$((2048*1024*1024)) was
apparently ignored...? How do I specify a _size_ for this thing so it has
empty space I can write into after the fact? (The man page says pad with
0xFF. Am I going to have to do this by hand?)
mkdir empty
touch empty/hello
mkfs.jffs2 -r empty -o temp.jffs2 -e 128 -l -n -p
python -c "import sys; sys.stdout.write(131072*63*chr(0xff))" >> temp.jffs2
losetup /dev/loop0 temp.jffs2
echo "/dev/loop0,128KiB" > /sys/module/block2mtd/parameters/block2mtd
mount -t jffs2 mtdblock0 empty
Yay! I have a filesystem! And df claims it's 8 megabytes.
Woot.
> > What any of this has to do with UML is an open question. I don't want to
> > require UML to loopback mount a jffs2 image, I want to be able to do it
> > from my host. From my perspective, you're solving the wrong problem.
>
> There's more than just loopback-mounting jffs2 images. I use this to
> make entire uml+jffs2 virtual machines for testing purposes.
As I said, I'm almost exclusively using qemu/kvm these days, but this is
fun...
> Jason
Rob
--
GPLv3: as worthy a successor as The Phantom Menace, as timely as Duke Nukem
Forever, and as welcome as New Coke.
next prev parent reply other threads:[~2010-12-15 6:31 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <22c797d00709272118i33d32b9dy93d5f5ec8f8edd30@mail.gmail.com>
[not found] ` <20071024011712.GA3762@falooley.org>
[not found] ` <1193208689.26096.48.camel@pmac.infradead.org>
2007-10-24 15:54 ` [PATCH] allow use of mtd and jffs2 on uml Jason Lunz
2007-10-24 16:24 ` atom ota
2007-12-27 18:15 ` Jason Lunz
2007-12-28 17:48 ` Sam Ravnborg
2010-12-07 7:29 ` [PATCH] mtd: allow mtd and jffs2 when ARCH=um Jason Lunz
2010-12-07 9:39 ` richard -rw- weinberger
2010-12-07 18:20 ` Jason Lunz
2010-12-14 16:24 ` Artem Bityutskiy
2010-12-14 19:51 ` Jason Lunz
2010-12-14 20:01 ` Artem Bityutskiy
2010-12-14 21:12 ` Geert Uytterhoeven
2010-12-14 21:23 ` Jason Lunz
2010-12-15 0:40 ` Rob Landley
2010-12-15 0:49 ` Rob Landley
2010-12-15 1:19 ` Jason Lunz
2010-12-15 6:31 ` Rob Landley [this message]
2010-12-16 15:18 ` Artem Bityutskiy
2010-12-18 4:08 ` Rob Landley
2010-12-19 17:08 ` Artem Bityutskiy
2010-12-15 8:18 ` Geert Uytterhoeven
2010-12-16 15:25 ` Artem Bityutskiy
2010-12-16 22:01 ` Anatolij Gustschin
2010-12-17 4:27 ` mtd: fix CONFIG_MTD_COMPLEX_MAPPINGS=n compile Jason Lunz
2010-12-19 16:47 ` Artem Bityutskiy
2010-12-19 19:07 ` Jason Lunz
2010-12-20 11:23 ` Artem Bityutskiy
2010-12-20 14:04 ` [PATCH] mtd: allow mtd and jffs2 when ARCH=um Jason Lunz
2010-12-22 14:40 ` Artem Bityutskiy
2011-01-06 15:45 ` David Woodhouse
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201012150031.21417.rob@landley.net \
--to=rob@landley.net \
--cc=atomota@sleepyhammer.com \
--cc=dedekind1@gmail.com \
--cc=dwmw2@infradead.org \
--cc=jdike@addtoit.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mtd@lists.infradead.org \
--cc=lunz@acm.org \
--cc=richard.weinberger@gmail.com \
--cc=sam@ravnborg.org \
--cc=user-mode-linux-devel@lists.sourceforge.net \
--cc=vda.linux@googlemail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome