VOMP: Development
Development

To retrieve the very latest code, which could be the same as the latest release or it could be totally broken, use these git clone commands:

To check out the server plugin source code:

git clone http://git.vomp.tv/vompserver.git

And the MVP / Raspberry Pi client source code:

git clone http://git.vomp.tv/vompclient.git


Building A Development Environment for the MVP

The following script will set up a development environment for you. It will start from an empty directory and download and build: a cross compiler, a dongle kernel, an NFS-Root development kernel, busybox for the dongle, busybox for the NFS-Root system, the JPEG library, a vomp kernel module, vomp itself and finally a dongle.

Build Instructions:

Make sure you have git installed and then get the scripts:

git clone http://git.vomp.tv/makedevenv.git vompdev

Change directory to vompdev and then run the main build script:

cd vompdev ./makedevenv

This works on Debian Squeeze 32 or 64 bit. It is not likely to work on newer distributions unfortunately. (It doesn't work on Ubuntu 12.04 for example).

OK, go, do it. You don't need to read the rest of this page.

Information About The Script

When finished, your directory structure will look like this:

The scripts are maintained to work on Debian Squeeze, 32 or 64 bit. It may work on other similar age Linux distributions but it isn't tested. If you make it work on your flavour of Linux, patches are welcome...

Other Notes

If you regularly run build in the dongle directory you might like to edit the end of the build script to have it copy the dongle to your tftp directory. You will see it is already configured to copy the dongle to /diskless/tftp/mvp if that directory exists.

The cross compiler will have its path hard coded into itself, so if for any reason you want to move the whole directory structure somewhere else you will need to repeat the crosstool section of the build.

Making an NFS Root Filesystem

To make MVP development easier you can set up an NFS-Root boot system for the MVP. Instead of compiling dongles for every revision, the MVP can boot up and mount a file system straight off an NFS server, meaning that all you have to do is compile the client and copy it to the MVP file system directory on your server and the MVP can run it straight away.

Follow the rest of this page to create the file system and configure NFS/tftp/etc.

MVP File System

This section sets up a file system to be mounted by the MVP at boot-up. The NFS server can be on any machine, but if it isn't on the same machine as you have been using for the rest of this guide, you are on your own copying the files to it. In this section I use "VOMP" for the base path of all your vomp/ files and directories. You need to choose a location for the MVP root file system on your NFS server, I will call this path "NFS". (My path is /diskless/nfs/mvp - I don't know where this is really supposed to go. You choose!) In the next bit you need to be root to unpack the tar file because it has special files in it. After unpacking the initial file system, the busybox directories, symlinks and binary are copied in:

cd VOMP su tar -zxvf VOMP/packages/mvpdevfs-4.tar.gz mv devfs/* NFS rmdir devfs exit cp -a busybox/dev/install/* NFS

In the NFS file system you should edit etc/fstab to show where your root file system is. I think. Since it's already mounted and nothing is going to use fstab after this (?) it seems a little pointless... Anyway, now you have a file system ready for the MVP to boot. You should also:

cd VOMP cp client/other/*.jpg NFS

This will install the images the client will need. The client can be copied into the file system at this point also, or you can do that with the "make install" target from the client directory (you will need to edit the makefile to change the directory to copy the vompclient binary to). One more thing: The vompclient will set the clock on the MVP to the correct UTC time which it gets from the VDR plugin. To have the MVP display times in your timezone if you telnet into it you will need to provide an /etc/localtime file which you can probably just copy from your server. Whether you have this file or not will not affect the operation of the vompclient - it sets it's own timezone from information downloaded from the VDR plugin.

DHCP

The DHCP server can run on any machine, but it has to be a "real" DHCP software server rather than a home router for example so that it can supply the "filename" parameter. Also it has to be on the same machine as the TFTP server (below) because the MVP bootloader assumes the TFTP server is on the same IP address as it got a DHCP reply from. (This may not be the case, the DHCP option "next-server" might solve this. Investigation needed).

To install a DHCP server on Debian you can run:

apt-get install dhcp

The config file is located at /etc/dhcpd.conf. The relevant parts of my DHCP server config file are:

subnet 10.0.0.0 netmask 255.255.255.0 { option subnet-mask 255.255.255.0; host mvp { hardware ethernet ??:??:??:??:??:??; fixed-address 10.0.0.9; filename "mvp-kernelimage-nfsroot"; option root-path "/diskless/nfs/mvp"; } }

Obviously you will have to enter in the MAC address of your MVP, change the IP address to one for your network, and change the root-path to wherever you choose your NFS root directory to be on your server. If you're not using Debian your mileage will vary. To debug what is going on at bootup if it doesn't seem to be working, look at /var/log/syslog or /var/log/messages.

TFTP

As mentioned in the DHCP section, this has to be on the same machine as the DHCP server. To install a TFTP server on Debian you can run:

apt-get install tftpd-hpa

This should be done already, but just for reference a sample /etc/inetd.conf line for the TFTP server is:

tftp dgram udp wait root /usr/sbin/tcpd /usr/sbin/in.tftpd -s /tftpboot

You need to copy the kernel built in the "kernel" section to the /tftpboot directory:

cd VOMP/kernel/dev/linux-2.4.31/arch/ppc/boot/images cp zImage.treeboot /tftpboot/mvp-kernelimage-nfsroot

Again, if bootup doesn't work you can read /var/log/syslog or /var/log/messages to see if the kernel image is being requested and transferred.

NFS

To install a NFS server on Debian you can run:

apt-get install nfs-kernel-server

Edit /etc/exports to include the line:

/diskless/nfs/mvp 10.0.0.9(rw,sync,no_root_squash)

... editing the share directory and MVP address to suit your setup. You can run "exportfs -a" to update the NFS server with the new export.

Back to VOMP
14433 hits since 17/Jul/05