Picking up from my previous post I finally was able to install a boot loader on the compact flash card, yuppie! Indeed it was quite easy to do so with grub, after Zeev made me notice that yeah there is nothing wrong with it, it’s just a matter of configuring it properly.
Unfortunately starting up everything properly wasn’t really a cakewalk, but it was mostly my fault:
- first of all, I created
grub.conf
and notmenu.lst
, which of course wasn’t picked up by grub; - then I used the wrong device for the root parameter (
/dev/hda1
rather than/dev/sda1
); - I built-in ext3 support but formatted the card as ext4 (non-journaled);
- I forgot to create
/dev/console
so I couldn’t see OpenRC startup output (on a related note: if you pass twice the console parameters to the kernel, like I do on Yamato,/dev/console
only outputs to the second one not the first, why? Either I forgot to configure it properly, or I should look into fixing this into the kernel); - I set up the serial getty with the wrong line speed (9600 while both grub and the kernel use 115200);
- I forgot to add a password for root (and also a little note:
ROOT=
merges don’t create users and groups properly, but this is not Gentoo’s fault, rather shadow, that manages Linux authentication databases, don’t support accessing files that are on a different root — I think FreeBSD utilities do handle that though); - hostapd failed to start because it couldn’t find
libnl.so
(broken DEPEND/RDEPEND assignment in the ebuild, I fixed that for hostapd and a bunch of other ebuilds making the same mistake; I also opened a repoman check request so maybe in the future it can be avoided)
Now I finally got somewhat closer to what I need to do, but it’s still not yet complete. I hope to be able to get it as main router soonish. I’m also going to reduce the load on hostapd in the future since I finally went around buying some cat5e cable to wire up my house (FTP, since I need to use the same connections as the electrical system, sigh). And on that note I added some of the hardware I still need to complete the task to my wishlist.
Getting this to work is giving me quite a bit of insight in what we should probably be doing to support more properly embedded system cases like mine, and I don’t think this is anything extremely complex, like some want us to think; it only requires starting to accept some different changes, for instance by spitting the meaning of system from “what is inside the stage3” so that we can actually have stuff in the stage3 that is not in system and that can be removed with a simple -C
(or --depclean
after removing what uses it), instead of having to deal with profile-mucking files. If that was the case and the system set was really minimal (like Reiman suggested, a minimal POSIX set), then we could be saying “okay, that package is in system so I don’t really have to depend on it”.