I had problems using suspend to disk. It worked after adding GRUB_CMDLINE_LINUX="resume=/dev/sda6" #the name of my swap partition to /etc/default/grub and running update-grub2
I had problems using suspend to disk. It worked after adding GRUB_CMDLINE_LINUX="resume=/dev/sda6" #the name of my swap partition to /etc/default/grub and running update-grub2
Starting tomorrow (2010-03-15), I will be at the 28th Open Grid Forum (OGF28) in Munich for four days.
80 compute nodes from our cluster are up and running. We are now waiting for more switches and the filesystem servers to finally get the complete cluster (with all compute nodes) operational. To get the remaining nodes operational all I have to do is to add their MAC address to a file and with the magic of some scripts everything else is configured automatically. Unfortunately it all depends on the missing ethernet switches which should arrive any day now.
Today we achieved to connect to our corporate WLAN (802.1x / EAP-TLS). Normally certificates are only issued to our Windows Users but with help of our IT Department we got certificates for our linux machines. My colleagues tried it several times but it didn’t work with networkmanager neither with wpasupplicant. The last days I had the “chance” to try myself. I started wpasupplicant together with wireshark. After sending Client Hello to our accesspoint (connected to a radius server) , it returned an error message:
Alert (Level: Fatal, Description: Unexpected Message)
The fatal alert Unexpected Message “should never be observed in communication between proper implementations”. The server did not want to see my my certificates and stopped talking to me immediately. After comparing Client Hello bit-by-bit with RFC 2246, I hit on the SessionTicket TLS Extension (defined in RFC 4507) sent by my client:
Ethernet II
802.1X Authentication
Extensible Authentication Protocol
Secure Socket Layer
SSL Record Layer: Handshake Protocol: Client Hello
Handshake Protocol: Client Hello
….
Compression Methods Length: 2
Compression Methods (2 methods)
Extensions Length: 4
Extension: SessionTicket TLS
Type: SessionTicket TLS (0×0023)
Length: 0
Data (0 bytes)
I was asking myself what would happen if I would remove this Extension from the Client Hello so it would look like a old-fashioned RFC2246 datagram? To accomplish this I downloaded the openssl sourcecode with apt-get source openssl, removed enable-tlsext from rules/debian and rebuilt the code with make -f debian/rules (I didn’t want to install it).
I started wpasupplicant with
LD_LIBRARY_PATH=~/openssl-0.9.8g/ wpa_supplicant -d -i wlan0 -Dwext -c WLAN.conf
and it worked! The TLS Extension is not sent by my client and in wireshark the response from the accesspoint looks now like a well formed Server Hello
TLSv1
Certificate, Client Key Exchange, Certificate Verify, Change Cipher Spec, Encrypted Handshake Mess
Conclusion: I am now sure that the server handles the Client Hello wrong. RFC2246 describes in its “Forward compatibility” note:
In the interests of forward compatibility, it is permitted for a client hello message to include extra data after the compression methods. This data must be included in the handshake hashes, but must otherwise be ignored.
Just use aptitude --with-recommends install [k]ubuntu-desktop !
I was not happy with the partitioning of one of the cluster infrastructure servers. It had a software RAID for /boot, one for swap and the rest was a big software RAID for /. I should have used LVM for / for easy resizing, but I forgot and so I had to do it the hard way. I wanted to resize /dev/md2 which was used for / and then use LVM for the rest.
First I had to resize the filesystem. Online shrinking is not supported for resize2fs (at least I was not able to do it) and so I had to boot the CentOS 5.4 rescue system.
After dropping to the shell of the rescue system (without mounting the filesystems) I copied a mdadm.conf from a similar system to /etc so that I would be able to start the RAIDs:
Only starting /dev/md2 would have be enough, but I wanted to make sure that everything is working as it is supposed to. Then, before running resize2fs, I had to do a filesystem check:
Next step was to actually shrink the filesystem and make it smaller than the desired final size:
Then I shrunk the RAID to about 40GB:
and after that I had to resize the filesystem again to use the 40GB:
At this point I mounted the filesystem to see if it actually worked and it looked good (and smaller). Now came the hard part; to use the remaining space I had to re-partition the disk. I started fdisk and deleted the corresponding partitions and created at the same start point smaller partitions (42GB). This was the part were I was really worried about losing all my data which was fortunately backed up (of course). After I created the smaller partitions I tried to start /dev/md2 and it failed, saying that it could not find any RAID partitions.
I then tried to create the RAID again, hoping all data would be still available. I first created the RAID with only one device:
This seemed to work and after mounting the new RAID I saw that all my files were still there. So the next step was to add the second device to the RAID with:
At this point the RAID started to re-sync and 20 minutes later I was able to grow the RAID to the new partition size:
Again I had to wait and before doing the final filesystem resize another filesystem check was necessary:
And after only two hours I finally had what I wanted. I rebooted the system and it came up with the smaller / partition. I used the remaining space to create a new RAID (/dev/md3) which will probably be used with LVM if I ever need more space on this server in the future.
Without having a backup I would have not done all the steps because I was not always sure it would actually work.
Yesterday, I finally found the time to flash my N900 with the latest Maemo version PR1.1. I ran the flasher software on a Fedora host and the process performed quickly without problems. After recovering my backup everything was back to normal. Unfortunately I had no wifi available at the time, so when the backup recovery re-established the software setup, it downloaded ~50MB via UMTS which was somewhat unexpected.
Most notably, the browser feels even snappier than before and I am very pleased that connecting to my OpenVPN now also works over the UMTS/GPRS connection – with the previous version I could join the VPN via WLAN only (and even Patrick couldn’t fix it). I also noted quite a few new packages in the repositories, so there are more hours of fun ahead…
Yesterday (2010-02-06) Benjamin and myself were again in Lech/Zürs snowboarding; just like three weeks ago. Last time (2010-01-17) Pattrick and Torsten were also able to join. This time it was only Benjamin and me.
The weather was similar to our last visit. Mostly cloudy with a few peeks of sunshine. This time, however, we had lots of new deep powder and it was freeriding time. Extremely exhausting but great fun.
Me and my colleague are responsible for linux installations at our customer. In our scenario installations are complicated:
Finally we found a solution which allows us to do installations with FAI. FAI is a tool for mass unattended Linux installation. FAI works well when your hardware and configuration is the same. As we have different clients we had to implement a hook for interactive configuration.
The picture shows our final installation procedure:

We prepared an ISO file to allow our customers to remote boot an rescue system with SSH enabled. This ISO file does not have to be touched anymore as all configuration is stored on our servers. The user would only have to write this ISO (a dd-dump) to an USB stick, connect it with the client to be installed and power it on. The rescue system gets an IP with DHCP and uses a NFS export of our server as nfsroot. The kernel parameter nfsroot= make sure it uses our NFS server. After booting the rescue system, the User gets a message with the actual IP and our telephone number. The user has to call us to start the installation procedure.
We can then connect with ssh and the client IP. As the nfsroot contains our public SSH keys we do not need any passwords. Our corporate DNS allows the use of dynamic DNS. It would also be possible to use a hostname to connect. Unfortunatelly the actual “ipconfig” in the ramdisk has not all DHCP features included and does not send its own hostname in the DHCPREQUEST. There exists already a patch, but it is still not merged.
Before this “rescue linux with nfsroot=” solution we tried gPXE and a patch of me. It did do the DNS update, but gPXE has problems booting some NICs so we abandoned it.
After log-in with ssh we start with preconfiguration of some individual items which would not make sense to configure them in our FAI repository: userid of the owner, install target (sda/sdb/….), encryption yes/no, size of the swappartition,…
The config is written to /tmp/fai/myvars.sh. Hooks and scripts can later access this config to prevent user interaction during installation.
We trigger then the start of the installation procedure (FAI) and watch the installation progress with
tail -f /tmp/fai/fai.log
FAI uses tarballs as base image and installs further packages on it. To speed up the installation we have images with preinstalled KDE/GNOME.
Now we have a standard way to install our clients. FAI also allows to install other distributions like Ubuntu, but it is still not the same : Installations with DVD are different with FAI.
FAI requires a list of packages to be installed. It would be helpful if Ubuntu would provide a meta-package which would also install the same packages as the Ubuntu installer does. FAI could then do the same procedure without using a tarball.
My employer has a big active directory infrastructure with many subsidaries. While configuring Linuxnotebooks to authenticate with kerberos (pam_krb5) against Active Directory. I was asking myself why I have to insert all our local corporate Active Directory server IPs into krb5.conf. Is there no way to just use the DNS-Name of the Domain-Name to locate my nearest Domain Controller? How do Windows XP Clients locate a domain controller? I asked a similar question already 7 years ago, but now I am able to answer this question. The KB Article of MS did not satisfy me so I tried to put here together the most interessting information.
Here is a strong simplification how a XP Client discovers a Domain Controller:
$ DOMAIN=mydomain.example.net
$ dig -t srv _ldap._tcp.$DOMAIN +short
./cldap.pl –domain $DOMAIN –server
$ dig -t srv _ldap._tcp.SiteA._sites._msdcs.$DOMAIN +short
Why do I explain explain this stuff on a LinuxBlog? Because I would be happy to see these features more in linux applications (e.g. ldapsearch).
site-discovery
If there a different locations with site-local servers, the client should alway use its nearest server to prevent WAN traffic.
This technique is also used in CDNs. There are also some approaches with geoip and DNS which could be helpful here. Some years ago I had to modify all site-local DNS servers so that the same DNS entry returns the IP of our site-local OpenVPN server but this was more a hack than a technique.
single DNS entry = all available servers
Instead of configuring different servers in client applications e.g. ldap1,ldap2,ldap3,…. it would be nicer (?) to control the clients just with one DNS entry.
This would also make the applications more robust as new failover servers can easily be published via DNS.
If the first IP returned by DNS is unavailable, the client should also use the other results (just like SMTP does it with MX-records)
Using DNS instead of an IP is also not a drawback her as there are usually more than one working DNS server in an organisation. As DNS is replicated, the same information is available on all other DNS servers, too.
btw: A microsoft consultant told me, that samba is site-aware – Nice! ![]()
Update: Also Yum supports site-discovery and fault-tolerance
Since Monday I am at the High Performance Computing Center Stuttgart (HLRS) and I have started the initial installation of our cluster.The people from the HLRS have offered to support us with the initial installation, which we gladly accepted because they know how to do clusters.
On Monday I installed the three infrastructure servers which are used to control the 180 nodes of the cluster. The cluster is running Scientific Linux and my first task was to get it on those three infrastructure servers.
Those servers have two 500GB disks and they were supposed to be running as software RAID. After the seventh failed attempt to configure the partitions as RAID1 with the Scientific Linux installer we used a Debian install DVD to partition the disks and after the successful configuration of the partitions as RAID1 we installed Scientific Linux on all three systems. Not knowing how to use anaconda to configure a RAID1 (like we wanted to) was a bit embarrassing, but with all the Fedora and CentOS installation I have done I have never configured a software RAID1 from the installer; either the system had only one disk, a hardware RAID controller or I configured the RAID manually after the installation. But at the end of the day all three system were installed and configured for their tasks.
Today (Tuesday) we used the installation to boot the first two nodes of the cluster. All the nodes are running disk-less and are booting over TFTP/NFS from a single read-only image.
Last week I have finally updated our mirror server to Fedora 12. It was still running Fedora 10 which has reached its end of life. The server was running Fedora 10 for a long time and it was always running with a CentOS kernel. The Fedora kernels were, at the beginning, not stable enough (crashing after three or four days) so that I quickly switched to a CentOS kernel. I know that I should have reported bugs, but in the case of the mirror server I am more concerned to keep it up and running than getting debug data from it. It also not easy for me to get physically to the machine so that I had a lot of good excuses to switch to a CentOS kernel.
Now the system is running using the Fedora 12 kernel and after a week it is still up without any problems.
I am running one of the RPM Fusion builders in a VM using CentOS and after I saw that the newly created VMs on my notebook are using virtio for network and disk access I thought that I will try this also for my builder VM. It was pretty easy and straight forward.
First I had to update from CentOS 5.2 to CentOS 5.4 so that the virtio drivers are available. After that I was just following http://wiki.libvirt.org/page/Virtio.
For the network:
For the disk:
During the boot of the VM I can now see that it is loading the virtio disk drivers and detecting vda1 and vda2. Using lspci and lsmod I can also verify that the new virtio devices are available and also used. The VM seems to be faster but I have not actually benchmarked it.
On the last day of the last year (2009-12-31) both RPM Fusion’s mirrorlist server were most of the time not reachable. The problem started at 00:53 (UTC) and it was at least going on until 16:00 (UTC). Both mirrorlist servers have been on the same network and the router for that network broke down. If it would have been the link to our provider the router had a backup route to stay on-line, but this time it actually hit the single point of failure – and everything was off-line. See: error report of the provider (german).
I was never happy that both mirrorlist server were running in the same network and I especially wanted to get the mirrorlist server off my mirror server. Thanks to Patrick I have now access to another VM at a different provider where I am running a new mirrorlist server instance. It does not require much in terms of resources and bandwidth, but having root access makes everything so much easier.
RPM Fusion’s mirrorlist server are now two dedicated VMs at two different providers and that should protect the functionality from failures like the one on 2009-12-31.
I had already user experience with Kerberos, but now I wanted to install it myself. I took the MIT Kerberos implentation. Even I was used to use “single-sign-on” with SSH keys, it was amazing to see how ssh, telnet, smbclient and ldapsearch on an Active Directory Server works without logging in. Kerberos is also capable to encrypt telnet network traffic.
Installation was fast, too. It took only long to understand the architecture of Kerberos. Fortunatelly oreilly has a nice book, too.
I read a whole book about OpenLDAP to use all features of a directory server. I managed to migrate from flat files to LDAP and set-up replication. Samba is using OpenLDAP as backend, too. Installation was really fast and it was quite uncomplicated.
Together with some colleagues we rented a rootserver at Hetzner. Everyone has now an own KVM guest with 512 MB RAM and 50 GB HD. Usually KVM uses a bridged network setup when using official IPs. As Hetzner routes the IP to the rootserver (instead of switching it), we had to built a small virtualised routed network with internal transfer IPs so supply the guest with network connection.
On demand from Adrian I spent a KVM guest as mirrorlist-server for rpmfusion.
Adrian just upgraded lisas.de to Fedora 12 and that brought us an upgraded python. Unfortunately the current planet version uses the md5 module which has now been deprecated, so cron now sends me one deprecation warning per hour, which is rather frustrating. I wrote a little patch to fix the planet and this entry will be the one to test the patched planet with. If it works I’ll add the patch to bug #552462.
I’ve moved my printer to another room. Now it’s connected to my continuously running computer. But it’s constantly connected to power and is not really switching off. So I was searching for a solution to switch it of automatically. Using a µC would be nice, but the idea a the moment is to use a USB->serial converter and us the status pin RTS to switch a solid state relay. Today I’ve successfully tested the setup. First I tried with python, which in general is able to set the status of that pin, but unfortunately python is too “high”. During initialization and termination RTS is touched. And I don’t want to “shock” my printer with short switching pulses. But I’ve found this C-code. This allows to keep the state of the pin after termination of the program. This little piece of code exactly does what I need. I’ve added a diode before connecting RTS to the solid state relay to make sure that the relay does not see a negative voltage. I can not yet post a picture of that because my prototype is highly dangerous and I don’t want to provide any examples of dangerous 230V wiring on the net.
The next step will be to set up a cups backend that switches on and off the relay.
Since I’m on holiday I have more time to play with the µC. I’ve now got a 2X16 character display running and I can read temperature from the small one-wire sensors. So I’ve put that together and created a thermometer.

The sensors are the small barely visible black dots on the upper part of the breadboard. The oscilloscope visible on the left I’ve taken with me from office during Christmas holiday since I can’t afford such a thing.
So this is the obligatory blogged-on-the-N900 blog entry, straight from the maemo browser running all that WordPress JavaScript. So far, I am pretty amazed, although it’s only one day and I didn’t have much time to play with it. Software and UI are much more polished than I would have expected, and browsing the web works so much better than with any other mobile browser I’ve used so far.
In the night from Friday to Saturday a disk (slot 7) from our external RAID, containing most of the mirror server data, failed and was marked as BAD. No really a big problem, yet. The hot spare drive was activated and the rebuild started. About 24 hours later the rebuild finished. On Sunday (around 16:00) another drive (slot 5) failed and we immediately started to sync all the data to another box in case another drive decides to go off-line, which would mean a complete data loss. All the data on that RAID are (only) mirrored, but to re-sync all the 9TB we currently have would probably take a few weeks. Unfortunately the sync to another box will also take a few days until it is finished, so it is still possible that we might lose a lot. We are waiting for the replacement disks which have been promised to be here by Monday (today), but as the rebuild needs over 24 hours there is still the chance of a data loss.
Update (2009-12-14 23:20): The replacement disks have arrived and after more than twelve hours 25% of the array has been rebuilt.
Update (2009-12-15 11:00): After more than 24 hours 58% of the array has been rebuilt. It seems to rebuild faster during the night.
It’s on its way! I have finally ordered one of these fine mini laptops that can serve as cell phones, too. Now I’m sure that Adrian will taunt me for buying a device that comes with my favorite audio daemon pre-installed, but hey if it works as it should I’m OK with that. What convinced me to get one of these phones is that I will be able to install Debian packages, that it features an XTerm hotkey that will open a shell from anywhere and that it should be useful without relying on my Google account.
Today I picked up my first package from a Packstation. A Packstation allows receiving packages 24/7 without beeing at home. It is quite simple: When a package arrives, a Mail/SMS notifies the receiver. The receiver then needs to go to a Packstation, enter a PIN, open a slot and take the package.
Not really back in school, but it has been now more than one week that I started my new job at my old university in Esslingen at the beginning of December 2009. After only 11 months at my previous workplace (Matrix Vision) I am now working for the faculty of Information Technology.
I will be responsible for the setup and installation of the new cluster of the university. The cluster will be part of the bwGRiD and it will have around 1500 cores and is currently being installed. It is partly water-cooled and a few days ago the racks were delivered and installed. The cluster is from NEC and we are expecting the servers to be delivered in the next few days. The cluster will be running Scientific Linux.
I am now in the same building as my mirror server. This might be a good thing, because now I am much closer to the hardware and can act faster if something unexpected happens… It might also be a bad thing, because now I am much closer and can experiment with things I would not do if I was not in the same building.
I’ve been to Tours in France. For picking up my sister at the Euro Gusto. This is an exposition comparable to the Slow Food. OK, I’ve to admit it’s not very reasonable to drive 1800 km in 3 days just for having a look at some wine and tasting some smelling cheese. But I like France and it was definitely good to away from work for some days and I had the possibility to correct some of my prejudice about French people. They tried hard to understand my bad French and did not ask for every word I’ve pronounced in a wrong way and they even tried to talk German to me.

