Pocket Workstation - Debian on Handhelds

Update 2006-08-22: Uploaded new -base and -big v1.0 tarballs containing current Debian stable (sarge) snapshot (I don't recommend upgrading to testing/etch) and current fbvnc. (Sorry about the outage, it was due to my web hoster (infinology.net) being very uncooperative about getting the domain renewed.)

Update 2005-10-12: Unfortunately I have very little time to work on this project - the release does work and can be used as a basis for doing an "apt-get dist-upgrade" to the latest and greatest packages, but for support please use the mailing list and Wiki.

Here are some of the features of what I'm currently running on my Zaurus:

  • Full Debian GNU/Linux operating environment, with easy access to the many GB of available software. Want the Konqueror web browser and have 50MB free space on your SD card? Run "apt-get install konqueror", go eat lunch and come back to find it ready to run. No porting needed.

  • includes X11 able to run most Linux applications - it supports virtual screens larger than the physical screen, realtime anti-aliased scaling and rotation, 3-mouse-button emulation and a full keyboard (useful i.e. if you need to send Ctrl-Alt-Del to an application).

  • VNC client fbvnc (same features as X11 above) - remote administer your NT box from your Zaurus.

  • Runs completely out of a single directory (a 256MB SD card is ideal), no re-flashing or modification of the existing operating system is required.

  • Switch between qtopia and X11 whenever you like without rebooting or needing to stop any of your X11 applications. This currently still requires waiting half a minute for QPE to load, but I'm working on making it near-instantaneous.

Requirements

You need:
  • A storage card with a Unix filesystem (ext2 works, FAT doesn't) and 95MB free space (125MB if you also need to put the archive on it) for the "base" archive, 200/280MB for the "big" one. SD/MMC cards are most useful due to keeping the CF slot free for network cards, but CF cards and microdrives also work.

  • Approximately 20 MB free RAM on the handheld. This is only really relevant for the SL-5000D with the Sharp ROM which has less than 32MB available - don't try to run Qtopia at the same time as Debian in that case.

Supported platforms:
  • Sharp SL-5000D or SL-5500 running the Crow ROM is recommended. OpenZaurus and the original Sharp ROM also work, but please refer to 'known bugs' below.

  • The Japan-only C700 and C750 models also work, and are highly recommended (here's a comparison between the c700 and 5600. See 'known bugs' section below for further instructions.

  • Compaq iPAQ color handheld running Familiar Linux. (NOT Windows CE, and it isn't officially supported yet and needs some tweaking, see 'known bugs' below. Send me mail if you want to try it.)

  • Other comparable handhelds running Linux might also work with some porting, let me know if you have one you want supported.



Installation

NOTE: I haven't had time recently to update the installation software or instructions. Please take a look at these user-contributed instructions:

The PocketWorkstation page in the Debian.net Wiki
Installing on a SL-C700 (Paolo)
Running Tcl/Tk on a SL-5500 (Kurt Yungel)

For general Debian issues on handheld computers, please use the debian-handheld mailing list. But please make sure to check out the "known bugs" section below first.

Get the most current zaurus-debian-*.tgz archive from the download section. The '-base-' package contains a minimal environment and needs 95 MB when unpacked, the '-big-' package contains additional software and needs 195 MB. You only need one of them, the contents of the 'base' package are completely contained in the 'big' one. See below for a full content listing. (Alternatively, you can use chroot-debian-bootstrap to create a customized package yourself from the Debian FTP servers, but this is a lot more complicated and time-consuming.)

If you can plug the target SD/MMC/CF card into a Linux computer (i.e. using a SD-to-PCMCIA adapter on a notebook, or a USB card writer), it's fastest to unpack it there. Otherwise transfer the archive to the Zaurus.

Make sure that the card is mounted using ext2 on the Zaurus (automatic mounting sometimes gets this wrong - edit /etc/fstab and use 'ext2' instead of 'auto' for the filesystem type).

Important: ensure that the filesystem is mounted with device files enabled - current OpenZaurus versions mount with the 'nodev' option which completely breaks the chroot environment. See 'known bugs' below.

Unpack the archive:

        cd /mnt/card    # SD/MMC card, Sharp or OpenZaurus ROM
        cd /home        # SD/MMC card, Crow ROM
        cd /mnt/cf      # CompactFlash or Microdrive

	# download and decompress GNU tar, busybox tar is broken in some
	# versions and messes up the archive contents
	wget http://pocketworkstation.org/files/gnu-tar.gz
	gunzip gnu-tar.gz

	# create the destination directory
	mkdir debroot

        # Unpack if you haven't done so already.
	# Don't forget the 'p' switch, or you'll get wrong permissions.
	./gnu-tar -C debroot -xvzpf zaurus-debian-*.tgz

        # Configure and integrate into native system
        ./debroot/INSTALL.d/postinst.sh

Please read the fbvnc documentation for more information about the VNC-based GUI.

You can edit the file /etc/debroot.conf to control the integration into the native system and startup options. If you don't select automatic startup, just run the following commands on the text console to launch it manually:

        Vncserver   # it backgrounds, hit ENTER to get the prompt back
	Fbvnc

To get out of the Debian environment, use <Fn>-<Shift>-<Q> on the virtual keyboard, or [Action]-<Shift>-<Q> on the real keyboard. This quits fbvnc, which will return you to the command line, but Xvnc will keep running in the background. Kill the 'Xvnc' process to shut down all X11 applications.

Known bugs

Please refer to the Wiki page:

The PocketWorkstation page in the Debian.net Wiki

Package contents

Because the dependencies are determined automatically and the contents of the Debian 'testing' release change fairly frequently, the exact list of packages may differ. The lists below apply to the 0.16 release.

-base-

EXTRA_PACKAGES=xbase-clients xserver-common xfonts-base xlibs aterm unclutter imlib1 libjpeg62 libpng2 libtiff3g libungif4g icewm[stable]
29045 kB packages, 82196 kB after installation
adduser apt aterm awk base-files base-passwd bash bsdmainutils bsdutils coreutils cpp-3.2 debconf debconf-i18n debianutils diff dpkg dselect e2fslibs e2fsprogs file findutils ftp gcc-3.2-base gcc-3.3-base grep gzip hostname ifupdown imlib-base imlib1 initscripts ipchains iputils-ping less libacl1 libattr1 libblkid1 libc6 libcap1 libcomerr2 libdb1-compat libdb3 libdps1 libfreetype6 libgcc1 libjpeg62 liblocale-gettext-perl libmagic1 libncurses5 libpam-modules libpam-runtime libpam0g libpng10-0 libpng2 libreadline4 libss2 libssl0.9.7 libstdc++5 libtext-charwidth-perl libtext-iconv-perl libtext-wrapi18n-perl libtiff3g libungif4g libuuid1 libwrap0 libxaw7 login makedev mawk mount ncurses-base ncurses-bin net-tools netbase netkit-inetd nvi passwd perl-base perlapi-5.8.0 sed slang1a-utf8 sysv-rc sysvinit tar tcpd unclutter util-linux wget xbase-clients xfonts-base xfree86-common xlibs xserver-common xutils zlib1g

-big-

EXTRA_PACKAGES=xbase-clients xserver-common xfonts-base xlibs aterm unclutter imlib1 libjpeg62 libpng2 libtiff3g libungif4g dillo icewm menu gpppon pppconfig gsfonts-x11 gv xpdf-reader madplay vorbis-tools setmixer ssh rsync gnupg nmap netcat tcpdump xvncviewer xli procps psmisc apt-utils bzip2 unzip calcoo rpncalc man-db openobex-apps gsm-utils sylpheed-claws jpilot lpr sysklogd ace-of-penguins libgtk-perl
58112 kB packages, 170381 kB after installation
ace-of-penguins adduser apt apt-utils aterm awk base-files base-passwd bash bsdmainutils bsdutils bzip2 calcoo coreutils cpp-3.2 debconf debconf-i18n debianutils defoma diff dillo dpkg dselect e2fslibs e2fsprogs esound-common file findutils fontconfig ftp gcc-3.2-base gcc-3.3-base gnupg gpppon grep groff-base gs gs-common gsfonts gsfonts-x11 gsm-utils gv gzip hostname icewm icewm-common ifupdown imlib-base imlib1 initscripts ipchains iputils-ping jpilot klogd less lesstif2 libacl1 libao2 libapt-pkg-libc6.3-5-3.3 libaspell15 libattr1 libaudiofile0 libblkid1 libbluetooth1 libbz2-1.0 libc6 libcap1 libcomerr2 libcompfaceg1 libcurl2 libdb1-compat libdb2 libdb3 libdb4.0 libdps1 libesd0 libexpat1 libflac4 libfontconfig1 libfreetype6 libgcc1 libgcrypt1 libgcrypt7 libgdbm3 libgimpprint1 libglib1.2 libgnutls7 libgpg-error0 libgpgme6 libgsmme1c102 libgtk-perl libgtk1.2 libgtk1.2-common libid3tag0 libjpeg62 libldap2 liblocale-gettext-perl liblzo1 libmad0 libmagic1 libncurses5 libnewt0.51 libogg0 liboggflac1 libopencdk8 libopenobex-1.0-0 libpam-modules libpam-runtime libpam0g libpaper1 libpcap0.7 libpcre3 libpisock8 libpng10-0 libpng12-0 libpng2 libpopt0 libreadline4 libsasl2 libspeex1 libss2 libssl0.9.7 libstdc++5 libtasn1-0 libtext-charwidth-perl libtext-iconv-perl libtext-wrapi18n-perl libtiff3g libungif4g libuuid1 libvorbis0a libvorbisenc2 libvorbisfile3 libwrap0 libxaw7 libxft2 libxrender1 login lpr madplay makedev man-db mawk menu metamail mount ncurses-base ncurses-bin net-tools netbase netcat netkit-inetd nmap nvi openobex-apps passwd perl perl-base perl-modules perlapi-5.8.0 perlapi-5.8.2 ppp pppconfig procps psmisc rpncalc rsync sed setmixer slang1a-utf8 ssh sylpheed-claws sysklogd sysv-rc sysvinit t1lib1 tar tcpd tcpdump ucf unclutter unzip util-linux vnc-common vorbis-tools wget whiptail xaw3dg xbase-clients xfonts-base xfree86-common xli xlibs xpdf-common xpdf-reader xserver-common xutils xvncviewer zlib1g

Wishlist

If you can help with any of these issues, please let me know:
Klaus Weidner [email protected]