Instalacja debiana na PCEngines Alix 2c3
Ostatnia zmiana: 2013-11-26 18:43


Rodzina płyt Alix firmy PCEngines będących następcami płyt WRAP obejmuje kilka rodzajów różniących się głównie wyposażeniem. Zaletą płyt jest niski pobór mocy wynoszący do 3W oraz zasilanie - pojedyncze od 7 do 18V; istnieje też możliwość zasilania przez PoE. Płyta 2c3 wyposażona jest w 500MHz procesor zgodny z x86, 256MB pamięci RAM, złącze miniPCI, 2x USB 2.0 oraz 3x ethernet 10/100. Czyli mała, fajna i energooszczędna.

Budowa

lspci



00:01.0 Host bridge: Advanced Micro Devices [AMD] Unknown device 2080 (rev 33)
00:01.2 Entertainment encryption device: Advanced Micro Devices [AMD] Geode LX AES Security Block
00:09.0 Ethernet controller: VIA Technologies, Inc. VT6105M [Rhine-III] (rev 96)
00:0a.0 Ethernet controller: VIA Technologies, Inc. VT6105M [Rhine-III] (rev 96)
00:0b.0 Ethernet controller: VIA Technologies, Inc. VT6105M [Rhine-III] (rev 96)
00:0c.0 Ethernet controller: Atheros Communications, Inc. AR5212 802.11abg NIC (rev 01)
00:0f.0 ISA bridge: Advanced Micro Devices [AMD] CS5536 [Geode companion] ISA (rev 03)
00:0f.2 IDE interface: Advanced Micro Devices [AMD] CS5536 [Geode companion] IDE (rev 01)
00:0f.4 USB Controller: Advanced Micro Devices [AMD] CS5536 [Geode companion] OHC (rev 02)
00:0f.5 USB Controller: Advanced Micro Devices [AMD] CS5536 [Geode companion] EHC (rev 02)

/proc/cpuinfo



processor	: 0
vendor_id	: AuthenticAMD
cpu family	: 5
model		: 10
model name	: Geode(TM) Integrated Processor by AMD PCS
stepping	: 2
cpu MHz		: 498.056
cache size	: 128 KB
fdiv_bug	: no
hlt_bug		: no
f00f_bug	: no
coma_bug	: no
fpu		: yes
fpu_exception	: yes
cpuid level	: 1
wp		: yes
flags		: fpu de pse tsc msr cx8 sep pge cmov clflush mmx mmxext 3dnowext 3dnow
bogomips	: 997.68
clflush size	: 32

Specyfikacja

  • Procesor: AMD Geode LX800 (500MHz)
  • Pamięć: 256MiB RAM
  • 1x miniPCI (np. do karty WiFi)
  • 3x ethernet 10/100 Via Rhine
  • 2x USB 2.0 (EHCI/OHCI)
  • złącze IDE/CF
  • 3x LED dowolnego przeznaczenia
  • 1x pushbutton
  • 1x RS232C (pełny) + TTL
  • magistrala i2c
Dodatkowo sam procesor Geode zawiera wbudowane, sprzętowe:

  • generator liczb losowych (rng)
  • akcelerator kryptograficzny AES-128
  • watchdog
  • czujnik temperatury w procesorze (CPU) oraz na płytce (PCB) - LM86
  • rtc (zegar czasu rzeczywistego - brak baterii podtrzymującej na płytce, dostępna w niektórych wersjach)
Można podłączyć zarówno kartę CF jaki i MicroDrive. Wyprowadzone jest także złącze IDE do podłączenia zwykłego dysku 2,5".

Instalacja systemu

Kompilacja jądra

Warto samodzielnie przekompilować jądro włączając optymalizację dla procesorów Geode LX. Inne opcje przydatne na tej platformie to:


    CONFIG_MGEODE_LX=y
    CONFIG_GEODE_MFGPT_TIMER=y
    CONFIG_HW_RANDOM_GEODE=m
    CONFIG_GEODE_WDT=m
    CONFIG_CRYPTO_DEV_GEODE=m
    CONFIG_SCx200=y
    CONFIG_SCx200HR_TIMER=y
    CONFIG_SCx200_GPIO=m
    CONFIG_SCx200_ACB=m
    CONFIG_VIA_RHINE=m
    CONFIG_VIA_RHINE_MMIO=y
    CONFIG_VIA_RHINE_NAPI=y
    CONFIG_USB_OHCI_HCD=m

Czyli można uzyskać moduły obsługujące następujące podsystemy:

  • libata/pata_cs5536 - IDE/CF
  • geodewdt - watchdog
  • geode-aes - akcelerator kryptograficzny
  • geode-rng - generator liczb losowych
  • leds-alix - obsługa LED
  • via_rhine - karty sieciowe ethernet
  • ehci_hcd/ohci_hcd - USB
  • i2c_code/hwmon/lm90 - czujnik temperatury

Dodatkowa konfiguracja systemu

/boot/grub/menu.lst
Aby można było wybrać jądro podczas startu systemu można dodać odpowiedni wpis dla gruba.


    serial --speed=38400
    terminal serial

