Monday, December 8, 2008

Using 32-bit applications in 64-bit Debian with chroot

Some time ago I switched to 64-bit Debian on my desktop. I used to be scared off by the fact that certain, important applications were not yet available in 32 bit, such as Adobe's flash player. With some workarounds some of these programs are workable in 64 bit, for example nspluginwrapper uses the 32 bit version of flash and forces it to play nice with your 64 bit browser, with moderate to good success. (Adobe also just released their alpha version of 64 bit flash for Linux, but it kept causing my browser to crash.) For other programs, though, there is no way to run them effectively (or at all) in 64 bit. Until recently there were very few programs I wanted in this category (really, only TweetDeck, a twitter application on the Adobe AIR interface), but suddenly there have been a few more programs that I wanted/needed that are only available in 32 bit versions. The solution? Run them in 32 bit using a chroot! A chroot is sort of like a disk within a disk. It is often used for testing so that developers can test a program without it destroying the filesystem on their machine. Here, we are using it to install a 32 bit Debian inside a 64 bit Debian. This process is also possible to do on Ubuntu, with slightly modified commands. *Note, most of this comes from this page, but I have cleaned it up, fixed some typos and, in my opinion, made it easier to understand.

Step 1: Set up the base file system
First you need to set up the base file system. This is going to install a very minimal version of 32-bit Debian Sid inside your 64-bit Debian install. So first, make a directory for this second install and then use debootstrap to install (as root or with sudo):
mkdir /var/sid-386-chroot
debootstrap --arch i386 sid /var/sid-386-chroot http://ftp.debian.org/debian/

This will download a number of packages for the chroot and install them. Depending on your internet connection this may take a little while. When it is all done you should see that you have a whole file system inside /var/sid-386-chroot, similar to your main file system.

I am not entirely sure what the next steps do, but the howto I followed states that you have to add the library path of your chroot to your ld.so.conf, and you need a link to your 32 bit linker in the /lib path. In any case, what you need to do is add the following lines to /etc/ld.so.conf:
# chroot i386 system libs
/var/sid-386-chroot/lib
/var/sid-386-chroot/usr/lib
/var/sid-386-chroot/usr/X11R6/lib
/var/sid-386-chroot/usr/local/lib

Then you need to run these commands in the terminal:
cd /lib
ln -s /var/sid-386-chroot/lib/ld-linux.so.2 ld-linux.so.2
ldconfig


Step 2: Set up the chroot to run alongside your 64 bit install
For your 32-bit applications to work just like they were on your 64 bit install, certain parts of your 64 bit install have to be accessible to your chroot (normally, a chroot can't access anything outside of the chroot. It's called a chroot jail and it is why developers use chroots to test programs.) For this, we use what is called a bind mount, which is used to mount a directory, such as /home, to the home folder inside the chroot. There are a few folders which should be mounted in the chroot, and this can be done by modifying the /etc/fstab file and adding the following lines at the bottom:
/home /var/sid-386-chroot/home none bind 0 0
/tmp /var/sid-386-chroot/tmp none bind 0 0
/proc /var/sid-386-chroot/proc proc defaults 0 0
/dev /var/sid-386-chroot/dev none bind 0 0
/usr/share/fonts /var-sid-386-chroot/usr/share/fonts none bind 0 0

It is VERY IMPORTANT to note that now that these folders are bound to their locations on your main file system, if you ever decide to delete your chroot, make sure that you unmount these bind mounts or else you can end up erasing these folders on your main file system. Also make sure that there are directories for each of these mounts. The only one you should end up having to make is /media/cdrom0. Then mount them:
sudo mkdir /var/sid-386-chroot/media/cdrom0
sudo mount -a

If all went well you should get no error messages and these locations will be bound to their counterparts in the chroot.

Lastly, you need to make sure that all of the users on your machine also exist in the chroot. This can be done by copying certain files to the chroot:
# sudo cp /etc/passwd /var/sid-386-chroot/etc/
sudo cp /etc/shadow /var/sid-386-chroot/etc/
sudo cp /etc/group /var/sid-386-chroot/etc/
sudo cp /etc/sudoers /var/sid-386-chroot/etc/
sudo cp /etc/hosts /var/sid-386-chroot/etc/


