Dark Mark (Halloween, 2007)
The Gesargenplotzian Gospel

Adventures in Installing Linux

Peter A. Taylor
June, 2009


Warning! (April 5, 2011) Most of the information that follows is obsolete. Debian Lenny and OpenSuSE 11.1 are obsolete, and Debian Squeeze uses the new GRUB 2 bootloader (as does Mint 10), which is substantially different from GRUB Legacy. OpenSuSE 11.4 still uses GRUB Legacy, but does not seem to recognize OSes that use GRUB 2. Install an OS that uses GRUB 2 last. If I were going to dual boot with Windows and a Linux that uses GRUB 2, I would want a separate hard drive for the Linux boot partition.

Warning! (May 2, 2014) There is a new kind of BIOS on modern computers called UEFI (Unified Extensible Firmware Interface). This goes along with a new way of partitioning hard drives and a new boot process. Everything I knew about dual boot is even more obsolete than it was before.

Part 1: How to dual boot Windows and Linux without tampering with Windows

Part 2: A crib sheet for installing Debian Lenny

Part 3: A crib sheet for installing OpenSUSE 11.1

Part 4: Update, 5-15-2012. A crib sheet for installing Debian Squeeze

Part 5: Update, 12-30-2013. Comments on OpenSuSE 12.3 and 13.1, Debian Wheezy, and Mageia 3. Also comments on UEFI.


Part 1: How to dual boot Windows and Linux without tampering with Windows

Problem: I want to install Linux on a second hard drive in a computer that has Windows taking up the entire first hard drive. I want to do this without tampering with Windows. I don't want to overwrite the Windows boot sector, repartition the Windows disk, store Linux files on the Windows partition, or edit C:\boot.ini .

Why? My re-partitioning tools either don't work or I don't trust them, and I don't want to break Windows. Also, if something happens to my second hard drive, I still want to be able to boot Windows quickly and easily. (Ask me how I learned about this pitfall.) In fact, LILO (the old Linux boot manager) will give you a warning if its data are stored on a different disk than the one on which you are writing its boot sector.

If you have a C:\boot.ini file and don't mind editing it, you have more options. See grubwin32 or a more manual approach .

Assumptions: The BIOS in this machine can be set to boot from either hard drive. I assume both of these hard drives are IDE or look like IDE to the computer. One of mine is actually SATA, but the boot sector arrangement is the same. I know nothing about SCSI. In my case, on a computer called "Anubis," I have the original (Windows) hard drive as master on the primary IDE controller (known to the BIOS as disk 0) and a SATA drive on a separate SATA controller (known to the BIOS as disk 2).

Solution: I am now using the GRUB (legacy) boot manager. Both Windows and Linux boot stanzas in the GRUB menu.lst configuration file need to be modified so that they will boot from the "wrong" hard drive Master Boot Record (MBR). If the second hard drive goes belly-up, I can simply go into the BIOS and restore the original hard drive as the boot device.

1. Make a backup copy of the MBR on the Windows disk. I was lucky. The first time I installed Linux on this machine, I chose LILO, which made a boot sector backup copy automatically (/boot/lilo/boot.0300 or something similar). I don't believe GRUB does this. (OpenSuSE 11.1 does make boot sector backups when you install it, which it stores in /var/lib/YaST2/backup_boot_sectors and in /boot/backup_mbr .)

One way to back up the MBR is to run a "rescue system" off of a Linux install disk, and use "dd" to make a copy of the MBR. The problem is then to write this somewhere, like on a floppy. I was able to do this using an old OpenSuSE 10.2 install CD that I had lying around, but when I tried it with an OpenSuSE 11.1 DVD, I couldn't get it to recognize the msdos filesystem on either a floppy or a USB device. If you are a troglodyte like me, with a computer that still has a floppy drive, try:

mount -t auto /dev/fda /mnt
dd if=/dev/hda of=/mnt/boot.0300 bs=512 count=1
umount /mnt

If you want to try a USB drive, see if you can find it in /dev . /dev/sda1 perhaps?

If you ever need to restore this backup, the command is:

dd if=/mnt/boot.0300 of=/dev/hda bs=446 count=1   # This doesn't work with GRUB 2!

You use block size 446 instead of 512 so as not to overwrite the partition table, if that has changed since you made your backup. I learned about this by reading the wonderful LILO HOWTO. GRUB is nice, but it does not appear to be nearly as well documented.

Here's an old (2001) Linux Journal article on GRUB that isn't bad.

If you can't or won't make this backup, you should consider using LILO instead of GRUB. Also, during the install process, make sure you tell the installer *not* to write an MBR. You can boot your new Linux installation from the install disk a few times until you get GRUB working correctly off the second hard drive.

2. Once your old MBR is safely backed-up, put your Linux install disk in the CD or DVD drive, reboot your computer, and hit the delete key (or whatever) to go into the BIOS. Tell the BIOS to boot off of the second hard drive instead of the first. Now install Linux on the second hard drive, but tell it not to write on the MBR. I thought that with the hard drives switched in the BIOS, Linux (Debian Lenny) would write its (GRUB) MBR to the second hard drive, but I was wrong. The Linux kernel was not fooled by the BIOS settings. Luckily, I still had the old LILO backup.

3. You may have to boot your computer off of the install disk in order to boot Linux until you get GRUB installed where you want it and the menu.lst file configured correctly. You can do this easily from an OpenSuSE install disk, but it looks like it would be a bit of a research project to figure out how to do this from my Lenny install DVD rescue system shell commands.

Once you get Linux running, you need to run grub-install to install the GRUB boot sector where the BIOS can find it. grub-install understands both GRUB syntax ("hd1") and Linux syntax ("/dev/sda"). I recommend checking the output from "mount" to make sure Linux is thinking what you're thinking, and then using Linux syntax. If you want to use GRUB syntax, look at the file /boot/grub/device.map before you do this. This file may not exist if you haven't run grub-install yet, which is bad because grub-install uses the information there to figure out where to put the boot sector, and might guess wrong if it has to guess. The GRUB install command will probably look something like this:

grub-install hd1


grub-install /dev/sda

The GRUB boot sector needs to go into the MBR on the second drive, because the BIOS isn't smart enough to look for the boot sector for a specific partition without being told to (as I think a Windows MBR would do if a partition is flagged "bootable"). (GRUB 2 will throw a hissy fit if you try to write a boot sector to anywhere other than the MBR.) GRUB will generate a /boot/grub/device.map file which for me looked like this (using Debian Lenny on "Anubis"):

(hd0) /dev/hda
(hd1) /dev/sda

. grub-install will print a message inviting you to edit this file and re-run grub-install, but I see no reason to do so.

Now go into /boot/grub/menu.lst and edit the boot stanzas. For Windows, add the lines

map (hd0) (hd1)
map (hd1) (hd0)

. It makes no difference where within the boot stanza these lines go. Do not change the device the root command points to. Windows wants to boot off of (hd0). We swapped the hard drives in the eyes of the BIOS, and now we have swapped them back in order to boot Windows. Leave the Windows root disk as (hd0).

I also changed the order of the stanzas because I wanted my children to be able to boot Windows by default. The "savedefault" command didn't work the way I expected it to.

Now edit the Linux boot stanzas. As far as I can tell, only the chainloader ever looks at the "map" command, so don't bother with them here. Also, be very skeptical of what the device.map file says. I tried this on two computers, "Anubis" and "Isis," and got very confusing results. My tentative conclusion, based on Anubis, was that it is the BIOS rather than GRUB that is going to find your root partition, so you should ignore the device.map file. After trying it on Isis, I am convinced that the "B" in BIOS stands for "buggy." See the comment about buggy BIOSes in the GRUB manual.

The Debian installer wrote a menu.lst for Anubis that thought my SATA disk was hd1 (the second hard disk), but the BIOS thinks it is the first hard disk. Change "root (hd1)" to

root (hd0)

. Do not change the "kernel" command. The "root=/dev/..." portion of the "kernel" command is interpreted by the Linux kernel, which is not fooled by what the BIOS says.

My resulting menu.lst file works, but it looks utterly bizarre to me. The "root" commands in both the Windows and Linux stanzas point to (hd0), even though they refer to different disks. Only the "chainloader" command appears to honor the results of the "map" commands.

The relevant parts of the /boot/grub/menu.lst file on Anubis:

title Windows, remapped hard drive order
map (hd0) (hd1)
map (hd1) (hd0)
root (hd0,0)
chainloader +1
title Debian Lenny, booting from the second hard drive
root (hd0,2)
kernel /boot/vmlinuz-2.6.26-2-686 root=/dev/sda3 ro quiet
initrd /boot/initrd.img-2.6.26-2-686

I did a similar installation on OpenSuSE 11.1 on my wife's computer, "Isis", and got different results. I told the OpenSuSE installer to switch the drive order in the GRUB setup module. It wrote the MBR to the correct disk and generated the following:


(hd2) /dev/disk/by-id/usb-Seagate_FreeAgentDesktop_6QE12PAG-0:0
(hd0) /dev/disk/by-id/ata-ST3200822A_3LJ198NJ
(fd0) /dev/fd0
(hd1) /dev/disk/by-id/ata-WDC_WD400EB-75CPF0_WD-WMAATD486428

The relevant parts of my /boot/grub/menu.lst file (beware line wrap):

title windows
map (hd1) (hd0)
map (hd0) (hd1)
rootnoverify (hd1,1)
chainloader +1
title openSUSE 11.1 -
root (hd0,3)
kernel /boot/vmlinuz- root=/dev/disk/by-id/ata-ST3200822A_3LJ198NJ-part4 resume=/dev/disk/by-id/ata-ST3200822A_3LJ198NJ-part3 splash=silent showopts vga=0x305
initrd /boot/initrd-

The conclusion that I would like to draw from this is that the BIOS on Anubis is buggy. And maybe it is. But I am also convinced that the BIOS on Isis is buggy. I thought I had everything working on Isis, but when my wife booted up Windows, she found that the ethernet port wasn't working. After a great deal of trial and error, I found that Windows would only talk to the ethernet port if the CDROM (which I reinstalled after thinking the DVD drive was broken) was connected as master on the second IDE controller. But the BIOS will only boot off of the hard drive on the second controller if the hard drive is set as master, despite what it says in the BIOS menu that sets the boot priority. I was thus reduced to having to make a boot floppy for Isis, which even as a troglodyte, I find distasteful.

Per the GRUB manual, I made an ultra-minimalist boot floppy under OpenSuSE 11.1 on a different computer ("Athena"):

cd /usr/lib/grub
dd if=stage1 of=/dev/fd0 bs=512 count=1
dd if=stage2 of=/dev/fd0 bs=512 seek=1

This floppy has no proper file system on it, and requires someone with a cheat sheet or who actually knows what he's doing in order to use it. Even then, it's tedious. I subsequently made a nice boot floppy using "setup" from within the grub shell on Athena. I failed at first in creating the fancy boot floppy because my floppy drive didn't appear in the device.map file on Athena. (The drive was newly cannibalized from another machine. It wasn't in the BIOS boot list, either.) I used "setup" within grub to do the final successful creation. The commands were something like this:

First copy the raw stage1 and stage2 files to the floopy.

cd /usr/lib/grub
cp stage? /media/floppy/boot/grub

Create appropriate device.map and menu.lst files on the floppy:

cat > /media/floppy/boot/grub/device.map
(hd0) /dev/disk/by-id/ata-ST3200822A_3LJ198NJ
(fd0) /dev/fd0
(hd1) /dev/disk/by-id/ata-WDC_WD400EB-75CPF0_WD-WMAATD486428
cat > /media/floppy/boot/grub/menu.lst
default 0
timeout 30

title Boot from (hd0)
rootnoverify (hd0)
chainloader +1

title Boot from (hd1)
rootnoverify (hd1)
chainloader +1

Install GRUB stage1 to the floppy's boot sector using the information on the floppy:

grub> root (fd0) # Tell GRUB where to look for the /boot/grub directory.
grub> setup (fd0) # Tell GRUB where to write the boot sector.
grub> quit

I also note that Linux (on Isis) gave me this boot-time warning message:

* The chipset may have PM-Timer Bug. Due to workarounds for a bug,
* this clock source is slow. If you are sure your timer does not have
* this bug, please use "acpi_pm_good" to disable the workaround

I downloaded the pmtmr_test.c program by OGAWA Hirofumi to test for this, compiled with gcc (gcc -opmtmr_test pmtmr_test.c), ran it, concluded that Isis did not have this bug, and added acpi_pm_good to the kernel command in /boot/grub/menu.lst . This made Linux noticably faster on Isis.


What I think I have learned:

  1. The Linux kernel neither knows nor cares what the BIOS or GRUB thinks the disk order is, except when running grub-install .

  2. device.map informs the user about what GRUB thinks the BIOS is thinking, but GRUB doesn't know and doesn't really care if you tell it that the root of the filesystem is on a different disk than the kernel or initrd. I think you only need to pay attention to this file when running grub-install. It might be a good idea to write this file yourself rather than guess at where grub-install is going to put your boot sector the first time you run it.

  3. The only way this makes any sense is if the way the chainloader works is totally different from the way GRUB boots a Linux kernel. Otherwise, the BIOS on Anubis is buggy.

  4. If GRUB tries to boot a Linux kernel instead of using chainloader, the "map" commands seem to have no effect.

  5. Bad disk numbers such as (hd2,x) on a machine that doesn't have an (hd2) apparently default to (hd0,x).

