1.  Specifiche QNAP TurboStation TS109/209/409:

Codice 1.1: Specifiche della Scheda

# Marvell Orion SoC MV88F5182 (per il TS109/209) e MV88F5281 (per il TS409)
# Processore Marvell Feroceon ARMv5TE 500MHz
# 128/256/512MB DDR2 RAM tra i diversi modelli
# 8MB NAND Flash
# Marvell SATA2 controller
# Marvell Gigabit Ethernet controller

# LED disponibili:
    * Led alimentazione (solo TS109/209)
    * Led di Statuo
    * Led HDD SATA HDD
    * Led interfaccia di rete
    * Led USB

# Pulsante Reset
# 3x Porte USB 2.0
# 1x Porta eSATA, solo TS109
# Buzzer

1.  /proc/cpuinfo

Codice 1.1: CPU Info

Processor       : Feroceon rev 0 (v5l)
BogoMIPS        : 498.07
Features        : swp half thumb fastmult vfp edsp
CPU implementer : 0x41
CPU architecture: 5TEJ
CPU variant     : 0x0
CPU part        : 0x926
CPU revision    : 0
Cache type      : write-back
Cache clean     : cp15 c7 ops
Cache lockdown  : format C
Cache format    : Harvard
I size          : 32768
I assoc         : 1
I line length   : 32
I sets          : 1024
D size          : 32768
D assoc         : 4
D line length   : 32
D sets          : 256

Hardware        : QNAP TS-409
Revision        : 0000
Serial          : 0000000000000000

1.  Preparazione alla Cross Compilazione

Codice 1.1: Setup

emerge crossdev
crossdev armv5tel-softfloat-linux-gnueabi

Codice 1.1: Emerge Wrapper (qnap-merge)

#!/bin/sh

CHOST=armv5tel-softfloat-linux-gnueabi

#export CBUILD=$(portageq envvar CBUILD)
export SYSROOT="/usr/${CHOST}"
export PORTAGE_CONFIGROOT="/usr/${CHOST}"

# optional exports
export enable_malloc0returnsnull=yes \
        ac_cv_file__usr_share_sgml_X11_defs_ent=1 \
        ac_cv_func_setpgrp_void=yes ac_cv_func_setgrent_void=yes \
        ac_cv_func_calloc_0_nonnull=yes ac_cv_func_malloc_0_nonnull=yes \
        gl_cv_func_malloc_0_nonnull=yes ac_cv_func_realloc_0_nonnull=yes \
        ac_cv_func_memcmp_working=yes ac_cv_func_strnlen_working=yes

# optional export for glib:2
export glib_cv_uscore=no glib_cv_stack_grows=no \
        glib_cv_stack_grows=no  glib_cv_has__inline=yes \
        glib_cv_has__inline__=yes glib_cv_hasinline=yes \
        glib_cv_sane_realloc=yes glib_cv_va_copy=yes \
        glib_cv___va_copy=yes glib_cv_va_val_copy=no \
        glib_cv_rtldglobal_broken=no glib_cv_uscore=no \
        ac_cv_func_posix_getpwuid_r=yes \
        ac_cv_func_posix_getgrgid_r=yes \
        ac_cv_header_pwd_h=yes \
        ac_cv_func_getpwuid_r=yes \
        glib_cv_sizeof_gmutex=40

FAKEROOT=
if [[ $(id -u) != 0 ]]; then
        if [[ $(type -p fakeroot) != "" ]]; then
                FAKEROOT=fakeroot
        fi
fi

${FAKEROOT} emerge -q "$@"

Codice 1.1: /usr/armv5tel-softfloat-linux-gnueabi/etc/make.conf

#
CHOST=armv5tel-softfloat-linux-gnueabi
CBUILD=x86_64-pc-linux-gnu
ARCH="arm"
ROOT=/usr/${CHOST}/
ACCEPT_KEYWORDS="arm ~arm"
USE="${ARCH} zlib bindist make-symlinks minimal \
        input_devices_keyboard input_devices_evdev \
        video_cards_fbdev video_cards_dummy"

VIDEO_CARDS="fbdev dummy"

INPUT_DEVICES="evdev keyboard mouse touchscreen"
USE_EXPAND="video_cards input_devices"
MARCH_TUNE="-march=armv5t -mtune=arm926ej-s"
CFLAGS="-Os -pipe ${MARCH_TUNE} -fomit-frame-pointer -I${ROOT}/usr/include/ -I${ROOT}/include/"

CXXFLAGS="${CFLAGS}"
LDFLAGS="-L${ROOT}/usr/lib -L${ROOT}/lib"

PKG_CONFIG_PATH="${ROOT}/usr/lib/pkgconfig/"
MAKEOPTS="-j8"
FEATURES="-collision-protect sandbox buildpkg noman noinfo nodoc"

PORTDIR_OVERLAY="/usr/portage/local/"
PKGDIR=${ROOT}/packages/
PORTAGE_TMPDIR=${ROOT}/tmp/
PORTAGE_WORKDIR_MODE=2775
PORTAGE_ECLASS_WARNING_ENABLE=0

CLEAN_DELAY=0
EPAUSE_IGNORE=1
EBEEP_IGNORE=1

1.  Ulteriori informazioni: