I installed Ubuntu 8.04 on my main system over the weekend (I’m preparing a blog entry about it now). I’d hoped to try it out on the Eee system first, but that hadn’t been possible yet.
The Ubuntu-Eee project finally posted a Release Candidate for the 8.04 upgrade a week ago yesterday, on the second. Unfortunately, it had some kind of file error in it, so no one could use it — the install stopped at 25%. I waited patiently for someone to fix the problem, but no one had done so by last evening, so I decided to take a crack at it myself. The fact that I know absolutely nothing about the organization of it, or what had been changed, mattered little to me. 🙂
I decided to start by picking up the original Ubuntu 8.04 CD image and compare the Eee image to it, on the assumption that they’d simply made some changes to it (because that’s how I’d have done it, after all). A little research showed me that there’s a program called “diff” that will compare files and show you the differences between them, so I got started.
Sure enough, there were only a few differences: two files in the “isolinux” subdirectory and three in the “casper” subdirectory. “isolinux” sounds like it has to do with the CD image itself, so I concentrated on the other one.
The differences in the two text “manifest” files seemed to be only version numbers. initrd.gz is a GZip archive file that contains a bunch of other files; I unzipped a copy of it from both files and compared them. Oddly enough, they seemed identical, even though the archive files were different. Copying the version from the original release didn’t seem to make any difference. That only left one file to work with: “filesystem.squashfs”.
The system didn’t know what to do with it, but a little digging turned up an explanation: it’s a highly compressed file system, and the tools to use it are readily available in the Ubuntu Linux archives. I unpacked it, and the one from the original CD, and started comparing them.
There were a lot of differences, but a comment from one of the error reports suggested that it was due to a symbolic link, so I dug up a method for finding broken symbolic links and ran it over the Eee version. Oops… there were thousands of them. 🙁 But oddly enough, almost all of them were under the /proc branch. After eliminating that, I had only a handful.
On a hunch, I did the same with the original CD image too, and compared the results. Bingo — there were only five broken links in the Eee image that weren’t also in the original, and they were all in the same directory. This morning, after fixing those and re-packaging the filesystem.squashfs file, I tried to install it again.
Mini-mEee is back up and running, with the “Hardy Heron” release of Ubuntu. 😀
UPDATE: Wow, an open-source project that actually appreciates help! I got several congratulatory messages on tracking down the problem, including one from the guy in charge of the project, who posted the “gold” version of the package within hours of getting my fix. That’s a lot better than the first two I attempted to contribute to.