Part 2: A crib sheet for installing Debian Lenny

The main problem I had with Debian Lenny was that, by default, it installs the open-source "swfdec" flash player, which interferes with the proprietary Macromedia flash player that works much more consistently. You have to uninstall swfdec, but be careful, or as a side effect, this will uninstall gnome. Also, the order in which you install some of the multimedia stuff matters.

1. If you're new to Debian, download and print the reference card. Also, I can't live without the "joe" editor, so one of the first things I did after installing Lenny was to install joe and some KDE stuff. I am just getting used to gnome.

apt-get install joe kdebase kmail kdegames

2. Download the multimedia keyring and install

dpkg -i debian-multimedia-keyring_2008.10.16_all.deb

3. Edit /etc/apt/sources.list . Here's what mine looks like (thanks to Galen Overstreet):

deb cdrom:[Debian GNU/Linux Lenny-DI-rc2 _Lenny_ - Official RC i386 DVD Binary-1 20090202-03:58]/ lenny contrib main
deb http://security.debian.org/ lenny/updates main contrib
deb-src http://security.debian.org/ lenny/updates main contrib
deb http://debian-multimedia.org/ lenny main non-free
deb http://debian.cites.uiuc.edu/pub/debian/ lenny main
deb-src http://debian.cites.uiuc.edu/pub/debian/ lenny main
deb ftp://sunsite.cnlab-switch.ch/mirror/debian/ lenny main contrib non-free
deb-src ftp://sunsite.cnlab-switch.ch/mirror/debian/ lenny main contrib non-free
apt-get update

4. I wanted to be able to play a MIDI file that is embedded in an html page. This is the place where the order in which you install multimedia stuff is important. You need to get this set up correctly before installing mplayerplug-in or possibly some totem plugins. First, install timidity.

apt-get install timidity
In konqueror, all I had to do was associate .mid with timidity when using konqueror as a file manager. However, to get iceweasel (firefox) to do this, I had to install mozplugger (while iceweasel is not running).
apt-get install mozplugger
The iceweasel/timidity combination started working immediately.

5. Now install the other multimedia stuff. Note the following articles on flash:
Also, rumor has it that there are problems if you try to use the Macromedia flash player with a 64-bit operating system. I am running 32-bit even on my 64-bit "Anubis" box, so I can't help you. Maybe you should stick with swfdec if you are running 64-bit?

Update: Galen reports success with 64-bit flash by uninstalling mozilla-flashplayer and downloading flashplugin-nonfree_2.6_amd64.deb from the "sid" repository.

For the 32-bit case, you need to uninstall swfdec, which is included as part of the gnome meta-package, without accidentally uninstalling gnome. That's what the "keep-all" command takes care of. If you installed gnash, uninstall that, too.

apt-get remove swfdec-mozilla libswfdec-0.6-90 gnash gnash-common
aptitude keep-all
Now the multimedia instructions on the Debian wiki should make more sense. These are a bit dated, though. Note the Debian home page, especially the "documentation" page. This will take you to the wiki, where you will find "software," then "multimedia," and finally the multimedia codecs page, where you will find the warning,
Do your own legal due diligence before using these.
I am not a lawyer, but my understanding is that the multimedia repository I referred to above is located in Europe because of legal issues in the US with some of these codecs. I am not advising anyone to install any of these codecs. I merely wish to point out that certain packages are available for Debian Lenny, and certain other packages that are mentioned in the multimedia wiki are either not available for Lenny or cause conflicts. Some packages, such as the kaffeine movie player, are not in themselves legally questionable, but may not be very useful without codecs that are questionable. Others, such as flashplayer-mozilla, violate the open-source philosophy that is near and dear to the hearts of many the GNU/Linux community. Some of the packages that are available, and which I believe to be mutually compatible, are:
w32codecs [or w64codecs] libdvdcss2 flashplayer-mozilla mozilla-mplayer amarok amarok-konqsidebar kdemultimedia-kio-plugins vorbis-tools toolame sox ffmpeg lame lame-extras faad totem-xine kaffeine kbd-compat mpg123 totem vlc mozilla-plugin-vlc videolan-doc gstreamer0.10-plugins-base gstreamer0.10-plugins-good gstreamer0.10-plugins-bad gstreamer0.10-plugins-ugly gstreamer0.10-alsa gstreamer0.10-ffmpeg gstreamer0.10-fluendo-mp3 gstreamer0.10-gnomevfs libsidplay1

My impression is that w32codecs and libdvdcss2 are the ones you should be most concerned about in terms of "due diligence," but again, I am not a lawyer. I don't know what most of these are for. Again, the problems I have had with Linux have as much to do with knowing what to uninstall as with knowing what to install. But disk space is cheap....

I don't know how to play QuickTime stuff.

6. I do recommend that you install the MediaWrap add-on for Iceweasel/Firefox. I also like Flashblock, but I find I have to disable it to play videos at some sites I visit often. I also installed NoScript, but find that it's too much of a pain in the butt, and leave it disabled.

7. If you have an nVidia graphics card, and want to enable 3-D acceleration (which some games require), there are instructions on the Debian wiki for installing the proprietary drivers. This will "taint" your kernel in terms of open-source purity and debugging, but that doesn't particularly disturb me. Note the nvidia-versions.sh script. I have used "Debian way" method 1 and method 2. They both worked for me, but I found the warning messages with method 2 disturbing (ie. the word, "deprecated"). I suspect that restoring the driver after a kernel update is easier with method 1. Keep a copy of your old xorg.conf file! You may temporarily have to revert to it after a kernel upgrade.

One squawk with Debian is that the default resolution I got using the "nvidia" driver was not as nice as I got with OpenSuSE. I ended up studying /var/log/Xorg.0.log and the OpenSuSE /etc/X11/xorg.conf file, and editing the Debian xorg.conf file. Later I discovered the gnome System/preferences/Screen Resolution applet. I apparently wasted a lot of time.

Galen recommends this method of installing the nVidia drivers.

8. My children like to play Runescape, which requires some Java extensions. I believe that the critical packages were

openjdk-6-jdk and icedtea-gcjwebplugin,
but again, I figure disk space is cheaper than my time, so I installed almost everything that seemed vaguely related, including:
libxt-dev ca-certificates-java openjdk-6-demo openjdk-6-source sun-java6-fonts rhino-doc ttf-kochi-gothic binfmt-support sun-java6-plugin libmyodbc odbc-postgresql tdsodbc .

Runescape now works intermittently. One user will be able to run it, but another with the same group membership won't. I suspect that there is a lock file somewhere that is not getting purged, but I haven't found it yet. I get messages in ~/.xsession-errors about "jar" and "netx".

9. You will also probably want to install ntp and ntpdate to synchronize your system clock with the rest of the world. You may need to edit /etc/ntp.conf . The changed portion of mine looks like this:

# Removed per Galen's instructions 10-02-2009:
# server 0.debian.pool.ntp.org iburst dynamic
# server 1.debian.pool.ntp.org iburst dynamic
# server 2.debian.pool.ntp.org iburst dynamic
# server 3.debian.pool.ntp.org iburst dynamic
# Added per Galen's instructions 10-02-2009:
server 0.north-america.pool.ntp.org
server 1.north-america.pool.ntp.org
server 2.north-america.pool.ntp.org


Part 3: A crib sheet for installing OpenSUSE 11.1

Don't try to do anything fancy during installation if you can help it. You can make changes later. I had better luck when I did not use "automatic configuration" during installation. I recommend KDE 3.5 (under "other") as the desktop environment. Also, I can't live without findutils-locate, so as soon as the basic installation was finished, I installed that.

The main problem with 11.1 was that, by default, it installs the pulseaudio sound system, which doesn't work. Go into YaST software management, search for pulseaudio, and uninstall pulseaudio and alsa-plugins-pulse (thanks to Sean Sullivan). YaST will automatically install the correct (ESD) replacement sound system. I still have libpulse0 installed. I don't remember why. It doesn't seem to be hurting anything.

Again, if you want to be able to play embedded MIDI files in firefox, install mozplugger before installing other plugins that might compete with it. The catch with OpenSuSE 11.1 is that I couldn't find an appropriate "rpm" binary for it, so I had to compile mozplugger myself. Go to http://mozplugger.mozdev.org/, download the current version (mozplugger-1.12.1.tar.gz) into a scratch directory, and unpack with gunzip and tar -xvf . Take a look at the README file. You will need to install timidity, the gcc compiler, and an xorg header package, which for OpenSuSE 11.1 is xorg-x11-libX11-devel . Now go into the mozplugger source directory (created by tar) as root, compile, and create a link:

make linux
make install
mkdir /usr/lib/firefox/plugins
ln -s /usr/lib/mozilla/plugins/mozplugger.so /usr/lib/firefox/plugins/mozplugger.so

