=^.^=

Cleaning the Das Keyboard Ultimate Model S Mechanical Keyboard

karma

I purchased a Das Keyboard Ultimate Model S in March 2011 because I longed for the tactile feel of the IBM model M keyboard I used with my PS/2 as a wee lad. Perhaps slightly more, I wanted it for the ridiculous amounts of clickity-clackity sound their spring-buckling action produces which seems to magically take normal typing and make it sound like mad hacking.

This technology is currently licensed to Unicomp and it is possible to get one of their keyboards on eBay for well under $100 (maybe my next investment). A colleague informed me Cherry MX Blue switches produce a similar tactile feel and clicking sound but had a more modern (and patent-friendly) construction. That fact combined with Das' super sexy blank keycaps had me sold on the Ultimate model S.

I have only two complaints and they are mostly my fault:

  • The switch grease does not withstand beer admirably. I am considering replacing it with RO-59.
  • Debris seem to be able to enter through the back of the switch into the mechanics. This causes very bad sticking and increases in the pressure required to depress some keys when a keyboard full of ashes is, for example, held upside down and smacked. If I had known this beforehand I would have completely disassembled the keyboard first. Heavy use eventually makes the keys stop sticking but the quality of the keystrokes never returns.

Neither of these can be addressed with a simple cleaning; the switches themselves must be opened, cleaned and re-lubricated. I quit smoking two weeks ago though and figured why not give it a little cleanup in the mean time.

While it is possible to do it by hand it is strongly recommended that one uses keycap pullers to remove the caps from your switches. They allow for an even, vertical withdrawal and minimize the risk of pulling out a switch. They can be obtained on ebay for about $4 a pair.

It is particularly important when removing the keycaps on unlabelled keyboards such as the Ultimate that you maintain their position. The caps on a Das have different inclinations to make the keyboard more ergonomic but this prevents one from swapping keys from different rows.

Long keys like Return and Space are supported by metal wires called stabilizers. To remove keys mounted with stabilizers pull vertically to release them from the Cherry MX switch; this may take some wiggling. You should now feel the key pivoting freely about the stabilizer. Very carefully press the key to one side and pull up to release that side from the stabilizer, then without forcing the key at odd angles slide it out in the other direction. Remounting these keycaps requires only reversing the process and is a little easier.

Keys can be cleaned by simply rinsing in a tub of water then placed face up - in order - on paper towels or another substrate which will wick away the water from inside. If you have hard water you may wish to dry them as they come out as there will be a white residue left on some keys.

You may wish to use a wet cloth or Q-tips to clean out the tray on which the switches are mounted. You will notice gaps where the switches are mounted which provides points of entry for debris. Do not turn your keyboard upside-down; if you are concerned about what is underneath the tray it is much better to remove the back housing of the keyboard than it is to develop sticky keys. Once the keycaps have dried replace them firmly by hand.

OpenRC unable to exec init.d scripts: Exec format error

karma

I recently did a global update on an old VM and nearly shat myself when it came up with this on bootup:

   OpenRC 0.8.3 is starting up Gentoo Linux (i686) [XENU]

 * Mounting /proc ...
 [ ok ]
 * Caching service dependencies ...
 [ ok ]
unable to exec `/etc/init.d/sysfs': Exec format error
unable to exec `/etc/init.d/udev-mount': Exec format error
unable to exec `/etc/init.d/dmesg': Exec format error
unable to exec `/etc/init.d/udev': Exec format error
unable to exec `/etc/init.d/devfs': Exec format error
unable to exec `/etc/init.d/modules': Exec format error
unable to exec `/etc/init.d/fsck': Exec format error
unable to exec `/etc/init.d/root': Exec format error
unable to exec `/etc/init.d/mtab': Exec format error
unable to exec `/etc/init.d/localmount': Exec format error
unable to exec `/etc/init.d/sysctl': Exec format error
unable to exec `/etc/init.d/bootmisc': Exec format error
unable to exec `/etc/init.d/devfs': Exec format error
unable to exec `/etc/init.d/dmesg': Exec format error
unable to exec `/etc/init.d/hostname': Exec format error
unable to exec `/etc/init.d/net.lo': Exec format error
unable to exec `/etc/init.d/procfs': Exec format error
unable to exec `/etc/init.d/swap': Exec format error
unable to exec `/etc/init.d/sysfs': Exec format error
unable to exec `/etc/init.d/udev-mount': Exec format error
unable to exec `/etc/init.d/udev': Exec format error
unable to exec `/etc/init.d/urandom': Exec format error
INIT: Entering runlevel: 3
unable to exec `/etc/init.d/modules': Exec format error
unable to exec `/etc/init.d/fsck': Exec format error
unable to exec `/etc/init.d/root': Exec format error
unable to exec `/etc/init.d/mtab': Exec format error
unable to exec `/etc/init.d/localmount': Exec format error
unable to exec `/etc/init.d/sysctl': Exec format error
unable to exec `/etc/init.d/bootmisc': Exec format error
unable to exec `/etc/init.d/net.lo': Exec format error
unable to exec `/etc/init.d/netmount': Exec format error
unable to exec `/etc/init.d/mysql': Exec format error
unable to exec `/etc/init.d/hostname': Exec format error
unable to exec `/etc/init.d/metalog': Exec format error
unable to exec `/etc/init.d/sshd': Exec format error
unable to exec `/etc/init.d/apache2': Exec format error
unable to exec `/etc/init.d/devfs': Exec format error
unable to exec `/etc/init.d/dmesg': Exec format error
unable to exec `/etc/init.d/procfs': Exec format error
unable to exec `/etc/init.d/sendmail': Exec format error
unable to exec `/etc/init.d/snmpd': Exec format error
unable to exec `/etc/init.d/swap': Exec format error
unable to exec `/etc/init.d/udev-postmount': Exec format error
unable to exec `/etc/init.d/urandom': Exec format error
unable to exec `/etc/init.d/vixie-cron': Exec format error
unable to exec `/etc/init.d/vsftpd': Exec format error
unable to exec `/etc/init.d/local': Exec format error
unable to exec `/etc/init.d/sysfs': Exec format error
unable to exec `/etc/init.d/udev-mount': Exec format error
unable to exec `/etc/init.d/udev': Exec format error

