Hacking a IBM x24 laptop

I've been hacking in on this lovely deck in the past two months struggling for running it solid-state (without harddisk)

Interesting resource for misc configations: http://www.bekkoame.ne.jp/~ponpoko/Linux/Chandra/NLX24-e.html anyway dyne:bolic recognizes everything on the fly, even the 3d acceleration ;)

the tricky part is booting and running solid-state

booting works from usb so i use a 256MB, formatted ext3 and installed grub on it, works well enough for ramdisk and kernel

i created the ramdisk with the command:

 [d:b] # dynesdk -m pci_hotplug,shpchp,pcmcia_core,rsrc_nonstatic,yenta_socket,pcmcia,ide-cs,eepro100 -o initrd-x24 mkinitrd

then i created the following grub entry:

TODO

the docked system then should be loaded from the compact flash slot, so:

Compact flash support

Hell to accomplish, but still possible after so much hacking :)

I have a kingston 2GB pro compact flash which has problems with lost interrupts, especially with some non-existing hdf partition:

http://lists.infradead.org/pipermail/linux-pcmcia/2006-July/003762.html http://lists.infradead.org/pipermail/linux-pcmcia/2006-July/003811.html

resolved patching the kernel:

http://www.users.bigpond.com/vkelim/SuSE_notes/node114.html http://lists.osdl.org/pipermail/bugme-janitors/2006-July/000349.html

The solution can be found in a Chuan-Kai Lin. The post refers to a problem back in 2.6.0 release candidates, where some code in drivers/ide/ide_probe.c attempts to handle old Seagate drives. The problem persists at least up to 2.6.18-rc2. The solution is to change the following lines in ide_probe.c (actual_try_to_identify)...

    if ((a ^ s) & ~INDEX_STAT) {

     printk(KERN_INFO "%s: probing with STATUS(0x%02x) instead of "

      "ALTSTATUS(0x%02x)\n", drive->name, s, a);

      /* ancient Seagate drives, broken interfaces */

     hd_status = IDE_STATUS_REG;

    } else {

     /* use non-intrusive polling */

     hd_status = IDE_ALTSTATUS_REG;

    } 

to...

    if ((a ^ s) & ~INDEX_STAT) {

     printk(KERN_INFO "%s: was going to probe with STATUS(0x%02x) instead of "

      "ALTSTATUS(0x%02x) - use non-intrusive probe instead\n", drive->name, s, a);

      /* was to handle ancient Seagate drives, broken interfaces. */

      /* seems to break Muramasa and Kingston 4GB CF, so next line changed */

     hd_status = IDE_ALTSTATUS_REG; /* was IDE_STATUS_REG */

    } else {

     /* use non-intrusive polling */

     hd_status = IDE_ALTSTATUS_REG;

    } 

anyway that was not enough, i also had to deactivate the hdparm setting on the harddisk, so i added a configuration directive at boot: nohdparm=hde (accepts a comma separated list if necessary)

now i'm just fine tuning the system to work with the latest udev-103 and linux-2.6.18 soon everything will be uploaded ;)

ibm-x24 (last edited 2008-06-26 09:59:05 by anonymous)