Now you should be able to enter the chroot and run programs from within. To get into the chroot (which you must be root to do) you can type:
sudo chroot /var/sid-386-chroot

Now you can run commands. Try out a command or two. Keep in mind that the chroot is a brand new Debian install, so most of the programs you use will not be installed yet. For example, if you try running gedit, it won't run because gedit is not yet installed in the chroot. You can install it and other programs with apt-get or aptitude just like in your 64 bit install. Should you ever want to exit the chroot, simply type "exit"

Step 3: Installing your 32-bit applications
Anything in the Debian repositories is as easy as entering the chroot and installing it via the apt-get or aptitude command line. Keep in mind that since it is a different install you will have to add contrib and non-free to your sources.list file if you want to use those repositories. Downloaded .deb files are a bit tougher. Download them to your home directory and install them with dpkg -i (from within the chroot), for example, if you wanted to install skype (a 32-bit only app), download it, navigate to the directory where you downloaded it in the terminal, and type:
dpkg -i skype-debian_2.0.0.72-1_i386.deb
. This method is a bit more tedious because, since the chroot is a brand-new, minimal install, there are most likely a host of dependencies that are not installed yet. This means that it will come up with all sorts of errors about dependencies. For each dependency that it is lacking, use apt-get or aptitude to install them.

You may also get a lot of errors about locale settings. To fix this, I had to install locales and reconfigure it:
sudo apt-get install locales
sudo dpkg-reconfigure locales


You should now be able to run your 32 bit application from within the chroot. (Note: TweetDeck did not function properly until after the next step, but other applications ran okay.) In this example, while in the chroot simply type "skype" into the terminal and skype will launch.

Step 4: Make it work seamlessly from your 64-bit install.
So you got your application up and running, but as you are probably already thinking, entering the chroot and running the application is rather tedious. So the next step is to work up a script that will load it in one fell swoop. First, make sure you exit the chroot and install dchroot, which will allow you to run programs installed in the chroot from your 64-bit Debian.
sudo apt-get install dchroot

Now you need to edit (or create) /etc/dchroot.conf and add:
# sid386 chroot
sid386 /var/sid-386-chroot

This essentially names the chroot and defines where it is located, so that dchroot knows where to look when it is run. Now you should be able to launch skype using dchroot without having to enter the chroot itself by running the command:
dchroot -c sid386 -d skype

To make life even easier, we can write a simple script to call that command whenever we want to launch Skype. While you could certainly write a script to specifically launch Skype, it would mean that you would have to make a new script for every 32-bit application you install. Instead, we are going to create one universal wrapper script. Make the following script called /usr/local/bin/do_chroot:
#!/bin/sh
ARGS=""
for i in "$@" ; do
ARGS="$ARGS '$i'"
done

exec dchroot -c sid386 -d -q "`basename $0`" "$ARGS"

I am no scripting expert, but basically what this script does is it uses the name of the script to determine what program to run from the chroot, and will also take any arguments given and append them to the end of the dchroot command. Make sure it is executable ("sudo chmod 755 /usr/local/bin/do_chroot"). Now, make a link to the script called "skype" in /usr/bin:
sudo ln -s /usr/local/bin/do_chroot /usr/bin/skype

This script is slick in the fact that it will use the name of the link in the script to run the whatever program the link is named after. This means that when you make your link, make sure it is typed exactly as it needs to be to launch it in the chroot (So, in this example, make sure it is "skype" and not "Skype" or "launch_skype" or anything else. Just "skype".) If all has worked correctly, all you have to do now is type "skype" into the terminal to launch the 32-bit only Skype!

Conclusion
It is a little bit of effort to set up, but after the chroot is set up, new 32-bit applications can be installed by entering the chroot, installing the application, exiting the chroot, and linking to the do_chroot script. Using this method, I have installed and use the following 32-bit only applications:
  • Skype
  • TweetDeck (which uses the Adobe AIR environment, currently only for 32-bit)
  • SwiftFox (The 64-bit Flash Player alpha kept crashing IceWeasel so I switched to SwiftFox and a 32-bit Flash Player)
  • Amazon.com MP3 downloader

Monday, November 17, 2008

Ubuntu on the Toshiba Satellite L305: Howto