It took me forever to figure out but upgrading the domU kernel from 2.6.18 to 2.6.38 did the trick. You can download a copy from this post:

Download: 32-bit Gentoo 2.6.38 PAE Xen 3.x+ Paravirtual DomU Kernel

A Note on HTTP Authentication in the Era of APACHE2_MODULES

karma

Gentoo started using the APACHE2_MODULES USE-flag-extending variable to manage Apache's modules in portage some time ago. The list of modules I migrated with (likely provided by the Gentoo documentation as a recommendation) seems to be missing those responsible for http authentication so every now and then on an outdated web server I will run into errors when adding directives like AuthUserFile.

To resolve this, make sure the following modules are contained in the APACHE2_MODULES variable in your make.conf:

authn_file auth_basic auth_digest authz_user

Recompile Apache with the --newuse flag:

# emerge --update --newuse --deep apache --ask

Portage Errors: app-admin/php-toolkit is blocking app-admin/eselect-php

karma

Gentoo has started using a meta-package to manage PHP. If you are upgrading an old system you may encounter this error:

[blocks B      ] app-admin/php-toolkit ("app-admin/php-toolkit" is blocking app-admin/eselect-php-0.6.2)

 * Error: The above package list contains packages which cannot be
 * installed at the same time on the same system.

  (app-admin/php-toolkit-1.0.1::gentoo, installed) pulled in by
    app-admin/php-toolkit required by (dev-lang/php-5.2.12::gentoo, installed)

Open /var/lib/portage/world and delete the line for dev-lang/php. Now emerge virtual/httpd-php:

# emerge virtual/httpd-php

Portage Errors: cp: preserving times Bad file descriptor

karma

If you use an old kernel and recently updated your glibc you may encounter:

Writing /var/tmp/portage/net-analyzer/rrdtool-1.4.5-r1/temp/images/2.6/usr/lib/python2.6/site-packages/py_rrdtool-0.2.1-py2.6.egg-info
cp: preserving times for `/var/tmp/portage/net-analyzer/rrdtool-1.4.5-r1/image/usr/lib/python2.6/site-packages': Bad file descriptor
cp: preserving times for `/var/tmp/portage/net-analyzer/rrdtool-1.4.5-r1/image/usr/lib/python2.6': Bad file descriptor
cp: preserving times for `/var/tmp/portage/net-analyzer/rrdtool-1.4.5-r1/image/usr/lib': Bad file descriptor
cp: preserving times for `/var/tmp/portage/net-analyzer/rrdtool-1.4.5-r1/image/usr': Bad file descriptor
 * ERROR: net-analyzer/rrdtool-1.4.5-r1 failed (install phase):
 *   Merging of intermediate installation image for Python ABI '2.6 into installation image failed
 * 
 * Call stack:
 *     ebuild.sh, line   56:  Called src_install
 *   environment, line 6431:  Called distutils_src_install
 *   environment, line 1760:  Called python_merge_intermediate_installation_images '/var/tmp/portage/net-analyzer/rrdtool-1.4.5-r1/temp/images'
 *   environment, line 5704:  Called die
 * The specific snippet of code:
 *               cp -fr --preserve=all --no-preserve=context "${intermediate_installation_images_directory}/${PYTHON_ABI}/"* "${D}" || die "Merging of intermediate installation image for Python ABI '${PYTHON_ABI} into installation image failed";

To address this issue update coreutils:

# emerge --update coreutils