A friend gave me this old laptop from the early 2000′s.
Here are my personal notes about installing an optimized and lightweight Debian GNU/Linux system on this machine, mainly for internet browsing / music playing (with external speakers!)
Official support pages
Computer specs
PIII 700MHz
128 Mb SDRAM on the motherboard, 1 SODIMM slot available for RAM upgrade (Specs says this computer can be upgraded upto 256 Mb at max!)
8 Mb Video RAM (ATI Rage Mobility M1)
20 Gb HDD (a Win2000 system was installed)
No CD / No floppy drive
No booting from USB! / No PXE boot!
No Wifi
Dead battery!
Installation
Debian 6.0 (i386) – Launching Debian Installer from windows using win32-loader.
Since I couldn’t boot the computer from USB/PXE (BIOS limitation) or from Floppy/CD (lack of), I used the special tool from Debian for launching the (netinstall) installer inside Windows (There was a working windows 2000 system on the computer).
Run & restart computer, to boot the Debian installer.
Firmware needed for Ethernet adapter! (e100/d101m_ucode.bin)
Fetch the .tar.gz package and copy the d101m_ucode.bin to a USB drive.
(Note : the LEDs on the ethernet adapter won’t lit, but it works!)
Post-installation configuration
Enable contrib and non-free repo’s
# nano /etc/apt/sources.list
(add non-free and contrib)
Hardware overview
# apt-get install hwinfo
# hwinfo
Soundcard
# lspci
We need the Yamaha YMF-744B proprietary firmware, see http://wiki.debian.org/snd-ymfpci
# apt-get update && apt-get install alsa-base alsa-utils build-essential
# exit
$ cd && wget ftp://ftp.alsa-project.org/pub/firmware/alsa-firmware-1.0.20.tar.bz2
$ tar xvf alsa-firmware-1.0.20.tar.bz2
$ cd alsa-firmware-1.0.20
$ ./configure
$ cd ymfpci && make
$ su
# mkdir -p /usr/local/lib/firmware/yamaha
# cp *fw /usr/local/lib/firmware/yamaha
# modprobe -r snd-ymfpci ; modprobe snd-ymfpci
# alsamixer
# exit
$ aplay /usr/share/sounds/alsa/Noise.wav
Graphics
The graphics adapter (ATI Rage Mobility M2) runs out of the box with XOrg, but looking at /var/log/Xorg.0.log, we can see that DRI is disabled (“kernel module mach64 not found”) so no hardware acceleration…
Unfortunately, DRI support for this board seems to have been discontinued.
Touchpad (AlpsPS/2 ALPS GlidePoint)
Vertical scrolling works out of the box.
Tapping is disabled by default, to enable it (at least for the left mouse button)
# synclient TapButton1=1
# nano /etc/X11/xinit/xinitrc
add the line
synclient TapButton1=1
(before the . /etc/X11/Xsession line)
TODO : This VAIO has a special wheel button (“Jogdial”) on the right side of the case. apt-get install sjog
TODO : Vaio special keys
Power management
# apt-get install laptop-mode-tools
You can run powertop just to see, but it won’t be very useful!
# powertop
Suspend to ram : appears to be working, although not 100%!
Suspend to disk : tested OK
CPUFreq : non functional (governor not available). So no SpeedStep support?
Vaio control program, command line utility
# apt-get install spicctrl
Set LCD brightness to the max
# spicctrl -b 255
Set CPU fan speed
# spicctrl -f 255
Get (system/cpu?) temperature
# spicctrl -T
Configuring the Desktop
From Gnome 2 and XFCE to LXDE
In my case, I chose Debian’s default, ie Gnome 2 during install, for testing purposes.
As expected, Gnome does not run well with only 128Mb of RAM. It’s best to install a bare console system, then install (for example) LXDE later.
Xfce4 performs a bit better
# apt-get install xfce4 xfce4-goodies
but still not fast enough, so I will be using LXDE :
# apt-get install lxde
set lxsession as default session-manager instead of gdm3 ( http://wiki.lxde.org/en/Debian )
# update-rc.d -f gdm3 remove
# update-alternatives –config x-session-manager
then choose startlxde
(Afterwards, to start your lxde session, use “startx” from the console)
Autologin into X
# nano /etc/rc.local
add the line :
su – <username> -c startx
before the “exit 0″ line
If X doesn’t start upon reboot (error message “user not authorized to run the X server”)
# dpkg-reconfigure x11-common
set it to “anyone”
Desktop Applications
Web browsing
IceWeasel (from the backports for a more recent release) – See http://mozilla.debian.net/
# nano /etc/apt/sources.list
add :
deb http://backports.debian.org/debian-backports squeeze-backports main
deb http://mozilla.debian.net/ squeeze-backports iceweasel-release
# apt-get update && apt-get install -t squeeze-backports iceweasel
Remove gnash and add adobe flash plugin
# apt-get remove gnash
# apt-get install flashplugin-nonfree
As expected : Iceweasel is slow, flash video playback is crappy!
Epiphany web browser is lighter and can use the flash plugin
# apt-get epiphany-extensions
TIP: Remember to enable AdBlock with Epiphany (in the Extensions)
TIP: Set flash videos to low quality (240p on youtube)
Audio player
Alsaplayer
# apt-get install alsaplayer-gtk
No playback problems. Playlist management is not optimal (can’t add directories directly)
Aqualung
# apt-get install aqualung
Crashed on this system when playing mp3s!
Audacious2
# apt-get install audacious-plugins
The best lightweight player for me so far, no playback problems, list management is good.
NOTE : if encountering bad playback sound (stuttering, chopping), use the OSS output plugin instead of ALSA!
General Optimizations
Reclaim some disk space
# apt-get install localepurge && localepurge
Use prelink to speed up program execution
# apt-get install prelink
# prelink -am
Disable unused daemons/services to free some precious memory up
modem-manager / bluetooth / saned / cups / nfs-common / portmap / exim4 / network-manager / kerneloops
# update-rc.d -f <servicename> remove
Since I don’t use network-manager, I will configure /etc/network/interfaces accordingly
# nano /etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp
fstab optimization
# nano /etc/fstab
add the “noatime” option on the root / filesystem
# / was on /dev/sda1 during installation
/dev/sda1/ ext4 noatime,errors=remount-ro 0 1
Save some memory by limiting ttys
# nano /etc/inittab
comment some ttys (3 shall be enough!)
1:2345:respawn:/sbin/getty 38400 tty1
2:23:respawn:/sbin/getty 38400 tty2
3:23:respawn:/sbin/getty 38400 tty3
#4:23:respawn:/sbin/getty 38400 tty4
#5:23:respawn:/sbin/getty 38400 tty5
#6:23:respawn:/sbin/getty 38400 tty6
Decrease disk swapping
# nano /etc/sysctl.conf
add the lines :
vm.swappiness=20
vm.vfs_cache_pressure=50
Kernel boot options for some optimizations and a bit of embellishment
# nano /etc/default/grub
- force irqpoll to avoid certain warning messages while booting
- force UDMA mode : libata.force=udma3
(warning, test it from GRUB interactive mode before modifying your grub .cfg file)
(might be specific to the HDD model, mine is an IBM, use “hdparm -I” to see which udma modes are supported by your drive )
- Set VGA (framebuffer) mode to 1024×768 in GRUB’menu and in the console
- Add a nicer background image in GRUB’s menu
So here is the value of our GRUB_CMDLINE_LINUX
GRUB_CMDLINE_LINUX=”irqpoll libata.force=udma3″
- change GRUB’s menu resolution and background image
GRUB_GFXMODE=1024×768
GRUB_GFXPAYLOAD_LINUX=”keep”
GRUB_BACKGROUND=”path/to/the/image.png”
Write GRUB modifications
# update-grub
Remove annoying usb error message in console (“usb 1-1.1: device descriptor read/8, error -110″)
# nano /etc/sysctl.conf
Uncomment the kernel.printk line, reboot. The low-level error messages will not appear on the console anymore.
Further comments
A simple Openbox session is even lighter than a full LXDE desktop (128Mb only of RAM produces much swapping when using a web browser for example)
To set Openbox instead of LXDE :
$ sudo update-alternatives –config x-session-manager
then choose “openbox-session”.
Configure your Openbox :
$ nano ~/.config/openbox/rc.xml
or use obconf
Add some apps to start automatically
$ cat >~/.config/openbox/autostart.sh <<END
audacious &
lxterminal -e htop &
END
Things to test
- Replace the slow HDD with a CF card using a IDE-CF adapter (Note: the HDD is not easily removable on this computer model)
TODO : soundcard bugs! stuttering sound! with ALSA output. OSS output seems fine!