For the last two months, I have been running Linux version 2.6. The 2.6 kernel is a definite improvement: faster, smoother and altogether a little nicer to work with. However, there has been a slight problem.
In the interests of code size and mildly increased reliability, I compile most of my device drivers as modules. This means things like sound-card drivers, graphics drivers and the entire USB subsystem aren't in the kernel at all, but are inserted and removed on demand. However, when I compiled the kernel, the modules went missing...
I finally got annoyed with it this evening and started bit-twiddling again, reconfiguring and rebuilding the kernel. The rebuild went alright, if a little fast, and installed fine. Reboot, still no modules. Hmm. Issued a 'make clean' to remove old builds that could be causing trouble and rebuilt, no change. Issued a 'make clean, make mrproper' to restore the source code to its freshly-distributed state, and accidentally blew away the config file it had taken ... a while to set up (lots of optimisation and a few esoteric devices). Grump. Fixed that, rebuilt, no modules.
It is vitally important to remember to actually build the modules when you install the new kernel (they're made separately). This I did every time. However, I would like to point out that the underscore in 'make modules_install' is vitally important.
>.<
To add insult to injury, I had to rebuild my graphics driver too (it claimed the kernel had changed and refused to load. Fair point, I suppose).
So, having spent two months without USB or a fully functioning sound-card (etc) because of a FRICKING TYPO, I'm off to enjoy my new system.
Have fun. That's an order.
For the last eight weeks or so, I've been playing with the Linux From Scratch project, which basically entails building a minimal linux distribution from the bare source code. It's teaching me a lot about the internal structure of the system, but it's not without problems.
The trouble is, I'm building what might be termed a secure distribution, by ensuring that every executable is owned by a user named after the package that produced it, and giving each program exactly the permissions it needs and no more. This causes a few interesting moments during the build, where programs want permissions they can't get, and bail out messily, requiring me to go and setuid them root in order to continue. Last week I hit a major problem.
I'd finished assembling a toolchain with which to build the rest of the system, and set up a clean environment, and was ready to begin building the system itself. Unfortunately, it bombed out spectacularly during setup of the user for one of the packages, corrupting the partition to the point that I was forced to blow away all the work to date. Fortunately I had a toolchain backup, but now I have to motivate myself to start working on it again. Grr.
No, there's no point to this entry per se. I'm just starting to feel guilty about posting so many non-geek entries to what is, in fact, a geek blog. Therefore, things may have to change a bit. Consider yourselves warned :)
All this week I've been going to bed at about 0200 for various reasons (not least among them being trying to wrangle a glibc compilation on a bare-bones system I'm building, but that's another issue). Last night, I decided that I tended to be too tired and wake up too late, rolling out of bed at 0930 with just enough time to get a train to campus for my 1000 arrival time. So I went to bed at midnight.
So, this morning I woke up at 1100. Mrph.
I'm now working from home. There's little point going in when all I'm doing is web design, and I can do it over the FTP connection anyway.
Also, I managed to break a nail this morning. As in shatter. Stubbed my little toe on a pile of stuff and splintered it all the way down to the root. That'll be fun later...