Archive

Archive for the ‘Debian’ Category

The Magic of Lenny Backports

September 28th, 2009 No comments

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.

DNS Not Satisfactory

September 25th, 2009 No comments

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)?

LINUX!!11

Mounting an NTFS-formatted External Drive

September 20th, 2009 6 comments

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:

mount-errorAfter searching around for a bit, I found a helpful thread on the Ubuntu forums that explained that this problem could be caused by a few different things. First, with the drive plugged in, I ran

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:

no-permissions

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.

Wireless Network Manager Woes

September 16th, 2009 No comments

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.

Eclipse Fails It

September 14th, 2009 No comments

Man, Eclipse works great on Debian! It gives me this cool message on startup:

JVM terminated. Exit code=127
/usr/lib/jvm/java-gcj/bin/java
-Djava.library.path=/usr/lib/jni
-Dgnu.gcj.precompiled.db.path=/var/lib/gcj-4.2/classmap.db
-Dgnu.gcj.runtime.VMClassLoader.library_control=never
-Dosgi.locking=none
-jar /usr/lib/eclipse/startup.jar
-os linux
-ws gtk
-arch x86
-launcher /usr/lib/eclipse/eclipse
-name Eclipse
-showsplash 600
-exitdata 3a0015
-install /usr/lib/eclipse
-vm /usr/lib/jvm/java-gcj/bin/java
-vmargs
-Djava.library.path=/usr/lib/jni
-Dgnu.gcj.precompiled.db.path=/var/lib/gcj-4.2/classmap.db
-Dgnu.gcj.runtime.VMClassLoader.library_control=never
-Dosgi.locking=none
-jar /usr/lib/eclipse/startup.jar

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.

Upgrading to Flash 10 in Debian

September 5th, 2009 No comments

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.

A Pretty New Desktop Theme

September 5th, 2009 No comments

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:

Pretty Desktop

I think that this is a great improvement over the default desktop:

Debian_GNOME Default Desktop

Finally Up and Running

September 3rd, 2009 1 comment

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.

Firstly: Fixing X

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.

Part B: Getting Compiz

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.

(Supposed) Icing on the Cake: Screenlets

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.

Graphical Woes and a Bricked System

September 2nd, 2009 1 comment

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?

The Need for a Password Manager

September 2nd, 2009 1 comment

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?