The picture shows the things I’ve bought there: cheese, calvados, almonds, fleur de sel and nougat.
One interessting change in Grub2: “The first partition of the disk is now accessed with hd0,1 and not longer with hd0,0″
A german article about further changes in Grub2: linux-magazin.de
Now that the prototype is running it’s time to move on to “series” production. The files of the first version are here.
So a PCB has to be designed and the parts have to be selected and tested. Selecting the parts is not that difficult, but designing a PCB is not that easy since I don’t have any experience. In addition it looks like the old days are finally over. It’s becoming more and more difficult to get non-SMD-parts.
Btw: I’ve updated the pictures. The red background was a little bit too much and had to be changed to black.
Question: Does anybody have a good idea how to take picture to show that the dimming is working?
While idling in front of my desktop watching the karmic update complete, I decided it was time for a fresh wall paper. So I put some of the good, old convergence onto a photo I took at our local tram museum recently. In case you want to run underneath a historic tramway, too, here a three different resolution edits (1280×1024, 1680×1050 and 2560×1024):
Yesterday evening the first real result was visible. Reception of DMX data and output of PWM on 8 channels is working now.
At the moment it’s only a development board.

All external parts are attached via loooong cables to other hardware.
A PCB Design is ongoing, but not all the details are yet clear for series production.
OKOK, that was maybe a little bit to short. First of all:
DMX: a strange protocol, that looks like it was intended to keep amateurs from building their own devices by adding a protocol error as start signal. But with todays µCs is possible, even though it’s a little bit ugly.
In my setup there is a light control desk which is the sender. So I only care about receiving at the moment.
The received 8 byte are saved in the µC and are the input data for the PWM generator.
Th PWM signal is used for PFC.
An external circuitry is used to detect the zero crossing of the 230V AC and based on the received DMX data triacs can be started.
Now that the basic functionality is working I can add service functions and error detection.
USPprog (available here) is a very useful tool. I mainly use it as a AVRISP mk2 clone. This is done by flashing an AVRISP mk2 emulation firmware in the µC of the USBprog. Tools for doing that are available for the command line and also as GUI. I’ve ordered the parts together with some ATMega32 µCs and a prototype board. Since the USBprog consists of very few parts it can be easily soldered even by not so experienced users. The result looks like this:

