Thursday, April 30, 2009

Cross compilers for openSUSE

Based on Torsten Duwe's great work (currently in the Buildservice in home:duwe:crosstools), which is building but not working 100% correctly, I fixed the powerpc version up (I have no other architecture to test on) and put them into the openSUSE Buildservice in home:seife:cross for now.
Get them from here: http://download.opensuse.org/repositories/home://seife://cross/SLE_11
(don't get put off by that SLE_11, the cross compilers should be pretty system agnostic. For testing I ran them on a SLES10 which is probably older than anything you want to use, and they worked just fine)

Edit: I just found out that this only works because I have a patched rpm on my SLES10 which understands lzma compression. I have added SLES10SP2 to the repository so that pre-LZMA-rpm distributions still can use it.

So if you need a powerpc crosscompiler, just add that repository, install packages "cross-powerpc-embed-linux-gnueabi-binutils", "cross-powerpc-embed-linux-gnueabi-gcc", "cross-powerpc-embed-linux-gnueabi-glibc" and "cross-powerpc-embed-linux-gnueabi-kernel-headers" and you are ready to go.
Make sure that /opt/cross/bin is in your $PATH and configure your project for target "powerpc-embed-linux-gnueabi".

Still TODO: get them into a proper semi-official project.

Oh - and of course I already changed my favourite embedded projects so that they are now able to build with an "external" toolchain ;)

Thursday, February 26, 2009

Follow-up: using dialup on 11.1 without NetworkManager...

This https://bugzilla.novell.com/show_bug.cgi?id=429772#c22 is the "official" documentation. It's the same what Marius already wrote in his comment on my last post on the topic, but I'll mention it here again, so that it gets found more easily.

Monday, February 09, 2009

How to get the pipe symbol on a US keyboard?

Yesterday at FOSDEM 2009, I was asked in an interview done by linux-community.de's Nils Magnus, "how do you get the pipe symbol on keyboards without that extra key" (which "international" keyboards have, but US keyboards don't).
Apart from that question being off-topic, as the interview was supposed to be about my netbook talk I had held just before, it's funny that I knew the answer offhand, since I am very often in the situation to use a german keymap on a US keyboard. So here it is:

Copy this into your .Xmodmap:

! use altgr-# as pipe - if i have an US keyboard
! without key 86, i can use this as pipe.
keycode 51 = numbersign apostrophe bar bar bar bar


Then make sure that "Xmodmap ~/.Xmodmap" is run during login. I think this is done by /etc/X11/xinit/xinitrc.common, but don't quote me on that.

So now you have the pipe on "AltGr - #" (On a german keyboard. With the US keycaps it is "AltGr - |", which is not too inconvenient).
The "<" and ">" characters, which are also on this key (again, with a german layout), can be easily be typed by "AltGr - Shift - Y" for "<" and "AltGr - Shift - X" for ">".

Maybe this is helpful to somebody besides me.

Have fun ;)

Thursday, December 11, 2008

Using dialup with 11.1 if NetworkManager does not handle your device

In openSUSE 11.1, NetworkManager is supposed to handle all dialup stuff. But, as far as I know, it can not handle e.g. plain old phone modems or dialup via bluetooth (rfcomm).
Unfortunately, if you now try to use the old methods of kinternet, wvdial or Umtsmon, you will find out that dialup will work with these, but you won't get a working resolv.conv and thus no name resolution. The reason is that the netconfig tools, which do rewrite resolv.conf apparently refuse to do that if NETWORKMANAGER=yes is configured in /etc/sysconfig/network/config.
One solution would be to switch to the old ifup method (NETWORKMANAGER=no), but then wireless LAN will basically be unusable.
Another, dirty and hackish solution is this:

Create a /etc/ppp/ip-up.local, containing
        #!/bin/sh
echo "nameserver $DNS1
nameserver $DNS2" >> /etc/resolv.conf

and a /etc/ppp/ip-down.local, containing
        #!/bin/sh
mv /etc/resolv.conf.netconfig /etc/resolv.conf

Make both of them executable. Dial up.

How does it work? The ip-up script gets the DNS servers in its environment. Just before it exits, it calls the ip-up.local script which then appends them to resolv.conf. During ip-down, the netconfig tools notice that the resolv.conf was changed externally and they refuse to touch it. They instead create resolv.conf.netconfig. ip-down.local now just replaces resolv.conv with resolv.conf.netconfig and everybody should be fine again.

To make this hack a bit more robust, you should probably check if the $DNS[12] variables are non-empty before adding them and you should check if resolv.conf.netconfig is newer than resolv.conf before restoring, but I leave that up to the reader.

Oh - and don't forget to file a bug against NetworkManager if it cannot handle your device!

Monday, December 08, 2008

Important Privacy Notice

If you care for your privacy, make sure to always delete /var/lib/zypp/AnonymousUniqueId before using any of the package management tools (YaST2, zypper).

Setting the repeat rate on an input device (Kernel 2.4 and 2.6)

If you ever come into the situation of having to set the repeat delay/period on an input device (/dev/input/eventX), with the additional challenge of needing it to work on both 2.4 and 2.6 kernels, maybe this code snippet might help you (fd is the filedescriptor of the device, opened writable):
        #include <linux/input.h>
struct input_event ie;
ie.type = EV_REP;
ie.code = REP_DELAY;
ie.value = 1000; /* 1 second initial delay */
if (write(fd, &ie, sizeof(ie)) == -1)
perror("REP_DELAY");
ie.code = REP_PERIOD;
ie.value = 250; /* 4 events per second */
if (write(fd, &ie, sizeof(ie)) == -1)
perror("REP_PERIOD");

Looks pretty trivial, doesn't it? But it took me quite some time to realize that I needed to write a "magic" event into the device to set the properties ;)

Wednesday, December 03, 2008

WINE followup: Open Source Software Rocks!

Just a short followup to my last post about WINE and the problems it had with "Avatar - Legends of the Arena": most likely, with the next WINE version it will just work out of the box, due to this commit to the WINE git repository.

Yay! That's quick bug fixing (or actually: implementing a feature). Thanks!