/etc/inittab
Ponieważ Alix 2c3 nie ma grafiki, można wyłączyć terminale a włączyć konsolę szeregową. Czyli należy zakomentować następujące linie


    #1:2345:respawn:/sbin/getty 38400 tty1
    #2:23:respawn:/sbin/getty 38400 tty2
    #3:23:respawn:/sbin/getty 38400 tty3
    #4:23:respawn:/sbin/getty 38400 tty4
    #5:23:respawn:/sbin/getty 38400 tty5
    #6:23:respawn:/sbin/getty 38400 tty6

a dodać/zmienić następującą


    T0:23:respawn:/sbin/getty -L ttyS0 38400

LED

Alix posiada trzy diody LED do dowolnego wykorzystania. Po załadowaniu modułu leds-alix.ko możliwe jest ich sterowanie (dostępne są oznaczenia alix:1, alix:2 oraz alix:3)


    modprobe ledtrig-heartbeat
    modprobe ledtrig-timer

Włączenie


    echo 1 > /sys/class/leds/alix:1/brightness

Wyłączenie


    echo 0 > /sys/class/leds/alix:1/brightness

Heartbeat, obciążenie systemu


    echo heartbeat > /sys/class/leds/alix:1/trigger

Aktywność dysku


    echo ide-disk > /sys/class/leds/alix:1/trigger

Zwykłe migotanie led, 1 sekunda on, 5 sekund off


    echo timer > /sys/class/leds/alix:1/trigger
    echo 1000 > /sys/class/leds/alix:1/delay_on
    echo 5000 >  /sys/class/leds/alix:1/delay_off

Wyłączenie triggerów


    echo none > /sys/class/leds/alix:1/trigger

Polecane programy do instalacji

  • rng-tools
  • lm-sensors
  • watchdog

Patche (2.6.25)

Obecne kernele (>= 2.6.30) zawierają pełną obsługę płyt alix - wsparcie dla timerów, interfejsu ide, gpio, watchdog czy LED.

OCF (OpenBSD/FreeBSD Cryptographic Framework)

Po instalacji OCF można uzyskać sprzętowe wsparcie dla akceleratora kryptograficznego (AES, 128bitów). Wymagane są odpowiednie patche do jądra oraz na openssl (wszystko dostępne jest w projekcie OpenWrt). Pozwala to bardzo znaczenie przyśpieszyć operacje "szyfrujące". Przykład

  • ze wsparciem sprzętowym


#openssl speed -evp aes-128-cbc -engine cryptodev
engine "cryptodev" set.
Doing aes-128-cbc for 3s on 16 size blocks: 167555 aes-128-cbc's in 0.10s
Doing aes-128-cbc for 3s on 64 size blocks: 167853 aes-128-cbc's in 0.10s
Doing aes-128-cbc for 3s on 256 size blocks: 131727 aes-128-cbc's in 0.14s
Doing aes-128-cbc for 3s on 1024 size blocks: 77118 aes-128-cbc's in 0.04s
Doing aes-128-cbc for 3s on 2048 size blocks: 46770 aes-128-cbc's in 0.05s
OpenSSL 0.9.8g 19 Oct 2007
built on: Fri Jul 10 09:59:56 CEST 2009
options:bn(64,32) md2(int) rc4(idx,int) des(ptr,risc1,16,long) aes(partial) blowfish(idx) 
compiler: gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DHAVE_CRYPTODEV -DUSE_CRYPTODEV_DIGESTS -DL_ENDIAN -DTERMIO -O3 -march=i586 -Wa,--noexecstack -g -Wall -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_IA32_SSE2 -DSHA1_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM
available timing options: TIMES TIMEB HZ=100 [sysconf value]
timing function used: times
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   2048 bytes
aes-128-cbc      26808.80k   107425.92k   240872.23k  1974220.80k  1915699.20k


  • bez wsparcia sprzętowego


# rmmod cryptosoft
# openssl speed -evp aes-128-cbc -engine cryptodev
engine "cryptodev" set.
Doing aes-128-cbc for 3s on 16 size blocks: 1075439 aes-128-cbc's in 1.73s
Doing aes-128-cbc for 3s on 64 size blocks: 336981 aes-128-cbc's in 1.72s
Doing aes-128-cbc for 3s on 256 size blocks: 89002 aes-128-cbc's in 1.68s
Doing aes-128-cbc for 3s on 1024 size blocks: 23284 aes-128-cbc's in 1.71s
Doing aes-128-cbc for 3s on 2048 size blocks: 11884 aes-128-cbc's in 1.75s
OpenSSL 0.9.8g 19 Oct 2007
built on: Fri Jul 10 09:59:56 CEST 2009
options:bn(64,32) md2(int) rc4(idx,int) des(ptr,risc1,16,long) aes(partial) blowfish(idx) 
compiler: gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DHAVE_CRYPTODEV -DUSE_CRYPTODEV_DIGESTS -DL_ENDIAN -DTERMIO -O3 -march=i586 -Wa,--noexecstack -g -Wall -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_IA32_SSE2 -DSHA1_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM
available timing options: TIMES TIMEB HZ=100 [sysconf value]
timing function used: times
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   2048 bytes
aes-128-cbc       9946.26k    12538.83k    13562.21k    13943.17k    13907.68k

Wyniki mówią same za siebie.