Debian GNU/Linux and GNU/Hurd on T41

After using Gentoo for 1 1/2 years, I decided to move to Debian GNU/Linux. I got Debian Sarge 3.1r0a CDs (three of them). I also installed GNU/Hurd K8.

Inside the IBM Thinkpad T41

I wanted to see what was inside the IBM T41. I dismantled it and put it back again before proceeding to install GNU/Linux.

Disclaimer: If you screw your laptop ... actually unscrew your laptop, you are doing it at your own risk.

Some pictures of the IBM T41 (cdrom, hard disk, keypad, battery, ...)

Half base     Base    Base 2     CD drive  hdd     Keypad     Touchpad    Battery   

Debian Sarge 3.1r0a - I

Installation was pretty straight-forward. Used the first CD to boot into the system, did the basic install. My partitioning scheme is as follows:

/dev/hda1 is /.
/dev/hda2 is /home.
/dev/hda3 is swap.
/dev/hda4 is hurd partition.

 Device  Boot  Start  End  Blocks  Id  System
 /dev/hda1    1  1216  9767488+  83  Linux
 /dev/hda2    1217  3648  19535040  83  Linux
 /dev/hda3    3649  3679  249007+  82  Linux swap
 /dev/hda4    3680  4427  6008310  83  Linux

The first CD simply does the base installation and it reboots. It will then proceed with user account setup, software packages wherein you need to insert all 3 CDs, one by one, to update the database list of software packages available. After completion of software installation, it booted into X. Used the other CDs for installing required software with Synaptic Packet Manager. I am using Gnome with the kernel.

Configuration files/outputs

cat /usr/src/linux-


I am using XFree86 with gnome and ati drivers. I also have fluxbox installed.

Gigabit Ethernet

Works by default. I am using the e1000 Intel driver.

CD/RW DVD Combo Drive

Works by default. I am able to play DVDs using mplayer. I have also tested CD writing with K3B.


By default, the kernel sources have ALSA support compiled in and I am able to play music using xmms and mplayer.


Works by default.


Works by default. I am able to use my Sandisk 256 MB USB stick and Sony DSC-P93 digital camera with gphoto2.

Debian GNU/Hurd K8 - II

The 6 GB partition on /dev/hda4 was used to install GNU Hurd.

Configuration files/outputs


These are the steps that I followed to install GNU/Hurd K8 on my IBM Thinkpad T41:

1.0 Boot from K8 CD

Inserted the K8 CD and used boot from CD-ROM in the BIOS.

I got a welcome screen and was asked to pass any boot options, if needed. I just clicked enter to boot the default kernel that came withthe CD. I then got the installation menu.

2.0 Keyboard Layout

I selected the US qwerty keyboard layout

3.0 Activate Swap

I already had /dev/hda3 as my swap. So, chose activate alternate swap.

4.0 Initialize Hurd Partition

The /dev/hda4 partition of 6 GB is to be used for GNU Hurd. I chose to intialize this partition as Hurd.

5.0 Install the Base System

This option extracts the baseGNU.tgz package from the CD and installs it to the Hurd partition, in this case /dev/hda4.

I rebooted the system.

6.0 Add Hurd entry for grub

Added the following to /boot/grub/menu.lst

kernel (hd0,3)/boot/gnumach.gz root=device:hd0s4 -s
module (hd0,3)/hurd/ext2fs.static --multiboot-command-line=${kernel-command-line} --host-priv-port=${host-port} --device-master-port=${device-port} --exec-server-task=${exec-task} -T typed ${root} $(task-create)$(task-resume)
module (hd0,3)/lib/ /hurd/exec $(exec-task=task-create)

Since, I had grub installed on my MBR, I entered in Debian and modified/boot/grub/menu.lst for Hurd. Note that "module(hd0,3)/hurd/ext2fs.static ... $(task-resume) is one single line.

I rebooted.

7.0 Run native-installer

# export TERM=mach
# ./native-install

I had to reboot and enter into Hurd once again.

8.0 Run native-install again

# export TERM=mach
# ./native-install

9.0 Add swap entry

Used "nano-tiny" editor to add swap entry to /etc/fstab file.

/dev/hd0s3 none swap sw 0 0

I had to reboot. Now, to enter into Hurd after installation, I had to enter into multi-user mode. So, I removed the -s in the/boot/grub/menu.lst file from Debian in the kernel boot line for Hurd. Saved it and rebooted to enter into GNU Hurd :)

10.0 User Accounts

Logged into GNU Hurd using:

login > login root
# passwd