EDIT: If you are having the problem with the omnibook module starting up your computer after shutdown, install the latest version of Ubuntu (9.04) and follow the directions in my newer post here.

I decided to upgrade from Ubuntu 8.10 32-bit to the 64-bit version on my Toshiba Satellite L305. While going with the 64-bit version came with its own set of difficulties, the need to reinstall made me realize one important thing about installing 8.10 (rather than the beta I did before) on this laptop: it no longer comes with the kernel modules needed to run the fan or the brightness buttons.

This is extremely important because if the fan doesn't work, the processor will overheat.

The problem stems from the fact that without the module, the fan will not change speeds as the computer heats up. When the computer first boots, the fan does not turn on immediately, causing the fan to never turn on. If you run the computer for a while and reboot, you will notice the fan running at full speed nonstop.

The following is a guide to installing what is needed to get your Ubuntu install running as it should on the Satellite L305.
Step 1: Download and install.

Download and install your desired flavor of Ubuntu (Ubuntu/Kubuntu/Xubuntu) in the 32 bit or 64 bit version (the 64 bit version takes a bit of work to get set up, so only use the 64 bit version if you are prepared for a little work,) EDIT: After beating my head against it for quite a while I would suggest against installing the 64 bit version. I ended up going back to the 32 bit version. If you have installed Ubuntu before you know the drill, if not, follow the prompts the installation gives you. And though it is less pretty, I recommend the alternate (non-graphical) install, because I have had less luck with the live cd install.

Step 2: Install omnibook module.

Older Toshiba laptops use their own proprietary bios that required the toshiba_acpi module to be compiled with the kernel. Toshiba now uses the Phoenix bios, which means that this has to be done another way, which is a bit deceptive. You have to download the omnibook module (Omnibook is actually an HP model laptop) which will allow these functions. You can download the module source package here: http://packages.kirya.net/debian/pool/main/o/omnibook/omnibook-source_2.20070211+svn20071217-1_all.deb Edit: The omnibook-source package has been updated, which broke the link. Updated versions of the omnibook-source can be found at http://packages.kirya.net/debian/pool/main/o/omnibook/
Install the source, extract it, install dependencies, and install the module in the terminal:

sudo dpkg -i omnibook-source_2.20070211+svn20071217-1_all.deb
cd /usr/src
tar -xvf omnibook-source_2.20070211+svn20071217-1_all.tar.bz2
cd modules/omnibook
sudo apt-get install build-essential linux-headers-`uname -r`
sudo make install


The install may say it lacks a few other dependencies which can be installed with apt-get. Once the source is installed, the module should be able to be loaded, however it needs a special argument when it is loaded or else it won't work.

sudo depmod -a
sudo modprobe omnibook ectype=11


If everything was set up correctly, you will most likely hear your fan kick on and the screen brightness change. You can now change the brightness with the function keys, and the fan will start up when you turn on the laptop. Make sure the module loads when you boot by adding "omnibook ectype=11" to the bottom of your /etc/modules file.

Step 3: Wireless
If you have the Atheros wireless card (I am not sure what other options the L305 can have) you can go about wireless two ways, madwifi drivers or ndiswrapper. Ndiswrapper is the required method if you go with 64 bit, so that is the method I went with, though I would recommend either madwifi for the 32 bit install. Install ndiswrapper:
sudo apt-get install ndiswrapper-common ndiswrapper-utils-1.9 ndisgtk


Ndiswrapper is a wrapper application for windows networking drivers so that they can be used on Linux. This means that for it to work, you need to also get the windows drivers. The 64 bit drivers can be found at http://blakecmartin.googlepages.com/ar5007eg-64-0.2.tar.gz, or the 32 bit version can be found at http://blakecmartin.googlepages.com/ar5007eg-32-0.2.tar.gz. Unzip the files from the file and start ndisgtk from the terminal (open the terminal and type "sudo ndisgtk"). Click on "install new driver" and navigate to the folder where you unzipped the drivers. Select the file ending in .inf and then install it. Make sure ndiswrapper is loaded:

sudo modprobe ndiswrapper


You should also blacklist the module that tries to load for the wireless drivers by adding the following to /etc/modprobe.d/blacklst

blacklist ath_pci