Now you are ready to install the other multimedia stuff. Go to the OpenSuSE Community Restricted Formats web page. You will see some legal disclaimers similar to what was on the Debian multimedia site. If you are unfazed by the thought of being put on Santa's "naughty" list, click on the One-Click-Install link. You may have to choose the "accept change of vendor" option in order to resolve RPM conflicts due to having uninstalled pulseaudio. I don't recall any bad experiences due to "change of vendor" or "change of version" (ie. 386 version substituted for 686 version) options in YaST.

As with Debian Lenny, you will probably want the MediaWrap add-on for Firefox, and I again recommend Flashblock.

Finally, if you have an nVidia graphics card and want to enable the 3-D acceleration, go to the OpenSuSE NVIDIA page. If you aren't sure which nVidia package you need, try the nvidia-versions.sh script mentioned above in the Debian instructions (or read the Debian instructions). There are four vintages of nVidia drivers, and if I understand correctly, the very oldest set is no longer supported.

Runescape worked straight away under OpenSuSE 11.1, without my having to install any extra Java packages, but in fairness, I haven't tested it on OpenSuSE 11.1 as thoroughly as I have Debian Lenny.


Part 4: A crib sheet for installing Debian Squeeze

In early 2012, I installed Debian Squeeze (64 bit) single-boot on a reconstructed desktop, "Fawkes", with an AMD64 motherboard (and also on a 32 bit Intel laptop, "Lilith"). I chose the Gnome desktop. I don't like the new KDE desktop. On Fawkes, I chose to install the ssh server during installation, but I have not played with that yet. (Lilith needed the Intel ipw2100 wireless driver, which I had ready on a thumb drive, but the installation was over ethernet.) I still use the "joe" editor, but there are some library incompatibility issues with the "quanta" html editor, so I am using "bluefish" instead. I found the html generated by iceape composer (seamonkey) hard to read. I recommend k3b over the standard Gnome CD burner. k3b enables me to easily identify and kill a process called gvfsd-cdda, which I need to do in order to erase a rewritable CD.

apt-get install joe fetchmail k3b sgt-puzzles bsdgames kmail timidity bluefish netselect-apt

Do not install the "mediawrap" add-on for iceweasel (firefox). I still use flashblock and noscript, but I still often find myself disabling them in order to get various websites to work correctly. Do not install mozplugger.

Now for the multimedia stuff. I recently updated Squeeze on my wife's computer, "Diana", and discovered that some of this stuff has changed recently. (Diana really is multiboot, but none of it is Windows. Just pick an OS that uses GRUB2, and install that one last.) See the Debian Wiki. Go to the Debian multimedia website (note new URL: http://deb-multimedia.org/) and install the multimedia keyring (note new name: deb-multimedia-keyring). First, add the repository to /etc/apt/sources.list :

deb http://www.deb-multimedia.org squeeze main non-free

While you're editing /etc/apt/sources.list , you may want to use netselect to find some good mirrors. I ran:

netselect-apt -n -s -o OUTFILE squeeze

I edited my /etc/apt/sources.list file based on OUTFILE, and it now looks like this:

deb http://ftp.us.debian.org/debian/ squeeze main contrib non-free
deb-src http://ftp.us.debian.org/debian/ squeeze main contrib non-free

deb http://security.debian.org/ squeeze/updates main contrib non-free
deb-src http://security.debian.org/ squeeze/updates main contrib non-free

deb http://ftp.us.debian.org/debian/ squeeze-updates main
deb-src http://ftp.us.debian.org/debian/ squeeze-updates main

deb http://www.deb-multimedia.org squeeze main non-free

deb http://debian.yorku.ca/debian/ squeeze main contrib non-free
deb-src http://debian.yorku.ca/debian/ squeeze main contrib non-free
Note that I added "contrib" and "non-free" to existing entries in sources.list . (No. I don't know what I'm doing. Email me if you have helpful advice. But I don't think it's possible to go wrong by updating your repositories too often.)

apt-get update
apt-get install deb-multimedia-keyring

Accept "cannot be authenticated".

Note the Debian multimedia codecs wiki page. On Fawkes, I installed the 64 bit version (Lilith used w32codecs instead):

apt-get update
apt-get install w64codecs libdvdcss2 vlc gstreamer0.10-fluendo-mp3 gstreamer0.10-plugins-really-bad ffmpeg sox twolame vorbis-tools lame faad

I also installed flashplugin-nonfree. Note the command:

update-flashplugin-nonfree --install

Flash started working immediately, including the finicky PJTV site. There was no need to uninstall gnash and worry about thereby accidentally uninstalling gnome. Gnash is still installed, but it isn't bothering anything as far as I can tell.