Set a new root passwd. I created a user account using:

# adduser

It will ask few questions before creating the user account

11.0 CDROM

As root, I did the following to set the translator for CDROM:

# cd /dev
# ./MAKEDEV hd0s3 hd0s4 hd2
# mkdir /cdrom
# settrans -gp /cdrom /hurd/iso9660fs /dev/hd2

I could view the CD contents using "ls /cdrom". I did add an entry to /etc/fstab for the cdrom:

/dev/hd2 /cdrom iso9660fs none,auto 0 0

I remove the translator using:

# settrans -g /cdrom

12.0 Software

I first had to update the base system using both the installation CDs:

# apt-get update

Using CD1, I did the following installs:

# apt-get install gcc
# apt-get install hurd-dev
# apt-get install build-essential
# apt-get install apt-file

Using CD2, I did the following installs:

# apt-get install mig

13.0 XFree86

I have X server running and have installed blackbox. I first had to install x-window-system-core.

# apt-get install x-window-system-core

It will automatically take you into configuring XFree86. You can always reconfigure X using dpkg-reconfigure xserver-xfree86.Installed blackbox then:

# apt-get install blackbox

I then created device files /dev/cons/kbd and /dev/cons/mouse and linked them:

# ln -s /dev/cons/kbd /dev
# ln -s /dev/cons/mouse /dev

I get multilple terminals using:

# console -d vga -d pc_mouse --repeat=mouse -d pc_kbd --repeat=kbd \
-d generic_speaker -c /dev/cons /dev/vcs

I put the above in a script file, so I simply can run the script. I then get six terminals, Ctrl+Alt+F1 to F6. I login and type startx to start blackbox :)

14.0 Compiling GNU Mach

I have compiled the GNU Mach microkernel on Debian GNU/Linux. These are the steps I followed:

Obtained gnumach-1-branch sources from cvs:

# export CVS_RSH="ssh"
# cvs -z3 -d:ext:anoncvs@ co -r gnumach-1-branch gnumach

Obtained mig_1.3-4_i386.deb and installed it using dpkg:

# dpkg -i mig_1.3-4_i386.deb

Entered into the gnumach sources and did the following for compilation:

# mkdir build
# cd build
# ../configure --host=i386-unknown-gnu0.2 --build=i586-pc-linux-gnu \
 ;  --enable-kdb --enable-ide --prefix=/path/to/my_gnumach
   # make
   # make install

This creates boot/ and include/ under /path/to/my_gnumach directory. The gnumach image is present inside the boot/ directory. I compressed it using:

# gzip -c gnumach > mygnumach.gz

I mount the Hurd partition on GNU/Linux using:

# mount -t ext2 /dev/hda4 /mnt/hurd

I copied mygnumach.gz image to the Hurd /boot partition. I added anentry in /boot/grub/menu.lst for the my new mygnumach.gz - just replacing the kernel /boot/gnumach.gz with the new name. I rebooted into the new mygnumach.gz kernel :)

15. Compiling stomach-20050828

I downloaded Gianluca Guida's stomach-20050828.tar.bz2 microkernel from:

Gianluca uses dyndns. So, if the above site does not resolve, try opening

I extracted the sources and did make in the source directory for compilation. The oskit (project from Department of Computer Science, University of Utah, got compiled. Idid "./configure" inside the stomach directory and did make to compile. The compiled kernel is stomach/kernel.

I copied the kernel into /bootin the Hurd partition after mounting it on GNU/Linux. I added a newentry, similar to GNU Mach/GNU Hurd in /boot/grub/menu.lst for Gianluca's stomach. I only modified the kernel entry to /boot/kernel. I was able to boot into oskit-stomach microkernel with hurd running on top!

16. Compiling oskit

[Wednesday, August 31, 2005 0100 IST]

I downloaded the latest oskit from CVS:

# export CVS_RSH="ssh"
# cvs -z3 -d:ext:anoncvs@ co oskit

I downloaded the modules.x86.pc file available at and copied it into the oskit/ directory.

Entered into the oskit/ directory and did:

# mkdir build
# cd build
# ../configure --enable-modulefile=../modules.x86.pc
# make

I took the hello executable from build/examples/x86 and copied it to /boot. I created an entry for this in /boot/grub/menu.lst:

title oskit Hello World

On reboot, and selecting this kernel, it printed "Hello, World" !

17. Installing L4Ka Pistachio and Hurd-L4

[Saturday, September 11, 2005 0000 IST]

I installed the L4Ka pistachio micro-kernel with hurd-l4. I followed the install instructions from here: