The TrimSlice is a low-power desktop system based on the Tegra2 ARM system-on-a-chip. Currently shipping is a development board, which comes with Ubuntu preinstalled on a built-in SSD.
In the long run, it should be possible to adapt debian-installer and install using an SD card with a downloaded image and keyboard and monitor. Meanwhile, here are instructions on how to manually install Debian armel on an SD card. You need:
a TrimSlice dev-kit, i.e. the actual hardware target;
an SD-card >= 1G;
- a computer with an SD-card reader, serial port, Debian installed, and root on this computer.
- Optional: a USB to Serial cable adapter which allows you to plug in a serial cable to your computer on a USB port if you don't have a serial port.
All commands need root.
Prepare SD
Insert the SD in your Debian system. Make sure it is not mounted. Then create a single partition of type "linux", e.g.:
fdisk -uc /dev/<device> # e.g. sdc or mmcblk3 o n p 1 <default> <default> w
Then create an ext3 filesystem on it and mount it somewhere, e.g.:
mkfs.ext3 /dev/<device> # e.g. sdc1 or mmcblk3p1 mkdir -p /mnt/sd mount /dev/<device> /mnt/sd # e.g. sdc1 or mmcblk3p1
Now, install multistrap:
apt-get install multistrap
and create a file multistrap.conf:
[General] arch=armel directory=/mnt/sd aptsources=Debian bootstrap=Debian [Debian] packages=apt netbase ifupdown source=http://ftp.debian.org/debian/ keyring=debian-archive-keyring suite=squeeze omitdebsrc=true
Then run
multistrap -f multistrap.conf
Finally, we need some tweaks to make sure the image boots properly:
cd /mnt/sd cp -a /dev/ttyS0 dev/ cp -a /dev/console dev/ echo "proc /proc proc defaults 0 0" > etc/fstab cp /etc/inittab etc/inittab echo "T0:23:respawn:/sbin/getty -L ttyS0 115200 vt100" >> etc/inittab echo "trimslice" > etc/hostname cp /etc/hosts etc/hosts # and edit to set hostname to "trimslice" cp /etc/resolv.conf etc # and edit appropriately
Finally, edit /mnt/sd/etc/network/interfaces. If you want to use DHCP, write
auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp
or if you want to use a static IP, use something like
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.1.2
netmask 255.255.255.0
gateway 192.168.1.1
Boot SD
Connect the serial cable from the dev-kit. On the Debian machine, do
screen /dev/ttyS1 115200,cs8,-ixon,-ixoff
then plug in the power for the TrimSlice. Quickly press a key to interrupt the default boot. Then type
usb start 1 mmc init 0 setenv bootargs root=/dev/mmcblk3p1 rw rootwait console=ttyS0,115200n8 mem=448M@0M mem=512M@512M nvmem=64M@448M vmalloc=320M nohdparm init=/bin/sh ext2load usb 0:1 4080000 /boot/uImage bootm 4080000
Note that this uses the Ubuntu kernel from the builtin SSD. After you get a root prompt, do
date -s 'Apr 25 13:50 2011 CEST' # set to current date mount /proc PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \ DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true \ LC_ALL=C LANGUAGE=C LANG=C dpkg --configure -a
As of 25 April 2011, configuring will fail with the following error:
Setting up dash (0.5.5.1-7.4) ... No diversion 'diversion of /bin/sh by dash', none removed. This should never be reached dpkg: error processing dash (--configure): subprocess installed post-installation script returned error exit status 1
This seems to be a bug. As a workaround, do
/var/lib/dpkg/info/dash.preinst install
Finally, do
dpkg-reconfigure tzdata passwd # set root passwd mount /dev/root -oremount,ro
Then sync, power-cycle and this time boot without the init=/bin/sh, that is
usb start 1 mmc init 0 setenv bootargs root=/dev/mmcblk3p1 rw rootwait console=ttyS0,115200n8 mem=448M@0M mem=512M@512M nvmem=64M@448M vmalloc=320M nohdparm ext2load usb 0:1 4080000 /boot/uImage bootm 4080000
You'll be prompted to change the root password; this is because PAM is confused by the date being 1970. Change it and fix the date again. You can then use apt-get to install additional packages.
