Differences between XDSL and DSL
From XDSL
X-DSL is based closely on Damn Small Linux (http://www.damnsmalllinux.org). The current plan is to keep the amount of changes fairly small in order to ensure easy maintenance and compatibility with Damn Small Linux extensions. This article attempts to document the changes that have been made to DSL. It is correct as of X-DSL v0.4.
| Table of contents |
The Kernel
The 2.4.26 kernel used in Damn Small Linux (http://www.damnsmalllinux.org) has been replaced by a 2.4.31 kernel. This is a vanilla kernel from kernel.org with the latest xbox-linux patches (http://sourceforge.net/projects/xbox-linux/) and the knoppix 2.4 kernel patch (available in /usr/src on a knoppix cd). The kernel configuration is available at /boot/config-2.4.31-xbox when running X-DSL. The linux-wlan-ng, ndiswrapper and xbox lirc modules were then compiled against this kernel and are included in X-DSL.
In order to add the kernel the following was modified:
/lib/modules/2.4.26 (removed) /boot/System.map-2.4.26 (removed) /lib/modules/2.4.31-xbox (added) /boot/System.map-2.4.31-xbox (added) /boot/config-2.4.31-xbox (added) /boot/System.map (updated to link to System.map-2.4.31-xbox)
The kernel modules in the /modules directory of the initial ramdisk also needed to be replaced with their updated versions
Device nodes
Device nodes for the Xbox partitioning system and the i2c interface were added as follows
| Name | Type | Major | Minor |
| hda50 | block | 3 | 50 |
| hda51 | block | 3 | 51 |
| hda52 | block | 3 | 52 |
| hda53 | block | 3 | 53 |
| hda54 | block | 3 | 54 |
| hda55 | block | 3 | 55 |
| hda56 | block | 3 | 56 |
| i2c-0 | character | 89 | 00 |
Initial Ramdisk
In order to allow X-DSL to be booted from a fatx partition two changes needed to be made to /linuxrc. It needed to be aware of fatx partitions and it needed to be aware of the Xbox partitioning system.
To make it aware of fatx partitions,
# Builin filesystems BUILTIN_FS="iso9660 ext2 vfat"
was changed to:
# Builin filesystems # XBOX: Added fatx BUILTIN_FS="iso9660 ext2 vfat fatx"
To make it aware of the Xbox partitioning system E (hda50), F (hda55) and G (hda56) were added to the list of devices to be searched for the KNOPPIX filesystem:
# XBOX: Try E,F,G DEVICES="$DEVICES /dev/hda50 /dev/hda55 /dev/hda56"
Device nodes for these partitions were added to the initrd and also the kernel modules in /modules were replaced with versions from our newly compiled kernel. More info on the X-DSL boot process is available Here
Knoppix style fstab building
On boot Damn Small Linux (http://www.damnsmalllinux.org) scans the available partitions and uses this infomation to build an appropriate fstab to ease mounting of these partitions. This is a feature inherited from Knoppix (http://www.knoppix.net). In order to make this work a few minor changes were needed:
/etc/auto.mnt
Commented out entry for floppy drive
/etc/automount.sh
There is a section which sets the mount options based on the filesystem type. This needed to be extended to fatx partitions.
/etc/filesystems
Added fatx to the list of supported filesystems
/usr/sbin/rebuildfstab
Again there is a section which sets the mount options based on the filesystem type. This needed to be extended to fatx partitions.
/usr/sbin/scanpartitions
This script reads /proc/partitions and returns table of the form
devicename mountpoint filesystemtype
In Damn Small Linux the mountpoint was determined by the devicename. For example /dev/hda50 would be given the mountpoint /mnt/hda50. This caused a problem when running a frugal install of X-DSL. When running a frugal install the drive the frugal install is running on is mounted on /cdrom (more infomation on the boot process here). For example if we are running from hda50 then /dev/hda50 is mounted on /cdrom. Since the mountpoint in the fstab didn't match where partition was already mounted this caused a problem in another script. The usr/sbin/scanpartitions was therefore changed to take account of this.
Passwords
In Damn Small Linux (http://www.damnsmalllinux.org) there is no password set for the root or dsl users. If you want to gain root access you can use:
sudo su
If you want to connect to Damn Small Linux (http://www.damnsmalllinux.org) via ssh/ftp you need to become root then set a password:
sudo su passwd (enter password for root twice) passwd dsl (enter password for dsl twice)
This is a hassle to do using with a virtual keyboard so the passwords in X-DSL have been set to dsl/dsl and root/xbox by updating /etc/passwd and /etc/shadow suitably.
Init scripts
/etc/init.d/dsl-config
In Damn Small Linux (http://www.damnsmalllinux.org) a section of this script asks the user to enter new passwords for root and dsl during the first boot of a hdinstall of DSL. Since we can't rely on the user having a keyboard this was replaced by a message reminding the user of the passwords in X-DSL.
/etc/init.d/knoppix-autoconfig
- On boot Damn Small Linux (http://www.damnsmalllinux.org) scans all partitions in the fstab for a knoppix.swp file. If this is found it is mounted as a swap file. However it will not detect a knoppix.swp on an already mounted partition making it impossible to have a swap file on the same partition as you are booting from. This has been improved for X-DSL to allow detection of knoppix.swp on an already mounted partition.
- Added ability to specify network settings on boot via a cheatcode.
- To allow changes to the filesystem while DSL is loaded, a ramdisk is mounted over /ramdisk and symlinks to /ramdisk are created. Loaded .dsl and .tar.gz extensions will occupy this ramdisk. The maximum size of this ramdisk is set to 4/5 of the memory available when the linuxrc in the initrd runs. On the Xbox this amounts to about 40MB, not enough to large extensions (or a large number of small extensions). Therefore in X-DSL if a swap file or partition has been mounted, /ramdisk will be remounted with the maximum size set to 4/5 of the free memory including swap. This enables the loading of extensions whose uncompressed size is greater than 40MB.
/etc/init.d/knoppix-halt, /etc/init.d/knoppix-reboot
When running from the Damn Small Linux (http://www.damnsmalllinux.org) Live CD just before shutting down/rebooting it will eject the CD and ask the user to press enter once it has been removed. Since we can't rely on the user having a keyboard this code was commented out.
/etc/init.d/setfb, /etc/rcS.d/S10setfb
The Xbox framebuffer is initially has a depth of 8bits (256 colours). Seeing as we are running the X Server on the framebuffer this init script was added to set the framebuffer depth to 32bits.
Configuration files
A number of changes were made to the configuration files residing in /etc/skel. When X-DSL boots up these are used a template for the user dsl's home directory.
Fluxbox
/skel/.fluxbox/init
Made toolbar always on top to prevent it being obscured.
/skel/.fluxbox/menu
Updated to reflects the applications added to X-DSL.
.xinitrc
/etc/skel/.xinitrc has been altered to start the Virtual Keyboard on when entering X instead of the DSL help file.
.xserverrc
This file is not present initially when booting Damn Small Linux. It contains the X Server settings and is created by xsetup.sh. X-DSL includes a .xserverrc suitable for the Xbox.
Fonts
A number of configuration files were changed to give larger fonts and reduce the windows size to fit a 640x480 desktop:
- /etc/skel/.dillo/dillorc
- /etc/skel/.emelfm/settings
- /etc/skel/.sylpheed/sylpheedrc
- /etc/skel/.xtdesktop/Xpaint.lnk
- /etc/skel/.xmms/config
XMMS
in /etc/skel/.xmms/config the cd path was changed from /cdrom/ to /mnt/auto/cdrom/ and digital audio extraction enabled (required to play audio CDs on the Xbox).
Desktop Theme
The default theme is X-DSL is Minimal-Xbox. This is based on the Minimal fluxbox theme included with Damn Small Linux (http://www.damnsmalllinux.org). It has been altered to have larger fonts.
Applications Added
XVKbd
XVKbd (http://homepage3.nifty.com/tsato/xvkbd/), a virtual (graphical) keyboard program for X is included in X-DSL to allow text entry without a keyboard.
xbox-tools
This is a set of basic command-line tools made by the xbox-linux project (http://sourceforge.net/projects/xbox-linux/). It includes
- hdtool - utility for locking/unlocking the hard disk.
- xbox-blink - alter the colour of light at the front of the Xbox.
- xbox-eject - eject the DVD drive in the Xbox.
- xbox-fanctl - alter the Xbox's fanspeed.
- xbox-info - display infomation about the Xbox, backup and restore the eeprom.
- xbox-temp - read the temperature of the Xbox's.
Raincoat
Raincoat is a BIOS flashing utility made by the xbox-linux project (http://sourceforge.net/projects/xbox-linux/) which is able to read/flash the Xbox BIOS.
xbe
Another utility made by the xbox-linux project (http://sourceforge.net/projects/xbox-linux/) which is able to sign Xbox .xbe executables.
joyd and xte
joyd (http://www.h.shuttle.de/mitch/joyd.en.html) is a daemon that allows you to trigger commands on your computer by using your joystick. xte is part of the xautomation package (http://hoopajoo.net/projects/xautomation.html) which allows input to be sent to a X Server via the commandline. Together these allow xpad buttons to be mapped to arbitary commands and X Server keypresses. The configuration file used for joyd is /etc/joydrc. The init script /etc/init.d/joyd has been added to start joyd. /etc/init/dsl-config has been modified to allow the starting of joyd via a cheatcode.
Install Scripts
For X-DSL the install scripts,
- /usr/sbin/xbox-frugalinstall
- /usr/sbin/xbox-nativeinstall
- /usr/sbin/xbox-loopbackinstall
were written from scratch. They use whiptail to guide the user through the X-DSL install process via various text-based dialog boxes. They call some other scripts which handle the bulk of the installation process:
/usr/sbin/xbox-hdinstall (based on DSL's dsl-hdinstall)
The main changes are:
- Takes command-line arguments for target partition and installation type.
- Uses whiptail dialogs to gather infomation from the user.
- Supports installation to a loopbackfile.
- No longer handles the copying of the kernel/initrd to the correct place (done by mkxboxboot instead)
/usr/sbin/xbox-mkpartitions (based on Gentoox's install scripts) This script creates a partition table when performing a native install.
/usr/bin/mkxboxboot (losely based on DSL's mkliloboot) The main changes are:
- Takes commandline arguments for the installation type.
- Deals with the copying of the kernel/initrd to the correct place.
- Altered to write configuration details to linuxboot.cfg instead of lilo.conf.
- Supports the creation of an initrd to boot a loopback install.
Misc changes
/usr/sbin/mkfatxswapfile (based on mkdosswapfile)
This script allows the creation of swap files on fatx partitions. Unlike mkdosswapfile, it allows the creation of a swap file on the same partition as X-DSL is running from.
/etc/init.d/dsl-functions
A minor change was made to the find_mountpoint function so it ignore entries in the fstab that are commented out with a #.
/usr/bin/X11/startx
Removed the two second pause before the X Server is started.

