Index ¦ Archives ¦ RSS > Category: hacking ¦ RSS

Solving kernel bugs without bisecting

Estimated read time: 1 minutes

So after I upgraded to Linux-2.6.33 my wifi card stopped working after resume. I way lazy and I had no time to bisect it, so I just ignored the problem for a while, then today I looked up the lkml thread and bingo, an easy workaround is there. ;)


Recent hacks, upgrade

Estimated read time: 1 minutes

  • ooo-build: two fixes for the configure script (perl, rsync)
  • the irssi script that renames facebook "u$bigint" nicks to real names based on whois info stripped chars with accents. a oneliner patch makes it possible not to drop chars with accents, just convert them to ascii.
  • The dazuko m8r merged my Linux-2.6.33 patch. \o/

The rest of this entry is not about programming in fact - I upgraded a machine at work from Frugalware-1.1 to 1.2 and I though it may worth noting a few interesting facts:

  • The attitude of this bug is like the famous glibc one. In short: kde3 supported having the same wallpaper on two screens by automatically splitting it up - now looks like kde4 does not. I ended up splitting the wall up using GIMP as well. :P
  • kookaa is not really ported yet to kde4 so I needed to switch to kolourpaint.
  • While upgrading cups, I hit this bug as well. (Notice how Ubuntu calls bugs "answers". ;) )

Running the right command at the right time

Estimated read time: 1 minutes

$ while :; do date -R; sleep 1; done Sun, 28 Mar 2010 01:59:59 +0100 Sun, 28 Mar 2010 03:00:00 +0200 ^C

Edited skype messages in BitlBee

Estimated read time: 1 minutes

A user reported on #bitlbee that in case someone edits an already sent message using the Skype GUI client, BitlBee does not report the change. This used to work for about 2,5 years ago, but now I checked and true, it was broken. When I fixed it I realised that it would be nice to prefix the updated message with something to be aware that it's an edited message, not a new one. The result is pushed out to the git repo and a screenshot is available as well. ;)

samba, gentoo

Estimated read time: 2 minutes

Sorry, I'm continuing the story of uninteresting challenges I had in the last two days. Or if they look like interesting ones, please continue. ;)

Two days ago we (at work) had to repair a samba installation after a 3.0.x -> 3.2.x upgrade. There were 3 problems:

  • the firewall config had to be updated, to allow incoming tcp connections on port 445
  • somehow smbd was listening on ipv6 only, just listing all network interfaces in the config was enough to make it listen on ipv4 as well
  • for another strange reason it no longer accepted hostnames on its whitelist, using ip addresses directly did the trick

The other story from yesterday was fix up the firewall configuration at a small office. The problem was that till now they had a PPPoE connection and the firewall used NAT to share the internet access to the desktop machines, but now they switched to a radio-based access, they got a new modem which did not support PPPoE. Of course in short I just got the usual "the internet does not work!" bugreport. ;)

I must note that I'm not a sysadmin at this office, I just stepped in as the local sysadmin was a SPoF in the system and he (temporally?) disappeared and they asked me beause of "the hours is burning" effect. :)

So all I had to do is to alter the server configuration, which was running Gentoo. I never touched such a machine before, and it's configuration is (of course, since I'm used to our netconfig) weird, but at least the off-line documentation was enough. So after RTFM, I just had to turn off pppoe, set the dns and the default gateway to the address of the new router and all was fine. One notable interesting fact was that there was no damn vi on the server. Given that emerge takes a lot of time, I had to suck with mcedit. :P

Conclusion: yet another example why offline documentation is important, even in case nowadays "there is internet everywhere". ;)

gcalsync #3, vmware, xrandr

Estimated read time: 2 minutes

First, I wasted a few more hours with my never-ending "sync events form my Nokia S40 phone to Google Calendar" project. The result: it's not a daemon, it checks if the last sync was more than a day ago, if it can ping, and if both, but it can't reach the phone via bluetooth, then it raises a kde4 notification, and it also notifies me when (and how) the sync was done, so that I switch bluetooth off on the phone after the sync. As usual, available here.

Second, I managed to fix two annoying bugs when installing Frugalware under VMware: dhcpcd did not update /etc/resolv.conf in the installer properly, now that I changed from dhcpcd to busybox's udhcpc, it seems to be fine. (And udhcpc still works fine in qemu as well.). The other vmware-related improvement is that the newport xorg driver somehow locked up the whole virtual machine, now it's moved to extra, so xconfig does not freeze the VM on a default install.

