Easy Debian

This package, when installed on your tablet or phone, will give you OpenOffice.org, Gimp, the LXDE Desktop Environment, Evince, Firefox (called Iceweasel in Debian) with Java and Flash support, printing support, and access to thousands of precompiled applications from Debian that can be easily browsed and downloaded to your hand-held device. All these applications will be installed in an image file containing the Debian operation system without interfering with Maemo, but taking advantage of its infrastructure and connectivity.

This package will give you all of these applications without any need for installing dependencies or other applications, and it should work on the Nokia N800, N810 and N900 mobile devices.

Contents

[edit] What you need:

  • You need 2.5 GB free on one of your memory cards, although after installing, you will only need 2 GB.
  • You need to keep your expectations reasonable. Big desktop applications like OpenOffice and Firefox run slowly on small handheld devices. They are power-hungry and designed for big, powerful CPUs. The N810's processor is comparable to a Pentium II processor. Just imagine running these apps on your computer from the mid-90s (remember Windows 95?), and you'll get the idea. But sometimes, you really need something on the tablet that only these apps can provide, like MS Word compatibility or Java applets. On the N900, almost all applications run reasonably fast once loaded, but they often take somewhat long to launch.

[edit] Install instructions

  • Install the easy-deb-chroot package. It can be found in the Extras repository. There may be a newer version in the Extras-devel repository. (Enabling Extras-devel is a dangerous area and you should disable it as soon as you are done installing Easy Debian, but Easy Debian is rather safe and it is optified). Once installed several new shortcut icons will be available on the applications menu.
  • Go to application menu and run the application called "Debian Image Installer". A terminal program will open and guide you through several steps of pre-configuration:
    • First screen will give you a warning which you should acknowledge by clicking OK.
    • Second screen will ask you to Choose an image to download and give you 3 image options. For the sake of this tutorial, I choose the first option, image v3e.
    • Third screen will ask you to Choose Memory Card where to place the image file to either MyDocs (which in our case, is the internal memory of the phone) or MicroSD (assuming you have a microSD installed in your phone) (after decompression it will be a 2 GB file), either on the N900's built in storage (under MyDocs), or on an external MicroSD card (if available). That will start the download of the compressed image (about 300 MB) and eventual extraction of the image file. It may take more than 15 minutes to download if you have fast Internet connection, and another 30 minutes or more to extract it on your tablet. Make sure that there are no other processes running and that the extraction is not interrupted.
    • You can check for a successful download and extraction by typing
      ls -l /home/user/MyDocs/debian*
      in XTerminal. The compressed image name has the ending .img.ext2.lzma; when decompressed the file name ends in .img.ext2 and it should have a file size of exactly 2147483648 bytes.
  • This step is an alternate way to do the previous step: You can manually download the image file from here. Afterward you will have to copy it into /home/user/MyDocs/ or into /media/mmc1/ depending on whether you want it installed on the internal storage or on a removable storage. Then, when you run "Debian Image Installer" it will detect that you already have the file and proceed to extract it and set it up for you. For detection of your already placed debian* file stated above, the Debian Image Installer still need to connect to the internet for file checking purpose. If you have a faster computer with programs to unpack lzma-compressed files, you may also skip the Debian Image Installer by copying the uncompressed file by USB to the /home/user/MyDocs/ folder.
  • If you have more than one image file, you should edit /home/user/.chroot to select the one you want to load. Default is first in /home/user/MyDocs/debian*.img*, /media/mmc1/debian*.img*
  • When you get the "Congratulations!" message from the installer (or immediately if you have placed an uncompressed image file into /home/user/MyDocs/ yourself), you can launch Easy Debian by one of the Debian application icons or by typing "debbie" in XTerminal.
  • PR 1.2: The new firmware broke the workarounds for loss of keyboard focus in LXDE when switching between Maemo and Debian. This is fixed in the new version 0.9.50.

[edit] Easy Debian application icons

Easy Debian installs the following shortcuts in the Application Manager:

Close Debian 
for unmounting the Debian image and shutting down all running Debian processes
Deb Img Install 
for the initial download and extraction of the Debian image. For installing a new version of the Debian image from http://qole.org/files, delete the old image (or move/rename it appropriately) and rerun Deb Img Install.
Debian chroot 
this runs "sudo debian" in XTerminal, which gives root access to the Debian image. This can be used for modifying the Debian image and installing further applications from the command line. The root file system of Maemo is not visible from within Debian chroot, except /home and /home/user/MyDocs, so you cannot ruin the Maemo firmware from here.
Debian LXDE 
this launches the Lightweight X11 Desktop Environment from where you can start all installed Debian application. Alternatively, you can start Debian applications from XTerminal with "debbie" (see below).
Fix LXDE kbd 
fixing lost keyboard focus in LXDE (no longer needed with the new version of easy-deb-chroot, see below)
GNOME ALSA mix 
for configuring sound
Iceweasel Web B 
unbranded Debian version of the Firefox Web Browser
OpenOffice 
for starting OpenOffice without LXDE
Set Deb HW Keys 
additional useful keybindings through xbindkeys (see below)
Synaptic Pkg Mg 
graphical interface for installing additional Debian applications (in the Debian image only, not Maemo proper)

[edit] Using the LXDE Environment:

  • To launch a session of LXDE (a light weight desktop environment) with several applications already installed in it, including OpenOffice.org, simply click on the "Debian LXDE" icon shortcut on the application menu.
  • LXDE's application menu is found at the top left corner of the screen.
  • To momentarily go back into the Maemo environment, simply press Ctrl Backspace. To return to LXDE, click on the "Fix LXDE kbd" icon in the Maemo menu, since just going back from the Task Manager you would only be able to use the stylus thereafter.
  • Exiting LXDE: Log out, don't just close the window. Make sure to have LXDE closed properly before powering down the device, it will not function properly when started next time before doing the next proper shutdown.

