PXE/netboot installation

Daniel Swarbrick <[email protected]>
Newsgroups gmane.linux.debian.devel.embedded
Message-ID <[email protected]>
Hi,

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 
perhaps?

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).
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.