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 ;-)


Got my Lenovo X230 without camera :(

Filed under: — jimmy @ 7:51 pm

Take care when ordering your notebook in the Lenovo webshop, you might miss a camera, too. I configured mine and I wanted a builtin camera. Then I decided that the 3×3 antennas would be better than the 2×2 and so I changed the configuration. What I did not see was, that the box for the camera options, where you choose if you want a builtin camera or none, just disappeared and the camera gets unselected. When checking the config again before hitting the order button I checked every option but there was no line like “camera: none” so it looked good for me. When the notebook arrived there was no camera builtin. Reason: The third antenna in the 3×3 config needs the space where the camera would be. Unfortunately there was no hint or warning in the webshop :(
Of course I was able to send it back and order a new one but this process is very time consuming. This happened a couple of weeks ago and in the meantime I got my new X230 but the bug is still not fixed in the shop although I reported it :(
(BTW: I ordered in the shop of Austria but I also checked the US shop which has a similiar problem)

I hope this post helps somebody else not to run into the same problem.


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.


    Using IBM Bootable Media Creator on Debian

    Filed under: — jimmy @ 1:03 am

    IBM provides a tool called “Bootable Media Creator” (bomc) which creates bootable media – like an usb key – that allows you to easily install all firmware updates even if there is no OS installed on the server. You just select your server model, e.g. x3650, and the tool downloads all available updates. This saves a lot of time.
    Formerly I used bomc on a SLES server but now I wanted to try if it would work on my Debian notebook, since the tool is available as a single binary and not as a rpm package as usual.
    It started up and seemed to work but unfortunately after downloading some packages it stopped with an error. Long story short: I just copied the SuSE-release file to my /etc on my Debian notebook and all errors were gone :-)
    My /etc/SuSE-release looks like this:

    SUSE Linux Enterprise Desktop 10 (i586)
    VERSION = 10

    Bomc can be downloaded at the IBM site


    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


    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.


    Alsa and WLAN on IBM T40 notebook

    Filed under: — jimmy @ 5:31 pm


    I had to setup a few things on a IBM T40 notebook. The first task was to enable alsa, which is usually no problem. The OS was Debian unstable so I only had to install a few packages and to answer a few questions. There are two alsa-drivers for intel chipset where the second is for the modem. I marked both of them for compilation in the alsa setup. But when I tried to start alsamixer I got: “no mixer elems found”. After some googling I found out that the second alsa-driver must not be loaded. I had to blacklist it in /etc/hotplug/blacklist.d/alsa-base, which was installed by one of the alsa packages. The name of the alsa-driver was snd-intel8x0m. Unfortunately I was not able to rmmod all snd-* modules, so I had to reboot the notebook. After that alsa worked and I only had to change some permission, so that all users are allowed to use it(This time I didn’t want to add every user to group audio):

    chmod o+rwx /dev/snd
    chmod o+rw /dev/snd/*


    It’s a centrino notebook with Intel 2100 mini-PCI network card, therefore I thought it’s time to test the Intel IPW2100 driver. The installation was very easy, since there is good documentation available. But I had to face another problem when loading both network drivers at the same time: e1000 became eth1 and ipw2100 became eth0 and I wanted it the other way round :-) . Again, I blacklisted both drivers in /etc/hotplug/blacklist and defined aliases in /etc/modutils/aliases. Since hotplug was not allowed to load the drivers anymore, the networking script now loads them, using modprobe and thus my defined order.