I've been watching the Emdebian project for several months now, and have
lately been experimenting with installing it on PC Engines ALIX boards
(AMD 500 MHz Geode, 256 MB RAM), via PXE/netboot (pointing initrd to the
Emdebian preseed.cfg), directly onto a 4GB CF installed on the ALIX
board. This takes a bit of manual fiddling, but is still possible to get
a working installation.
PXE/netboot is a good option for installing directly to these ALIX/WRAP
boards, since their BIOS supports PXE boot, but they do not support
booting from USB.
Specifically, the things I noticed were the failing of packages to
install if the dash post-inst script had not run (the absence of
/usr/share/man/man1 directory), which somebody else raised on the list
this month also. I worked around this by selecting network-console at
the "download installer components" stage, and continuing the install
from SSH. After partitioning/formatting the CF, I launched a shell and
did a "mkdir -p /target/usr/share/man/man1". It's a hack, I know.
Secondly, at the end of "installing base system", the installer reports
that no suitable kernel can be found. This seems to be because it wants
a linux-image-2.6-486 (eg. same as what d-i was running with), whereas
only -686 packages are in the repo. I have to continue with the
installation without a kernel, then at the end, launch a shell, chroot
into /target and apt-get install linux-image-2.6-686. Installing a pure
Debian setup on these boards does not run into that problem, since the
-486 packages are still available in Debian repos.
Another problem I had (during an abortive attempt to install a wheezy
system directly) - I downloaded the preseed.cfg file locally to a TFTP
server and replaced references of squeeze with wheezy, hoping that d-i
would pull packages from the wheezy repo instead of squeeze. D-i worked
fine, but when it came to download the wheezy packages.gz, it reported
that it was corrupt. Does the wheezy repo use a different signing key
I've seen on this list a while back, somebody asking which filesystem
was best to use for consumer-grade flash media (such as CF, SD,
memorystick etc; not soldered-on MTD devices). I've seen various
small-footprint Linux distos such as fli4l even use FAT16, but I tend to
favour using ext3/ext4 with journaling disabled, and the usual
noatime,nodiratime options in fstab.
Removing the has_journal feature on an ext4 root filesystem is a bit
tricky. Partman creates ext4 filesystems with has_journal enabled, and
you can't turn it off (with tune2fs) while it's mounted. Even remounting
it read-only won't get you there. The only way I've come up with is to
reboot with "init=/bin/sh" on the kernel command line, so that it throws
you into a shell without starting anything, or even mounting rootfs,
from where you can then "tune2fs -O ^has_journal /dev/sda1" and reboot.
It would be great if partman had the option to disable journaling at
filesystem creation time.
I'd be keen to hear other people's opinions on whether ext4 with
journaling disabled is the best option currently for a embedded device
filesystem. The main reason I chose ext4 over ext3 (or ext2 for that
matter) is the significantly faster fsck time. Other things I'd be
interested to hear about are survivability/recoverability after hard
shutdowns etc. For persistent data (that didn't need fileystem
permissions, symlinks etc), I'd most likely use a separate FAT32
partition, and treat the ext4 partition is a pseudo read-only filesystem
(eg. really try to minimize the amount of write operations on it).