Third, today finally I managed to figure out how to enable the external output on my netbook, using the openchrome driver. It's just about a single line in xorg.conf:

Option     "ActiveDevice"               "LCD,CRT"

This won't do more than just cloning the output, but it's far enough for me, who just uses the external output for presentation only.

(There is a binary driver which locks up the whole machine about 5-8 times a day, which has a bit better external video support, but stability is far more important for me, and the openchrome driver _is_ stable.)

Partly related, when I connected the external output to a projector, I had to set the screen resolution to 1024x768, and later back to 1280x800. 5 years earlier you had to edit xorg.conf and restart X to do this, now you can do this with xrandr:

$ xrandr --output default --mode 1024x768

and then to switch back:

$ xrandr --output default --mode 1280x800

OK, enough entries for today. :)

Memory upgrade to 3G

Estimated read time: 1 minutes

So my netbook had 1G of ram so far and I was happy with it. Then I started to play with virtual machines and it turned out that the bottleneck of it is the small memory I have. So I just bought a 2G ram module, and at this point things started to be weird. Given that the system booted up and almost everything worked properly, I did not really had an idea. I thought it's a SW problem, so I did a clean Frugalware install on a separate partition as well, and there bash segfaulted in konsole as well sometimes. This ringed a bell, memtest!

After about 15 mins, memtest found numerous errors, then I rode back to the shop where I bought it and I asked for an other module. The interesting points were:

  • Actually the good ram was cheaper than the bad one they gave me the first time.
  • When I inserted the 2G module, the original 1G ram wasn't anymore used as the 0-1G range, but it shown up as 2G-3G.

Now I hope next time I have to increase my ram amount, x86_64 will be mainstream so that I won't have to suck again with a 'custom' architecture. ;)

Sparse checkout example in git 1.7.0

Estimated read time: 1 minutes

Sparse checkout is now part of git-1.7.0. See here on what it is in general. Basically something what svn already knew for years and git did not. And of course git now does it better, since this way it's possible to checkout multiple sub-directories, not just a single one, what svn allows.

Here is a short example:

$ git clone ~/git/git
$ cd git
$ ls|wc -l
$ git config core.sparsecheckout true
$ echo ppc/ > .git/info/sparse-checkout
$ echo perl/ >> .git/info/sparse-checkout
$ git read-tree -m -u HEAD
$ ls
perl/  ppc/

Enjoy! :)

Update: see the comments, as it has been pointed out the "And of course git now does it better, since this way it's possible to checkout multiple sub-directories, not just a single one, what svn allows." sentence is incorrect; but of course having a similar feature in a distributed VCS is still an improvement. ;)

pptp client howto on linux on console

Estimated read time: 1 minutes

So I saw a few howtos on how to set up ms pptp client on linux, but they're mostly about how to click on networkmanager or other guis, so basically they hide the real detail, IOW what config files are actually used.

First install the necessary packages:

# pacman-g2 -S ppp pptp

Here is what I have under /etc/ppp:

# cat chap-secrets # Secrets for authentication using CHAP # client server secret IP addresses $user PPTP $secret *

# cat options lock

# cat options.pptp lock noauth nobsdcomp nodeflate

# cat peers/$network pty "/usr/sbin/pptp $server --nolaunchpppd" name "$user" file /etc/ppp/options.pptp remotename PPTP require-mppe-128 refuse-eap ipparam $network

And to bring up ppp0:

# pon $network debug dump logfd 2 nodetach

If it works fine, you can just use:

# pon $network

(Obviously replace $user, $secret, $server and $network with real values.)

One thing I did not figure out is how to configure it to set the default gateway as well. Right now I use the debug mode, then in the output I see the remote address, finally:

# route add default gw $remoteaddr

Other than that, it works fine - without any damn gui! :)

darcs import on

Estimated read time: 1 minutes

I've contributed a patch to to allow darcs imports, but and I recently got a reply for it from the maintainer. So we worked together a bit more and now the patches are in, just imported the source of darcsweb.

I also created a test project and tested that incremental imports work properly as well. \o/

NB: It uses my darcs-fast-export tool, that's why I started to work on this. ;)

© Miklos Vajna. Built using Pelican. Theme by Giulio Fidente on github.