Andreas Bach Aaen Innovation og Open Source

18. februar, 2010

1.2GHz arm server i drift

Filed under: hardware,linux — andreas @ 21:57

Rackskab - nu med gigahertz arm NAS

Hvor er det en fornøjelse. Endelig fik jeg min Buffalo Linkstation LS-XHL i drift. Jeg demoede den i efteråret til Open Source Community Day, hvor man kunne se, at den godt kunne trække både Mythtv og en squeezebox server. Jeg havde dog snydt lidt blot lagt min gamle debian NAS installation ind i et underkatalog og så lavet en chroot til dette underkatalog, mounted /proc og så ellers starte de ekstra services. Dette virker fint men har en række fordele og ulemper. Man kan fortsætte med at benytte NAS’en som den er tænkt af fabrikanten og så blot lege med sine egne programmer i et hjørne. Den største ulemper er nok, at man er bundet til en bestemt Linuxkerne. Jeg ville kunne benytte en nyere og bygge de kernemoduler, der gør det muligt, at benytte sjove USB-dimser så som en DVB-T tuner. Fordelen ved at beholde den medleverede kerne er, at det er nemmere at få aflæst powerkanppen og få blæserstyringen til at fungere.

Det var stort set lige ud af landevejen at bygge en 2.6.32 Linuxkerne til NAS-boksen.Ingridienserne er en vanilla 2.6.32 kerne og en mindre LS-XHL platformspatch fundet her. Dertil skal man selvfølgelig have en arm krydscompiler installeret. Her benyttede jeg den så lå i Marvells udviklingskit til SheevaPlugen, der jo benytter samme chipsæt.

Det absolut mest bøvlede var, at der ikke er seriel kontakt med uboot bootloaderen. Hermed, skal alt klappe og virke, man kan først få kontakt med sin NAS når systemer er bootet så langt op at netværket er oppe at køre. Meget kan gå galt inden da. Så skift kun een komponent ud af gangen og start med en kørende opstilling. Så den nye kerne kunne fint køre med det originale rodfilsystem leveret af Buffalo.

Jeg valgte at lave en noget anderledes partitionering end den oprindelige. Et par ting er vigtige at huske her. Da jeg ikke piller ved uboot, som ligger i flash, så er bootparametrene faste: “  console=ttyS0,115200 root=/dev/sda2 rw initrd=0x00800040,32M panic=5 BOOTVER=0.08”. Lad dig ikke snyde af at der tilsyneladende er seriel support. Alt er på plads på softwaresiden, det er blot på hardwaresiden, at der lige er klippet et par komponenter ud i forbrugerversionen frem for udviklerversionen af NAS-hardwaren. Så initrd og kerne skal ligge på partition 1, som skal være ext3 formateret. Navnene er: uImage.buffalo og initrd.buffalo. Partition 2 skal være rodpartitionen – med mindre man laver sjove julelege i initrd’en. Det er vigtigt at man ved formatering af ext3 filsystemet på partition 1 husker at bruge option “-I 128” til mkfs.ext3. Ellers kan uboot i flashromen ikke læse kernen og initrd’en.

Oprettelse af rodfilsystem laves med debootstrap. Jeg gjorde det nemt for mig selv og lavede det natively på en af mine gamle ARM baserede NASer. Krydsinstallation kan godt være noget vanskelig, så det sprang jeg over. Så skal der tilrettes nogle få filer og netværket sættes op. Kogebogsopskriften fandt jeg her. Men ak, der var noget der drillede. Og hvert mislykket forsøg kræver, at disken afmonteres og sættes over i et sata til usb interface på en anden PC. Det viste sig, at min bootsekevens kom til at hænge i /etc/rcS.d/S06checkroot.sh. Hvis jeg rettede i scriptet og tvang rootcheck=no, så kørte alt på skinner. For at kunne komme frem til dette, så lavede jeg mig en “console”, der skrev til disk under opstart. Jeg rettede i /lib/lsb/init-functions og pipede alle echo kommandoer over i /tmp/snydekonsol.Hermed fik jeg et spor på disken, som kunne bruges til næste boot forsøg.

Nå men det lykkedes at få installeret en debian unstable med en 2.6.32.4 kerne på Buffalo Linkstaion LS-XHL maskinen.  Så kom de mange glædelige overraskelser. Jeg have forkælet mig med en DVB-T USB tuner. Jeg valgte en Asus Mycinema-U3100/mini DVBT. Skuffelsen var stor da jeg fik den tilsendt og fik modellen, som hed plus til efternavn. Modellen uden plus skulle virke på Linux Asus EEE uden kvaler, den anden nævnte det overhovedet ikke på produkthjemmesiden. Heldigvis var hardwaren identisk. Der var blot en ekstra USB-dims med et IR-øje og en elendig fjernbetjening med. Det virkede med Linux lige ud af boksen. Den næste gode overraskelse var, at den også virkede under ARM linux. På min gamle buffalo NAS kørte jeg en 2.6.25 kerne, og der krævede det et hack i usb-delen af kernen at lokke data ud af DVB-T enheder. Så den fejl er fikset i mellemtiden. Asus DVB-T enheden har heller ikke den samme irriterende firmware bug som min gamle TakeMS DVB-T enhed havede. Den holdt i praksis op med at virke efter et par dage. Kun en kold reboot fik den på bedre tanker. Så den er fin til at tage med laptopen på farten med ikke i en fast serveropstilling.

Som kom tiden til softwareopdaterinerne. Squeezebox serverne havde tidligere været ret bøvlet at installere fordi, de kløjs rundt i hvilke versioner den krævede af en række Perl CPAN moduler. Men her havde Logitech oppet sig. En deb fil hentet direkte fra Logitechs Squeezeboxhjemmeside og så var den hjemme. Install med dpkg -i og så en efterfølgende apt-get install -f for at sikre afhængighederne. Nemt.

Mythtv installerede jeg i version 0.22, hvor jeg tidligere havde kørt 0.21. Det gav lidt knas, men ikke noget som 1000 andre ikke var faldet i før mig. Jeg installerede også mythweb, da jeg nu har en NAS-server med hele 256MB ram og ikke sølle 128 MB som jeg tidligere har måttet nøjes med. Ingen problemer med at trække dette også. Lækkert.

Og så endnu en god overraskelse. Jeg havde indtil nu kørt ATA over Ethernet (AoE) på min en gamle sløve NAS og alle de andre sjove services på NAS nummer 2. Min LS-XHL havde ingen problemer med at trække begge dele. Og faktisk så kan man virkeligt mærke at AoE er hurtigere pga. den hurtigere CPU NAS-serveren har.

Alt i alt så har jeg skiftet to servere ud med en ny, hurtigere og billigere. Det er ganske meget server man kan få for 1500 kr.

nas og nas2

De to gamle servere er nu kommet på pension. de har kostet omkring 4000 kr i indkøb. Men så var det jo også med en 500GB disk i hver og 400 MHz ARM processorer.

Powered by WordPress