summaryrefslogtreecommitdiff
path: root/doc/uclibc-bootfloppy.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/uclibc-bootfloppy.txt')
-rw-r--r--doc/uclibc-bootfloppy.txt667
1 files changed, 667 insertions, 0 deletions
diff --git a/doc/uclibc-bootfloppy.txt b/doc/uclibc-bootfloppy.txt
new file mode 100644
index 0000000..6dd4eff
--- /dev/null
+++ b/doc/uclibc-bootfloppy.txt
@@ -0,0 +1,667 @@
+AUTHOR: Csaba Henk <ekho@math-inst.hu>
+
+DATE: 2003-10-27
+
+LICENSE: The MIT License
+
+SYNOPSIS: Making an uClibc-based bootfloppy
+
+PRIMARY URI: http://www.math-inst.hu/~ekho/lowlife/
+
+DESCRIPTION:
+This hints shows how to create a cutting-edge bootfloppy from scratch,
+based on uClibc, a lightweight C library.
+
+PREREQUISITES:
+This hint should be useable on any not too aged Linux installation with
+a non-broken toolchain. It was tested on a (by and large) LFS-4.0
+system. The sudo utility is advised to have.
+
+ATTACHMENTS:
+http://www.linuxfromscratch.org/hints/downloads/attachments/uclibc-bootfloppy/busybox-0.60.5-Config.h
+http://www.linuxfromscratch.org/hints/downloads/attachments/uclibc-bootfloppy/linux-2.4.22-.config
+http://www.linuxfromscratch.org/hints/downloads/attachments/uclibc-bootfloppy/mkbootdisk
+http://www.linuxfromscratch.org/patches/downloads/devfsd/devfsd-1.3.25-uclibc-1.patch
+
+HINT:
+
+Contents
+--------
+
+Preface
+Introduction
+What do we need?
+The concept
+Setting up the development environment
+Compiling the linux kernel
+Installing uClibc on the development platform
+Creating the root filesystem
+Installing uClibc for the bootdisk
+Installing busybox
+Installing gpm
+Other programs
+Creating the bootdisk
+Bugs and weirdnesses, todo
+
+Preface
+-------
+
+* This hint is co-developed with the svnc-thinclient hint in the
+framework of the lowlife project,
+
+http://www.math-inst.hu/~ekho/lowlife/
+
+This file belongs to lowlife-0.5.1.
+
+* For the most recent version check out
+
+http://www.math-inst.hu/~ekho/lowlife/uclibc-bootfloppy.txt
+
+* Comments, ideas, critics, flames are welcome.
+
+* (If you are an LFS user, you can skip this.) Although this document is
+formally an LFS hint, you can see use of it without knowing what LFS is
+(I tried to write it keeping this possibility in mind). Anyway, I
+recommend you to check out what LFS is. If you are not familiar with
+compiling source code in unix/linux environment, then there is no use of
+going on without checking out what LFS is. Consult the following docs
+first:
+
+http://www.linuxfromscratch.org/lfs/whatislfs.html
+http://www.linuxfromscratch.org/faq/
+http://www.linuxfromscratch.org/hints/downloads/files/essential_prereading.txt
+http://www.linuxfromscratch.org/lfs/view/stable/preface/prerequisites.html
+
+Introduction
+------------
+
+When you are to put together a Linux bootfloppy, you need to decide what
+implementation of the standard C libraries will you use.
+
+One possibility is using the C library implementation which is common on
+Linux based systems: glibc. It's advantage is that you have it at hand:
+to make a glibc-based bootfloppy, the only thing you have to do is to is
+to copy the necessary libs to the filesystem you will put on the floppy.
+This is way chosen by the rescue floppy described in the BLFS-book:
+
+http://linuxfromscratch.org/blfs/view/test/postlfs/bootdisk.html
+
+However, glibc is far from being lightweight, and eats up much of the
+rather limited space you have when working with a floppy. So you might
+like seek for an alternative which suits much better to the capabilities
+of the floppy environment.
+
+Here we will create a bootfloppy based on the uClibc C library, which is
+just made for such purposes.
+
+The bootfloppy will be cutting edge: uses uClibc and Busybox which are
+actively developed projects for the embedded platform. Moreover, I used
+a kernel from the 2.4.* branch (but feel free to use other kernel
+releases). It is a good question to ask whether this is useful: many floppy
+distros use older kernels for reducing resource usage. I can say the
+following: on the one hand, I can afford using a recent kernel as my
+bootfloppy merrily runs on my 486 with 8M RAM; on the other hand, from
+the moment I began to use this up-to-date stuff, the problems with handling
+the terminal buffer and plip timeouts vanished. So unless you are really
+tight in resources, I think using a recent kernel is a good idea.
+
+We will also use some kind of development environment, just to stay on
+the safe side.
+
+This hint has a continuation: there we will describe how to install the
+svga vncviewer on the bootfloppy, which then becomes capable of turning a
+machine to an X terminal. (Check out the svnc-thinclient hint:
+
+http://www.linuxfromscratch.org/hints/downloads/files/svnc-thinclient.txt
+http://www.math-inst.hu/~ekho/lowlife/svnc-thinclient.txt
+
+)
+
+Additional info and downloadable bootdisk image with svnc can be found
+at the lowlife homepage (or at its mirror):
+
+http://www.math-inst.hu/~ekho/lowlife/
+http://www.personal.ceu.hu/students/01/Csaba_Henk/lowlife/
+
+In this hint the assumption of using an x86 PC (both for making and
+booting the floppy) and gcc is set. You may try to port it to another
+architecture / compiler. Doing it on another architecture should not
+be hard. Doing it with another compiler depends on how much does
+uClibc support that compiler.
+
+If you copy command from this hint to your shell, be careful that
+line-terminating backslashes (\) keep their position (no whitespace
+characters should follow them). A possible solution is open this hint in
+the Vim GUI, and copy'n'paste from there.
+
+What do we need?
+----------------
+
+We will need the following programs; in general, most recent stable
+versions are recommended. Those programs where I have a certain
+important comment on the version are marked with (!) and you can find
+the comment at the beginning of the respective install instructons.
+
+* Addons for the development platform:
+
+sudo (optional)
+ ftp://ftp.sudo.ws/pub/sudo/
+
+* Programs for the bootfloppy:
+
+linux-2.4.* (!)
+ http://www.kernel.org
+uClibc
+ http://www.uclibc.org/downloads/
+busybox-0.60.5 (!)
+ http://www.busybox.net/downloads/
+gpm (optional)
+ ftp://arcana.linux.it/pub/gpm
+
+The concept
+-----------
+
+In LFS, bootstrapping a linux system goes in the following fashion: one
+first installs kernel headers, then builds a toolchain against these
+headers, finally builds a kernel using the shiny new toolchain.
+
+We don't need to produce a new toolchain: we will use the one of the
+host distro (to which we'll refer as "development environment") (though
+when making the userspace of our tiny linux system, we will access that
+toolchain via the uClibc wrappers).
+
+This lets us to proceed in a much simpler way: first we compile the
+kernel, then build uClibc using the headers of this kernel, finally
+build the userspace against uClibc.
+
+We will use optimization for size (we'll pass the -Os flag to gcc). In
+general you can delete sources after compilation if there is no specific
+reasons to keep them. In those cases when you should *not* delete the
+source I'll tell about it explicitly.
+
+Setting up the development environment
+--------------------------------------
+
+We definitely need some kind of development environment to protect
+us from mucking up our system; eg., if we are in the file system
+which we will put on the floppy, it is very easy to mistake usr with
+/usr, and without such a protection, you can imagine that this
+mistake can have serious consequences...
+
+We will create a non-privileged user named bootdisk for doing the
+job. First choose a home directory for bootdisk and store this value
+in $BDISKHOME. Then type:
+
+groupadd bootdisk &&
+useradd -g bootdisk -s /bin/bash -d $BDISKHOME bootdisk &&
+mkdir -p $BDISKHOME &&
+cat > $BDISKHOME/.bash_profile << "EOF"
+export CFLAGS=-Os
+export PATH=/usr/i386-linux-uclibc/bin/:$PATH:$HOME/bin
+export CC=i386-uclibc-gcc
+EOF
+
+Of course, you may specify more cflags, like -march=i486. The above
+setting of the $PATH variable assumes that the usual directories to
+be contained in the path are already set in /etc/profile.
+
+So the idea is that we will work as user bootdisk; however, there are
+some tasks during the bootdisk creation which require a privileged user
+-- namely, mounting ext2 files and raw-copying to a floppy.
+
+We can do two things about this problem:
+
+1) Ignore it, and execute these tasks as root.
+
+2) Make a script named mkbootdisk for doing this tasks. This script must
+be executable only by root (mode 744). With the help of the sudo utility
+we let the bootdisk user to use this script as well. That is, we put it
+to $BDISKHOME/bin and then type:
+
+echo "
+bootdisk ALL = NOPASSWD: $BDISKHOME/bin/mkbootdisk" >> /etc/sudoers
+
+A realization of mkbootdisk can be found as an attachment of this hint
+at
+
+http://www.linuxfromscratch.org/hints/downloads/attachments/uclibc-bootfloppy/
+
+or at
+
+http://www.math-inst.hu/~ekho/lowlife/mkbootdisk
+
+or in the current directory if you read this hint as a file of the
+lowlife tarball avaliable at
+
+http://www.math-inst.hu/~ekho/lowlife
+
+Typing "mkbootdisk -h" will print a brief information on usage.
+
+We have the desired environment. We go on compiling the programs. Become
+user bootdisk:
+
+su - bootdisk
+
+In the rest of the hint we will act as user bootdisk, with the following
+exceptions:
+
+* as uClibc will be installed systemwise, you should install it as root;
+
+* if you don't use a mkbootdisk script, then the appropriate actions
+are to be done as root;
+
+* doing a chroot test of your filesystem for the floppy is possible only
+as root.
+
+This means that if you use a mkbootdisk script, then those steps of
+creating the bootfloppy which shouldn't affect your development
+platform, *can't* affect the development platform (provided your
+mkbootdisk script doesn't do anything weird, which I think is
+fulfilled by the one written by me).
+
+Some of the commands below assume that the actual source archive is
+decompressed in $HOME (which is the same as the prior $BDISKHOME).
+Software installation instructions always start at the point when the
+source tarball is already decompressed and you entered the source
+directory (unless we explicitely claim to act differently).
+
+Compiling the linux kernel
+--------------------------
+
+At the moment the latest stable release of the linux kernel belong to
+the 2.4.* branch, but 2.6.0-test* releases are already out. This
+situaton might change any time by the release of linux-2.6.0. The
+following instructions regard to the 2.4.* releases; if you want to try
+linux-2.6.*, not only the kernel compilation instructions but the whole
+bootdisk creation procedure is to be revised (eg., you can't boot a
+2.6.* kernel without a boot loader). After linux-2.6.0 will be out I
+might consider to upgrade this hint to that version.
+
+We will compile a network-aware kernel optimized to size. I don't give
+a complete reference, I just highlight some crucial points.If you need
+not network-awareness, you may omit TCP/IP netowrking and network
+drivers; but even in this case it is strongly recommended to include
+"Unix domain sockets".
+
+In the kernel source tree type:
+
+sed -e 's%-O2%-Os%g' -e '/^CFLAGS_KERNEL/s%\(^.*$\)%\1 -Os%' Makefile > \
+ Makefile.tmp &&
+mv Makefile.tmp Makefile
+
+The above commands set optimization for size in the Makefile. Edit the
+Makefile if you want further optimizations.
+
+Now you should configure the kernel with "make menuconfig". Choose
+carefully the value in the "Processor type and features ---> Processor
+family" menupoint. When choosing options, it is advised to include only
+those features you really need. Some important ones:
+
+Networking options --->
+ <*> Unix domain sockets
+ [*] TCP/IP networking
+
+In the "Network device support --->" menupoint choose those network
+drivers you intend to use. If you want to use plip, choose it as a
+module, and also set:
+
+Parallel port support --->
+ <*> Parallel port support
+ <M> PC-style hardware
+
+This is advised because of the following: as I experienced, if no
+option is given, the kernel initializes the parallel port (PC-style)
+IRQ-less! At boot time we won't have the possibility to pass options
+to the kernel, as we won't use a boot loader or initrd. Thus we can
+set the appropriate IRQ value only if we load the parallel port
+driver as module. Also, to gain more control over the NIC drivers,
+consider building them as modules.
+
+In this hint we use the devfs facility, so choose
+
+File systems --->
+ [*] /dev file system support
+ [*] Automatically mount at boot
+
+(See a more detailed description in the devfs hint:
+
+http://www.linuxfromscratch.org/hints/downloads/files/devfs+kernel_modules.txt
+
+).
+
+And don't forget to include support for the mouse type you will use with
+the bootfloppy (if you will use any).
+
+OK, one more remark. Here I don't digress on how to use initrd, but you may
+have some reason for doing that. In this case with some kernels (eg., with
+linux-2.4.22) you might encounter with booting problems, which can be cured
+by the appropriate kernel patch. For info on initrd and the patch you can
+consult the "Creating a Custom Boot Disk" chapter of the BLFS-book,
+referenced in the Introduction.
+
+Now compile the kernel with the
+
+make dep && make bzImage && make modules
+
+commands. Then type
+
+mkdir $HOME/rfloppy/lib/modules
+
+and copy the NIC driver modules from the drivers/net directory to
+$HOME/rfloppy/lib/modules, and also the other modules you built. Eg., if
+you use plip, you will need the drivers/parport/parport_pc.o
+module.
+
+Do not delete the kernel source.
+
+If you have troubles with configuring the kernel properly, my .config file
+might be of your help:
+
+http://www.linuxfromscratch.org/hints/downloads/attachments/uclibc-bootfloppy/
+http://www.math-inst.hu/~ekho/lowlife/linux-2.4.22/.config
+
+Installing uClibc on the development platform
+---------------------------------------------
+
+Usually we will optimize to size; in case of uClibc it's done
+automatically.
+
+We install uClibc systemwise, thus the commands of this installation are
+to be executed as root.
+
+In the uClibc source tree type
+
+make menuconfig
+
+uClibc now has a configuration interface similar to that of the linux
+kernel. Apply the following settings:
+
+Target Architecture Features and Options --->
+ ($BDISKHOME/<dir of your linux kernel for the floppy>)
+ Linux kernel header location
+Library Installation Options --->
+ (/lib) Shared library loader path
+
+This was enough for uClibc-0.9.19; in case of uClibc-0.9.21 we also need
+the following:
+
+General Library Settings --->
+ [ ] Support gprof profiling
+String and Stdio Support --->
+ [*] Support sys_siglist[] (bsd-compat)
+
+[Explanation: with profiling support set, uClibc wasn't willing to build
+for me. The sys_siglist[] support will be needed by busybox which
+encorporates some BSD code by having ash as its shell.]
+
+(Other uClibc versions may have their own gotchas.)
+
+Apart from this, the default configuration is quite suitable, probably
+you need not change anything (especially you need not use full math
+support). However, taking a look at the options never hurts; eg., you
+may consider fine-tuning the target processor type. After you exit,
+
+make &&
+make install
+
+Further on we assume that you installed uClibc into
+/usr/i386-linux-uclibc/ (the default installation location).
+
+Creating the root filesystem
+----------------------------
+
+We will put the files of the root filesysem of the floppy to a directory
+named rfloppy. Firstly we create the directory and a basic tree of
+subdirectories which vaguley resembles the FHS idea:
+
+cd &&
+mkdir -p rfloppy/{dev,proc,etc/init.d,sbin,bin,lib,mnt,usr,var/log} &&
+cat > rfloppy/etc/init.d/rcS << "EOF" &&
+#!/bin/sh
+mount proc /proc -t proc
+EOF
+
+The etc/init.d/rcS file will be the startup script for the floppy. Put
+there what you want to be done in the beginnig -- eg., syslogd, klogd,
+loading modules, starting gpm, etc.
+
+A very minimal etc directory is used in this setup. Enriching it (with
+files like passwd, group, fstab, modules.conf, and so on) is up to you
+-- this minimalist solution works anyway.
+
+Installing uClibc for the bootdisk
+----------------------------------
+
+We copy the necessary libraries of uClibc to the bootdisk.
+
+cp -a /usr/i386-linux-uclibc/lib/{ld-uClibc*,libc.so.0,libuClibc-*} \
+ ~/rfloppy/lib
+
+Installing busybox
+------------------
+
+At the moment busybox has two branches: the development branch
+(1.00-pre* releases) and the stable branch (0.60.* releases), but this
+situation might change any time by busybox-1.00 being released. The
+following instructions regard to the 0.60.* versions. The 1.00-pre*
+versions differ greatly (encorporate much more utilities, eg.), so if
+you go experimenting with them, these instructions probably need to be
+changed. When the now-devel branch get stable (1.00 comes out), this
+document will probably be upgraded to that version of busybox.
+
+Before making it, adjust the Config.h file according to your needs. To
+make busybox work with devfs, be sure that the
+
+#define BB_FEATURE_DEVFS
+
+line is uncommented (not prefixed with "//"); and it is advised to
+enable standard Unix utilities, moreover if you want to use network with
+the floppy, consider uncommenting:
+
+#define BB_IFCONFIG
+#define BB_TELNET
+#define BB_TFTP
+#define BB_FEATURE_IFCONFIG_STATUS
+
+Then install it with
+
+make CROSS=i386-uclibc- &&
+make PREFIX=$HOME/rfloppy install
+
+If you have troubles with configuring busybox properly, my Config.h file
+might be of your help:
+
+http://www.linuxfromscratch.org/hints/downloads/attachments/uclibc-bootfloppy/
+http://www.math-inst.hu/~ekho/lowlife/busybox-0.60.5/Config.h
+
+Installing gpm
+--------------
+
+Having mouse at the console is not necessary, but very comfortable for a
+bootfloppy as well. If you want it, install gpm by running the following
+commands:
+
+./configure &&
+LDFLAGS="-lm" make &&
+strip src/gpm &&
+mkdir -p $HOME/rfloppy/{usr/sbin,var/run} &&
+cp src/gpm $HOME/rfloppy/usr/sbin &&
+cp -a /usr/i386-linux-uclibc/lib/{libm-*,libm.so.0} ~/rfloppy/lib
+
+[The /var/run directory is needed for gpm at runtime.]
+
+Other programs
+--------------
+
+Now if there is anything more you want to have on the floppy, compile it
+and put it to the appropriate place under $HOME/rfloppy. A list of some
+possible extensions:
+
+* devfsd (
+
+http://ftp.kernel.org/pub/linux/daemons/devfsd/
+
+) is not necessary for the bootfloppy, devfs work fine without it. So
+install it only if you know what you are doing. However, it needs to be
+hacked to get it compiled against uClibc. There is a patch for devfsd at:
+
+http://www.linuxfromscratch.org/patches/downloads/devfsd/devfsd-1.3.25-uclibc.patch
+
+or at
+
+http://www.math-inst.hu/~ekho/lowlife/patches/devfsd-1.3.25-uclibc.patch
+
+(or in the patches directory if you read this hint as a file of the lowlife
+tarball) and you can find some explanation on it at
+
+http://www.math-inst.hu/~ekho/lowlife/
+
+Note that devfsd depends on the libdl.so.0 library of uClibc (which is a
+symlink to libdl-0.9.*.so). You have to put these to the /lib of your
+filesystem.
+
+* The svnc-thinclient hint tells you how to compile and install svgalib
+and the svga vncviewer to the floppy, giving the bootfloppy the
+capabilities of an X terminal.
+
+The (functionality of the) following utilities are already encorporated
+in the development versions of busybox.
+
+* You can put tinylogin (
+
+http://tinylogin.busybox.net/
+
+) to the floppy if you want a correct login system on it (with the
+configuration described in this hint you just get a prompt after
+booting).
+
+* You can put utelnetd (
+
+http://www.pengutronix.de/software/utelnetd_en.html
+
+) to the floppy if you want to access it remotely. However, don't forget
+that communication is not encrypted under telnet!
+
+* One more useful program is hdparm (
+
+http://ftp.ibiblio.org/pub/Linux/system/hardware
+
+): if you boot with this floppy, the harddisk is probably not used, but
+still is a source of noise by its spinning. You can stop it with
+hdparm. (See its -y option.)
+
+Creating the bootdisk
+---------------------
+
+Before creating the floppy, you may wish to test the proposed filesystem
+by chrooting to it; if so, execute as root:
+
+chroot $BDISKHOME/rfloppy /bin/sh
+
+Typing this you get the prompt of the busybox shell, and you should be
+able to run those utilities which do not require much I/O (ls, cat,
+echo,...). Proceed on again as the bootdisk user.
+
+Put a floppy to the floppy drive (if you are not sure about its
+integrity, you might want to run fdformat on it). If you use my
+mkbootdisk script, check whether the device name of the floppy drive is
+set correctly in the script (it is set to /dev/fd0 and no option can
+change it, in order to prevent the bootdisk user in being able to muck
+up the development platform), and whether the $MKE2FSAPP, $RDEVAPP
+variables in the script store the correct path to the mke2fs, rdev
+utilities in your system (they should if you follow standards). If
+everything is fine, simply run
+
+cd &&
+sudo mkbootdisk
+
+If you don't use the mkbootdisk script, become root, store the name of
+your floppy device (typically /dev/fd0) in the variable $DISK. Now its
+time to find out how big the root filesystem of the floppy should be,
+and how much inodes should it have. Concerning the size, I think the
+size of the stuff in the rfloppy directory + 150k is enough; concerning
+the number of inodes, I think the number of files in rfloppy + 100 is
+enough. But you should know. Store the chosen filesystem size in the
+variable $SIZE (the number of kilobytes), and the chosen number of
+inodes in the variable $INODES. Then type the following:
+
+cd $BDISKHOME &&
+# We we create and compress the root filesystem of the floppy:
+dd if=/dev/zero of=rootfs bs=1k count=$SIZE &&
+yes | mke2fs -m 0 -N $INODES rootfs &&
+mkdir -p loop &&
+mount rootfs -o loop loop &&
+rmdir loop/lost+found &&
+cp -a rfloppy/* loop &&
+chown -R 0:0 loop/* &&
+umount loop &&
+dd if=rootfs bs=1k | gzip -v9 > rootfs.gz
+
+Now check whether rootfs.gz and your kernel image (probably
+linux-2.4.*/arch/i386/boot/bzImage) fit on a floppy together (a floppy
+is of 1440k usually but it can be formatted to bigger sizes as well). If
+everything is fine, go on:
+
+# We copy the kernel to the floppy:
+let KERNELSIZE=`dd bs=1k of=$DISK < linux-2.4.*/arch/i386/boot/bzImage 2>&1 |
+ sed -n '1s%\([0-9][0-9]*\).*%\1%p'`+1 &&
+# We perform some adjustments on the kernel copied to the floppy:
+rdev $DISK 0,0 &&
+rdev -R $DISK 0 &&
+rdev -r $DISK `expr 16384 + $KERNELSIZE` &&
+# Finally we copy the compressed filesystem to its appropriate place \
+# on the floppy:
+dd if=rootfs.gz of=$DISK bs=1k seek=$KERNELSIZE
+
+[Explanation -- also for those who wonder how the mkbootdisk script
+works
+
+"yes | mke2fs -m 0 -N $INODES rootfs":
+
+This pipe construct is a common trick for answering stupid questions
+non-interactively.
+
+"# We copy the kernel to the floppy" :
+
+In the command after this comment we not only copy the kernel to floppy,
+but we also store the number of transferred kb's in the variable
+$KERNELSIZE.
+
+"# We perform some adjustments on the kernel copied to the floppy" :
+
+We won't have a bootloader to tell the kernel where to find its root
+filesystem. The commands after this comment set some specified bits
+in the kernel, thus hardwiring the location of the root filesystem to
+it: firstly, we tell the kernel to seek for the filesystem in the
+floppy, secondly, we tell the kernel that a ramdisk is to be made and
+the filesystem is to be decompressed to it, thirdly, we tell the
+kernel the location of the filesystem within the floppy. The number
+16384 = 2^14 is used for shifting within the range of bits in the
+kernel devoted for describing these data. For more information
+consult with the Bootdisk HOWTO available at tldp.org.
+
+"# Finally we copy [...]" :
+
+In the dd command after this comment we use the seek option to copy the
+compressed filesystem nicely after the kernel image.]
+
+Now you have the floppy, boot & enjoy!
+
+Bugs and weirdnesses, todo
+--------------------------
+
+This hint is co-developed with the svnc-thinclient hint in the framework
+of the lowlife project. These informations can be found in the svnc-thinclient
+hint.
+
+ACKNOWLEDGEMENTS:
+
+This hint is co-developed with the svnc-thinclient hint in the framework
+of the lowlife project. These informations can be found in the svnc-thinclient
+hint.
+
+CHANGELOG:
+
+This hint is co-developed with the svnc-thinclient hint in the framework
+of the lowlife project. These informations can be found in the svnc-thinclient
+hint.