Iceweasel plays midi files correctly using totem-plugin-viewer. Don't mess with mediawrap or mozplugger. Mediawrap causes totem-plugin-viewer to be started twice, and then it plays duets with itself. This is less euphonic than it sounds.

I installed ksudoku, mp3blaster, and amarok, but amarok is the only one I use.

apt-get install ksudoku mp3blaster amarok

ksudoku only seems to generate easy puzzles on Fawkes. It works fine on another machine running OpenSuSE 11.1 . kmail also annoyed me by starting a file indexing service, nepomuk, which I found mysterious. My wife isn't happy with thunderbird (she can't easily change the display font sizes), so after playing with evolution and iceape (the un-branded version of seamonkey), I have switched to evolution. It took me a while to figure out that I had to tell evolution to look for local mail in /var/mail/peter . I don't especially like evolution, and may end up going back to kmail.

On Fawkes, I installed octave3.2, octave3.2-info, and octave3.2-htmldoc (scientific programming), ntp and ntp-doc (clock synchronizer), and libsox-fmt-all (to manipulate mp3 files so I can burn podcasts to CDROM to play in my car). I also installed a hex editor for resolving mysteries involving "blank" spaces.

apt-get install octave3.2 octave3.2-info octave3.2-htmldoc ntp ntp-doc libsox-fmt-all ghex

I also installed icedtea6-plugin on Fawkes so that my son can play Runescape.

apt-get install icedtea6-plugin

It works, but the sound isn't very good. default-jre needs to be installed, and for some reason, it didn't install automatically on Lilith. On Diana, I noticed a warning that icedtea6-plugin would uninstall icedtea-6-jre-cacao . I balked. I will have my son test Runescape on Diana under Squeeze and update this cheat sheet later.

Mail configuration: I like to use "mail" from the command line, so I have to configure the exim4 mail transport agent. See the Debian on-line installation manual.

dpkg-reconfigure exim4-config

I added the line: smtpauth.earthlink.net:username@earthlink.net:password to the /etc/exim4/passwd.client file. See /usr/share/doc/exim4-base/README.Debian.html#smtp-auth .

I also edited /etc/email-addresses, adding a line for each user on Fawkes. See exim4-config_files . Each line looks like this:

root: username@earthlink.net
peter: username@earthlink.net
I also added everyone to the "mail" group in /etc/groups so that fetchmail can create a lock file when transfering mail to a mail client). I copied the .fetchmailrc file from my old partition. It still works.

I have not tried to install the proprietary nVidia drivers on Fawkes. There is a Debian wiki on the nVidia drivers, but Xorg (formerly xfree86) has been changing so fast that I don't even know where the configuration files are anymore, and the wiki seems to be out of date. The new default "nouveau" driver seems to be working well enough (as did the old default "nv" driver). I would need to use the proprietary driver to use games like the gl-117 flight simulator, which require 3D accelerated graphics. This is a relatively big deal. The Linux kernel needs different boot settings (the new default) for nouveau than for nvidia. In the "Troubleshooting" section of the wiki page, it explains the need to pass the kernel a special "nomodeset" instruction to use the nv or nvidia drivers, but nouveau won't work with "nomodeset". I'm sitting this out for now.

Incidental things: I added the local IP address of my router to /etc/hosts . I also listed this IP address as a nameserver in /etc/resolv.conf , but I don't remember why. I also installed iceweasel-l10n-zh-cn and iceweasel-l10n-zh-tw in an unsuccessful attempt to get Chinese characters to display correctly on some web page. I installed koffice in order to recover information from an old archived spreadsheet (now I use OpenOffice.org Calc). Finally, I installed a periodic table program, gperiodic, and some image manipulation programs, gthumb, and photon. photon is useful for making thumbnails of photos.

Do not install gthumb. It has an incompatibility that will uninstall gnome and gnome-desktop-environment. I wasn't paying attention when I installed it on Fawkes, but noticed the warning when I started to install it on Diana. Fawkes seems to be fixed now (I purged gthumb and re-installed gnome and gnome-desktop-environment).

I had to install the ttf-wqy-microhei package to get Korean and Chinese fonts to display correctly.


Part 5: Comments on OpenSuSE 12.3 and 13.1, Debian Wheezy, and Mageia 3

I have been playing with a couple of old desktop computers, "Igor" and "Fawkes". Both of these have nVidia 6xxx video chipsets and old CRT monitors with VGA connectors. I've been using Debian Squeeze ("old stable") on Fawkes for normal computer usage, and Easy Peasy on an old Asus EEE notebook. I'm looking for something better supported but lightweight to run on the notebook, something full-featured and easy to maintain for my wife's desktop, something that will run my son's Java-heavy web-based Runescape game, and something fun for me to play with.

