I swear that I’ve encountered this before…
That is all.
I swear that I’ve encountered this before…
That is all.
A little while ago, I wrote about problems that I was having with my laptop not resolving DNS requests. After I restarted today (because X11 crashed, but that’s a whole other can of worms), it started happening again, even though I had fixed the problem once before. Turns out that the big warning banner at the top of the resolv.conf file was relevant, and that my changes were eventually lost, just not on the first reboot.
So I moved back to my Windows machine for a few minutes to hit up the #debian IRC channel, where I explained my issue and what I had done to solve it last time. Luckily, somebody there presented me with a new solution to the issue that should persist restarts. Instead of making edits directly to resolv.conf, I was instructed to add a prepend line to the /etc/dhcp3/dhclient.conf file:
#add a prepend line to fix DNS issues
prepend domain-name-servers 22.214.171.124;
Where the IP address is the IP of your DNS server (OpenDNS, in my case). After saving the file, I ran
to apply the changes and restart the DNS lookup service thinger. I know that doesn’t sound very technical, but I honestly don’t know anything about the part of the network stack in Debian is responsible for DNS lookups, aside from the fact that it may or may not be called resolvconf, so you’ll have to live with it.
In any case, this seems to have worked quite well, so check into it if you’re having problems resolving DNS addresses on your machine.
Given the problems that I’ve been having lately with getting my Blackberry calendar and contacts to synchronize with anything in Linux, I was quite surprised when I almost got it working tonight. Forgetting everything that I’ve learned about the process, I started over, following these helpful tutorials and working through the entire install from the beginning. Unfortunately, aside from some excellent documentation of the install process (finally), the only new idea that those blogs provided me with was to try syncing the phone with different pieces of software. Specifically, Chip recommended KDEPIM, although I opted to jump through a few more hoops before giving in and dropping the Thunderbird/Lightning combination entirely.
After a bit more mucking about, I decided to give up Lightning and installed Iceowl, Debian’s rebranding of Mozilla Sunbird, instead. Iceowl is the standalone calendar application that Lightning is based on, and is a very lightweight solution that is supposed to cooperate with the opensync-plugin-iceowl package. In theory, this allows calendar data to be shared between my device and the Iceowl calendar after configuring the plugin to read my Iceowl calendar from the /home/username/.mozilla/iceowl/crazyfoldername/storage.sdb file. In practice, the sync process gets locked up every time:
Well, I’ve tried everything that I can think of to get my phone to synchronize with any Mozilla product. I’m very close to giving up, which is a shame, because they really are superior products. The ridiculousness of the entire thing is that I can easily dump my PIM data to a folder, and Thunderbird stores it’s data in an SQLite database. If this were Windows, I’d have written a VB app to fix my problems hours ago… Anybody know any python?
Update: I’ve also managed to successfully synchronize my phone with the Evolution mail client. Unfortunately, Evolution looks rather pale next to Thunderbird. In fact, the entire reason that I switched to Thunderbird about a week ago is that Evolution mysteriously stopped receiving my IMAP email with no explanation. No new email comes in, and the Send/Receive button is grayed out. Until now, I was happy with my decision, as Thunderbird is a superior application.
There is no denying that the installation process for the Barry project sucks. That said, the promise of having the ability to sync my blackberry with a linux-based calendar application like Mozilla’s Thunderbird or the Evolution mail client kept me working at it through the wee hours of the night. The Barry site at Sourceforge provides not one, not two, but four Debian packages (which rely on an additional two undocumented packages), that need to be downloaded and installed in a specific and undocumented order:
With the packages installed, I launched a terminal and used the auto-complete feature to find the command barrybackup. At first, I couldn’t figure out what it’s syntax was, until I realized that it doesn’t need any arguments, because it simply launches a GUI (that doesn’t appear anywhere in my Applications menu) that lets you back up your device databases:
Well, thats a handy utility, assuming that it is also capable of restoring the backups to the device. I shied away from trying the restore feature, as I didn’t have access to a Windows box with which to fix the device should the worst happen.
I’m currently using Mozilla’s Thunderbird (re-branded in Debian as Icedove) as my primary mail client, along with the Lightning calendar plugin, and would be thrilled if I could synchronize it with my Blackberry. You’ll note that libopensync and a Barry opensync plugin were both a part of the installation process; having never used libopensync, I had a tough time figuring out how to make them cooperate.
The opensync page on Wikipedia lead me to install the multisync-tools package, which claims to be able to “synchronize calendars, address books and other PIM data between programs on your computer and other computers, mobile devices, PDAs or cell phones. It relies on the OpenSync framework to do the actual synchronisation.” I have PIM data that I would like to sync! I have the OpenSync framework! We’re on a roll!
Finally, I installed the multisync-0.90 GUI and opensync-plugin-evolution v0.22-2 opensync plugin packages, which should have allowed me to sync between the Evolution mail client and my phone. I chose to try the process with this software first, as a plugin for Thunderbird was not immediately available. Unfortunately, when attempting to sync, I got this message:
Useful? Sort of. The Add button let me set up a Blackberry profile with both the barry and evolution plugins, but no matter how I tweaked the settings, I couldn’t get the evolution plugin to connect to my PIM data. Further, after making a synchronization group and adding plugins to it, I couldn’t find a way of replacing a plugin with a different one.
Sick of the limited GUI, I moved on to try KitchenSync, the KDE-based alternative. While it was uglier, I found it to be a far more useful front-end, and managed to get it to sync my device calendar and contacts with my filesystem:
This process exported all of the calendar and contact information from my Blackberry to a folder full of vCalendar and vContact files on my machine. Now if only I could get Thunderbird to read these files.
After a bit more looking around on the OpenSync webpage, I found a link to these guys, who claim to have programmed an opensync plugin called libopensync-plugin-mozilla-0.1.6 that allows Thunderbird and Lightning to talk to the OpenSync manager. They provide the plugin as a tarball that contains a *.so binary file and a sample *.xml configuration file… but no instructions on how to install them.
Thouroughly lost, I turned to the #opensync channel on freenode.net for help. Until they see fit to help me out, I’m taking a break from this. No sense in giving myself a heart attack out of extreme frustration.
Edit: I got some help from the members of the #opensync channel, who recommended that I drop the mozilla-sync.so file into the /usr/lib/opensync/plugins/ directory. While this didn’t immediately allow OpenSync to see the plugin, I noticed that every other plugin in the directory has an associated *.la configuration file. So I fabricated my own *.la file, and tried again. That didn’t work either.
The members of the channel then recommended that I try downloading the source code directly from the creators. I did as much, and found that it didn’t include a configure or make script, but just the source code. Not knowing how to proceed, I attempted to follow these instructions, which entailed downloading another 20 or so packages, including the sunbird-xpcom-devel package, which again lacks documentation on how to proceed with installation.
Lacking that package, and again frustrated beyond belief, I decided to drop the issue for another hour or so and do some math homework. That’s right, I chose to do math homework over playing with my computer, because this process has been that frustrating.
It doesn’t help that this entire process seems to be aimed at installed BlueZync, and not the opensync-mozilla-plugin. What the hell is going on here?
This afternoon saw me in a really annoying situation. I was in a coffee shop, wearing a beret, and writing poetry, and couldn’t get a ‘net connection. The coffee shop runs an open network access point, but some asshat in a nearby complex was running a secured access point with the same SSID.
For some reason, my version of the network-manager-gnome package (the older one that shipped with Lenny) could not tell the difference, and I could not get a connection. When I attempted to force a connection, it crashed. Repeatedly.
This being my first experience with anything on Linux crashing, I immediately (and rashly) determined that the problem must lie with my (relatively) old network manager. After all, I was running v0.6.6-4 of an application that had since matured to v0.7.7-1! And my companions, who were running the latest version, were connecting no problem! Of course, this also wasn’t the first set of problems that I had encountered with my network manager.
So upon returning to my domicile (I’ve always wanted to use that word in a sentence), I hit the #debian IRC channel and asked about upgrading to the testing repository, where all of the latest and greatest code is awaiting release as Squeeze, the next version of Debian. Having heard that the code was frozen in July, and that the release was slated for early spring, I figured that by this point, the code there would be fairly mature, and easy enough to use. To the contrary, the members of the channel weren’t comfortable giving me advice on how to upgrade, since in their words, I shouldn’t be considering upgrading to testing unless I understood how to do as much.
With this warning, I was then given instructions on how to update (which didn’t make me feel any better – the last step in the instructions was “be ready for problems”), along with the suggestion that I check out backports.org first.
Essentially, this site is an alternate repository dedicated to backporting the latest and greatest code from testing to the last stable version of Debian. This means that, with a simple modification to my etc/apt/sources.list file, I could selectively upgrade the packages on my machine to newer versions.
In fact, I had actually already added this repository to my sources.list file, back when I was working on getting Flash 10 installed. At the time, I just didn’t know enough to understand what it was, or what it’s implications were.
So now, running the newest version of network-manager-gnome, a somewhat more recent version of gnome-do, and clinging to the promise that I can upgrade anything else that seems to have gotten better since the time of the dinosaurs when Lenny was released; my urge to upgrade has subsided, and my commitment to wait out the proper release has been restored.
While trying to connect to a remote webserver via SSH last night, I found that my machine refused to resolve the hostname to an IP address. I couldn’t ping the server either, but could view a webpage hosted on it. Now this was a new one on me – I figured that my machine was caching a bad DNS record for the webserver, and couldn’t connect because the server’s IP had since changed. That didn’t really explain why I was able to access the server from a webbrowser, but I ran with it. So how do you refresh your DNS cache in Linux? It’s easy to do in Windows, but the Goog and the Bing let me down spectacularly on this issue.
This morning, I tried to connect via SSH from my school network, and couldn’t get a connection there either. This reinforced the idea that a local DNS cache might have an outdated record in it, because at school, I was using a different nameserver than at home, and a whole 12 hours had elapsed. Out of theories, and lacking a method to refresh my local DNS cache, I hit the #debian channel on IRC for some guidance. Unlike my last two trips to this channel, I got help from a number of people within minutes (must be a timezone thing), and found out that unless I manually installed one, Debian does not maintain a DNS cache. Well, there goes that idea.
So where was I getting my DNS lookup service? A quick look at my /etc/resolv.conf file showed that the only entry in it was 192.168.1.1, which is the IP of my home router. The file also has a huge warning banner that claims that any changes will be overwritten by the operating system. Makes sense, as when I connect to a new network, I presumably get DNS resolution from their router, which may have a different IP address than mine. The guys on IRC instructed me to try to connect to the server with it’s IP address instead of it’s hostname, thereby taking the DNS resolution at the router out of the picture. This worked just fine.
They then instructed me to add a line to the file with the IP address of the nameserver that the router is using. In the case of our home network, we use OpenDNS, a local company with static servers. I did so, and could immediately resolve the IP of my remote server, and obtain an SSH connection to it.
Well fine, my problem is solved by bypassing DNS resolution at the router, but it still doesn’t explain what’s going on here. Why, if DNS resolution was failing at the router level (presumably because the router maintains some kind of DNS cache), did it work for my webbrowser, but not the for ssh, scp, or ping commands? Don’t they all resolve nameservers in the same way? Further, if it was the router cache that had a bad record in it, why did the problem also manifest itself at school, where the router is taken entirely out of the picture?
Further, will the file actually be overwritten by the OS the next time I connect to a different wireless network? If so, will my manual entry be erased, and will the problem return? Time will tell. Something smells fishy here, and it all points to the fact that my machine is in fact retaining a local DNS cache. How else can I explain away the problem manifesting itself on the school network? Further, even if I do have a local cache that is corrupted or contains a bad record, why did Iceweasel bypass it and resolve the address of the webserver at the router level (thereby allowing it to connect, even though the ssh, scp, and ping commands could not)?
I have a Western Digital 250GB NTFS-formatted external hard drive that I use primarily to store backups of my Windows machine. Since I’m away from my house for a couple of days, I used the drive to bring along some entertainment, but encountered some troubles getting Debian Lenny to play nice with it:
sudo fdisk -l
from the terminal, which brought up a summary of all disks currently recognized by the machine:
jon@debtop:/$ sudo fdisk -l
Disk /dev/sda: 40.0 GB, 40007761920 bytes 255 heads, 63 sectors/track, 4864 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0xcccdcccd
Device Boot Start End Blocks Id System /dev/sda1 * 1 31 248976 83 Linux /dev/sda2 32 4864 38821072+ 83 Linux Disk /dev/dm-0: 39.7 GB, 39751725568 bytes 255 heads, 63 sectors/track, 4832 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0x00000000 Disk /dev/dm-0 doesn't contain a valid partition table
Disk /dev/dm-1: 38.0 GB, 38067503104 bytes 255 heads, 63 sectors/track, 4628 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0x00000000 Disk /dev/dm-1 doesn't contain a valid partition table
Disk /dev/dm-2: 1681 MB, 1681915904 bytes 255 heads, 63 sectors/track, 204 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0x00000000
Disk /dev/dm-2 doesn't contain a valid partition table
Disk /dev/sdb: 250.0 GB, 250059350016 bytes 255 heads, 63 sectors/track, 30401 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0x5b6ac646 Device Boot Start End Blocks Id System /dev/sdb1 1 30401 244196001 7 HPFS/NTFS
Judging by the size of the drives, I figured out that the OS saw my drive at the location /dev/sdb, and the partition that I wanted to mount (the only partition on the drive) at the location /dev/sdb1.
Now, to determine why Linux wasn’t mounting the drive, I checked the fstab file at /etc/fstab to see if there was some other entry for sdb that was preventing it from mounting correctly:
# /etc/fstab: static file system information. # # <file system> <mount point> <type> <options> <dump> <pass> proc /proc proc defaults 0 0 /dev/mapper/debtop-root / ext3 errors=remount-ro 0 1 /dev/sda1 /boot ext2 defaults 0 2 /dev/mapper/debtop-swap_1 none swap sw 0 0 /dev/scd0 /media/cdrom0 udf,iso9660 user,noauto 0 0 /dev/fd0 /media/floppy0 auto rw,user,noauto 0 0
Since there was no entry there that should have overwritten sdb, I gave up on that line of inquiry, and decided to try manually mounting the drive. I know that Debian can read ntfs drives using the -t ntfs argument for the mount command, so I navigated over to the /media/ directory and created a folder to mount the drive in:
jon@debtop:/$ cd /media/ jon@debtop:/media$ sudo mkdir WesternDigital jon@debtop:/media$ ls cdrom cdrom0 floppy floppy0 WesternDigital jon@debtop:/media$ sudo mount -t ntfs /dev/sdb1 /media/WesternDigital/ jon@debtop:/media$ sudo -s root@debtop:/media# cd WesternDigital root@debtop:/media/WesternDigital# ls KeePass.kdbx nws $RECYCLE.BIN System Volume Information workspace.tc
As you can see, the contents of my external drive were now accessible in the location where they ought to have been if Debian had correctly mounted the drive when it was plugged in. The only caveat to the process is that the mount function is available only to root users, meaning that the mountpoint was created by root, and my user account lacks the necessary permissions to read or write to the external drive:
I figured that this issue could be solved by using chmod to grant all users read and write permissions to the mountpoint:
root@debtop:/media# chmod +rw WesternDigital chmod: changing permissions of `WesternDigital': Read-only file system
Well what the hell does that mean? According to this post (again on the Ubuntu forums), the ntfs support in Linux is experimental, and as such, all ntfs drives are mounted as read only. Specifically, this drive is owned by the root user, and has only read and execute permisions, but lacks write permissions.
According to this thread on the slax.org forums, there is another ntfs driver for Linux called ntfs-3g that will allow me full access to my ntfs-formatted drive. After sucessfully adding the ntfs-3g drivers to my system, I dismounted the drive, and attempted to re-mount it with the following command:
mount -t ntfs-3g /dev/sdb1 /media/WesternDigital
This time, the mount command appeared to almost work, but I got an error message along the way, indicating that the drive had not been properly dismounted the last time it was used on Windows, and giving me the option to force the mount:
Mount is denied because NTFS is marked to be in use. Choose one action: Choice 1: If you have Windows then disconnect the external devices by clicking on the 'Safely Remove Hardware' icon in the Windows taskbar then shutdown Windows cleanly. Choice 2: If you don't have Windows then you can use the 'force' option for your own responsibility. For example type on the command line: mount -t ntfs-3g /dev/sdb1 /media/WesternDigital -o force
Well, since I didn”t have a Windows box lying about that I can use to dismount the drive properly, I’ll took a shot at using the force option. After warning me again that it was resetting the log file and forcing the mount, the machine finally mounted my drive with full permissions for the owner, group, and other users!
drwxrwxrwx 1 root root 4096 2009-09-18 15:40 WesternDigital
After a couple of manual tests, I confirmed that both my user account and the root user had full read/write/execute access to this drive, and that I could use it like any other drive that the system has access to. Further, thanks to the painful XBMC install process, I already had the codecs required to play all of the TV shows that I brought along.
Debian Lenny ships with the Network Manager package, version 0.6.6-4, which for all intents and purposes is a well written and very useful network management application. But of course, I wanted something more. At home, I have my music library (hosted on a Windows Vista machine) shared to the local network, and wanted to mount that drive using Samba so that I could share my music library between my two machines while on my home network.
On a Windows machine, one can just point an application to files on a networked drive, while Windows handles all of the dirty details related to allowing that application use those files as if they were on the local machine. On Linux, the application in question seems to have to be aware of how to handle a Windows share (usually via the Samba package), and handle that drive sharing on it’s own, unless the network drive has been mounted first. Further, when mounting a network share in Linux, one can choose any folder on their hard drive to put its contents into, ensuring that it always appears in the same location, and is easy to find.
Unfortunately, as far as I can divine, a networked drive can only be mounted by the root user, which seriously reduces the number of applications that can perform that mounting action. In my quest to get my home music share working, I looked into plenty of different methods for automatically mounting network drives, including startup scripts, modifying the fstab file, and manually connecting from a root terminal. None worked very well.
Eventually, I stumbled across a web post advertising the pros of the WICD network manager, which as I understand, will be used as an alternative to the network manager package by Debian Squeeze, and can currently be pulled into Lenny by adding the Debian-Lenny Backports repository to your sources list. I installed it, replacing the default network-manager-gnome package.
My first impression of WICD was extremely positive. Not only did it connect to my home network immediately, it also allowed me to define default networks to connect to (something that is conspiciously absent from the NetworkManager interface), and to set scripts that are run when my client connects to or disconnects from any of the networks in the list. This allowed me to write a simple one line script that mounted my network share on connection to my home wireless network. It worked every time, and mysteriously did so without asking me for my Sudo password, even though it used the sudo command internally to get rights to perform the mount.
Odd security peculiarities aside, I was happy with what I had accomplished – now I could tell my laptop to automatically connect to my home wireless network, and to mount my music share as soon as it did so! Then I went to school. Shit.
The wireless network at my University uses EAP-TTLS with PAP inner-authentication as a security protocol, something that WICD apparently had no idea how to handle. This protocol is extremely secure, as the host identifies itself to the client with a certificate that the client uses to tunnel into the host, allowing connection to take place without any user information being passed in the clear. At least that’s how it’s supposed to work, except that our school doesn’t have a certificate or certificate authority, so… Whatever.
In any case, WICD does not include a template for this type of network (which is fair I suppose, since Windows requires an add-on to access it as well), but for the life of me, I couldn’t figure out what to do to fix the problem. I trolled the internet from a wired machine and tried editing the WICD encryption templates, while Tyler (on Fedora) and Phil (on OpenSuse) connected on first try.
Eventually, after an hour or so of fruitless trial and error, I gave up, came home, and reinstalled the NetworkManager application, because that’s what Tyler and Phil were using on their systems, and it seemed to work fine. Sure enough, the next day I connected after just a minor tweaking of the network properties in the NetworkManager dialog.
Unfortunately, while I can now connect to my home and school networks, I once again have lost the ability to automatically connect to networks, and to execute scripts on connection, meaning that I’m back to square one with the mounted networked music share – for now, I just do the mounting manually from a root terminal. Balls.
Man, Eclipse works great on Debian! It gives me this cool message on startup:
JVM terminated. Exit code=127
After uninstalling, reinstalling, changing which JVM I was using, uninstalling, reinstalling, googling, yahooing, and binging, I finally found this post over at Debian Help that instructed me to first install XULRunner. With the addition of this simple step, everything suddenly worked great.
The strange part about the whole thing is that Eclipse doesn’t install XULRunner as a dependency, and the Wikipedia article about XULRunner doesn’t mention Eclipse anywhere. I don’t really understand their relationship, aside from the fact that Eclipse supports plugins that may or may not be written on top of XULRunner.
Regardless of their strange and undocumented relationship, the Eclipse/XULRunner combo seem to work perfectly, allowing me to create Java, C/C++, and Plugin projects out of the box. Next steps include adding plugins for Subversion, Python, and PHP.
So tonight I got a terrible idea. I figured that I’d try to install XBMC, the awesome media centre app for modded Xbox consoles. Turns out that they do, in fact, have a Linux version… but that none of it’s dependencies can be resolved automatically, and that every developer remotely related to the project was on crack while packing the tarball.
Because the devs only package a release for Ubuntu (that doesn’t work worth a shit on Debian), I was forced to download a tarball from this site, which I extracted to my home/username/bin directory. Unfortunately, when attempting to./configure in this directory, I discovered that the package had roughly 337 thousand dependencies, namely:
subversion make g++ gcc gawk pmount libtool nasm automake cmake gperf unzip bison libsdl-dev libsdl-image1.2-dev libsdl-gfx1.2-dev libsdl-mixer1.2-dev libsdl-sound1.2-dev libsdl-stretch-dev libfribidi-dev liblzo-dev libfreetype6-dev libsqlite3-dev libogg-dev libasound-dev python-sqlite libglew-dev libcurl4-dev x11proto-xinerama-dev libxinerama-dev libxrandr-dev libxrender-dev libmad0-dev libogg-dev libvorbis-dev libmysqlclient-dev libpcre3-dev libdbus-1-dev libhal-dev libhal-storage-dev libjasper-dev libfontconfig-dev libbz2-dev libboost-dev libfaac-dev libenca-dev libxt-dev libxmu-dev libpng-dev libjpeg-dev libpulse-dev mesa-utils libcdio-dev
Yeah. That many. Further, the library liblzo-dev is no longer a part of Debian Lenny, although it is available from the Etch repositories. You can grab that tarball and manually install it from this page. Oh, and you’ll also need to add the debian-multimedia non-free repositories to your sources.list file in order to obtain libdvdcss… You can find instructions to do that here.
Assuming you’re still with me, and have managed to install all of the above dependencies (all 300+ MB of them), you’ll probably still fail, because the tarballs for the vast majority of them fail to set execute permissions on their configure files on extraction. As such, you’ll have to manually walk through each of the folders under xbmc and add those permissions…
After adding these permissions as deep as I could in the directory structure with the command chmod -R +x */configure (where you can add up to 6 instances of */), and running the XBMC config file a solid 50+ times, I’m stuck on the libdvdnav library, which doesn’t seem to contain a valid config file… Seeing as I have to work tomorrow, I offically give up for now. Christ this must be a small taste of what Gentoo is like all the time.
The Next Morning:
With a clear head and a fresh cup of coffee, I took another shot at installing XBMC.After spending 20 minutes manually installing the libdvdnav, libdvdread, and libdvdcss libraries, I finally managed to run the XBMC configure script with no errors.
After just over a half hour compiling, I finally got XBMC installed and gave it a test run.
Initially, I had troubles connecting to any network shares where my media is stored. After going into the network settings, changing my workgroup name, and telling the app to automatically mount SMB shares, everything seemed peachy.
More to come as I figure this out
Even though the Debian community is very strict about only allowing free software in their repositories, my Iceweasel install came preloaded with Macromedia Flash 9. Regardless of whether this is how things are supposed to be, Flash has since moved on to version 10. Some sites like youtube are already warning users who have lower versions installed that they should upgrade for performance reasons, and Firefox is going to begin to prompt users to upgrade for security reasons.
Regardless of your motivations, having the latest Flash plugin is essential to today’s internet experience, regardless of well placed free software ideals. Luckily, I’ve found a handy tutorial (incredibly, it’s on the Debian Wiki and isn’t horribly out of date) that gives instructions on how to get the latest Flash installed on a Debian system.
It should be noted that the tutorial requires the user to add a non-free repository to their sources list, located in /etc/apt/sources.list file, and that making this change will techinically make your system non stable, in the sense that it will no longer be officially supported by the Debian community. While regrettable, my sources list already contained non-free sources list, as some of my hardware lacks free drivers/firmware, so I’m not terribly concerned.
This morning I spent some more time messing around with Compiz. I followed this tutorial to add an alternative repository to my sources list that keeps a more up to date version of Compiz around. When I ran the install initially, it errored out and broke a couple of my packages, but after fully removing Compiz through Synaptic, I was able to get the install process to work with no issues. It added a number of plugins to Compiz, along with the Emerald Theme Manager.
After messing about with Emerald, grabbing some great new wallpaper from Open Source Wallpaper, and screwing about with the Gnome theme for a few minutes, I ended up with this desktop:
I think that this is a great improvement over the default desktop:
As you may recall, last night, I ruined my system by manually editing the xorg.conf config file according to a sketchy tutorial on the Debian Wiki. This evening, I fixed the problem and got Compiz effects running in all of 20 minutes. The moral of the story: Before fucking about online, use the resources that are right in front of you.
When I edited the xorg.conf file last night, I made a mistake, and every time X tried to load on startup, it failed out. At the time, I was bleary-eyed and half in the bag, and didn’t realize that when this happened, Debian presented me with the ability to log into the terminal and fix my silly mistakes.
Refreshed and ready to go, I logged into the terminal as root this evening, loaded the config file in question, took out my changes, saved, and restarted. Lo and behold, everything worked perfectly, and I got my desktop back.
After enabling OpenGL support and 3D hardware acceleration last night, I immediately attempted to get the Compiz suite of relatively useless eye candy nonsense up and running, a process that lead directly to me bricking my system.
The first tutorial that I tried to follow last night instructed me to edit my sources list and download the required packages from a third-party mirror… Until I scrolled down (after already doing all of the suggested actions), and realized that the entire tutorial was outdated because Compiz had since been migrated into the Debian repositories. I more or less succeeded in disabling all of those changes, in the sense that undoing them didn’t break anything apparent.
The next step was a quick dash over to the Debian Wiki for information on how to install Compiz properly, which I assumed could be had from this tutorial. Turns out I was wrong, because while the package installs that it reccomends mostly succeeded, when I tried to enable Compiz, it errored out and locked up my desktop.
Pissed off, I tried making the suggested changes to the xorg.conf file that are suggested in the tutorial, which to my dismay, resulted in X locking up because of errors in my freshly edited config file. This brings us roughly to where I was at with last night’s post.
Once I had restored my desktop and come to my senses, getting Compiz was actually a snap. I launched the Aptitude package manager from a root terminal, searched for the Compiz package, and let it take care of handling any dependencies and conflicts for me. In the process, it handily uninstalled a few garbage packages that I had added last night while fucking things up.
With Compiz properly installed, I used the Synaptic package manager (the graphical front-end to Aptitude) to add the Fusion Icon package (a Compiz control icon) to my taskbar for easy access, and sat back to have a celebratory beer and enjoy me some Wobbly Windows. Another moral for the story: The Debian Wiki sucks, and has lead me astray one too many times. From here on in, I will take everything that it claims with a truckfull of salt.
Lastly, I added the Screenlets package, which allows me to have Vista-like widgets on my desktop that do silly things like monitoring my internals and wasting my system resources. So far, I’ve found the default screenlets to be pretty lame and useless, and I don’t quite understand the process of installing a new screenlet yet. I’ll get back to this in a later post.
Today’s big task was to get rid of the Windows 3.1 look of the default GNOME theme by installing the Compiz Fusion window manager. First, however, I needed to add 3D hardware acceleration and OpenGL support to my existing graphics system. Unfortunately, after an evening of searching for how to accomplish these seemingly simple tasks in Google’s proverbial haystack of information, I found myself no wiser, and in the mood to chew through my power cable and just end it all.
Bleary-eyed and pissed off, I turned to the community in the #debian IRC channel for help, and found a room full of knowledgeable folks who were very willing to help me out. Sometime during the ensuing discussion, I followed this guy’s advice and installed a package called mesa-utils that added OpenGL support to my system, and was good to go. The only problem is that I don’t know if I could do it again, because I can’t recall the steps that got me to where I am. Damn.
In any case, with hardware acceleration now supported, I moved on to enabling the Compiz Fusion window manager with this tutorial on the Debian Wiki. Unfortunately, upon activating my newly installed eye candy, my entire system froze up. I restarted X, but the service refused to come back online, and was disabled by the system.
Now, whenever I attempt to boot my laptop, I get a big error message claiming that X failed to start, and can’t get into my desktop. It seems that the changes that I made to the /etc/X11/xorg.conf file while setting up Compiz have caused an error that occurs while parsing the file on startup.
So, I guess my install is bricked until I can remove my changes to that config file… Anybody got a live CD?
If you’re like me, you’re still working on your certification as a Linux God. Until graduation day comes around, and you throw your penguin-festooned mortar board into the air, you may find yourself seriously annoyed by that damned PC speaker beep. Apparently leftover from the pre-speaker world of ancient PC computing, this distinctly plaintive and accusatory beep sounds whenever you do something that you aren’t supposed to, including (but not limited to):
Luckily, arsgeek.com has an excellent little tutorial on how to disable the PC speaker by editing the /etc/modprobe.d/blacklist file. Check it out here, and lose that awful beep until the next time that you’re forced to use the Unix lab at school.
Note: If you attempt to edit the blacklist file and cannot save it, it is because you are not in root mode. At the terminal prompt, type “su”, enter your root password, and then follow the instructions to edit the blacklist file.
On my Windows machine, I use a free program called KeePass to manage all of my passwords. It creates an encrypted file that contains all of my passwords, and automatically pastes them into the correct dialog boxes when I hit ctrl-alt-a.
Since I’m attempting to emulate my normal work flow, one of my first goals with Debian was to get a password manager up and running, and to disable the password management tool that is present in Iceweasel (For those that don’t know, Iceweasel is Firefox, but it’s been re-branded and given a new set of icons so that it is a truly “free” program).
Luckily, with just a few minutes of looking around, I found the KeePassX project, a mature cross-platform clone of the KeePass project that even imports KeePass 1.x database files. Installation was simple, and once I exported a 1.x version of my KeePass database from my Windows machine, KeePassX opened it immediately.
It should be noted that GNOME ships with an application called Seahorse that provides a graphical front end to the underlying keyring management system. This application seems to have been designed primarily for remembering PGP keys and remote server passwords. It handles my wireless network passwords, but I can’t seem to figure out how to add website passwords to it, so KeePassX is my replacement solution.
Aside: To add another item to my to-do list, I’ve just noticed that GNOME has registered the Epiphany web browser as my default browser, so all system links launch in it instead of in Iceweasel. From what I’ve seen so far, it’s not that Ephiphany is a bad browser, but more that I’m used to how Iceweasel works. Further, Epiphany appears to just be another re-branding. According to it’s webpage, it runs all the same plugins that Firefox can… So I guess my first question is, why bother?
Considering that it was my first experience with Linux, the installation of Debian actually went rather smoothly. I popped in the Debian live disc, rebooted my machine, and said goodbye to Windows XP.
I chose the graphical installer, because I’m a big wimp, and because it makes screenshots. You might ask how the installer saves screenshots to a hard drive that is as of yet unpartitioned, and will be wiped/encrypted during the coming hours… I don’t know either, but I guess that’s a part of the Linux magic. (You don’t get any of these pictures, because I lost them when I reinstalled, and forgot to take more the second time around).
The first few settings were fairly straightforward. Debian asked me to choose my default language, geographical location, and keyboard layout. Debian appears to support some 44 different keyboard layouts on install, including Dvorak, and Canadian Multilingual, which is perhaps the most awful layout ever conceived by man. Is it as bad for the Quebecois as it is for us Ontarians?
Next, the installer attempted to detect my hardware settings, and scanned the live disc for required drivers. At this point, the installer notified me that my system would require non-free firmware files to get my wireless card working. In Linux-speak, non-free simply means that the firmware is distributed as a compiled binary, and that the source code is not available. It is, however, free in the sense that I don’t have to pay a dime to use it, although I have to agree to a license to do so. Given the option to load the firmware files from a disc, or to wait and deal with the problem once the desktop was up and running, I chose the latter.
The next step was for the Debian installer to attempt to auto-configure my DHCP settings, and to use my ethernet card to connect to the internet. Since the laptop wasn’t plugged in to an ethernet cable, it didn’t really surprise me that this step failed. I chose to configure the network later, and moved on to giving my machine a name and choosing my timezone instead.
When it came time to partition my disks, I chose to take a shot at full-disc encryption. The most basic Linux drive has two partitions – one called /boot that is generally formatted with ext2 and takes the place of Window’s boot sector, and another called / that contains the rest of your data, including the OS. Once the BIOS has finished all of it’s startup checks and initializations, it hands off to GRUB, which is stored on the /boot partition. GRUB does some other stuff, and then boots the operating system, which is stored on the secondary partition, usually formatted with one of the many available file systems that Tyler covered in detail in a previous post. There is a great explanation of the entire boot process available here.
To allow for multiple partitions, Linux utilizes some fancy software called the LVM (logical volume manager), which virtualizes any partitions that you create within the big main one. When enabling full-disc encryption, everything inside of the LVM (all of the partitions except for /boot, because the machine needs to be able to start) is encrypted as it is written to disc, and decrypted as it is read from disc. This method of protecting your data is extremely secure, as the encryption is transparent to the user and operating system, while every file on the system remains encrypted until the correct password is provided by the user.
Debian allows me to put each of the important parts of my root directory on separate drive partitions. For example, I can separate the /home partition from the /usr, /var, and /tmp partitions within the LVM. This would be extremely handy if my machine were running multiple physical discs, and I wanted to put my install on a separate disk from my data so that backups and reinstalls are less painful. Because I’m new at this and have only one disc, I chose to put all of my files in a single partition.
Before proceeding with installation, Debian tried to zero all existing data on my drive. Since that data wasn’t at all sensitive, my hard drive is small, and I don’t care to wait years for the wiping process to finish, I hit the cancel button in the bottom-right hand corner of the screen, which allowed me to skip to the next step. I actually found this out by accident, fully expecting the cancel button to boot me right out of the install process. Silly UI design, that.
The last step in partitioning my drives was to provide a password for the full-disc encryption, and to choose the file system for each of my newly created partitions. As previously noted, my /boot partition is formatted with ext2, and the LVM is using a filesystem called crypto, which I assume is just the name of the encrypted partition container. Linux also creates a root partition for me (located at /), which I’ve chosen to format with the ext3 filesystem, since ext4 does not appear to be supported by my installer. Finally, a partition called /swap is created (the equivalent of the Window’s swap file), that is formatted with the (what else?) swap file system.
It should be noted that the partition manager screen also had a strange UI bug in it – the continue button that had been my friend and companion thus far throughout the install process ceased to have any meaningful functionality. I had to choose to ‘finish partitioning and write changes to disc’ from the partition manager menu before I could continue with the installation.
With all of the setup options behind me, the Debian installer helpfully finished the install all on it’s own, pausing only to demand that I enter a root password, a default user account name and user account password. It should be noted that if you intend to become a l337 system administrator, your root password should be hard to guess but easy to type, as you’ll be forced to enter it whenever you do an action that is outside of the user account security privileges (or in other words, essentially anything of consequence).
Lastly, the installer asked if I wanted to enable the Debian package popularity contest (popcon), and which default software I wanted to install. I chose to add a web server, file server, and SQL database to the default install. That done, the installer went on it’s merry way and actually got down to the business of installing my distribution.
Remember how the Debian installer failed to auto-detect my DHCP settings because my laptop wasn’t plugged into an ethernet cable? Well it also “forgot” to install my ethernet card driver at the same time. Since the machine doesn’t have a network connection, I have no access to the Debian repositories from which I can get the required drivers, but I can’t seem to get them without access to those repositories. I found the driver in question here, but have no idea what to do with the driver once I get it, because it is distributed as a *.rpm package, which is the Fedora package format, and unsupported by Debian. I’ve found various discussions on the Debian website that reveal that tg3, the driver for my network card, was removed from the Debian package, because it is not “free” in the sense that it is distributed as a compiled binary, and not as source.
After spending a half hour scouring the GOOG for instructions on how to install this driver, only to come up empty handed, I’ve decided to simply reinstall, but to plug the ethernet cable in this time, and hope that it works better than it did last time. If anybody knows what the hell happened, I’d love to hear an explanation, and perhaps a method by which I can fix the problem.
So after waiting for Debian to reinstall, I got back up and running, and just needed my wireless card active so that I could put my ethernet cable back in my other computer. Luckily, the steps to get it working are very straightforward:
Once your machine restarts, the wireless firmware will be loaded, and you should be able to click on the network icon in the taskbar and select an available wireless network to connect to.
Well, not quite. My system is up and running, supports full-disc encryption, wired and wireless networking; but the GNOME desktop bugs the hell out of me, and so far as I can tell, I don’t have a working sound card yet… More on that one tomorrow. The moral of this story is as follows: NEVER install Debian without a network connection present. It’s just not worth your time.
Like many of the other varieties of Linux, Debian gives the end user a number of different installation choices. In addition to the choice of installer that Tyler B has already mentioned, the Debian community maintains three different distributions, which means that even though I’ve picked a distribution, I still haven’t picked a distribution! In the case of Debian, these distributions are as follows:
I’m currently leaning towards running the Testing distribution, mostly because I like new shiny toys, and (I think) want the challenge of becoming a part of the Debian community. Since we’ve been getting a lot of support from the various development communities lately, perhaps some of our readers could set me straight on any information that I might have missed, and perhaps set me straight on which distribution I should run.
Just a quickie tonight folks. For those who want to check the compatibility of their hardware with the Linux kernel, check out this page. It’s by no means a full guide (if you have strange hardware, it might not be covered), is aimed primarily at laptops, and doesn’t guarantee distribution compatibility, but if Linux supports the hardware, your distro should too.
After a little bit of research, I’ve chosen to use Debian as my distribution for the duration of the experiment. While the decision was more or less arbitrary, it was based on a few core ideals:
With the release of KDE 4.3 today, I’ve also decided to try using it as my display manager (mostly because it looks really pretty, and I like pretty things). Now I can only hope that Debian has the drivers for my laptop: