Jimmy's weblog


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.