Friday, May 11, 2007

MOAM CD work

After realizing the need for an FTP client and a MP3 player for my MOAM-CD project, I rebuilt MOAM-CD last night with these two applications added. For the FTP client, I compiled the NetBSD FTP client in Linux. For Xmms, I just snarfed the binary from my install of CentOS 3. FTP works fine. I also recompiled the kernel to have sound card modules. XMMS works, but its sophomoric default configuration is to have XMMS output a .wav file instead of letting you listen to the song. This can be worked around by editing ~/.xmms/config, but I may have to patch XMMS.

In order to make room for all this, I removed the DRI code; I don't need 3d graphics and I can use the room. This made enough room that I still have over four megabytes free, even after adding XMMS, FTP, aumix, and Nano to the code base. I will try to add Xpdf, but it looks like the t1 rendering lib will make this too big to use.

One thing that doesn't work is Opera 9.20. Opera 9.10 has been working fine, but Opera 9.20, for unknown reasons, seg faults immediately before showing the use the EULA. Since its closed source, I can't debug. Strace didn't help either.

So, MOAM CD is updated again. This MOAM project has made me lose sleep again--I was up past 1am dealing with all of this. And, again, I have some open MaraDNS issues I haven't had a chance to look at yet.

Oh, I forgot to mention this: I figured out how to make the important stuff (the boot image, the Linux compressed image, etc) be near the beginning of the CD, and have the less important stuff (the music, etc) bear at the edge. It involves using the -sort option of mkisofs. Very useful, that. I also now set up the file permissions on the CD-ROM (with Rock Ridge, yes, CDs have UNIX-style permissions) to have the account I use for web browsing be completely unable to read my SSH private key.

I'm working on MaraDNS right now. Having a full UNIX script environment, a C development environment, a web browser, a music player in only 50 megs is really nice.

Update #2: Useful undocumented busybox feature: You can have Busybox's init applet reload /etc/inittab by sending init (process #1) a HUP signal.