[edit] Window is too big for the screen

Press Ctrl and the period key simultaneously. This will make the "Move Window" cursor appear (a cross with four arrows). Use the stylus to drag the window to expose the parts that are not visible.

[edit] LXDE Top Menu Disappears

The newer Easy Debian images (m5-v3b and later) have a new LXDE version.

If you upgrade Easy Debian and your LXDE top menu disappears, you can do one of two things:

  • Install the newest version (m5-v3e): Close Easy Debian (use the icon with the red arrow and box), delete the old image (use the File Manager to do this), and then use the "Deb Img Install" icon to download and extract the new image.
  • Keep your old image, and fix the top menu manually. Start LXDE. Tap and hold on a blank area of the left-side bar. Choose "Create New Panel". Choose "Top" and "OK". Tap and hold on new top panel. In the General tab, set the following things: Alignment: Left, Width: 25, Height: 32, Properties: Uncheck "Reserve Space..." In the Panel Applets tab, Add "Menu", "Digital Clock", "System Tray" (check "Stretch" column), "Net status monitor" (use edit button and change eth0 to wlan0, then tap on icon and set to wlan0 there too), and "CPU Usage Monitor".

If after the upgrade some menu entries (e.g. Gimp) are missing, you can manually install them from the Debian chroot terminal by

xdg-desktop-menu install --novendor /usr/share/applications/gimp.desktop

In order to have the document viewer Evince show up in the LXDE menu, you would have to first set "NoDisplay=false" in /usr/share/applications/evince.desktop and then run xdg-desktop-menu similar to above.

[edit] Keyboard issues and tips

Keyboard focus loss issues in LXDE are fixed in the new version of easy-deb-chroot, 0.9.54-1fremantle1, which is now in Extras. Note that upgrading easy-deb-chroot does not require reinstalling the image file!

For the record, in the older versions of easy-deb-chroot keyboard issues can be solved by the following modification of the script /usr/bin/xephwm5 in the Debian image. Edit this file in the Debian chroot terminal and change the lines containing qobi-wmhint-fix and set-focus (close to the end) so that they read

sudo /sbin/qobi-wmhint-fix $PARWIN
#/usr/bin/set-focus $PARWIN

The new version of easy-deb-chroot implements the same through Maemo-side scripts.

[edit] Localization

The keyboard in LXDE is by default US. To get a different keyboard layout for the LXDE window manager, you have to modify the Debian image which requires root privileges. For this, launch the "Debian chroot" app (icon with red swirl symbol), which opens a terminal with root access to the Debian image (as well as to your home directory). The following instructions assume that you are working from that terminal and not from within the LXDE window manager.

For the task of configuring a special keyboard layout for LXDE (German in the following example), start an editor of your choice in the Debian chroot terminal (e.g., leafpad), and insert the appropriate keymap label in the following line of /etc/xdg/lxsession/LXDE/autostart according to:

 @setxkbmap de

Available keymaps are: ch (Swiss), cz and cz_qwerty (Czech), dano (Danish/Norwegian), fise (Finnish/Swedish), nordic (Danish/Norwegian/Finnish/Swedish), de (German), fr (French), it (Italian), pl (Polish), ptes (Portuguese/Spanish), ru (Russian).

You may also wish to set the language environment under Debian to a non-US one so that system messages come in your native language. This can be done by issuing the command (again from within the Debian chroot terminal)

dpkg-reconfigure locales

and selecting from the list that is then displayed the UTF variant of the desired language, for example for German, de_DE.UTF-8.

[edit] Set Deb HW Keys app and xbindkeys

Easy Debian provides also a "Set Deb HW Keys" application which runs xbindkeys, mapping Fn+Shift+(upper row keys) of the hardware keyboard to function keys F1-F12. Here the Fn (blue arrow) key has to be pressed first, which is best done by pressing with the thumb and rolling down to also press the Shift key. The function keys are sometimes needed to get in and out of certain modes of programs in particular when started from the desktop (often F1 for help; F5 for presentation or navigator mode; F11 for "Styles and Formatting" in Openoffice.) Moreover, Ctrl+Up and Ctrl+Space provide full screen toggles. In the newest Easy Debian versions, Escape and Tab are mapped to Fn+Shift+Left and Fn+Shift+Right, respectively.

If F1-F12 do not work reliably for you, try replacing all occurrences of "xvkbd -text" in /home/user/.xbindkeysrc by "xvkbd -xsendevent -text". (Already fixed in newer Easy Debian versions.)

Under LXDE, the Enter key is actually KP_Enter, while some application only accept ordinary "Return". For this eventuality, "Set Deb HW Keys" maps Shift+Enter to Return.

You can edit /home/user/.xbindkeysrc to include more key mappings that you might find desirable in the absence of the virtual keyboard (which on the N900 in Debian chroot is only accessible in the XTerminal). For example

"xvkbd -xsendevent -text '\e'"
   Shift + BackSpace

