Jimmy's weblog


My new X230… Backup of the factory default state

Filed under: — jimmy @ 1:46 am

Before I started to modify the original setup I wanted to backup a couple of things because I knew, that most of the steps are not straightforward and I might need to get back (To be honest, I had two other Lenovo machines where I tested the steps before I applied them on my X230 ;-) )
I started with creating the recovery media and Lenovo supports to use usb flash media instead of cd recordables, too. But something told me that I should not fully trust the software to create a bootable usb flash drive. Long story short: The software creates an unbootable flash drive if you do not prepare the flash drive before you start the program :(
Have a look at the instructions at Lenovo’s support site. It’s not only a missing boot flag which I set afterwards, there seem to be other constraints, too. The flash drive, which did not work, had a strange partition table, too. On the working flash drive it looked like this:

Disk /dev/sdc: 15.8 GB, 15804137472 bytes
255 heads, 63 sectors/track, 1921 cylinders, total 30867456 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0×00000000

Device Boot Start End Blocks Id System
/dev/sdc1 * 2048 30867455 15432704 7 HPFS/NTFS/exFAT

I assume that the starting cylinder is important.

Usually you can create recovery media only once but there’s a hack to do it again, which is very useful if things go wrong. Open command prompt and type:

echo 0 > Q:\FactoryRecovery\RECOVERY.INI:Done

It’s also a good idea to save the mbr and partition table, e.g.:

dd if=/dev/sda of=mbr-backup-sda.img bs=1 count=512
sfdisk -d /dev/sda > sfdisk-sda-dump.txt
sfdisk -l /dev/sda > sfdisk-sda.txt

(Basically the first command is sufficient but I prefer to have different backups)


My new X230… things have changed :)

Filed under: — jimmy @ 6:34 pm

My first Lenovo notebook was a X60s, which is still running quite well but 32 bit is not enough ;-) It came with WinXP preinstalled because there was no option to order it with Linux or without OS. All other notebooks that I used afterwards came without OS so there was no other OS to take care about. My X230 came with Win7 preinstalled so I decided to compare the actual installation with my first one eight years ago (I don’t really need the preinstalled OS so I might as well just make a clean installation but I was interested about the possibilities for our customer installations).
So i will write some posts about certain aspects of the original setup. First one will be about backuping up the factory default state because there the troubles started ;-)


Cisco WAP4410N and Gigabit Performance

Filed under: — jimmy @ 10:42 pm

In the last days I made some tests with 802.11n performance with Cisco WAP121 and WAP4410N access points to find out how much throughput I can achieve. Therefore Gigabit ethernet is required and the WAP4410N comes with a Gigabit interface (the WAP121 does not, JFYI). So I connected the AP with the included ethernet cable and forced it to use 1000 Mbps. Suddenly the link went down and never came up again. I checked the switch and everything was configured properly. Just for fun I took a look at the supplied cable and it said Cat.5, not Cat.5e. So Cisco includes a cable that does not work with Gigabit *LOL*
(Yes, under some circumstances a Cat.5 cable might work but I never tried that myself. It’s better to pay 2 Cents more for Cat.5e or Cat.6 ;-) )


IBM x3100 M4 with ServeRAID C100: Testing Debian Compatibility

Filed under: — jimmy @ 2:22 pm

