Difference between revisions of "MythTV On NSLU2"
Mitchell2345 (talk | contribs) |
|||
Line 164: | Line 164: | ||
Et voila ! Now you can setup yout slug as a master backend. | Et voila ! Now you can setup yout slug as a master backend. | ||
− | [[Category: | + | [[Category:Distribution_Specific_Install_Guides]] |
Revision as of 02:54, 19 August 2008
Here is a explanation about compiling and running mythtv on a slug (aka nslu2) and howto setup a crosscompiler to reduce compile time whith distcc.
Contents
Setup cross compiling environment
Building GCC for ARM
First, on a powerfull computer running linux we need to setup a crosscompiler to speed up further compilations : download crosstool from http://kegel.com/crosstool/
# tar zxf crosstool-0.43.tar.gz # cd crosstool-0.43 # edit arm.dat to change : TARGET=arm-linux-gnu
On the slug, the version of gcc is : 4.1.2. This version (0.43) allow you to try build any version of gcc, but not all works. By default, the version built for arm is 4.1.0, so we are going to tell it to build the same version as we have on our slug : 4.1.2 Create a file called : gcc-4.1.2-glibc-2.3.2-tls.dat and put in :
BINUTILS_DIR=binutils-2.16.1 GCC_CORE_DIR=gcc-3.3.6 GCC_DIR=gcc-4.1.2 GLIBC_DIR=glibc-2.3.2 LINUX_DIR=linux-2.6.15.4 LINUX_SANITIZED_HEADER_DIR=linux-libc-headers-2.6.12.0 GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.2 GDB_DIR=gdb-6.5 GLIBC_EXTRA_CONFIG="$GLIBC_EXTRA_CONFIG --with-tls --with-__thread --enable-kernel=2.4.18"
edit demo-arm.sh and changed the following variables to :
add the following line juste before the last out and comment out the other line beginning by "eval"
#eval `cat arm.dat gcc-4.1.0-glibc-2.3.2-tls.dat` sh all.sh --notest eval `cat arm.dat gcc-4.1.2-glibc-2.3.2-tls.dat` sh all.sh --notest
next run :
# ./demo-arm.sh
It takes about 1 hour on a Athlon XP 2200+.
The crosscompiler has been generated in $HOME/crosstool/arm/gcc-4.1.2-glibc-2.3.2/arm-linux-gnu
Install and setup DISTCC
As root :
# apt-get install distccd
edit /etc/default/distcc and adjust the settings
edit /etc/init.d/distcc in order to add the crosscompiler to the path :
PATH=/home/tux/crosstool/arm/gcc-4.1.2-glibc-2.3.2/arm-linux-gnu/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
restart distcc daemon :
# /etc/init.d/distcc stop # /etc/init.d/distcc start
Compilation on the slug
Prerequisitory : building and installing some libs and programs
The following assume that you have :
- debian etch
- a swap already configured
As root : add the following in /etc/apt/sources.list :
install some libs and programs
# apt-get update # apt-get install make qt3-dev-tools libqt3-mt-dev libqt3-mt libqt3-mt-mysql mysql-server distccd gcc-4.1 g++-4.1 dpkg-dev build-essential
take a break, it is long
we need to disable distccd at boot as we don't need it
# update-rc.d -f distcc remove
as a regular user, setup some environnements variables :
# export CC="distcc arm-linux-gnu-gcc" # export CXX="distcc arm-linux-gnu-g++"
setup the host we want to do the crosscompilation, I just add my powerfull computer on which crosstool has been ran :
# export DISTCC_HOSTS="tux"
now building lame as mythtv refuse to compile whithout it :
# cd /usr/src # mkdir lame # cd lame
as root :
# apt-get build-dep lame
as a normal user :
# apt-get -b source lame
as root :
# dpkg -i liblame-dev_3.97-0.0_arm.deb liblame0_3.97-0.0_arm.deb
Compiling Mythtv
as a regular user, setup some environnements variables :
# export CC="distcc arm-linux-gnu-gcc" # export CXX="distcc arm-linux-gnu-g++"
setup the host we want to do the crosscompilation, I just add my powerfull computer on which crosstool has been ran :
# export DISTCC_HOSTS="tux"
get the latest version of mythtv 0.20-fixes
# cd mythtv-0.20-fixes
apply the patch as explained in http://svn.mythtv.org/trac/ticket/3661 next compile mythtv :
# ./configure --prefix=/usr # make -j4
It takes about 2 hours. Sometimes, gcc may segfault. I didn't find where it comes from. Just run again
# make -j4
when the compilation is finished, as root :
# make install
Setup the database
Setup the root password
# /usr/bin/mysqladmin -u root password 'enter-your-good-new-password-here'
# mysql -p # mysql> CREATE DATABASE mythconverg; # mysql> CREATE USER mythtv IDENTIFIED BY 'mythtv'; # mysql> GRANT ALL ON mythconverg.* TO mythtv@localhost;
Setup password for mythtv
# su mythtv # mysql # mysql> set password = password("mythtv");
next, we need to run mythtv-setup. The little difficultie is that our slug don't have any X running. As we are connected throug ssh, we can export the display of the slug to another computer.
On the powerfull computer is X : open a terminal ant type :
# xhost +
on the slug as a normal user :
# export DISPLAY=<ip of the powerfull computer>:0.0 # mythtv-setup
Et voila ! Now you can setup yout slug as a master backend.