maps Shift+BackSpace to Escape. (See e.g. http://linux.die.net/man/1/xbindkeys and http://linux.die.net/man/1/xvkbd for more possibilities.)

You can have xbindkeys started in LXDE automatically by including

@xbindkeys -f /home/user/.xbindkeysrc

in /etc/xdg/lxsession/LXDE/autostart.

In order to have xbindkeys started generally for all Debian applications (including even Maemo applications until the Debian chroot is closed) you can have it included in the Debian startup script as follows. In the Debian chroot terminal do

echo "su - user -c xbindkeys" >> /var/run/onfirstchroot.rc
chmod a+x /var/run/onfirstchroot.rc

(Don't do this more than once, otherwise you will have several xbindkeys processes running.) Starting xbindkeys outside of LXDE disables the keyboard shortcuts for full screen toggle within LXDE, but the other key bindings should work.

To manually stop xbindkeys do "killall xbindkeys".

Note that the relevant file /home/user/.xbindkeysrc does not reside in the Debian image but in the home directory. If you upgrade to new versions of Easy Debian, and this file already exists, it will not be overwritten, but the package will install instead a newer version in /home/user/.xbindkeysrc.dist.

It is then up to you to merge new additions to your existing /home/user/.xbindkeysrc file, or if you have not modified it to your needs, to simply take it over by typing in the XTerminal

cp .xbindkeysrc .xbindkeysrc.old
cp .xbindkeysrc.dist .xbindkeysrc

Another work-around for getting additional special characters is to remap your hardware keyboard.

A known issue is that in national keyboards where Up and Down arrows are composed as Fn+Left/Right arrows, Up and Down do not work under LXDE. If applications cannot be used without Up and Down keys, those should better be started outside of LXDE with debbie.

[edit] sticky keys hack

In the v3b image, /etc/xdg/lxsession/LXDE/autostart includes a hack to have sticky Shift and Fn keys also in LXDE. You can activate this behavior also outside of LXDE by running "debbie stickykeys" (or "debbie stickykeys xx" where xx is a language code different from us). Note however that this also affects XTerminal applications in Maemo.

The sticky keys hack also makes Ctrl sticky and may have other unexpected effects with non-US keyboards. To disable this feature in LXDE, comment out (include #'s in the beginning of) the following two lines in /etc/xdg/lxsession/LXDE/autostart according to

#xkbset exp 60 =sticky =twokey =latchlock
#xkbset sticky -twokey latchlock

In the newest image (v3e), the sticky keys hack is not enabled by default. To enable it, remove the #'s.

[edit] xvkbd

In LXDE one can also use the xvkbd utility to get a virtual keyboard. If clicking on it with the stylus keeps repeating keys indefinitely, go to the xvkbd menu (bottom left of keyboard), choose "Property", and set "Automatic Click" to "OFF".

[edit] Using debbie

From XTerminal the following scripts are available:

debbie 
starts debian chroot shell as user (doesn't evaluate /home/user/.profile)
debbie command 
runs debian command as user (if command includes file names, those need to be given with absolute path)
sudo debian 
starts debian chroot shell as root (this is the command issued by the "Debian chroot" app)
sudo debian command 
runs debian command as root

The above scripts run with environment variables determined largely by those set in Maemo and with working directory / . Another option is to enforce login shell behavior as follows:

sudo debian su - user
starts debian chroot shell as user with $CHROOT/etc/profile and /home/user/.profile evaluated and with working directory /home/user. In the new Easy Debian version this is provided by the new script debbie-sue.
sudo debian su - user -c command 
runs debian command as user with $CHROOT/etc/profile and /home/user/.profile evaluated and with working directory /home/user. In the new Easy Debian version: debbie-sue command
sudo debsu 
debian chroot shell as root with login (root) shell behavior
sudo debsu command 
runs debian command as root with login (root) shell behavior

In all of the above, command can be simple command-line commands with standard output or GUI programs to be run under a window manager, such as ooffice.

If command involves a file name, it should be given with full path because after the chroot the working directory will usually have changed. A simple way to transform a file name into one with full path information is to precede it with "readlink -f".

[edit] Creating desktop shortcuts in Maemo

The above scripts are particularly useful for creating shortcuts. For example, a file oowriter.desktop with content

[Desktop Entry]
Version=1.0
Encoding=UTF-8
Name=oowriter
Icon=ooo-writer
Exec=debbie oowriter
Type=Application

that is put into /usr/share/applications/hildon or (since fw 2009.51) /home/user/.local/share/applications/hildon allows one to start the OpenOffice writer directly from the Maemo Applications Menu without having to launch LXDE first. Unless you are re-using existing icon files, you can install icons files (.png) by putting them likewise either in /usr/share/icons/hicolor/scalable/hildon or /home/user/.local/share/icons/hicolor/scalable/hildon. You may need to create the .local folders first by

mkdir -p /home/user/.local/share/applications/hildon
mkdir -p /home/user/.local/share/icons/hicolor/scalable/hildon

Newly installed application icons usually need a reboot to become visible in the application menu. If you want to be able to also install them as shortcuts on the desktop, it seems necessary to install the desktop file in /usr/share/applications/hildon and not in /home/user/.local/share/applications/hildon.

[edit] Command-line shortcuts in Maemo

Aliases and new shell functions can be defined in /home/user/.profile. Combining debbie and readlink, the following shell function for example allows one to quickly open files with OpenOffice from XTerminal.

oo() { /usr/bin/debbie-sue ooffice `readlink -f $1` ; }

After adding this line to /home/user/.profile and restarting XTerminal, "oo filename" starts OpenOffice with the given file.

[edit] Keyboard focus issues in debbie

Some applications (e.g. calibre, eric, PuTTY) don't get keyboard focus when started outside of LXDE. This can be repaired with the simple .kbdactive script that is included in the new version of easy-deb-chroot. With xbindkeys running (launched by the "Set Deb HW Keys" icon) keyboard focus is gained by pressing Fn+Return.

[edit] Startup scripts

If they exist, the following scripts (which need to be executable) serve as startup scripts as follows

$CHROOT/var/run/onfirstchroot-ext.rc 
This script will run commands as root in maemo the first time you "open" a chroot. So this is where you could force the processor to "performance mode" or some such thing.
$CHROOT/var/run/onfirstchroot.rc 
This script will run commands as root in the chroot the first time you "open" a chroot. For example, if you have installed cups within Easy Debian, this script should contain "/etc/init.d/cups restart".
$CHROOT/var/run/onchroot-ext.rc 
This script will run commands as root in maemo every time you run a chroot command.
$CHROOT/var/run/onchroot.rc 
This script will run commands as root in the chroot every time you run a chroot command.
$CHROOT/var/run/onclosechroot.rc 
This script will run commands as root in the chroot before closing the chroot.

Here $CHROOT is the mount point of the Debian system (to be omitted when aleady in chroot).

In order to run a command in one of these scripts as "user", preface the command with su user -c

[edit] Installing Applications

Applications can be installed using apt-get, aptitude or Synaptic. Apt-get is a command-line tool, and aptitude a terminal-based frontend, both of which can be accessed from within the Debian chroot terminal app (red swirl icon in the Hildon Application Manager). Synaptic Package Manager is a graphical frontend that can be launched from another icon in the Hildon Application Manager. It cannot be started from the (misleadingly present) menu entry in the LXDE menu, because it is not in the standard path and requires root privileges. (In LXDE one can however start it from a terminal typing "sudo synaptic".)

Note that the image cannot be expected to have an up-to-date package list. It is important that you perform "apt-get update" or use Edit -> Reload Package Information within Synaptic before installing new packages. After such installs you can invoke "apt-get clean" to free your disk space from downloaded package files.

In image v3d, only the stable Debian Lenny repository was activated, although the Easy Debian image also involves a number of packages from the newer Debian Squeeze (testing) repository. As a result, some additional packages can only be installed with Squeeze activated (indicated by "unmet dependencies" errors when attempting to install with Lenny alone). If you need to or want to install additional packages specifically from Squeeze or even from Sid (unstable), you should uncomment the corresponding line in /etc/apt/sources.list by launching an editor in the Debian chroot terminal (app with red swirl icon), i.e., remove "#" in the beginning of the lines

#deb http://http.us.debian.org/debian squeeze main contrib non-free
#deb http://www.debian-multimedia.org squeeze main

After updating the package information, you can then install from this newer repository. However, heed the following warning:


Warning: Those of you familiar with Debian or other similar Linux distributions know that it is very easy to keep the distro up to date by means of the apt-get command. However, there is currently a problem with some of the central Easy Debian apps in the Debian Squeeze repositories (gconf2 in particular). Therefore, it is recommended that for the moment you simply use the image as is. Do not perform a full upgrade (apt-get update is safe, though) when Squeeze (or even Sid) is enabled in /etc/apt/sources.list. This warning will be removed when this issue is resolved.


By the same token, watch out when new applications to be installed from Squeeze or Sid require an upgrade of gconf2. This can lead to configuration errors in other applications.

However, you can hardly do real harm by experimenting with your Debian installation. You can always start over by re-installing the original Debian image. Since user files are usually not stored in the Debian image, you won't lose much by doing so. But if you have enough space, it may be a good idea to make a copy of your Debian image so that you don't have to download and extract the original Debian image again, in particular if you are planning some more extensive and untested upgrades.

When using apt-get install to install applications, remember to always use the --no-install-recommends command-line option. This will keep extra, unneeded packages from being installed or upgraded. So you would install cups like so:

 apt-get install --no-install-recommends cups

[edit] CUPS Installation Instructions

If you have a network printer that can be accessed by CUPS, the Common Unix Printing System, you can do so under Easy Debian, which has cups-client installed (since version v3c).

This allows you to access one CUPS server at a time, which can be specified alternatively by

  • the option -h hostname[:port]
  • the file client.conf in /etc/cups or ~/.cups (see "man client.conf")
  • the environment variable CUPS_SERVER

You can then check for available printers by

lpstat -a

and print out files from your device by

lp -d printername filename

If a full CUPS installation is desired (which allows to schedule jobs to more than one CUPS server in the network, to scan for printers, and also to install cups-pdf, a PDF writer backend):

apt-get install cups
apt-get clean
echo "/etc/init.d/cups restart" >> /var/run/onfirstchroot.rc
chmod a+x /var/run/onfirstchroot.rc

The last two lines ensure that the CUPS server is started when Easy Debian is launched. (Ignore the errors you get when cups is installed for the first time.)

[edit] Other useful applications to install in addition

The following packages are also not part of the current image (v3e) but may be of wider interest:

KeepassX 
Password manager, cross platform and GNU General Public License.
vpnc 
The VPN client for accessing Cisco concentrators works well when started under Debian, while under Maemo vpnc is not yet available as a stable application. Install by "apt-get install vpnc" and configure through /etc/vpnc.conf .
This works particularly well in WLAN connections. There even microB connects via vpn. With GPRS connections, however, a browser in Debian has to be used.
openssh-client (now included in image v3e) 
To access the Debian system by ssh, one can of course use the ssh server under Maemo (which presumably every power user will have installed), for a login followed by "debian" or "debian su user". To initiate ssh connection from within the Debian system, installation of openssh-client is sufficient and does not conflict with ssh installations in Maemo.
gftp 
X/GTK+ FTP client. Works well when started outside of LXDE by "debbie gftp".
djview4 
Provides a reader for djvu files
flpsed 
WYSIWYG PostScript and PDF annotator, useful for filling forms, adding notes etc. Works well when started outside of LXDE by "debbie flpsed".
pdfchain 
a graphical user interface (only in squeeze distribution) for the PDF Tool Kit (pdftk, the command line tool that is already available in the stable lenny distribution). Noteworthy also: pdfgrep (from squeeze) to quickly search through pdf files on the command line.
abiword 
Alternative to OpenOffice Writer. However, needs to be installed from the squeeze repository and does upgrade gconf2 to the squeeze version, which breaks certain other things (e.g. the configuration of evince).
kile 
KDE Integrated LaTeX Environment. Works well when started outside of LXDE by "debbie kile".
gnumeric 
A leaner alternative to OpenOffice Calc. Works well when started outside of LXDE by "debbie gnumeric".
xournal 
GTK+ application for notetaking, sketching and keeping a journal using a stylus. It can also be used to add annotations to PDF files. Works well when started outside of LXDE by "debbie xournal". Richer interface than in the native Maemo application and available in newer version from squeeze.
zim 
zim is a desktop wiki application that is well suited for the N900 device (a Maemo version is under development, too). To get the newest version install this package from squeeze (but don't upgrade the rest of the packages). Start from XTerminal (or a self-made application icon, see above) by
sudo debian su - user -c zim 
The default theme provided by Easy Debian does not work well with this application, but can be changed by creating the file /home/user/.gtkrc-2.0.mine with content e.g.
gtk-theme-name="Raleigh"
encfs, sshfs 
sshfs allows one to mount a remote file system through ssh (and therefore depends on ssh-client, see above); encfs is a user-space encrypted file system, which allows to encrypt entire folders, see http://www.arg0.net/encfs. Both, encfs and sshfs, require the fuse kernel module, which is already available in the Maemo system, although normally not yet loaded. Because there is no group "fuse" under Maemo, it's best to change the group ownership of /dev/fuse to users, and have all that automated through the startup script $CHROOT/var/run/onfirstchroot-ext.rc (needs to be executable). Add the following lines to this script:
modprobe fuse
sleep 1
chown root.users /dev/fuse
Install by running the following commands in the Debian chroot terminal:
apt-get update
apt-get install encfs
apt-get install sshfs
adduser user fuse
apt-get clean
After that user (and not only root) can create and use encrypted file systems in Easy Debian. See http://www.arg0.net/encfs for how to use it.
To mount a remote file system one just issues "sshfs user@remote.domain: mountpoint"
To unmount either an encrypted or ssh-mounted file system one does "fusermount -u mountpoint"
nicotine 
graphical client for the SoulSeek peer-to-peer system
build-essential 
C++ compiler and associated development packages. Needs to be installed from the squeeze repository.

[edit] Upgrading OpenOffice

The new image v3e includes OpenOffice 3.2.1.

Previous images (up to v3d) included an OpenOffice version (3.1.1) for which support for the armel architecture was later withdrawn. This problem has been fixed with version 3.2 which is available in the Debian Squeeze distribution. If you want to install OpenOffice in images prior to version v3e, or if you want to update or extend your OpenOffice version in v3e, you need to activate Squeeze in /etc/apt/sources.list for upgrading. To install all openoffice.org packages do

apt-get update
apt-get install openoffice.org
apt-get clean

To only upgrade the packages installed (leaving out base but including math), do (each apt-get command is one line)

apt-get update
apt-get install openoffice.org-writer openoffice.org-impress openoffice.org-calc openoffice.org-math openoffice.org-style-crystal openoffice.org-style-galaxy openoffice.org-style-hicontrast openoffice.org-style-tango openoffice.org-emailmerge ttf-opensymbol python-uno
apt-get clean

which requires some 80 MB less space in the image. The reason for leaving out base is that according to this bug report, OpenOffice base is broken for the armel architecture.

Upgrading to the current version in squeeze will also upgrade a number of other packages, including Gimp.

[edit] Sound

[edit] Initializing sound

In order to initialize sound on a fresh installation of Easy Debian, open XTerminal and do:

debbie 
xmms2d -o pulse

Leave that running, open a second XTerminal session and do:

debbie lxmusic

[edit] ALSA device setup

Although Easy Debian has setup and mount the host pulseaudio (/var/run/pulse) into the chroot (done by qchroot in the easy-chroot package), pulseaudio was not set as the default ALSA device in images before version 3ve. To do so, edit /etc/asound.conf in the chroot, and comment out (or remove) the default alsa_dsp plugin, and add a pulse plugin. For example:

#pcm.!default {
#  type alsa_dsp
#  playback_device_file ["/dev/dsptask/pcm3"] 
#  recording_device_file ["/dev/dsptask/pcm_rec1"]
#}

pcm.!default {
  type pulse
}

[edit] complete dist-upgrade to Squeeze

Easy Debian is a mix of the Debian releases Lenny and Squeeze which leads to some problems like some silently broken packages and troubles when trying to install new software. Therefore a dist-upgrade to a pure Squeeze system might be useful. Usually this is no problem in Debian but since Easy Debian is restricted by the underlying Maemo in some ways there are some things to take care of.

One thing that has to be taken care of before doing the dist-upgrade is the special keyboard that we use. Debian's standard keyboard definition (which will be installed during the dist-upgrade) won't work properly so we'll have to make sure we will use the one we have already. All we have to do for that is to copy Easy Debian's folder /usr/share/X11/xkb somewhere else:

cp -r /usr/share/X11/xkb /home/user

The (one) usual way for a dist-upgrade in Debian is to change all the entries in /etc/apt/sources.list to the new release and then run as root (or preceded by sudo):

apt-get update
apt-get dist-upgrade

So basically your sources.list should contain these lines or some mirrors (everything else should be deactivated with a leading # ):

deb http://ftp.debian.org/debian squeeze main contrib non-free
#deb http://www.debian-multimedia.org squeeze main

[EDIT: By july 2013, the debian-multimedia.org domain was not anymore owned by the third-party supporters who owned it before! For security reasons it is not recommended to use it. Nevertheless, the official repository has improved its support over several mulimedia formats making third-party repositories unncecessary]

Easy Debian has only a limited amount of disk space, so we'll temporarily create a new place to store the downloaded new packages in MyDocs:

mkdir -p /home/user/MyDocs/archives/partial
sudo mount --bind /home/user/MyDocs/archives /var/cache/apt/archives

Then we'll do the dist-upgrade. Unfortunately Maemo has a very snappish watchdog that reboots your phone if it thinks it hangs due to a runaway process. This is almost certainly triggered when doing mayor package installations with normal process priority. So we'll do the dist-upgrade wit the lowest priority using the nice command:

nice -n 19 sudo apt-get update
nice -n 19 sudo apt-get dist-upgrade

This will take very long. So you should make sure the following conditions are fulfilled:

  1. You have a running internet connection.
  2. Your N900 is plugged to the power pack
  3. You have plenty of time where you don't need the phone (doing it in the late evening just before you go to bed would be a good time).


After all that is done we'll clean some things up. Close Easy Debian (use the Icon in Maemo just to be sure) and delete the archives folder in MyDocs.

Now you'll notice six regressions:

  1. The shutdown and reboot options in the LXDE logout dialogue are gone. It doesn't matter, just use logout instead. Since we're in a chroot and not on a real machine there's no real difference.
  2. All the blue keyboard buttons won't work anymore and the blue arrow key will behave strangely. This is because during the dist-upgrade the quite special Maemo keyboard layout used by Easy Debian was overwritten with a generic layout. This is why we made a backup of our keyboard folder right at the beginning. Now it's time to restore it - from within Easy Debian chroot, do (remember about prefixing with 'sudo', if You're executing it from within LXDE instead!):
    sudo mv /home/user/xkb /usr/share/X11
    Then close Easy Debian and after restarting it the keyboard should work fine.
  3. After changing to another application via Ctrl + Backspace and returning to Easy Debian your mouse and keyboard will behave very odd. Lots of click events might not be recognized and your keyboard won't write but instead execute shortcut options. The reason is that for some reason Easy Debian doesn't catch the Ctrl release event anymore when leaving it. Pressing Ctrl once after returning to Easy Debian will solve that. Unfortunately you'll have to do that every time you return to Easy Debian. The reason for this behavior isn't absolutely clear but it seems like this doesn't happen in all cases. It might be related to the xserver-xephyr package in Squeeze. See below!
  4. Loading the Easy Debian desktop will take very long and a pcmanfm (file manager) will pop up automatically. This is because pcmanfm is also used for some desktop management in LXDE but as a demon. The syntax of the demon switch has changed between the LXDE versions in Lenny and Squeeze. In the file /etc/xdg/lxsession/LXDE/autostart change the line @pcmanfm -d to @pcmanfm -desktop to take care for that change.
  5. Some programs (e.g. iceweasel) that are started via debbie from Maemo will throw a dbus-related warning but seem to work fine. So it should be safe to ignore that warning. If you want to get rid of the popup uninstall the package that causes these popups.
  6. Sound in Easy Debian won't work anymore. This is because there were some changes in pulseaudio between version 0.9.15 and 0.9.16 which lead to incompatibilities. Maemo uses 0.9.15 so Lenny's 0.9.10 works while Squeeze's 0.9.21 does not. Installing the latest working version 0.9.15 (or any prior to that) would normally break Squeeze's package system so we'll have to fool it so that it actually uses 0.9.15 but thinks it has 0.9.21. To do that there are some modified packages available at qole's server:
http://qole.org/files/pulseaudio_easydebian_squeeze.tar.gz (please note: These modified packages are a pretty evil hack and neither Debian nor pulseaudio can be held responsible for any incompatibilities caused by them.)
The easiest way to install them is to create a new folder, change to it, unpack the archive and install them via dpkg. But since these packages are technically from the Lenny era we'll need two further dependencies which are not available in Squeeze anymore. So let's start:
mkdir pulse
cd pulse
wget http://qole.org/files/pulseaudio_easydebian_squeeze.tar.gz
tar -zxf pulseaudio_easydebian_squeeze.tar.gz
wget http://ftp.debian.org/debian/pool/main/p/policykit/libpolkit2_0.9-2_armel.deb
wget http://ftp.debian.org/debian/pool/main/p/policykit/libpolkit-dbus2_0.9-2_armel.deb
nice -n 19 sudo dpkg -i *.deb
When this is done sound should work again. Now we have to make sure that these changed packages won't be overwritten by regular Debian updates. So we'll set them on "hold":
sudo echo libpulse0 "hold" | dpkg --set-selections
sudo echo libpulse-browse0 "hold" | dpkg --set-selections
sudo echo libpulse-mainloop-glib0 "hold" | dpkg --set-selections
sudo echo pulseaudio "hold" | dpkg --set-selections
sudo echo pulseaudio-esound-compat "hold" | dpkg --set-selections
sudo echo pulseaudio-module-gconf "hold" | dpkg --set-selections
sudo echo pulseaudio-module-x11 "hold" | dpkg --set-selections
sudo echo pulseaudio-utils "hold" | dpkg --set-selections

[edit] portrait mode

(If you use one of Estel's images based on Debian Squeeze you already have all the prequisites, so this only applies if you dist-upgraded from one of the older mixed Lenny/Squeeze images by qole.)

You might have tried to switch Easy Debian to portrait mode using a command like this:

xrandr --output default --rotate left

In this case you will have noticed that although the display output was rotated but that the mouse cursor will still behave as if the desktop was running in landscape mode. This is due to a bug in xserver-xephyr which fortunately has a fix: https://bugs.freedesktop.org/show_bug.cgi?id=37331

However, that fix didn't make it into the Debian Squeeze package but the package from the backports is reasonably up to date that the fix could be easily applied to it.

If you want to use the fixed package you first need to do a complete dist-upgrade to Squeeze, then activate the squeeze-backports repository, install xsever-xephyr from it and after that install this patched backports package: http://lorienart.pl/cover/xserver-xephyr_1.10.4-1~bpo60+99_armel.deb

[edit] FAQ

Q: I have started Openoffice (evince, ...) from the desktop, entered a certain mode (presentation, navigator, formatting, full screen, ...) and cannot get out of that again.
A: See the section on setting keybindings

Q: I chose Iceweasel, but nothing happened!
A: Be patient. Iceweasel has no splash screen and a very long startup time. Use Epiphany for faster startup while retaining the ability to use Java and Flash plugins.

Q: How do I get to the OK button in the huge dialog box that just popped up?
A: DIABLO/N8x0: If you choose the "Toggle Movable Windows" icon in the menu, you will switch to a patched version of the Matchbox Window Manager that lets you move the big dialog boxes used by some Debian apps so you can get to the OK button. When you want to go back to "Normal" OS2008 window behavior, select this menu item again.
A: FREMANTLE/N900: You'll need to use LXDE to access the entire dialog. Use the Ctrl-. key combination to move windows with the stylus.

Q: How do I get the virtual keyboard to pop up in Debian Apps?
A: DIABLO/N8x0: Select the "Set Debian HW Keys" menu item; wait a bit, then you can press the minus (-) hardware key followed by the menu hardware key to toggle the Matchbox Keyboard. Press the (-) key then the (+) key to toggle between normal and mini (one-line) keyboards.
A: FREMANTLE/N900: There is no virtual keyboard in Maemo for Debian apps.

Q: How do I make Debian apps fullscreen?
A: Select the "Set Debian HW Keys" menu item; wait a bit, then you can press (DIABLO/N8x0) the minus (-) hardware key followed by the "fullscreen" hardware key or (FREMANTLE/N900) Ctrl-Uparrow or Ctrl-Space to toggle fullscreen for any app.

Q: DIABLO/N8x0: How do I get the best turbo speed from OpenOffice, Firefox and other big apps?
A: Make sure you have the maximum amount of virtual memory enabled in your Control Panel / Memory dialog. Then select the "Set CPU to Performance mode" menu item and launch your app. Remember to set the CPU to On-Demand mode when you're done using the big app, because Performance mode sucks your battery faster. But it still isn't as bad as the battery life of your average laptop...

Q: English isn't my first language. How do I change this to my language?
A: Please click on the "Debian chroot" icon and type the following command:

dpkg-reconfigure locales
Choose your language(s).
DIABLO/N8x0: Note that you should choose the language with no period between the language and the iso code (eg. "en_CA ISO-8859-1"), and optionally, the utf-8 version, too (eg. "en_CA.UTF-8").
FREMANTLE/N900: Choose the UTF-8 version.

Q: Under Debian the time zone is not the same as under Maemo.
A: In the Debian chroot terminal run

dpkg-reconfigure tzdata

and select the time zone of your choice.

Q: How do I find the amount of space left for applications?
A: From the prompt in Debian Chroot menu item:

df -h /

Look under AVAIL.

Q: I want to install more applications! How do I do that?
A: First, you have to update the repository lists. From the prompt in Debian Chroot menu item:

apt-get update
The image for the N900 has quite some free space for installing additional Debian packages.
For DIABLO/N8x0, you must get some space back! There's almost no extra room in the image file.
apt-get install localepurge; localepurge
This will get you at least 80 MB back. You should probably do this first, before starting to install. Running out of space during an install in Debian is ugly.
Also, when downloading packages, remember to frequently use "apt-get clean" to clear out old downloaded packages. That will help with free space.
If you're comfortable with the command line, you can use the technique listed in this post to double your install space.
Even with all of these tricks, you'll still run out of room fairly quickly. You'll probably have to uninstall packages in order to add new ones.
More advanced users can put a minimal system into an empty image and build a custom set of apps using this post. The most advanced and best way: partition your SD card and put your Debian fs there.

Q: What's this "Iceweasel"?
A: Iceweasel is the Debian name for Firefox. It's a long story, but in short, Mozilla and Debian had a philosophical disagreement that ended in Debian renaming Firefox to Iceweasel.

Q: I would like to have a separate /home/user directory under Debian than under Maemo. Is that possible?
A: /sbin/qchroot script does mountings; one option is to not mount /home/user at all by commenting out the corresponding line in that script, which is

mount /dev/mmcblk0p2 "$CHROOT/home"

for FREMANTLE/N900. Then /home/user/MyDocs will still get mounted, but you can keep a Debian home directory separately, in the chroot.

Q: How is this different than the Deblet project?
A: Easy Debian uses a fully installed Debian system to run applications inside of Maemo. The Deblet project helps you install a bootable Debian system from scratch; Deblet is mainly designed for booting to an alternate OS.

Q: I already have Debian in a partition, or I'm running Deblet. How can I use your package with my Debian?
A: Edit the /home/user/.chroot file to point to your Debian partition or image file. Easy Debian will do the rest.

NOTE: If you are using Deblet, delete the /home/user/.synchroot file before running Easy Debian for the first time, so your Deblet config files don't get overwritten. Remember that you'll need to make a user called "user" in Deblet (with the proper ID) for things to work correctly. Also note that your maemo home directory will be used by default. This can also be changed in the .chroot file.

[edit] Debian "wheezy" images

A number of experimental images using Debian Wheezy (testing) are now available (August 2012) from this post on TMO, courtesy of Roberto Colistete.

[edit] Installing experimental images

Experimental images are not known to the Debian Image Installer, nor are they (yet) hosted by qole, so you will need to download the desired image file into the desired location (using wget or similar) and decompress it with "lzma -d <filename>". From there, you should be able to launch it as normal; the Deb Chroot and Debian LXDE icons work as expected.

[edit] Known issues

[edit] Chromium web browser

Chromium is broken for arm in Debian wheezy. Estel reports a successful workaround using chromium from debian squeeze.

[edit] Chromium on Sci image

If you try to do this on the Sci image (Sulu via rcolistete), then after enabling the squeeze sources you'll run into apt-get/apt-cache errors of "the value 'testing' is invalid for APT::Default-Release. Work around these with "aptitude -t stable install chromium-browser".

This will get your browser installed, but it will then complain (if started from command line) about the lack of libesd0 and libcurl3. You can install both of these, also from squeeze sources, upon which it will start without complaining. Also, if you've been testing it as root, then you'll want to "chown -R user /home/user/.cache/chromium" and "chown -R user /home/user/.config/chromium" for it to work properly as "user".

[edit] Optimising your EasyDebian images

[edit] Grow your image file to 4GB

Debian Wheezy takes up more space than Squeeze. If you want to enlarge your image file, the maximum file size that you can support on a FAT32 partition is 4GB minus one byte, or 4,294,967,295 bytes. Beyond that, you'll have to use a dedicated partition.

So, without harming portability, we can increase our image file by 1GB (almost) and then grow the file system to fit it. To increase the image size, first, concatenate 1GB of zeroes onto the end of the file:

dd if=/dev/zero bs=1M count=1024 >> /path/to/image.ext3

Note that the ">>" is critical here, meaning append the zeroes to the end of the file; accidentally use ">" and you'll overwrite the image. The command will "fail" with an error when you hit 4GB on a FAT32 filesystem, but, don't worry, that's because we hit the maximum file size before we ran out of zeroes. Our image file will still be the desired maximum possible size. Now, we need to unmount and remount the image, in order for the loop mount to pick up the larger "device" that we just created. This is as simple as running the Close Debian script, then restarting Easy Debian via Deb Chroot (or sudo debian).

Finally, we grow our ext3 file system to match. From within the chroot, issue a

resize2fs /dev/loop0

and your filesystem will be extended to 4GB.

[edit] Convert your image file to ext3, ext4, xfs, etc.

You might wish to use a newer file system for improved data integrity, efficiency or CPU performance; this is supported with recent versions of kernel-power and CSSU and can reduce CPU overhead.

[edit] ext2 to ext3

This is fairly easy; from within the chroot, issue:

tune2fs -j /dev/loop0

assuming your first partition that is mounted on "/" is called loop0. It may be called dm-0, or anything else. To be sure, check it out. Issue:

df -k

and you should get an output like this:

Filesystem      1K-blocks    Used   Available Use% Mounted on
/dev/loop0        2064208   1733036    331172  84% /
/dev/mmcblk0p2    2064208    796220   1163132  41% /home
/dev/mmcblk0p1   28312128   2252928  26059200   8% /home/user/MyDocs

Example: If the first partition mounted on "/" is called /dev/dm-0 instead of /dev/loop0, then the command should be:

tune2fs -j /dev/dm-0

end of Example

This command will add a journal to your ext2 filesystem. It will appear that it waits for your input since it will throw you a colon "Creating journal inode:". Do not type anything and wait approx. one minute to finish by itself. Close down Easy Debian (it is advisable to close it through it's specific icon named "Close Debian" which will properly close Debian and unmont everything).

Then, from Maemo's X Terminal as root, rename your image file from <image-name>.ext2 to <image-name>.ext3. After that, edit /home/user/.chroot file by issuing:

nano /home/user/.chroot

and change ext2 into ext3 on those 2 unhashed fields:

# Some examples:
IMGFILE=/home/user/MyDocs/debian-m5-v3e.img.ext2
#IMGFILE=/media/mmc1/debian-squeeze-m5.img.ext2
#IMGFILE=/dev/mmcblk1p2
#IMGFILE=/dev/mmcblk0p4
# Filesystem used; must always be set when using a partition.
# Default: from extension of IMGFILE, or ext2.
IMGFS=ext2

Restart Easy Debian, and away you go. Take note that adding a journal adds overhead and may not improve performance; understand the implications before you proceed.

[edit] ext3 to ext4 (or anything else)

A word of warning. The version of e2fsprogs in Maemo is ancient, and xfs-tools seems to be non-existent, so if you use ext4 or xfs, you will lose the ability to fsck the image on the device itself. This is fine if you have (and are happy to use) a Linux PC; if not then you may want to stick to ext2/ext3.

Migrating from ext3 to ext4 has no impact on existing files that were written under ext3, only on newly written files. Therefore, to achieve the expected benefit from a migration to ext4, you'll need to create a fresh image of the desired size, format it and copy the contents of your old image onto your new one. You'll probably want to do this over USB from a Linux PC rather than from the device itself, both for speed reasons and (probably) for newer versions of the applicable filesystem tools.

First, create a file of the desired size, either with dd or by simply making a copy of the image file that you intend to clone.

cp <image-name>.img.ext3 <image-name>.img.ext4

Now format the new image file with the desired file system. We'll use ext4 here, but this should work for any filesystem that is supported by kernel-power.

mkfs.ext4 /path/to/mounted/n900/<image-name>.img.ext4

You might want to consider the "-T small" option to mkfs, which will yield a smaller block size (1KB) and more inodes, otherwise you'll be limited to 262,144 files in 1,048,575 blocks, also, at your option "-m 0" to set the reserved blocks count to zero (do not keep 5% back for the superuser). Once that's done, we need to mount both images, and clone the old one to the new one:

mkdir /mnt/old
mkdir /mnt/new
mount -t ext3 -o loop /path/to/mounted/n900/<image-name>.img.ext3 /mnt/old
mount -t ext4 -o loop /path/to/mounted/n900/<image-name>.img.ext4 /mnt/new
cp -a /mnt/old/* /mnt/new/
umount /mnt/new
umount /mnt/old

It does no harm at this point to run a filesystem check on the newly created image. You'll also need to make sure that the image is either configured in .chroot or is the first such image in the directory in order for the Easy Debian chroot scripts to pick it up.

[edit] Directory based chroot

First copy the filesystem to your homefs. Then edit your ~/.chroot, so that it contains

   IMGFILE=none
   CHROOT=/path/to/chroot

TODO: Do some magic with closechroot

[edit] Donations

If you feel overwhelmed by gratitude towards qole for bringing a full-fledged Debian OS to your device, consider donating at qole.org. [DISCLAIMER: This entry was inserted by a grateful user, not qole himself.]