When IBM announced their new entry server I first checked the specs and found out, that they are going back to fakeraid controllers in the low cost machines. I was really glad a couple of years ago when those controllers disappeared but now they are back again :( Furthermore it first seemed, that the controller was not supported in the kernel of debian squeeze. So I ordered one of the first x3100 M4 to find out myself. It turned out, that there’s absolutely no problem with the squeeze kernel (Didn’t find those reports, who said that the controller is not detected, again, so I hope this false information is lost forever or at least hard to find).
Depending on the BIOS setting (modus AHCI or RAID) the controller shows up as:

00:1f.2 SATA controller: Intel Corporation Cougar Point 6 port SATA AHCI Controller (rev 05)


00:1f.2 RAID bus controller: Intel Corporation 82801 SATA RAID Controller (rev 05)

Although I already wasted a lot of time in my life with fakeraid controllers I decided to test the ServeRAID C100, too. Here are the lessons I’ve learned:

  • Never create the RAID in the OS because you might choose the wrong format and thus you will not see the RAID in the BIOS or IMM2 and lose the ability to monitor the health status. Create it in the BIOS or with the CLI tool.
  • If you want to install with the debian installer then you need to add option “dmraid=true” in expert mode
  • grub2 in squeeze has a bug that prevents installation on fakeraid (dirty hack: install grub from sid)
  • Booting from dmraid is broken in Debian: Bug #603319 with a dirty hack
  • I hope this posting will help you, if you really need to configure such a machine. It’s also possible and supported to upgrade the x3100 M4 with a HW-RAID controller, e.g. ServeRAID M5015 (you need the Hot-Swap Backplane, too).


    Growing Hardware RAID-5 with arcconf

    Filed under: — jimmy @ 8:26 pm

    Maybe you read my previous post “Growing Hardware RAID-5 with LVM by adding a physical disk” where I described how to add another disk to a RAID-5 with the MegaCLI tool. For older ServeRAID controllers you have to use the arcconf tool instead, e.g. ServeRAID-8k, which was shipped in the first x3650 models. There’s plenty of documentation about arcconf but how to resize a raid was hard to find. The MODIFY command is used for resizing and let’s assume that we have 3 disks in the array and add another one (same as in my previous post)

    ./arcconf modify 1 from 1 to MAX 5 0 0 0 1 0 2 0 3

    The syntax of arrconf is:

    ./arcconf MODIFY <Controller#> FROM <LogicalDrive#> TO [Options] <Size> <RAID#> <CHANNEL# DRIVE#> [CHANNEL# DRIVE#] [noprompt]

    So in our case it was Controller# 1 and LogicalDrive# 1 and MAX means to use all capacity that will be available. Raidlevel will still be level 5 and the harddisks are [0 0], [0 1], [0 2] and the new [0 3].
    To watch the status of the raid migration, use

    ./arcconf getstatus 1

    JFYI: To add another 146 GB SAS (15k) to the raid it took about 12 hours to rebuild the array.


    Growing Hardware RAID-5 with LVM by adding a physical disk

    Filed under: — jimmy @ 1:00 am

    Sometimes you’re running out of space and all you can do is adding additional disks. Although it’s a simple task in theory, there a some risky steps involved. So you should backup your volumes before. In my case I had a RAID-5 in an IBM x3650 M3 Server with a ServeRAID M5015 Controller. There was one volume with three 146 GB SAS disks and on top LVM. The root filesystem was on this volume, too, which doesn’t make things easier ;-)
    First Step: Insert a new 146 GB SAS disk to extend the volume. The first risky step is to rebuild the RAID-5 with four disks instead of three. So you may want to upgrade the firmware of the controller first and make a backup of the LVM volumes. Of course you should not save the backup on the same server ;-)
    I configured a partimage server on another machine and ran partimage client on the server with the new disk:

    partimage -z2 -domMc -s save /dev/mapper/main-rootfs fileserver.partimg.bz2

    (Please lookup the options in the manpage yourself)
    The command for the ServeRaid controller was not easy to find but here we go:

    /opt/MegaRAID/MegaCli/MegaCli64 -LDRecon -Start -r5 -add -PhysDrv [252:3]  -L0 -a0

    252:3 stands for the fourth drive. You can find out more about available drives running:

    /opt/MegaRAID/MegaCli/MegaCli64 -PDList -a0

    To watch the rebuild status run:

    /opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -L0 -a0

    As we want to resize the root filesystem we need to reboot the machine so that programs like fdisk see the new size of the array. Afterwards you can resize the partition or simply delete and recreate it. Next step is to resize the LVM physical volume and again a reboot is needed so that pvresize recognizes the new partition size. So these are the next steps where things might get wrong, too:

    pvresize -v /dev/sda2
    lvresize -l +34871 /dev/main/rootfs
    resize2fs /dev/main/rootfs

    /dev/sda2 was my LVM partition (sda1 was for /boot) and thanks to the new disk I had 34871 extends available (146 GB). The resize commands work with active volumes and mounted filesystem so you don’t have to stop any services. Only the two or three reboots (if you want to make a final reboot after all changes) interrupt the services but this should be ok.


    The forgotten posting: Debian etch on IBM x3200 and x3250

    Filed under: — jimmy @ 6:28 pm

    Yes, this posting is called “forgotten posting” because I just realized that I never posted it, although i should had been done a long time ago :-(

    A lot of people had problems with the Adaptec Controller in the x206m model. Fortunately, the successor x3200 has a LSI controller on board which works perfectly when running Debian etch on it. It uses the Fusion MPT drivers and best of all: It’s not a fakeraid controller, it’s real HW-RAID (thx to mika for pointing me in the right direction, because I never thought about it :-) ).

    Notes for using HW-RAID: There’s a small cmdline utility on the IBM CDs called “cfggen”. With this tool you can manage your RAID volumes. The userland utility (daemon) mpt-statusd monitors your RAID volumes (it’s included in Debian etch).

    Notes about Debian woody: My x3200 was running a long time with Debian woody. You just need to install a newer kernel so that the controller gets recognized.

    All of the information above applies to the x3250, too. It’s the rack version of the x3200.


    Lenovo X60s and Dualhead configuration

    Filed under: — jimmy @ 12:54 am

    The last days I tested the dualhead capabilities of the Lenovo X60s notebook. I had some problems to find a configuration that works without cloning the screen. But in the meantime a newer version of X and the i810 module was released which supports the Xrandr 1.2 extension. Thus it’s possible to change the settings while X is running with the user space tool “xrandr”.
    I downloaded the latest version of grml-x to get a fresh xorg.conf:

    root@subzero ~ % grml-x -nostart -f fluxbox

    Since I wanted to run the internal display @1024×768 and the external CRT @1600×1200 I had to add one line to /etc/X11/xorg.conf:

    SubSection "Display"
      Depth     16
      # Modes "1024x768" "800x600" "640x480"  "1600x1200" "1280x1024" "1280x960"
       Virtual 2624 1968

    Otherwise xrandr would complain that the screen is too small when setting up the layout of the two combined screens (e.g.: xrandr: screen cannot be larger than 1440×1440 (desired size 2048×768)).

    After starting X you can begin to play with xrandr. When executing xrandr without any arguments it lists all available screens and displays.
    To switch the external display off execute:

    jimmy@subzero ~ % xrandr --output VGA --off

    To change the resolution of the externalt CRT execute:

    jimmy@subzero ~ % xrandr --output VGA --mode 1600x1200

    To setup the CRT to be right of the LCD:

    jimmy@subzero ~ % xrandr --output VGA --right-of LVDS

    If you didn’t add the “Virtual 2624 1968″ Line in /etc/X11/xorg.conf, as described above, xrandr would now complain that the screen is too small for the desired size (1024+1600=2624 and 768+1200=1968).
    xrandr has an excellent man page to lookup all the features.

    My tests showed that window managers behave differently when setting up the screen layout. My preferred setup is to have the CRT right of the LCD with a higher resolution. With KDE it worked as expected but with fluxbox I couldn’t use fullscreen on the CRT only. So when switching to fullscreen or when maximizing windows, fluxbox used both screens (CRT and LCD).

    You can download my xorg.conf here


    IBM USB floppy and persistent name with udev

    Filed under: — jimmy @ 1:47 pm

    Today I tested my new IBM usb floppy. When I plugged it in, the kernel loaded the usb-storage module and assigned device node /dev/sdc to it. Mounting a floppy-disk worked as exptected. Then I decided that it would be nice if the floppy would always use the same device node, not the first one available. This can be easily achieved with udev. I created a new file /etc/udev/ibm_floppy.rules and made a symbolic link to /etc/udev/rules.d/z81_ibm_floppy.rules. There’s only one line needed in the file:

    BUS=="usb", SYSFS{product}=="TEAC FD-05PUB   " , SYMLINK="ibm-floppy"

    When I now plugin my floppy udev creates /dev/ibm-floppy, which is a link to the assigned device node.


    Installing Debian sarge on IBM x206m Server with SAS drives

    Filed under: — jimmy @ 9:50 am

    UPDATE! (27.10.2006)
    It seems that the initrd (initial ramdisk) has to be recreated before rebooting. Otherwise the adp94xx module is missing. I was sure that I checked this before posting this HowTo, but a second test and some comments from other users showed me, that it doesn’t work this way. Thus I added the necessary steps.
    I also found out, that there are problems with S-ATA drives. If you follow my HowTo it works, but when using grml-0.8 or ubuntu 6.06 LTS Server Edition it can not access the S-ATA drives. Well, ubuntu uses another driver version but grml-0.8 uses exactly the same driver, built from the same source. I couldn’t find out what’s wrong, maybe a side effect from other parts in the kernel code?

    Some of the newer IBm servers have SAS (serial attached SCSI) Controllers onboard. The driver is not in the linux kernel but you can get the source on the IBM site. Since grml 0.8 we support the SAS driver so if you want to install debian, you can boot with grml and run debootstrap. Another way is to use the sarge installer and load the kernel module before partitioning harddisks. This way is described here:

    • Download the precompiled kernel module for the sarge kernel and copy it to a usb-stick (The modified source code is also available)
    • Boot the server with the debian sarge installer cd
    • Make all steps as usual until the installer fails because no partitionable media was found
    • Switch to the console with <Alt-F2> and hit enter to activate it
    • Plugin your usb-stick and run “modprobe sd-mod”. With “dmesg |tail” you will see an entry which tells you the device node of the stick
    • Run “mkdir /usbstick” and mount it, e.g. “mount /dev/scsi/host0/bus0/target0/lun0/part1 /ubsstick”
      (/dev/scsi/… is the device node, that you saw before in the output of dmesg)

    • Now copy the kernel module with “cp /usbstick/adp94xx.ko /lib/modules/2.6.8-2-386/kernel/drivers/scsi” and run “depmod”
    • Run “umount /usbstick” and unplug the usb-stick. Run “modprobe -r sd-mod”. This steps make sure, that the SAS drive(s) will be named /dev/sda, /dev/sdb, etc. Otherwise /dev/sda would be assigned to the usb-stick.
    • Now load the kernel module: “modprobe adp94xx” and “modprobe sd-mod”, to load the support for scsi disks, again.
    • Watch the output of “dmesg”. The SAS drive(s) and the controller should be detected
    • Go back to the installer screen with <Alt-F1> and repeat the partitioning

    UPDATE! (26.10.2006)
    The following steps are required to recreate the initrd:

    • Continue with the installation up to the last step, when the installer asks you to remove any media and to reboot.
    • Switch back to the console (<Alt-F2>)
    • Copy the adp94xx module to the recently installed kernel: “cp /lib/modules/2.6.8-2-386/kernel/drivers/scsi/adp94xx.ko /target/lib/modules/2.6.8-2-386/kernel/drivers/scsi/”.
    • Now chroot to the installed system which is mounted on /target: “chroot /target”.
    • We need the proc filesystem, so run: “mount /proc”.
    • Run depmod: “depmod”.
    • Create a new initial ramdisk: “mkinitrd -o /boot/initrd.img-2.6.8-2-386 2.6.8-2-386″.
    • Exit from the chroot by hitting Ctrl-D or typing “exit”.
    • Go back to the installer screen with <Alt-F1> and complete the final installation step.


    IBM x336

    Filed under: — jimmy @ 10:01 pm

    Today I’m testing an IBM x336 server. Since the IBM servers are certified for SuSE and Redhat there’s usually no problem to get everything to work. The only pitfall might be the hard disk controllers. If you use SuSE or Redhat you can get the drivers, if you use Debian you are not that lucky. But this is only a problem if the drivers are not open source, otherwise you can simply recompile them for the debian kernel (For ServeRAID the drivers are in the official kernel source so this controllers work out-of-the-box)
    Last time I tested a x346 where the ServeRAID controller was an Adaptec fakeraid and the driver was closed source. Anyway, when I see a fakeraid I usually use mdadm which worked perfectly. But there is a drawback. In this case you have to use the usual scsi drivers but then hot swapping of drives could fail if the driver doesn’t support it or if the support is buggy. In this machine the kernel module was aic79xx and hot swapping didn’t work stable enough for me (Lazy as I am I didn’t check if the module even supports hot swapping, so maybe it’s simply my fault ;-) )
    The x336 has an onboard LSI Logic (kernel module mptscsih). Hot swapping worked, I just had to remove and reinsert the adapter with scsi-add:

    scsi-add -r 1 0 1 0
    scsi-add -a 1 0 1 0

    Since this is a real hardware raid I activated the mirroring function in the BIOS and tested again with grml… no problems.

    X60s, update nr. 1

    Filed under: — jimmy @ 9:49 pm

    Most of the things that didn’t work out-of-the-box were fixed in no time:

    Wireless LAN, ipw3945
    The ipw3945 project provides the driver and userspace daemon for the card. Yes, you need a userspace daemon for that card and this is also the reason why it won’t be packaged that soon… again a licensing problem :-(
    Beside that annoying facts it works perfectly.

    Starting with version 7 you can use the i810 driver. DRI didn’t work but I didn’t spend much time to solve it.

    I installed the alsa drivers from the cvs tree. When I booted the first time I had to tune the mixer values because they were all above 300, instead of < 100. Also I have to restart the alsa subsystem after booting once again to make it work. That’s ok for now because I think that this problem will vanish with the next kernel release


    Mobile internet

    Filed under: — jimmy @ 9:58 pm

    As I’m now travelling more than before I decided to have a look at “Mobile Internet”. In Austria there are about four providers who sell such solutions. I wanted to make sure that the cards work properly under linux so I asked three of those four providers for a test card. Only two were willing to do this, the third said that I can test it in the store, which was no option for me (Because I also tested the new linksys umts router and didn’t want to move it to the store).
    The newer cards are all the same, no matter which provider sells it. They are Globetrotter cards which use the nozomi kernel module. You can get all information and the driver on this website. I also packaged gcom for debian, which is a program to switch between the modes of the cards (umts, gprs, etc.) and to register with the provider. Of course, the nozomi module and gcom are on the grml cd ;-)

    The card didn’t work in the linksys router so I have to wait for the new firmware.


    Finally my X60s arrived

    Filed under: — jimmy @ 9:29 pm

    Yes! One day before I’ll fly to USA. I was really frightened that it wouldn’t arrive in time. Anyway, this notebook is pretty cool. Thx to grml2hd the basic setup was done quick and only a few things have to be fixed:

    • Wireless LAN: Need to get the source of ipw3945
    • X.org: Only works with vesa driver
    • Sound: Need more recent alsa drivers

    Stay tuned for updates.


    Installing debian sarge amd64 on IBM server x336: Can not mount CD-ROM

    Filed under: — jimmy @ 4:14 pm

    Problem: The debian installer can’t mount the cd because the ide-cd driver can’t be loaded correctly. This happens because ata_piix is loaded (S-ATA support) and is not able to detect the cd-rom on the ide port. This driver aquires all ports so you can’t load the ide-cd driver afterwards. So you have to load the generic ide driver BEFORE ata_piix is loaded.

    • Boot the installer cd as usual and hit enter
    • When the dialog for language selection appears switch to a console (Alt+F2)
    • Execute the command “modprobe ide-generic”
    • Switch back to the first console and continue


    IBM ServeRAID Controller (Adaptec HostRAID)

    Filed under: — jimmy @ 5:23 pm

    During the last weeks I tested two IBM servers, a x206 and a x346. Both have the Adaptec HostRAID controller onboard (except you buy another IBM ServeRAID controller). Because this is just a fakeraid I used mdadm to setup the raid. But I was curious if it would work under linux. Adaptec and IBM provide drivers for SuSE and RedHat but I was interested to get it running under Debian. There is no source for the driver (a320.ko for SCSI and aaarich.ko for S-ATA) so it was impossible to compile it for my kernel. Have to find out if I can get the source code :-)
    Besides that the hardware worked perfectly with Debian Linux.

    Using the Linksys 54 Mbit PCMCIA card WPC54G

    Filed under: — jimmy @ 5:17 pm

    I had two versions of this card: v2 and v3. v2 has a Texas Instruments ACX111 chip, v3 a broadcom. For v2 you can use the acx kernel module (included in grml), which you can get from the ACX100/ACX111 driver prject. Works stable, but no WPA since WPA supplicant doesn’t support that chip.
    For v3 you need the drivers from the bcm43xx project. Follow the instructions there. Drivers will be included in grml soon. In the meantime you have to fetch them from the grml repository via apt:

    apt-get install bcm43xx-modules-2.6.15-grml

    I’m not sure if WPA supplicant supports this driver, too (ran out of time, again). BTW: Tested this driver with the WPC54GS (speedbooster), too. Worked perfectly.

    WRT54GS in client mode, cont’d

    Filed under: — jimmy @ 4:38 pm

    In the last posting I described how to use a wrt54gs in client mode with WEP. This posting describes how to use it with WPA, based on a HowTo in the openwrt wiki.

    To enable WPA we have to set a few nvram values:

    nvram set wl0_akm=psk
    nvram set wl0_crypto=aes
    nvram set wl0_wpa_psk=test1234
    nvram commit

    Install some packages:

    ipkg update
    ipkg install wl

    Reboot the router and check if everything works.


    • This setup only works with WPA1
    • You don’t need nas for WPA1

    In fact I wanted to test WPA2 but then I found out that WPA is rather simple. WPA2 didn’t work for me because nas didn’t work. Have to spend more time to find out what was going wrong

    WRT54GS in client mode

    Filed under: — jimmy @ 4:24 am

    I installed a wrt54gs for some relatives. There was also a computer in the cellar which should be able to connect to the router. But all tested cards didn’t get a signal so I decided to install a second wrt54gs in client mode. It worked really good, better than expected. I used the ClientModeHowto as reference.
    The router to the internet (master router) had ip address, so I setup the client router with ip address I also set the mode to “wet” and disabled the dhcp server on the client as described in the Howto.

    nvram set wl0_mode=wet
    nvram set lan_ipaddr=
    nvram commit
    rm /etc/init.d/S50dnsmasq

    For the first test I didn’t touch the wlan settings because the factory defaults were ok (Both had the same SSID and security disabled).

    Turning on security options
    First, I enabled the MAC filter on the master router and disabled the SSID broadcast (It’s the MAC address of eth1 on the client router). Next, I changed the SSIDs on both routers and enabled WEP encyption:

    nvram set wl0_ssid=jimmy
    nvram set wl0_wep=enabled
    nvram set wl0_key1=9ECAABBDCD6C20103CAE62B38A
    nvram commit

    There’s also a Howto for configuring WPA2, which makes more sense than WEP. Have to try it ASAP


    WRT54GS V4 and openwrt

    Filed under: — jimmy @ 5:01 am

    You might have read my posting about the WRT54G and openwrt. Today I tested a brandnew WRT54GS. It was shipped with firmware version 1.03. I don’t know why Linksys starts again at 1.x version numbers but it’s definitely a linux router. All series 4 should be still linux. If you wonder why I say “still”, checkout this article. In short words: series 5 will use VxWorks, but Linksys will ship a new device, called WRT54GL, which will be running Linux.
    Unfortunately the ping hack didn’t work, tftp neither (maybe I did something wrong, but I think it can’t work without boot_wait). Someone on the irc channel told me that the upload with the web interface worked for him… For me too, but I don’t know how dangerous it is.
    Openwrt RC4 has now a web interface, too. So after rebooting I took a look at the new interface… Great :-) I set boot_wait so that I can use tftp which I used afterwards to restore the original firmware. My browser (opera) had some problems with the page reload and I thought that I crashed the router. But after restarting opera I saw the original web interface again :-)