[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

PXE/netboot installation


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).

Reply to: