Dreambox 7025 Programming in Windows

[ Index | Smartcards | Dreambox ]

Windows? I thought it was a Linux platform?

It is. A Linux platform. But you can build an image on a Windows system. The trick is to run Linux inside Windows. This is made possible with CoLinux. I've done the same thing with the MediaMVP

CoLinux

Install CoLinux with the standard 1GB debian image (20 MB to download, included in the setup). Just follow the instructions. You do not need to install the WinPCAP driver, but you do need the built-in TAP network driver.

update: It did not work out with Debian, so I'm trying with Fedora now. Basically, the difference is that apt-get is yum on Fedora, which functions the same. The ssh package is called openssh and isn't installed by default.

I just enable Internet sharing for my LAN adapter, so that the linux box can connect to the net using my PC as NAT router (which goes to a ADSL modem which is also a NAT router...). On an XP system, just create a network bridge between your LAN/WAN and the TAP network "card". You also need quite a lot of memory. I've been using 300MB, you can also use a swapfile with CoLinux if you don't have enough real RAM.

Put a 10GB disk image on your system (you can download it here, very easy). Use a program like 7-Zip to extract the file. I renamed it to home.10gb. Mount it as /home in the Colinux session, before you create a user account.

I also discovered that the cofs driver lets colinux read and write the Windows disks without any problem (as far as I can tell).

The linux "box" I get up and running with the following command:

colinux-daemon.exe kernel=vmlinux eth0=tuntap,"",00:FF:11:22:33:45 cobd0=Debian-3.0r2.ext3-mit-backports.1gb cobd1=swap_384Mb cobd2=userdisk.3gb cobd3=home.10gb root=/dev/cobd0 mem=256 -t nt cofs0=D:\ cofs1=G:\ cofs2=H:\
I assign a fixed MAC address to the colinux card, so it will get the same IP address from my router every time I start it.

My /etc/fstab file looks like this:

# filesystem mountpoint   type  options               dump  pass
/dev/cobd0      /               ext3    errors=remount-ro       0       1
proc            /proc           proc    defaults                0       0
tmpfs           /dev/shm        tmpfs   defaults                0       0
/dev/cobd1      swap            swap    defaults                0       0
/dev/cobd2      /home           ext3    defaults                0       0
cofs0  /mnt/win/d  cofs rw,uid=mike,gid=users,dmask=0777,fmask=0777  0  0
cofs1  /mnt/win/g  cofs rw,uid=mike,gid=users,dmask=0777,fmask=0777  0  0
cofs2  /mnt/win/h  cofs rw,uid=mike,gid=users,dmask=0777,fmask=0777  0  0

There are quite some packages that I'll need, i hope to list them all here. As root, get them by:

apt-get update
apt-get install make sed gcc g++ bzip2 xutils automake xlibs xlibs-dev patch cvs subversion autoconf libtool bison flex wget unzip rsync ssh python python-dev diffstat texi2html libgnutls-dev
(For Fedora 7 image, i needed to add "gcc-c++" to the list). When using a different distribution, try this OEandYourDistro wiki page. And of course, a text editor and terminal would be nice too. I've used PSPAD On the windows side, and vim on the linux box. Using PuTTY to talk to the linux box also makes things a lot easier, so enable the SSH deamon when asked whether you want to run the SSH server.

Set up a home directory. Mount the 10GB filesystem image under /home first, by using mount /dev/cobd2 /home if you don't have it in your fstab where it should be.

Create a user, type adduser dreambox. Now you can develop using that account, and have lots of disk space in your home dir. It would also be wise to setup PuTTY now, and setup a key exchange. Create a DSA key with PuTTYGen, and save the private key somewhere on your Windows system. Copy the "public" key part from the top of the PuTTYGen dialog, to paste it into your linux session. First open a session to the IP address of the CoLinux box (use ifconfig to figure it out), and login using the dreambox user and password. Save the session before you open it. Next, create a the .ssh directory and the keyfile:

mkdir .ssh
cat > .ssh/authorized_keys
Paste the public key info into the linux screen, and press return and Ctrl-D to terminate the file. Now you can login with PuTTY without the need for a password, and have a much bigger terminal than the standard one.

Get monotone

It's probably a good idea to create a directory, e.g. "DB" or so. In that directory, get the Makefile:
wget http://tmb.elitedvb.net/Makefile-opendreambox
Don't run it yet, we need Monotone first. Get the "deb sarge" binary edition, that's the easiest one to get running. I got version 0.31 today. You also need Python for that (we got it during setup) and you need psyco too. Download the version that matches your Python version (2.3 in my case), and install it on the system (as root):

tar xzf /mnt/win/h/Downloads/psyco-1.5.2-linux.i386-2.3.tar.gz
cd psyco-1.5.2
cp -r psyco /usr/lib/python2.3/site-packages/
Now setup monotone, as root:
dpkg -i /mnt/win/h/Downloads/monotone_0.31-sarge0.1_i386.deb

Okay. Now we need the monotone database stuff. As root,

# cat >> /etc/apt/sources.list
deb http://www.openembedded.org/dl/ packages/
# apt-get update
# apt-get install openembedded-essential
That last command did not work on my system. Sigh.

OpenEmbedded

Grab an OE snapshot here, Pick the one that matches your version, if you're not running the latest Monotone. It will take a while, it's an 80MB download...
Contrary to the documentation, extract the file to (lowercase) oe.mtn using:
bunzip2 < OE.mtn.bz2 > oe.mtn

Build an image

Go to your development user directory, where you put the oe.mtn file and the makefile. Grab the Dreambox code:
mtn pull --db=oe.mtn monotone.openembedded.org org.openembedded.dreambox
Start by setting up the prerequisites. Run the following command:
make -f Makefile-opendreambox
And to create your own image:
make -f Makefile-opendreambox image
To be continued...

Links

MediaMVP programming for Windows
CoLinux
Empty disk images for CoLinux
GettingStarted | OpenEmbedded
Openembedded - DreamboxWiki
SAT4ALL Message Board: [all] Dreambox ontwikkelomgeving
developer.elitedvb.net


MailContact me
My Homepage: Mike Looijmans