My small and very personal comparison between Fedora 11 (which I run on my laptop) and Ubuntu 9.10 which is my main Linux distribution.
yum vs apt-get yum is a lot slower than apt-get why do I need connectivity when using yum search Why does yum defaults to ‘N’ (no) when I ask it to install software? All in all I like apt-get a lot better.
Default resolution Ubuntu 9.10 configured my EeeBox and monitor out of the box, Fedora 11 didn’t.
I installed my new laptop with Fedora 11, and I must say that it is a very nice distribution. I’m even contemplating leaving PulseAudio enabled, ‘cause it just works. Unlike ubuntu.
To update my story on the KPN dongle (dongel). I just used it on this laptop and it worked out of the box. The only thing you need to remember is that you need to insert the stick before booting you machine.
On my new netbook I wanted to get rid of gdm and just start X right away. I use auto-login anyway so it is a bit stupid to first start gdm and then immediately start X.
So I removed gdm and edited /etc/rc.local to start X:
su - miekg -c xinit xterm But this sort of does not work anymore in Ubuntu Karmic. Karmic now uses upstart as an init replacement.
I’ve bought a new 11.1" netbook from Asus, this is going to replace my aging 4G Surf (named charm). I’ve named the new one up, so I’m hoping the Large Hadron Collider is up and running soon and discovers a new flavor of quarks - ‘cause I’m running out of names. (strange is already allocated if I ever buy a Mac and run Linux on that, top and bottom just don’t sound right).
iotop is a very neat tool showing the processes which do the most i/o in a top-like manner.
Again having fun with SLES:
SLES-10:
# rpm -i /tmp/iotop-0.3.2-1.1.x86_64.rpm warning: iotop-0.3.2-1.1.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID ee454f98 error: Failed dependencies: python >= 2.5 is needed by iotop-0.3.2-1.1.x86_64 Goes off and installs SLES-11
SLES-11:
# rpm -i warning: /tmp/iotop-0.3.2-1.1.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID ee454f98 error: Failed dependencies: python < 2.
An unofficial rpm of e2fsprogs installed on a SLES 10 system:
# ldd /sbin/e2fsck libdb-4.3.so => /usr/lib64/libdb-4.3.so (0x00002b5e004e2000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00002b5e006d6000) libc.so.6 => /lib64/libc.so.6 (0x00002b5e007ef000) /lib64/ld-linux-x86-64.so.2 (0x00002b5e003c6000) Now guess what happens when you reboot?
The nss-ldap module allows you to have your user information in a LDAP server. Within the module you can select some options on how to connect to the LDAP server:
hard, use an exponential back-off when connection, waiting up to 64 seconds before trying a different server. soft, when the server is not responding give up immediately. The problem is, both are insufficient…
With soft you don’t have any benefits for your backup LDAP server.
Well, as I’m off to The Hague for the rest of the year, I need some kind of Internet in the evening. So off to KPN to get a umts card (or dongel as they call it). For late night gaming I’ve also bought a PSP :-)
Well, to make a long story short: this stuff is hard to get working in Ubuntu. When you insert the dongle it is first seen as a cdrom…, only after you successfully install the Windows software it will become a modem.
After trying out Zabbix, I’m back to munin and monit for my (small) monitoring needs.
I think the beautiful rrd images of munin are just unbeatable and monit has never let me down; you can easily restart daemons - something I was still configuring in zabbix. And our Ubuntu Certified Professional Course also has a few slides on munin. This was the last push I needed.
I was still a bit rusty so I just followed a howto to do the initial configuration.
Well, a lets-install-kernel-2.6.31-on-Ubuntu-Jaunty turned out to be a bad idea. The kernel install went OK, but my X went poef. No more bitmap fonts. Looks like some bad interaction between the X Intel driver and the new kernel mode settings.
Anyhow, I figured why not upgrade to Karmic? 15 minutes later my desktop system was completely hosed and I was left staring at a GRUB 1.97 menu.
I never knew that the GRUB command line allows you to type
With monit services are restarted, ever since I’ve installed zabbix I wanted the same functionallity. Turns out this is possible, but it takes some configuration.
Also see the zabbix manual, where it gets interesting from page 160 onwards.
In zabbix go to Configuration->Actions.
Add a new ‘Action Operation’ in which you want to run a remote command.
Operation type: remote command Remote command: host:script in my (test) case elektron:/home/miekg/bin/zabbix_service {TRIGGER.NAME}: {STATUS} And zabbix_service is now a shell script which will echo its arguments to a file in /tmp.
The shell (in this case bash) is packed with features. So much so that you will probably never ever learn them all. Brace expansion is one of those things.
What is it? In the bash manual it says:
Brace Expansion
Brace expansion is a mechanism by which arbitrary strings may be generated. This mechanism is similar to pathname expansion, but the filenames generated need not exist
So what is it? You can make your shell generate strings, like so:
Just bought anothor EeePC, this time the 900HD variant. Installing Ubuntu as we speak and giving Windows the boot. The 4 minute encounter with Windows XP (which felt like 4 hours) gave me the impression of a fast machine. This was just a quick peek to see if the hardware was working.
Going with Ubuntu 9.04 - then removing Pulseadio and (maybe) upgrading the kernel to 2.6.30.4.
The trick is to disable the hardisk in the BIOS and to disable all quick boot stuff in there too.
Excellent idea Ton!
How to make a custom filter in git to expand the string $Hash$ to something more usefull, ala the $Id$ (which git already supports), but then with more info (committer, date, etc.).
Which also helped in this case was the Pro Git book which is, as of now, a must buy.
But as always is the case between Ton and me, I find his scripts too long :-) So I miekified his solution.
While rechecking my rdup test-suite one of the tests failed. On closer inspection it was due to the following line:
DAY_BEFORE=$(( $(date +%d) - 1 )) When $(date +%d) is 10 this yields:
$ DAY_BEFORE=$(( 10 - 1 )) $ echo $DAY_BEFORE 9 Also with octal values (those starting with a leading zero), it also works:
$ DAY_BEFORE=$(( 06 - 1 )) $ echo $DAY_BEFORE 5 So when does this go wrong?
A customer wanted some performance figures for a ESX cluster we built. We used our own atop and the trusted workhorse of plotting Gnuplot to make some performance plots.
Creating the data As said, we used atop for this, it has a nice data gathering mode which prints out lines like these:
13:40:07 cpu %usr %nice %sys %irq %softirq %steal %wait %idle 13:40:08 all 0 0 0 0 1 0 4 95 13:40:09 all 0 0 1 0 0 0 0 99 We were interested in the values of %usr, %sys, %irq + %softirq, %wait and %idle.
So you think you know git… today I found out something “funny”. In a git repository:
$ git log $ fatal: object 1fcc8de9361c56e538ff35d8cc4b07a9c95b7bf3 is corrupted Okay, WTF? Lets look in the .git directory:
$ cd .git/objects/1f $ ls -l total 4 -r--r--r-- 1 root root 1057 2009-06-23 19:03 03db070bcb47bff3f8106f2ec7028b3496aaa8 -r--r--r-- 1 root root 0 2009-08-03 21:41 cc8de9361c56e538ff35d8cc4b07a9c95b7bf3 Ah, 0 bytes, that explains it (probably due to the weird reboot of last night and ext4).
Finally made the switch to jackd which works so much better than Pulseaudio. Ubuntu did not make this easy, but with some perseverance it works. One of the things I really hate about Pulseaudio is that when I click on a new song in audacious it would take about 1 second before the audio stabilized. Also with flash audio would stutter for the first few seconds.
First (if you don’t care about gnome-desktop):
Do I want this?
% ls -ld Joe_Cocker_-_The_Definitive_Collection drwxr-xr-x 2 miekg admin 4.0K Jul 20 22:20 Joe_Cocker_-_The_Definitive_Collection/ % cd *joe* cd: no such file or directory: *joe* % unsetop case_glob % cd *joe* % pwd /shared/vol/music/J/Joe_Cocker_-_The_Definitive_Collection
Currently we are building a fairly rock solid high availability cluster for a client. This has the “usual” ingredients: two locations, two NetApps, two clusters of three vmware ESX servers and a bunch of virtual machines running on top of the ESX servers. Also included in the mix is a VDI (now called View) virtual desktop infrastructure for running virtual windows XP clients.
This is all managed by SRM (site recovery manager) and it is almost working.
I already knew (Open)Solaris sucks, but now Ton has also figured it out.
ZFS definitely does not suck. Why not petition Oracle to GPL(v2) ZFS? Especially now Oracle wants to kill OpenSolaris?
Yes! At work today we made dhcpd crash on a /etc/dhcpd.conf :) We were working towards the following (now working) setup:
class "igel" { match if binary-to-ascii(16, 8, "-", substring (hardware, 0, 5)) = "1-0-e0-c5-67"; } pool { allow members of "igel"; range 192.84.30.161 192.84.30.170; # igel[0-9] } But while figuring this out, dhcpd went boom :)
[root@vmaster cfengine]# dhcpd -d -f -cf hosts/vnet/etc/dhcpd.conf Internet Systems Consortium DHCP Server V3.0.5-RedHat Copyright 2004-2006 Internet Systems Consortium.
We (my wife and I) have a lot of books, currently some 637…
$ sqlite3 biblio.db 'select count(*) from books' 637 But we seem to loose books occasionally because we lend them to people and forget about it. So Linux (and Perl) to the rescue. I already own a bar code reader to read the ISBN number of books and then I use Google to give the author, genre, etc. (fully automated of course).
This is an English translation of a blog item I wrote for AT Computing
While giving a course a student showed me the following:
$ ps -ef > /tmp/file Where /tmp is 100% filled yields no errors and seems to have worked!
Lets try to see what is going on here.
Firstly, lets fill up a file system. We are going to use an fs mounted under /media/disk:
$ cp /dev/zero /media/disk/HUGE $ cp: writing `/media/disk/HUGE': No space left on device Further we need a little program to test a few things:
Well, thanks to Ubuntu I’m now running the new (new!) 2.6.30 kernel on my systems.
No ill effects as of yet…
Btw, I’ve written the following script to download the latest kernels from Ubuntu:
SYNOPSIS: latest 29.4, this will fetch 2.6.29.4 or latest 30 which will get 2.6.30.
#!/bin/bash # download the latest ubuntu mainline kernels ubuntu="http://kernel.ubuntu.com/~kernel-ppa/mainline/" version="2.6.$1" # need 29.n as argument arch="i386" # or amd64 major=${version%.[0-9]} minor=${1%.[0-9]} patch=${version#2.6.*.} [ -z "$1" ] && { echo -e "Usage: $0 MINOR\n$0 29.
Suppose you want to limit access to some servers, only people member of a specific group (or multiple groups) may log in.
The following is one way to tackle this. In this example I will configure ssh access in such a way that only people from the admin group can login. The nice thing is that this will work regardless of any Kerberos or LDAP usage.
Preparation In /etc/pam.d find the “service” which you want to add a group policy to.
Mental note to self
Having a host listed in a listprincs output isn’t enough to have single-sign-on working.
You have explicitly add it with ktadd host/your.host.com
So in my case:
# kdadmin.local .... kadmin.local: addprinc -randkey host/charm.atoom.net ... kadmin.local: quit And then you can do a (on charm.atoom.net):
% kinit Password for miekg@ATOOM.NET: % slogin elektron.atoom.net And have a password-less login to my server.
I wanted some git information in the prompt I currently have. While thinking and googling about this, a quote on Bart’s log got me thinking. I don’t need to see my current host, nor do I need to see my current user name.
I always login under my own account (miekg) and if I do change accounts, I probably will be forced to use bash. So showing the current user name is quite useless.