You should now have wireless internet access. One caveat is that for reasons that are unknown to me, the module has trouble connecting sometimes on boot. If it keeps saying it is getting disconnected, or if it keeps asking for the passphrase when you know it is right, you need to remove and reload the module:

sudo rmmod ndiswrapper
sudo modprobe ndiswrapper


This should cause the wireless device to play nice and allow you to connect. For now, it is the best solution I have as I have yet to find a permanent fix.

Sunday, October 26, 2008

Ubuntu on Toshiba Satellite L305

I've noticed a sudden increase in traffic to my little blog, most of which is coming from Google searches pertaining to the topic of installing Ubuntu on the Toshiba L305 (somehow it seems that my post about installing DEBIAN on the laptop found its way to the top of Google's search.) But, Google searchers, you happen to be in luck, for after my failure to install (an adequate version of) Debian on my L305, I decided to go back to Ubuntu on my laptop.

If you are installing Ubuntu 8.04 (Hardy Heron) the system will hang in a few spots but eventually show a bright red screen saying that it can't detect any network devices. This as it turns out is the exact problem I had trying to install Debian. The reason this happens is that the network devices in the L305 were unsupported at the time of Hardy's release. This will cause the installer to pretty much refuse doing the rest of the install in my experience.

The good news is that these drivers will be fully supported in the upcoming release 8.10, Intrepid Ibex. The even better news is that as of this writing, Intrepid is a mere four days away from launch. (Intrepid will be released on October 30th.) If you absolutely cannot live with Windows Vista for four more days, and are willing to try Intrepid before it is fully finished, you can download the latest release candidate off of the Ubuntu website. I have been using the release candidate for the past week and a half and have had no major problems, but do be prepared for a less-than-perfect install (I have had my fair share of minor problems). If you are still a little new to the Linux world, I'd suggest waiting out the four days and downloading the finished product. If you are wanting to download Hardy for the fact that it is the Long-Term Support (LTS) release, then I don't really know what to tell you.

The other good news is that having used Ubuntu 8.10 for the last week and a half, I can tell you that it is yet another good release by the Ubuntu team.

Monday, October 20, 2008

xvinfo: No Adaptors Present and a curious fix for fglrx

A few days after installing Debian, VLC media player stopped playing video. This launched a whole crusade to get the damned thing to work. And it wasn't easy. The following is using the fglrx ATI proprietary drivers and ONLY applies to these drivers. I am using the Radeon X1950.

To cut a long story short, after a lot of web searching and trial and error, I found the problem: my Xvideo stopped working. This was tested by typing "xvinfo" into the terminal. A healthy output would look something like this:

X-Video Extension version 2.2
screen #0
Adaptor #0: "ATI Radeon AVIVO Video"
number of ports: 4
port base: 131
operations supported: PutImage
supported visuals:
depth 24, visualID 0x23
depth 24, visualID 0x24
depth 24, visualID 0x25
......

And go on for quite a while (This only the first ten lines of the output when I run xvinfo.)
An unhealthy xvinfo output (and the problem I was experiencing) looks like this:
X-Video Extension version 2.2
screen #0
no adaptors present


The problem with this is that I have yet to find a decent solution to "no adaptors present." I have looked and looked and looked and found very little. For one thing, if you are having problems with xvideo with fglrx, first try running (either as root or with sudo)
aticonfig --overlay-type=Xv

I have heard that for some cases this is the fix. Which is good because it is easy. But, for me, it didn't work.

After reconfiguring every option I could think of in my xorg.conf and breaking X half a dozen times, reinstalling the fglrx drivers from both the Debian repos and the binary from ati.com and breaking X half a dozen more times, the problem quite suddenly fixed itself. These are the steps that I did immediately before. I am making no claim that this will fix anything, and cannot actually describe what happened during these steps that made my xvideo work again. I say this because really, for all I know, the great Debian gods intervened and fixed it with magic. I really don't know why or even if this fixed my problem, but if you are desperate like I was, you never know. Just remember, you are trying it at your own risk.

First I downloaded the latest version of the proprietary ATI drivers. These can be found on ATI's website.

Second, I downloaded this script that I found on the Debian forums.