OpenSuSE 12.3 seemed to work fine on Igor, except that every time I logged out, KDE4 crashed with a "segmentation fault" (signal 11) error message. It also ran Runescape, but I don't remember the details. Wheezy (dualboot) worked under the old Gnome environment, but not the new one. I don't remember the details, but the icons and pop-up menus were unreadable under Gnome 3. I haven't played with it much. I haven't tried to get Runescape working. I was shocked, however, to discover that the open-source flash player, "gnash", seems to work.

I overwrote OpenSuSE 12.3 with 13.1, hoping to get rid of the segmentation faults and to go longer before the next upgrade. Unfortunately, KDE4 behaved like Gnome 3 under Wheezy. The icons and menus were unreadable. However, IceWM worked, and it would run Runescape.

Next I overwrote OpenSuSE 13.1 with Mageia 3. This was the 32 bit KDE version installed off of the live CD. This was supposedly KDE4, but it looked like KDE3 to me (which I liked better), and it seemed to work fine once I completed the online updates. I tried installing icedtea, but failed to get Runescape working.

It was time to experiment with OpenSuSE 13.1 (x86_64) on Fawkes (dualboot), with KDE4. Again, IceWM worked. This time, when I tried to log in to KDE4, the monitor wouldn't sync, and it wouldn't respond to being zapped with cntl-alt-backspace or switching to a different virtual console. I rebooted, logged into IceWM, and went to the nVidia driver install web page. I was afraid to use the one-click install because I was running IceWM, not KDE, but the zypper install method worked fine. If I recall correctly, there was a release note that said you have to add everyone to the "video" group in order to use the nvidia driver, which I did. I rebooted, and now KDE4 works fine. I installed icedtea, and now Runescape works, too.

Again, you will want the Restricted formats page, and if you have nVidia graphics, you will most likely need the proprietary drivers page. If I recall correctly, you install flash from within YaST, like a regular software package. There is also a web page with 1-click install buttons.

I had to install some kde extension package to get Juk working properly. I don't like Thunderbird; I can't figure out how to turn off html.

Update, 4-30-2014: Link rot. See the Unofficial Guide Multimedia Codecs page. Look here, too (Gnome tool).

Update on UEFI, 5-8-2014: I recently added a hard drive and installed OpenSuSE 13.1 on a new computer that came with Windows 7 installed. The OpenSuSE installer decided that this was a newfangled UEFI computer, and that it needed to partition the hard drive, format it, and install the GRUB2 boot manager accordingly. The GRUB2/UEFI configuration requires the boot manager to be saved in a special FAT partition (readable by the BIOS) mounted as /boot/efi . The disk apparently has to be formatted with a new style partition table that allows lots more primary partitions, but is not compatible with the old kind that has a Master Boot Record (MBR) stored in it. I balked, disconnected the Windows drive, and then allowed the installer to do as it pleased, figuring that I would add Windows to the GRUB2 boot menu later.

It turns out that Windows was installed using the "legacy" BIOS arrangement. I don't know why the OpenSuSE installer seemed to insist that I had to use UEFI. Maybe it has to do with UEFI appearing before legacy in the BIOS boot order, and the DVD drive showing up as a UEFI-bootable device? Maybe I overlooked some option in the installation process? I don't want to know badly enough to redo the experiment.

But in any case, I wasn't able to add Windows to the GRUB2 boot menu. It turns out that once the boot process starts down the UEFI path, there is no way to boot using a conventional MBR. This was confirmed by a SuSE employee I know on Facebook.

This is not a disaster. I can still read data from the Windows disk once Linux is running, and read and write to a FAT32 data partition on the Linux drive from Windows. The computer will boot into Windows by default, but I can boot Linux by hitting escape during the early phase of bootup and going through a BIOS menu to find the GRUB executable.

As a side effect, I found a web page that purported to tell me how to control the frequency with which GRUB uses the fancy penguin animated boot menu background. Alas, this seems to be an obsolete GRUB legacy feature. That, or it simply wasn't included in OpenSuSE 13.1 .

The main moral of the story seems to be that if you want to dual boot Windows and Linux, you're extremely likely to want to have at least two hard drives. The secondary moral is that having a motherboard with UEFI support greatly reduces the importance of the lack of good documentation for GRUB.

That is not unbootable which can undocumented lie,
And with strange aeons even GRUB may die.

Dark Mark (Halloween, 2007)
The Gesargenplotzian Gospel