Sunday, March 28, 2010

New server : MicroClient Jr DX

I've got my new server up and running. It took me some time and effort to get it working, but now it's ready to replace my current server.

Norhtec MicroClient  Jr DX

First some specs :

  • Norhtec MicroClient  Jr DX
  • CPU : Vortex86DX Soc (System on Chip)
  • OS : Debian server 5.0.4 (Lenny)
  • Kernel :
  • Memory : 512 MB
  • Storage :
    • Compact Flash (CF) 8 GB (root, system files)
    • 2,5" HD 160 GB (swap and data files)
    • USB HD 320 GB (backup)
  • 100 Mbit LAN
And running services :
  • Fileserver : Samba (3.2.5)
  • Webserver : Apache (2.2.9) + PHP (5.2.6)
  • Database : MySQL (5.0.51)
  • Mailserver : Postfix (2.5.5)
  • DNS : Bind 9
  • DHCP 3
  • NTP
And now a small summary of the hurdles and how I overcame them to get it all working :
I got this new 'toy' a few months ago, in december 2009.
It doesn't have a cd-rom drive (the housing of the server is too small to hold one), so I decided to try PXE to install the OS. I added a PXE service to my network and soon was able to boot a Debian netinstall.
But the installer didn't recognise the hardware (CPU, network, harddrive). It turned out the default kernel didn't support it, so I had to use a custom one.
I followed this manual on how to get it and finally install the custom kernel. The only thing I did different is using a PXE-boot instead of the USB pendrive.

Small success here, but the hard drive controller still didn't work, so I was only able to install Debian on an USB harddrive. It worked, but I wanted to use the internal harddrive and CF-card.
Tinkering a bit with the BIOS settings didn't help much either. I found several possible settings on different websites. In the end, these settings worked for me :
  • PCI IDE Bus Master : Enable (HD doesn't work when Disabled)
  • Onboard IDE operate mode : Legacy (could be set to Native as well, but this has the best performance so far)
Then I stumbled upon the book Linux Kernel in a Nutshell written by Greg Kroah-Hartman. In Chapter 7  (p. 52-56) he describes how you can find a kernel module for hardware you are using. I found that module ata/pata_rdc.c was the one I needed to get the IDE-controller (RDC Semiconductor, Inc. Device 1011 (rev 01)) working.

It was introduced in kernel 2.6.32.* and is still experimental. I get a lot of warnings when booting or accessing the CF or HD, and it only runs at UDMA/33, which is much slower than the possible UDMA/100. But I hope the driver will get better in future kernel releases.
So, after building a custom kernel with all necessary modules included, I was able to boot and install Debian on the CF card, with the internal hard drive containing data.

After installing and configuring all services, copying data from my old server, and setting up the backup scripts, the new server is ready to replace the current one.
After more than 6 years of loyal service and an uptime of (currently) 90 days, it will retire, or at least, it will be used less frequently.

To summarize : the new server isn't more performant than the previous one, and it doesn't have that much more memory or storage, but : It's much smaller, less power consuming and less noisy. It think it might even pass the wife test. ;)

Saturday, March 20, 2010

busy weeks, digging into code, learning new tools

I've had a few busy weeks, both at work and at home.

I've started creating a new website for my department, and I chose Drupal as the supporting framework. I didn't use Drupal before, so it took me some time to get to know how it works, and that also means getting into the code, because I have to implement some custom things, like creating a new theme to reflect the corporate layout of my university. It took me some time, but I'm almost where I want to be, with only some minor tweaks to do. Now I can get started on the structure of the website and later, I'll start exploring the code some more when I start building custom modules.

When I get home, I start digging into the internals of phpMyAdmin, an Open Source project that is written in PHP and provides a web interface for the MySQL database.
After attending a talk about phpMyAdmin on FOSDEM 2010, a few weeks ago, I decided to get involved in that project so I sent an E-mail to the project admin. After some weeks of getting acquainted with the code, trying to solve some bugs and getting patches out, I got accepted last week as a developer on the phpMyAdmin project.

Besides digging into the code of both Drupal and phpMyAdmin, I'm learning to use vim, a powerful text editor, and git, a distributed version control system, because phpMyAdmin switched to git last week.

I almost forgot to mention that I'm trying to get my new server up and running as my current server is getting a bit outdated.

Much to do, and I guess I found the challenges I was looking for some time ago. And I still have social life and get enough sleep. ;)

Thursday, March 18, 2010

phpMyAdmin accepted for Google Summer of Code 2010

Since 2005, Google organises the, by now, well known event Google Summer of Code (GSoC). This programming event gives students the opportunity to participate in popular Open Source projects. When they successfully complete their assignment by the end of the summer, they even get paid. :)

Today, the list of mentoring organisations for GSoC 2010 was made public : phpMyAdmin, an Open Source project that provides a webinterface for popular database MySQL, written in PHP, is one of them.

From now on (18 until 29 March), would-be student participants are invited to discuss the ideas that phpMyAdmin proposes. If you're interested, take a look at the guidelines and discuss your ideas on the developers mailinglist. Other ideas are possible too.

You can find the full time line and more information on the GSoC 2010 website.