Quick-and-dirty GoboLinux Porting Guide

Hisham Muhammad, November 19th, 2003.

Currently, GoboLinux is x86 only. Actually it is i686 only, though there is a incomplete (the pretty word would be "domain-specific") i386 port. Want to be the first to get GoboLinux to run in some other architecture? I believe things will be easier if you follow the following "plan of attack". Let's take the PowerPC architecture as an example.

  1. So, take a Linux PPC distribution, and install the bare minimum to be able to compile programs with it. You don't want programs to get any extra dependencies compiled in by accident. We want to build a Glibc 2.3/GCC 3.3 based system here, so try to get a Linux PPC distro which supports those or upgrade them to these version using the means provided by your distribution, or simply, by hand (you'll nuke the distro in the end, anyway).
  2. Then, create GoboLinux-like directories on it: /Programs, /System, etc. In the unlikely event that you don't have any x86 system around, we can provide you any necessary information about how GoboLinux looks like. ;)
  3. Now, get the latest GoboLinux Scripts package from gobolinux.org and unpack it at /Programs. You should now have /Programs/Scripts/(date) files. You may need to copy files from Scripts/20031115-hisham/Resources/Defaults/Settings to /Programs/Scripts/Settings. Go to /System/Links/Executables, /System/Settings, and friends and symlink stuff by hand.
  4. Add /System/Links/Executables to your PATH, /System/Links/Libraries to your LD_LIBRARY_PATH, and so on. Having an x86 GoboLinux handy will surely help so you can look at it and compare. Put GoboLinux stuff first so that they will gradually override your old Linux distro. You may have trouble with /etc vs. /System/Settings, because unlike executables, libraries and headers, there is no environment variable for this. Do this, then: move /etc to /etc-old, link everything from /etc-old inside /System/Settings, and make /etc point to /System/Settings.
  5. I don't remember now if there is any essential GoboLinux script that is written in a compiled language. Let's check this, just a sec... oh, just one: RealPath. That's a trivial C program that just calls realpath(3). The sources are not here at my computer right now... who has it?
  6. Ok, so by now you can theoretically run CompilePackage and stuff like that. Let's take a small program for a test run. Get this: ftp://ftp.gw.com/mirrors/pub/unix/file/file-4.04.tar.gz and try to: CompileProgram file-4.04.tar.gz If it does compile, and in the end you get something like /Programs/File/4.04/bin/file, then we're almost there.
  7. The Compile package which contains automated compilation rules is included with the system. Now, go following the list of packages from Linux from Scratch. You want the list from Part III, Chapter 6. Feel free (and encouraged) to skip some critical and error-prone packages like Glibc, Binutils, GCC and Ncurses at first. (Actually, I think I don't have Recipes for Glibc and GCC yet -- there are GoboLinux source packages for those somewhere, I'll build Recipes based on those). By the time you're finished here we expect to have all Recipes necessary to build Base done, so let's assume you'll be able to compile the entire Base this way. Start with "Compile Man-Pages" and go on from there.
  8. Now, what do we need to get a complete system? Let's think... Get a BootScripts package from the website. It's just shell scripts, so they should be portable. InstallPackage it normally. Check in a GoboLinux x86 system which non-link files should be present at /System/Settings. Off the top of my head, there are passwd, group, inittab, fstab... There are more, that's something to be checked. Well, you need also a kernel and its modules at /System/Kernel/Boot and /System/Kernel/Modules (symlink stuff at /lib/modules). Take your running distro's kernel and modules, let's reduce potential sources of problems. Later on you can compile a kernel with GoboHide and other goodies.
  9. Well, that's it. Set up your favorite bootloader and voilà! There you have your GoboLinux PPC system. It's a whole lot of work, but it is doable, especially given that we have "been there and done that" and can help you should problems arise. Just keep a rescue disk handy because you'll probably render your system unbootable a few times during the process. :)

Whoa!

We didn't even get to ten. I'm sure I forgot one thing or another, but I believe I got the most important parts covered. So there you have it: "GoboLinux Porting Guide version 0.0.0.0.0.0.1" :) I'm very enthusiastic about the idea of porting GoboLinux to non-x86 architectures. Fernando Massen and I toyed with the idea once, but we tried to do this on top of Mac OSX, which is a bad idea because it is based on a BSD userland and GoboLinux assumes a GNU userland. We got as far as getting a few packages compiled... CoreUtils--5.0--G4.tar.bz2, if I recall correctly, but Massen lost interest in the project shortly after. Using a Linux PPC system should reduce much of the hassle. If it was doable on top of OS X, it's certainly doable on top of a Linux PPC distro, and I believe the same is true for other architectures.

Have fun and feel free to ask any questions on the list!

© 2002-2022 GoboLinux.org.
gobo AT gobolinux DOT org