I have a Toshiba Libretto 100CT.
For those that don't know, this is a very small laptop, about the size of a VHS tape.
As well as being small size-wise, it's small on specs. Well, it is nearly 10 years old.
It currently runs Debian Etch (Testing) and acts as a media player with Music Player Daemon.
It's also handy for War(Walk|Drive|Cycl)ing, with a GPS attached through the serial port on the mini port expander, and two wireless cards for Kismet.
Although not too difficult to set up, I've put a guide for getting things to work that might not.

Technical Specs


The main problem with installing linux on the libretto is its lack of a CDROM drive.
I did the initial install by removing the hard drive and putting it into another laptop then installing as usual.
This may cause trouble with the GRUB setup if one computer uses different names for the hard drives.
Changing it manually at boot should work, then modify GRUB's menu.list to fix.

Kernel Magic

The stock kernel in Debian has loads of stuff that the Libretto will never need. Recompiling the kernel gives a noticeableadvantage in terms of speed.


Enabling the FrameBuffer allows you to see more on the screen, and do some graphics work without starting X. For this to work, you need the following options enabled in your kernel: You then need to add vga=808 to either:
1) The boot line in GRUB's menu.list.
2) The automagic configuration defoptions, then (as root) run update-grub

Option 2 is better, as it'll mean the settings will be applied to any new kernel you install.


While from the specs, it would appear that the module snd_opl3sa2 would enable sound, it doesn't seem to work. The module that actually gives sounds is SoundBlaster: snd_sb8.
It still doesn't give sound straight away, it needs to be modprobe'd:
modprobe snd-sb8 irq=5 dma8=0
Having confirmed this works, add it to /etc/modules:
echo snd_sb8 irq=5 dma8=0 >>/etc/modules

Note that compiling the kernel should be done on another computer - the Libretto's slow speed will mean it's likely to overheat before it finishes.

Faster Boot: InitNG

InitNG is a replacement for System V Init which, among other things, makes the system boot faster.
Installation instructions (Debian Repository) can be found at http://www.initng.org/wiki/Install_Debian_Ubuntu
To add it to GRUB's menu.list, look for the automagic setting altoptions, and add a line like:
altoptions=(InitNG) vga=808 init=/sbin/initng
and run update-grub.
If you prefer to boot InitNG by default, change the default option at the top of the menu.list file.
Note that I find that ACPI doesn't work when using InitNG.

X Server

While setting up the X Server is simple, getting it to run at the Libretto's correct resolution of 800x480 takes a bit of fiddling with the config file.
The following sections need to be in the config:
Section "Device" Identifier "NeoMagic Corporation NM2160 [MagicGraph 128XD]" Driver "neomagic" Option "NoStretch" Option "override_validate_mode" EndSection
Section "Monitor" Identifier "Monitor0" VendorName "Toshiba" ModelName "Libretto 100CT" HorizSync 31.5 - 39.7 VertRefresh 50-90 ModeLine "800x480" 35.26 800 860 928 1088 480 488 493 521 +hsync +vsync EndSection
Section "Screen" Identifier "Default Screen" Device "NeoMagic Corporation NM2160 [MagicGraph 128XD]" Monitor "Monitor0" DefaultDepth 24 SubSection "Display" Depth 24 Modes "800x480" "640x480" EndSubSection EndSection

Window Managers

The Libretto's specs are way too low to run KDE or GNOME, even XFCE runs slowly.
I run OpenBox due to its light weight and customisability.
A few useful customisations to ~/.config/openbox/rc.xml:
<keyboard> ... <keybind key="Super_L"> <action name="Execute"><execute>x-terminal-emulator</execute></action> </keybind> <keybind key="Menu"> <action name="ShowMenu"><menu>root-menu</menu></action> </keybind> </keyboard>
This makes the menu key launch show the main menu, and the Windows key launch whatever you have set as x-teminal-emulator (I use aterm, as I'm a sucker for transparency).
<mouse> ... <context name="Titlebar"> ... <mousebind button="Left" action="DoubleClick"> <action name="ToggleMaximiseFull"/> </mousebind> ... </context> ... </mouse><
This makes double-clicking the titlebar maximise/unmaximise the window.

Setting a wallpaper

OpenBox does not support setting of wallpapers itself - you need an external program. feh works very nicely with
feh --bg-scale filename.png
To get wallpaper on starting X, simply add
eval `cat $HOME/.fehbg` &
to your ~/.xinitrc file

Here’s a couple of big friendly penguins on standard GIMP pattern backgrounds at the appropriate size:
Plain Blue Squares Rain


Now the fun starts...
"Kismet is an 802.11 layer2 wireless network detector, sniffer, and intrusion detection system. Kismet will work with any wireless card which supports raw monitoring (rfmon) mode, and can sniff 802.11b, 802.11a, and 802.11g traffic."
...the practical upshot of which is that when you run it on a Libretto you have a conveniently portable wardriving machine.
Note that there is no vertical space between the Libretto's two PCMCIA slots. This means that if you want to have two wireless cards (both scanning, or one scanning, one for connections), you need to have one that does not stick up as it comes out of the slot. I have a Belkin F5D7010 that has the rt2500 chipset and only sticks up 1mm, allowing a second card in above it.
Also, if you've got sound working, and have a 2.5mm to 3.5mm jack adapter (or 2.5mm-jack headphones), Kismet can read out (among other things) the encryption status and SSID of each network it detects.
Finally, connecting a GPS to the serial port on the port expander, and running GPSd allows Kismet to log where it collects the signals, and with the gpsmap utility, convert them to nice maps showing all the APs in the area.