The difficult part is to flash the boot loader SW on it. It’s a chicken/egg problem. I want to flash a SW on a µC that I want to use for flashing a µC. But with an old PC that has a parallel port it can be done.
After that I had a working USBprog. On the right you can see the USB port and on the left the cable used to connect to the µC.
Having a complete PC is a good thing, but for controlling small things like a light it’s way too big and expensive, so I’ve decided to use smaller processors for that. After some research I ended up with the AVR micro controllers made by Atmel. They are easily available and affordabel and what is even more important: An open source toolchain consisting of avr-gcc and avr-libc exists and even the hardware I’ll be using for programming the µCs is open source: USBprog.
I finally have mutt configured in such a way that it first tries to display the plain text part of a mail and only the HTML part if there is no plain text available. For years I had mutt configured to display HTML mails using lynx but it was displaying the HTML part even if there was plain text available.
To display HTML mails I was using auto_view text/html in my .muttrc like it is described everywhere with the following corresponding entry in my .mailcap:
text/html; lynx -dump %s; copiousoutput; nametemplate=%s.html
The problem with this setup is that it displays the HTML part of a mail even if there is a plain text part available. So I had auto_view text/html disabled for most of the time and edited the configuration file manually to enable it again for the rare cases in which I received a HTML only mail.
But as this is mutt and almost everything can be configured I finally searched and found a solution:
auto_view text/html alternative_order text/plain text/html
If the message has a plain text part and a HTML part mutt shows me the plain text part, but if there is only a HTML part available I get the HTML converted to plain text. Exactly what I always wanted.
With some help of Alex this is now working and I can say “Hello world”
Whatever blogs were originally invented for, I’ll use it mainly as a documentation tool for my struggles with the atmega32.
Yes, I knew this would happen. However, that does not diminish my frustration. Of all the desktop machines that I work with, I only use three to play audio frequently. These machines currently run Ubuntu Jaunty, Ubuntu Karmic and Fedora 11. For each setup I had the good intention of keeping PulseAudio after installation, but it failed on each installation for a separate reason:
Even worse, it is becoming more and more painful to remove PulseAudio. You will loose ubuntu-desktop and gnome-bluetooth (also on Fedora). For Karmic I had to recompile gnome-session or else it will fully load one core trying to connect to PulseAudio. Gnome will no longer let you control the volume, neither from the panel nor via the keyboard.
So now we have shiny new features (that I never had a chance to use, because I always have to disable PulseAudio), but solid, reliable and easy sound output is history. Congratulations on breaking Linux Audio!
Last Thursday (2009-08-13) I gave a lightning talk about the mirror server I am maintaining. According to the description from Wikipedia lightning talks are usually between 1 and 10 minutes with a 5 minute limit being common[¹]. In this session there were four talks with each being about 15 minutes with additional 5 to 10 minutes for questions. So it was a bit longer than the definition but that was a good length for all four talks.
The lightning talks were organized by the Chaos Computer Club Stuttgart (CCCS). They are organizing a talk every month and in the summer it is usually a lightning talks session. The given talks were:
I am very happy that I decided to give my talk and altogether it was a very nice event. There was also an audio recording (which unfortunately has not yet been released).
Even though I had hardly used it, my Dell Inspiron laptop broke after two years: now it will only run with the AC adapter plugged in and the battery removed. Even worse, I had to by a new AC adapter and a replacement battery to find out that it’s actually the laptop that is having issues.
Google also told me that this is rather common with Dell’s Inspiron models. As a laptop without battery is rather pointless, I decided it is time to start looking for a new one – so now I am the proud owner of a Lenovo ThinkPad SL500. ThinkPads have gained the reputation of being solid business laptops over the years, however the ThinkPad fan base has decided that the SL series is not worthy of receiving the ThinkPad brand – at least if the comments to this announcement are representative. A common theme seems to be to call the SL models ThinkBad laptops.
Now that I’ve been using my new laptop (the NRJAQGE edition with nVidia graphics and the higher LCD resolution) for a few weeks, my take on the SL500 is this: you get quite a load of laptop at a reasonable price. While I agree that it doesn’t feel as tough as for example an R61, it is still pretty solid. Some of the changes introduced with the SL series are questionable though: the glossy top is definitiley a good surface to collect hundreds of fingerprints but it fails to deliver the hip look Lenovo has probably tried to achieve.
I’m currently running Karmic on the SL500, which supports most of the hardware. What is not working at the moment is the UMTS card, the fingerprint scanner and the Lenovo buttons. There’s a patch available for the buttons and it looks like it could be included with the next kernerl update.
Today I sent my master dissertation to Brunel University. I am happy to have now a lot of more spare time than the last year.
I am doing now even more data-mining in the log files of our mirror server and in the last few weeks I have added more graphical output to the information interface of our mirror server.
The first, pretty simple, new diagram is the Disk Usage By Mirrored Project. It is created daily from a du run over the whole mirror area and then visualized using the existing code to draw a pie chart. The reason that Fedora is the largest mirrored project is due to the fact that I count all the Fedora related projects I am mirroring (fedora, archive.fedoraproject.org, secondary.fedoraproject.org) as fedora. If this diagram is now compared to the Overall Traffic Breakdown diagram it is interesting to see that there is not much difference in traffic generated by mirroring Fedora and Ubuntu, but the space required to mirror Ubuntu is much lesser. If I would know a lot more about Ubuntu I probably could start mirroring exotic Ubuntu things (just like I do with Fedora).
In addition to the new pie charts I have also created world maps on which the client distribution around the world can be seen. The code to generate the maps is based on generate-worldmap.py. With the help of this I am now able to create a world map with the client distribution for all downloads on which it can be seen that Europe is clearly the location of many (maybe even most) clients connecting to our mirror server, but also that there are basically connection coming from all over the world.
In addition to the overall map I am also creating a map for each mirrored project. It can be seen that there are mirrored projects (like Ubuntu, Fedora and OpenSUSE) which have pretty good redirectors so that only clients in the vicinity are redirected to our mirror. There are also mirrored projects (dag) which do nothing like that which results in connection from all over the world. And then there are projects which have a good redirector but do not have enough mirrors around the world like fedoraproject. What is called fedoraproject on our mirror server is a mirror of archive.fedoraproject.org (Fedora 8 and older right now, which still seems to be downloaded).
About two years ago I started to build a music player. I had an old notebook and a friend gave me his old CD player. The plan was to get the important parts of the notebook into the chassis of the CD player. This was done about two years ago and since then it stayed half-finished. Last week I finally had enough motivation (and the other notebook acting as our music player using mpd was actually being really used again) so that the project is now finally finished. Before I started it looked something like this:
On the left side the board is mounted on two pieces of wood. I had to cut new holes on the backside for all the connectors. Although it is booted over network and running from NFS it needs a hard-disk, because the BIOS needs 15 seconds longer if there is no hard-drive. As I wanted a fast boot I had to connect something to it and that is why I bought a 256MB flash drive with a 44-pin IDE connector.
All the cables which can be seen on the right side are from my idea to use the original buttons of the CD player chassis. The cables are connected to the keyboard controller and they are a very good example that I am more a software than a hardware guy. The plan was that certain combinations of the cables generate certain keyboard events (characters). That worked perfectly and I tried out many combinations and found enough keyboard events to connect all the cables to buttons of the CD player chassis. The problems started when I soldered all the cables to the board with the buttons. After I had soldered all cables to the board behind the buttons I powered it on again and it was generating lots of keyboard events even if I was not pressing any button, probably because I did not think about it that all cables which were connected to ground pins were now all connected together. So it was a bad idea and everything I did was pretty much useless. So I removed everything again and connected it again, but this time I tested the result after every button.
The most important button was the power on button, which works. I have now only four working buttons which is far from what I wanted but better than no possibility to control anything directly at the chassis.
To use the characters coming from the buttons I took mingetty, removed most of the code and modified it to read just one character (readfromtty1.c) and return that immediately to a shell script wrapped around. So if I now press the REPEAT button I get a message in the syslog saying “REPEAT pressed“.
I also had to cut two more holes into the CD player chassis on the left side for the CPU fan and for the audio connectors.
That was the only change to finally use it. If I now press the STANDBY/ON button, about 20 seconds later it starts playing music. I am using mpd so that I can control it from anywhere and pressing the same button again shuts the system down in about 5 seconds. Without much work I could get it probably to boot faster but right now I am using an only slightly modified Fedora 11 with a custom kernel so that I probably leave it the way it is now.
In addition to the buttons and all the available mpd clients I can also control the music player using my phone. I have extended my phone2jabber script to not only send jabber notifications when somebody calls but also to play the next song when one of my unused MSNs is called.
In one of my last posts I wrote about how much Fedora related traffic we had on our mirror server during the Fedora 11 release. I got one huge comment from Jef with three questions which I am trying to answer now.
1) Assuming you could find an accurate count of EU mirrors on F10 release. Can you use the ratio of available mirrors then to available mirrors now to re-scale the activity…sort of like a mirror inflation correction to scale activity in terms of available bandwidth.
As the mirrorlist is very dynamic I do not think I can answer that. But if somebody has some useful numbers concerning the number of EU mirrors during the F10 release as well as during the F11 release it can probably be done.
2) Can you trend the “shape” of the first week of F-11 compared to the first week “shape” of F-10 activity on your mirror? Forget about absolute scales. Normalize each to the maximum associated with the first 24 hours of activity and see how the activity trends in time relative to that normalization. Does F-10 for example see the same second day uptick relative to the first day that you see in F-11?
That should be possible. After some gnuplot-ing I have the following diagrams:

This shows the data transferred for each release (normalized to the first day). It is important, however, to know that the first day of a Fedora release is not 24 hours, but only 8 hours on our mirror server as the release usually happens at 16:00 local time. Therefore I also made another diagram using the absolute numbers:

It can be seen that basically only the first day differs for some reason. The following days were pretty much the same, just a bit less traffic than during the Fedora 10 release. So maybe this difference is related to my assumption that there are more mirrors in Europe. Although the amount of a traffic does not differ so much the mirror server has been in a much better state during the whole release. The load used to be much higher and the http server had no free connection slots available. This time the load was not really high and after the first day it was always possible to make a http connection (although it took longer than usual).
3)I’d be really interested to know if you could identify any upticks related to F-10 downloads further away from F-10 release that correlate with ambassador activity at an EU event.
No idea, but I have the amount of data downloaded per day for each mirrored project for at least the last year available here. So if there are certain dates it can be looked up.
For my own reference these are the gnuplot commands used to create the two diagrams:
gnuplot> set terminal png size 400,300 gnuplot> set output "absolute.png" gnuplot> set xlabel 'Days Since Release' gnuplot> set ylabel 'Terrabytes' gnuplot> plot 'F10' smooth csplines title 'Fedora 10', 'F11' smooth csplines title 'Fedora 11' gnuplot> set output "normalize.png" gnuplot> a=2.23 gnuplot> b=1.54 gnuplot> set ylabel 'Downloaded Data (Normalized)' gnuplot> plot 'F10' using 1:($2/a) smooth csplines title 'Fedora 10', \ >'F11' using 1:($2/b) smooth csplines title 'Fedora 11'
So I found out that emails which I expected to have been forwarded a long time ago from my home server to my normal email address where still sitting in the mbox of my home server for over 6 months. So instead of using the easy way of copying the mbox to my real mail server I tried to forward them all using SMTP. I remembered that there exists a program called formail which should exactly do what I want.
To forward/bounce all mails from a mbox to my email address adrian@lisas.de I created a .procmailrc like this:
:0 * ! adrian@lisas.de
and then it does not take more than cat /var/spool/mail/adrian | formail -s procmail and all the mails were in the queue and ready to be delivered.
It took me a few attempts to get it right, so instead of forwarding/bouncing each mail one time I manage to bounce each mail over 200 times so that I had about 6000 new mails in my INBOX.
The Fedora 11 (Leonidas) release has been the Fedora release with the least pressure on our mirror server. This is probably due to the fact that there are more mirror servers in Europe than ever. In addition to the usual http/ftp/rsync traffic I had bittorrent running for the first time, but the bittorrent client was never using more than 50 MBit/s of the bandwidth (and that also dropped after the second day). Compared to the normal mirror traffic that is not really much. After running for about a week the bittorrent client has uploaded around 600 GB.
The Fedora traffic during the first few days after the release was of course higher than the average ~450 GB/day:
On the second day of the release almost 70% of the mirror traffic was Fedora related:
And on the bandwidth graph it can also be seen when the bitflip was (around 15:00 local time) and when the release actually went live (16:00 local time):
I do not know why the traffic dropped so significantly at around 00:00, but probably our mirror was dropped from the mirror list, because the crawler (from MirrorManager) was no longer able to connect and verify that our mirror was up to date.
Syncing Fedora 11 to my mirror went pretty well. With hardlinks it took not much longer than 24 hours to transfer all the data.
On Monday rawhide was updated again and my mirror scripts started. This time it took more than 55 hours for the first run and it just finished a few minutes ago. I re-started the mirror script immediately after it finished because in the 55 hours it was running rawhide had already changed again. So it looks like to get my rawhide mirror in sync with the master server it will take more than three days. The slowness is probably not only caused by the large number of changes but also by the fact that it is now also necessary to transmit all the DeltaRPMS. Somehow it should be possible to use the DeltaRPMS for mirror syncing. Another reason might be that my mirror server has been pushing Fedora 11 data out at about 1Gbit/s, which probably does not help to speed things up.