Third, I quit gdm and drop down to a console. This is required, the script will not run if you have any running X sessions. Then I navigated to the folder I saved these files in and (as root) ran the install script (install-fglrx-debian.sh). This will do quite a bit (and if you know your way around scripting maybe you could open the script and see. I really don't know what it did.) All I know is that it downloads a few files from the repos and installs them, downloads the ATI binary (the I already downloaded, but I'll need that one in a few minutes), and generates a package to install, then installs it. The problem with this script is that it breaks X. Why? I think it has something to do with the fact that it generated a package for me that was for Ubuntu. Whatever the case, when the script finished I tried to load up gdm and it failed.

Fourth, going back to the console, I ran (as root) ATI's file (ati-driver-installer[version number]-x86.x86_64.run) and it reinstalled the ATI driver. When gdm successfully started again, out of curiosity I ran xvinfo, but this time with success! I don't know what it did behind the screen, but suddenly I have xvideo again. I don't think it was anything in my xorg.conf (which was regenerated during this process, so back up first!) because I have nearly identical files before and after. Your best guess is as good as mine, but I've decided not to look a gifthorse in the mouth. If you are running compiz fusion, you may have to disable it to watch videos without flickering. For easy switching on/off I recommend installing the package fusion-icon and making sure it starts at boot. It makes an icon on the panel that right-clicking will allow you to switch on/off compositors and window decorators.

Thursday, October 16, 2008

Debian Lenny on Toshbia Satellite L305, or A comedy of errors

I got a new laptop a few days ago, the Toshiba Satellite L305. It's pretty cool. My first goal with it was to split the default Vista partition in half and dual boot Vista/Debian. Dual booting if only so I can run Photoshop and the like on the Vista side. Plus, I suppose it wouldn't hurt to actually dive in and see what all the anti-Vista stuff is about.

