A little background: I started using Unix V7 on a PDP-11/70 back in 1983, even modifying some existing kernel drivers for the Cambridge Ring local area network. After that I dabbled in system administration of various Sun and Apollo systems until 1991, and HP boxes up until 2000, but my main task has always been application software development, nothing on the hardware or kernel side. Since 2000 we've had dedicated system administrators at work. We had switched from NCD X-terminals over to Linux desktops (first RedHat, but then Lunar) and I realized that what little I knew had become well out of date. I installed RedHat on an old 90MHz PC at home more than five years ago, but without a LAN or modem connection it was too difficult to keep up to date, I lost interest, and that died. Since then I've had an itch to develop a spiffy FLTK user interace for some old command line tools using Cygwin/Mingw on a WinXP laptop (with modem) but the machine is (a) painfully slow, and (b) painfully Windows. The time had come to get some new hardware, install an operating system that doesn't thwart you at every turn, and set up a programming environment of my own choice.
Why Lunar? Well, my desktop at work is running Lunar - and it has been very stable - and so I could always ask the sysadmin if I got really stuck. Sofar I've been trying to work it out for myself.
Basic Installation for Newbies: well, believe it or not, the Installation guide is actually fairly good! However, while waiting for the connection to the ISP to be set up, I downloded the Lunar ISO at work and burned it onto CD. I installed Lunar 1.5.0, 1.5.1rc1 and 1.5.1, each one a bit better than the last, and the guide made more sense to me every time. So, if you are new to Lunar, just give it a try, make the mistakes, reformat the partitions and try again! There are a couple of points that might help other people:
- I used the partitions mentioned in the guide, albeit bigger, which are really intended for server systems, whereas desktop systems could use a simpler system as described in the FAQ. Make a note of the partitions and sizes so that you can enter the info quickly when you re-install.
- Unless you are really sure that you want to override the default values, don't. Play with the simplest system you can to start with - you can always configure something extra later.
- The 'Install a pre-compiled kernel' step happens so quickly, and without any real feedback, that I didn't believe that it had actually done anything. I then made the mistake of compiling the kernel(s) again myself, and it's completely unnecessary and wastes time.
- Install the 'normal' and 'safe'pre-compiled kernels - they are packed with more basic drivers than most people will need, so you have a good chance of getting a basic system up and running.
- Accept the default, and let the installation set up Lilo for you.
- Set up the simplest networking that you can. Luckily I had already been able to set up the ISP to ethernet router, and the ethernet to wifi router, by using the web browser on the WinXP laptop. YMMV, but the driver for the standard wired network card (3Com) was already included in the pre-compiled kernels and worked as soon as I rebooted, but the additional wifi network card (Atheros-based) took me a lot more work, but more on that later.
- Set a root password! You are just about to go live on the Internet and you have no idea what is and isn't set up yet!
- Reboot, and good luck.
lfirsttime for Newbies: if everything has gone according to plan and your system has rebooted successfully, when you login as root you will be advised to run 'man lfirsttime' for more information. This manual page describes the next steps you will need to help turn your newly hatched system into a fully feathered juvenile. Again, 'man lfirsttime' is faily good, but there are a couple of extra points that might help other people:
- If you haven't already got your networking up and running, you can still poke around on the file system and see where the basic things live, but there won't be much else you can do. Run 'lnet' again. If still no joy, then I'm afraid I'm not knowledgable enough to help you. Try asking on the Installing Lunar forum.
- Check out the manual pages for 'lin', 'lvu', 'lrm' and 'lunar'
- Check out the manual pages for 'lin', 'lvu', 'lrm' and 'lunar' again. This is not a typo!
- If you are like me, you will still not have picked up on the '-r' or '--reconfigure' options to 'lin' and it turns out that this is a bit of a crucial option. If you are like me, you will be cautious, and will run 'lin --deps' on every module to see what else needs to be built. This will ask about installing optional modules, and even though this is just a 'dummy run' this configuration information is saved away and you won't be asked again when you come to do the real installation. Unless you use 'lin -r' that is...
- Again, unless you are really sure you want to override the default configuration settings, don't! Get the system working first, and then add in the bells and whistles. I was bitten by selecting the optional 'lunaric-sound' module, but for some unknown reason I was temporarily blocked from downloading it, but as I hadn't remembered about 'lin -r' I was stuck for quite a while.
- Once you've reached the bottom of 'man lfirsttime', you should have updated the moonbase, downloaded the basic tools, and run 'lunar update'. You will have updated quite a few files.
- You should have updated 'wget' as this is used to download modules. Unfortunately, it doesn't really know how to download module sources from CVS repositories, and if the module doesn't have CVS as one of its dependencies, the download will fail. (I had problems with the 'madwifi-cvs' module for this very reason). Run 'lin cvs' now, and save yourself potential grief later.
Get into good habits now: as noted above, every time you install a new module you are adding new commands and dozens, if not hundreds, of files to your system. Therefore, until the point where you set up 'cron' to do it for you, you will also need to:
- Run 'updatedb' so that you can use 'locate' to find configuration files easily.
- Run 'makewhatis' so that you can run 'apropos' or 'man -k' to find the commands that you want
Setting up X: I've been using window-based user interfaces since the ICL Perq in 1983 and it was obvious that the next stage meant setting up a windowing system so that I could (a) make use of more than just the basic 80x25 console terminal, and (b) have access to manual pages, etc. while building or configuring additional modules. Therefore use 'lin' to install 'XOrg', 'XOrg-basic-fonts' and 'XOrg-extra-fonts'. Note that not all documentation available at http://xorg.freedesktop.org is available in these downloads.
- However, to make life easier when using the Lunar tools, you might also want to edit your .Xdefaults file or the global /etc/X11/app-defaults/XTerm to set:
- XTerm*loginShell: true (to allow tab-completion of command and module names)
- XTerm*reverseVideo: true (to allow the Lunar tools menus to be more readable)
- XTerm*scrollBar: true
- Login and run 'startx'. This should bring up a basic window manager 'twm' that will at least allow you to do things in parallel.
xfce and firefox: at this point I wanted something a bit more up to date. Why 'xfce'? Well, we have 'kde' on the boxes at work, mainly so that the non-computer people at least have a chance of finding a command to do what somewhere in the menu hierarchy. But I wanted something a bit more minimalist. After all, I have complete control of what I'm installing on this box, and part of the reason for doing it is to learn more about the tools in the process. The other thing that was becoming more important, was access to the various READMEs, HOWTOs and project home pages so that I could learn what I needed next. I had been using the browser on the WinXP laptop, but wasn't exactly convenient, and it wasn't possible to cut and paste between machines. Hence 'firefox'. As far as I remember, a simple 'lin xfce' and 'lin firefox' installed everything without any problem at all, and I'm now using 'firefox' to edit this page. In order to read the tech specs of my wifi card I also downloaded the Adobe Acrobat reader. It installed OK, but in an out-of-the-$PATH directory. I still haven't configured 'firefox' so that it automatically uses 'acroread' when I open a PDF link, so at the moment I have to save the link to disk and then call 'acroread' manually. But not a big deal at the moment.
Newbie's guide to installing the 2.6 kernel: the boot sequence of the pre-compiled 2.4.31-normal kernel had already identified my wifi card as using the Atheros chipset, and this was confirmed by running 'lspci', but obviously, try as I might, I couldn't get 'lnet' to do anything with it. After searching Google and asking in the Lunar forum it was clear that I would need to install the 'madwifi-cvs' module, but before I could do that I would need to install the 2.6 kernel. There is an Installing 2.6 HOWTO but this skimmed over the important part as far as I was concerned. After a bit more time on Google I came across a reasonable 2.4 kernel tutorial on the LinuxChix web site - but of course I can't find the exact link now - and also the draft of the update of the Linux-Kernel-HOWTO which is now called the Kernel Rebuld Guide. This guide tells you that you will need certain modules already installed in order to build a 2.6 kernel. Most of these were already installed, and more recent than the version required. However there were a few which were missing, and they have quite a few dependencies on other modules that you therefore have to install as well. I had errors when I tried to install them:
- module-init-tools failed to install a manual page that you would like to consult later
- docbook* modules wouldn't install when I used the obvious leaf-first reported dependency order, but in fact, if you install 'docbook-profile' first then everything is supposed to work properly. I don't know how someone new to 'docbook' is supposed to guess this though.
- isdn4k-utils failed to install properly because of a missing dependency on 'linuxdoc-tools' and then a problem with a Makefile.am
- pcmcia-cs may have failed to install everything, but I don't remember now.
I spent a while trying to work out what the problems actually were, but in the end I couldn't resolve all of them. Therefore I decided to proceed with the 2.6 kernel build anyway to see how far I would get. Again it took me some trial and error before I finally got there:
- a lot of the documentation talks about 'oldconfig', 'menuconfig' and 'xconfig' as though they are separate modules that you need to install before you can configure your new kernel. It took me a while to realize that they are 'make' targets and are handled within the kernel build process. Doh!
- 'lin linux-2.6' downloaded the sources and then called 'make oldconfig' during the build process. This is a clever script that extracts details of your current kernel configuration. Unfortunately there are one or two places where it needs user input, but the automated build process couldn't get that user input and started to loop. I had to interrupt it.
- luckily the 2.6 kernel sources had been unpacked in /usr/src/linux-18.104.22.168 - YMMV - so I attempted to run 'make oldconfig' manually. I obviously answered something incorrectly, because after running the full make, and then the following:
- cp arch/i386/boot/bzImage /boot/22.214.171.124-mine
- cp .config /boot/config-126.96.36.199-mine
- cp System.map /boot/System.map-188.8.131.52-mine
- adding the 184.108.40.206-mine entry to /etc/lilo.conf
- /sbin/lilo -V
- shutdown -r now
the new kernel failed to boot at all. So, what to do now? Eventually, after much experimentation, I extracted the current kernel configuration from /boot/config-2.4.31-normal.gz and ran 'lin -r linux-2.6' but this time saying that I did want to reconfigure the kernel, and that I wanted to use 'menuconfig'. The build process chugged away, and then up came the 'menuconfig' screen. I selected the 'Load alternative configuration' option at the bottom of the first menu, and loaded the existing 2.4 configuration. The first time I did this I got some errors about missing options, but after saving the new configuration file and repeating a couple of times it all worked. I was able to reboot with the 2.6 kernel!
To be continued...