Step one: Repartitioning
Vista claims it is easy to shrink a partition. No, it is not. The shrink partition dialog kept insisting that only 7GBs could be pulled out of the partition. There were a bunch of steps I found online that required disabling system restore, page file, etc. etc. but even after all that I could only get 7GBs out of it. The solution was to use the Gparted Live CD. I ended up having to download a new version because the old (and it wasn't even THAT old) version couldn't load the hard drive. I shrunk the partition in half, and formatted a few ext3 partitions and a swap for my impending Debian install. After shrinking the partition I ran the Vista recovery CD to regenerate the Master Boot Record. This is *required* to boot back into Vista (at least before installing grub.) I did this anyways in case I couldn't successfully install Debian, and also just to make sure the grub installation found Vista.

Step Two: Getting the right Debian installer
I happened to have a CD of Debian Lenny beta 2 from my desktop's install, so I threw it in and went to install. The problem was that the installer couldn't detect some of the hardware. After a lot of research, I discovered that the hardware in specific was my network adapters. I tried downloading a weekly build CD overnight and that could not detect the hardware either. Turns out the solution was to boot the net installer from a USB drive. The instructions came from a wiki entry on how to install Debian to an Acer Aspire One, as it has the same two network interfaces as the L305.

First download the boot.img.gz and the daily build of the netinst.iso.

Insert the USB drive (with at least 256MB) and find it in /dev. Make sure this is the right device, or you might lose information on your other drives. Mine, for example, was /dev/sdc. Make sure any files are backed up, as this will erase anything on the drive. As root, run the command
zcat /path/to/boot.img.gz > /dev/sdc
Then mount the flash drive and load the netinst.iso onto the drive.

Step Three: Install Debian
With the bootable USB drive, I was finally able to install Debian. Put the USB drive in, turn the computer on and press F12, which will then display different devices to boot from. Pick USB Memory, and the Debian installer should boot. Though the network devices will be found, they may not be usable unless you install with acpi turned off. I forget the exact way to do it, but the help, boot options menu gives an example that happens to exactly what we need (I think it is "acpi-off", though the Aspire One page says different.) The Debian install will now commence flawlessly. You should have a wired connection during this isntall, because the WiFi won't work right away, and since it is the net installer, a functioning network is extremely important.

Conclusion
The downside to my (eventual) Debian install is that perhaps through problems with install (perhaps turning off acpi during install?) or perhaps with problems with me, I can't access any of the power fucntions a laptop really need (batery power, CPU scaling, etc.) So while I was successful eventually, all was perhaps for naught. If you successfully install these thigns on the Toshiba Satellite L305 let me know, but for now I'm going to try out Ubuntu (8.10 beta) to see if it configures anything better for me.

Monday, October 13, 2008

apt-get problem: The package index files are corrupted

My computer crashed today, due to the fact that I was testing my media server and foolishly tried to play a video through VNC. Silly me. Nothing worked short of a hard reboot.

When I started up my system again, the box popped up saying that there were updates ready to install. Since I like doing things via the command line, I did an apt-get upgrade and it didn't find any updates. The box down in the corner clearly stated that there were 4 updates to install, but they didn't show up anywhere. Later I tried to install easytag (a fantastic GTK+ based audio file renamer/tagger) and got an error:
...The package index files are corrupted...
What that meant I wasn't sure, and a lot of google searching yielded a lot of people with the problem with very few results. Certain things would install fine but others would give the same, scary sounding error. I found one source that even attempted to provide a solution other than "try 'apt-get clean'!" on the Ubuntu forums.

The solution provided sounded a little drastic, but they worked:
sudo rm /var/lib/apt/lists/*
sudo aptitude update
Rather than actually delete anything I opted to move all of the files in /var/lib/apt/lists/ to a temporary folder. This only caused the problem that there is a folder in there called "partial" that will be moved with the mv command that you have to move back to the original directory, or else you will get an error saying that the folder doesn't exist. After that, apt-get update rebuilds the previously corrupted index and installing programs works again. After doing this, my four previously invisible updates showed up and were upgraded no problem.

Thursday, October 9, 2008

LIRC - Linux Infrared Remote Control, Debian, and the remote wonder

I have installed my Ati Remote Wonder four different times now (twice on my media server, once on Ubuntu, and once just now on Debian), and each time it proves most problematic every single time. I think the problem arises from the driver setup for the remote itself. I found a few resources that managed to walk me through the process in setting up my remote again.

First I installed lirc via apt-get:
sudo apt-get install lirc lirc-modules-source
*note: I actually installed lirc-modules-source later, based on the steps at http://www.mythtv.org/wiki/index.php/LIRC_on_Debian_Etch

This installs lirc, which will then try to run automatically. It will fail. Next I extracted the source I just downloaded
cd /usr/src
tar -xvzf lirc-modules.tar.gz
Then I followed the commands from the aforementioned link: (*note, you need the package module-assistant to continue)
apt-get install kernel-package
m-a update,prepare
dpkg-reconfigure lirc-modules-source
m-a a-i lirc
dpkg -i /usr/src/lirc-modules-*.deb
modprobe lirc_i2c
If you look at the instructions from the link, it explains in more detail what these commands do, but basically this is making the module that lirc needs to set up the device in /dev. If you are following along on the instructions, it then asks you to start lirc, but it is not going to pick up the remote wonder just yet.

The second set of instructions are from http://www.mythtv.org/wiki/index.php/ATI_Remote_Wonder. There is no Debian-specific instructions, so I had to wing it. I first had to blacklist the ati_remote module that is installed with lirc. Simply add "blacklist ati_remote" (without the quotes) to the bottom of /etc/modprobe.d/blacklist. After blacklisting ati_remote, you should be able to see the correct module lirc_atiusb by typing:
lsmod | grep ati
It was then possible for me to run irrecord to record the buttons on my remote. Alternatively, the second link provides an lircd.conf file for the remote wonder. Though if you download their file, they say to put it in /etc/lircd.conf, but it won't run unless you put it into /etc/lirc/lircd.conf. Finally, lirc is ready to run.
sudo /etc/init.d/lirc start
(If it still doesn't start, you may have to edit the /etc/lirc/hardware.conf file, change DEVICE="" to DEVICE="/dev/lirc0" and that should fix it.)

Running the command irw will let you test the remote. Type "irw" and then hit buttons on the remote, and you should see them register in the terminal. If the remote is set up correctly, you are then free to edit your ~/.lircrc file to make it function in whichever program you want. Personally, I use it with my favorite music player, Amarok, to play/pause or skip songs, and amixer to change my system volume.

Wednesday, October 8, 2008

Background

A new blog. I made this blog to have a place to write about my adventures with installing and using Linux, away from my personal blog so that readers there can stop being bombarded by increasingly geeky and increasingly technical posts about an operating system they probably don't care about. In some ways, writing about setting up Linux is for my own purposes to catalog what worked, what didn't, and what killed my system. But if you are a user of Linux I would hope that you might glean a tidbit or two of knowledge from reading this. Keep in mind that I am still somewhat of a Linux newbie though.

Background

I started dabbling in Linux with the Ubuntu 6.10 live CD, and eventually decided to dual boot Ubuntu/Win XP on my desktop. After the release of Ubuntu 7.04 finally made the WiFi card on my laptop usable I took a leap of faith and wiped Windows entirely from my laptop. As time progressed I found myself using Linux way more often than Windows, and have reached the point that if I did not need Windows for some of my graphic design work (I am currently a computer graphics student) or for some of my games (I'm also a gamer) I would be happy never using Windows again.

Less than a week ago I decided to make another bold switch: I took out my hard drive with Ubuntu (now upgraded to 8.04) on it and put in a new drive and installed Debian Lenny on it. This has been an adventure all its own, and I now know first hand why many people lable Ubuntu a "noob distro," alternatively, "N00buntu." (I would like to say that I still consider Ubuntu a fine Linux distrobution, and if you are looking into entering the world of Linux I highly reccommend Ubuntu.) While Debian was definitely much harder to set up (it took me a few days to isolate some of the random problems that arose) I am in love with it so much more than Ubuntu.

Pros of switching to Debian (for me):
  • The fglrx (Proprietary ATI Radeon) drivers from the non-free repository work flawlessly. On my Ubuntu setup, after going through all the problems involved in setting up my fglrx drivers to play nice with Compiz-Fusion, video files would flicker when played (at first no matter what, later only when not in fullscreen.) In Debian this works beautifly.
  • Flash no longer crashes Firefox. Ever since Ubuntu 8.04 was released, every now and then a website would try to load some flash video and Firefox would just disappear. Flash took me a while to figure out, but the solution was simple: Download Flash player 10 beta (which incidentally also crashed in Ubuntu). 10b works with PulseAudio so I no longer have audio conflicts, and the pesky incorrect layering problem I have always experienced in Linux is gone. Flash has never worked better for me in Linux than it does right now.
  • It is just plain faster. One of my complaints with Ubuntu's 8.04 release is that it bogged down terribly. Debian boots faster, loads the desktop faster (even with Compiz-Fusion enabled), and loads programs faster. It is just faster all around, most likely because, as most user-friendly operating systems are wont to do, Ubuntu is accumulating quite a bit of bloat, and Debian is still nice and lean.
  • I am learning MUCH more about the workings of a Linux system because I have to know why things keep failing (mostly because I failed at it in the first place, but not always) or how to set it up myself. Though toward the end of my Ubuntu days I was using the command line more often than not, I never realized how much Ubuntu was still doing things for me behind the scenes (still not to the extent of Windows)
Cons of switching to Debian:
With all that said, the switch to Debian hasn't been all puppies and sunshine. There have been (and I expect, will be) problems.
  • There is an increase in the need to know how to install things from source. While Debian has an awe-inspiring amount of packages in its repositories, even in Lenny (testing) many of the packages are more out of date than I need. For example, GNOME Do is, as of this writing, still at a rather unusable 0.4.x, meaning that I had to install version 0.5.99 myself from source. And due to some of the odd dependencies, it wasn't exactly easy. When I last installed GNOME Do on Ubuntu, the (third party) repository was using version 0.6.0.
  • Things break. One of the inevitabilities of using the testing version of Debian is that things are going to break from time to time. I was having an odd problem with memory leaks causing skipping and eventually crashing in Pulse Audio (which I am using for Amarok). Scrolling down a page on Firefox could eventually cause Pulse Audio to crash entirely, meaning that my music stopped and I had to go into the terminal and manually restart the Pulse Audio daemon. It turned out that reverting back to the 2.6.14 kernel seems to stop this from happening, but I spent a few hours trying to figure this one out.
In any case, I have gotten it to the point that it is running stably and I feel comfortable using it as my main OS again. I still have a few things to fix but overall it is running well.