Arkisto

Kirjoittajan arkisto

Loppuraportti: XBMC:n kääntäminen LFS-järjestelmän päälle

Tavoitteena

Olimme asettaneet alkuraportissa tavoitteeksi kääntää xbmc oman järjestelmämme päälle. Pysyin aikataulussa melko heikosti ja huomasin projektin loppusuoralla pakettien kääntämisen vievän selvästi enemmän aikaa raspberry pi:llä kuin mitä oletin.

Luistinkin omasta vaatimuksesta kääntää xbmc:n omalle järjestelmällemme joten päädyin siis kääntämään ohjelman ko. valmiin julkaisun päälle. Toivottavasti otan omasta aikataulutuksestani opinnon.

Omassa käytössäni olen pitänyt xbmc medialaitetta jo aikaisemmin ja aijonkin ottaa raspberry pi:n tähän käyttöön itselleni.

Palaute

Kurssiaiheenahan kurssi on eritäin mukava ja omavalintainen aihe on motivoiva. Toivoisin vastaavanlaisia kursseja enemmänkin.

–  Tuomas Latvanen

Kategoriat:Raspberry Pi, xbmc

Optimointi

Kellotus

Raspberry pi: tulee vakiona 700Mhz: kellotetuksella, mutta valmistaja antaa takuuta 1000Mhz asti ylikellotetulle laitteelle. Testasin eri kellotaajuuksien vakauksia. Kellotaajuus luetaan muistikortin tiedostosta ”/boot/config.txt”. Kyseisessä tiedostossa on myös näyttömuistin koko. Testasin nostaa kellotaajuutta 50Mhz korotuksilla.

  • 700 Mhz- Vakiokellotaajuus
  • 750 – 1000Mhz  – Laite vakaa
  • 1050 Mhz Sain xbmc:n kaatumaan videota toistaessa.

Näistä päätellenkin suosittelen tylsien ns. turbo asetuksien (1000Mhz) käyttöä. Tämä tapahtuu ottamalla turbon kommentointi pois. ennemmin mainitusta tekstitiedostosta.

# Turbo
arm_freq=1000
core_freq=500
sdram_freq=500
over_voltage=6

Näyttömuisti

Testasin laitteen näyttömuistin vaihtamista, ja huomasin selvää xbmc:n operaatioiden (esim. ruudun vaihtaminen) hidastumista kun olin asettanut suureemman kuin 256 megabitin näyttömuistin käyttöön. En huomannut parantunutta videontoistoa joten päädyin vaihtamaan muistin takaisin. Etsin googlella erityisiä ohjeita näyttömuistista ja huomasin joidenkin julkaisujen kuitenkin käyttävän 256MB näyttömuistia.

http://www.raspbmc.com/wiki/user/frequently-asked-questions/

Uudelleenosiointi

Dd komennolla kopioimalla kopioituu image levylle bitti bitiltä. Ylimääräistä tilaa ei voi siis jättää imageen, joten levyimagessa osiointi on mahdollisimman pieni. Minun täytyy siis suurentaa levyosiointi erikseen.

Jokela on kirjoittanut levyosioinnin laajentamisesta yksinkertaisen step-by-step ohjeen.

–  Tuomas Latvanen

Kategoriat:Raspberry Pi, xbmc

Pakettien kääntö

Aloitin pakettien käännön käyttämällä aikaisemmin luomaani ssh yhteyttä. Käytin ssh yhteyttä nopeuttaakseen prosessia sillä en halunnut kirjoittaa jokaikistä make komentoa.

Olin tehnyt listan vaadittavista paketeista tänne, ja ennen kääntämistä latasinkin jokaisen paketin.

wget http://curl.haxx.se/download/curl-7.28.0.tar.bz2 http://mxr.mozilla.org/mozilla/source/security/nss/lib/ckfw/builtins/certdata.txt?raw=1 http://www.openssl.org/source/openssl-1.0.1c.tar.gz http://ftp.gnu.org/gnu/gnutls/gnutls-3.1.4.tar.xz http://downloads.sourceforge.net/expat/expat-2.1.0.tar.gz http://downloads.sourceforge.net/boost/boost_1_51_0.tar.bz2 http://downloads.sourceforge.net/freetype/freetype-2.4.10.tar.bz2 http://fontconfig.org/release/fontconfig-2.10.1.tar.bz2 http://fribidi.org/download/fribidi-0.19.4.tar.bz2 http://libmpeg2.sourceforge.net/files/libmpeg2-0.5.1.tar.gz http://downloads.sourceforge.net/mad/libmad-0.15.1b.tar.gz http://www.ijg.org/files/jpegsrc.v8d.tar.gz http://www.mega-nerd.com/SRC/libsamplerate-0.1.8.tar.gz http://downloads.xiph.org/releases/ogg/libogg-1.3.0.tar.xz http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.3.tar.xz http://downloads.sourceforge.net/flac/flac-1.2.1.tar.gz http://download.osgeo.org/libtiff/tiff-4.0.3.tar.gz http://www.oberhumer.com/opensource/lzo/download/lzo-2.06.tar.gz http://github.com/downloads/libarchive/libarchive/libarchive-3.0.4.tar.gz http://www.cmake.org/files/v2.8/cmake-2.8.10.tar.gz http://www.xs4all.nl/~carlo17/which/which-2.20.tar.gz http://downloads.sourceforge.net/infozip/zip30.tar.gz http://downloads.sourceforge.net/infozip/unzip60.tar.gz http://sqlite.org/sqlite-autoconf-3071401.tar.gz http://downloads.sourceforge.net/libpng/libpng-1.5.13.tar.xz http://downloads.sourceforge.net/pcre/pcre-8.31.tar.bz2 http://www.ece.uvic.ca/~mdadams/jasper/software/jasper-1.900.1.zip http://ffmpeg.org/releases/ffmpeg-1.0.tar.bz2 http://ftp.gnu.org/gnu/gperf/gperf-3.0.4.tar.gz http://git-core.googlecode.com/files/git-1.8.0.tar.gz http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tar.xz http://www.libsdl.org/release/SDL-1.2.15.tar.gz https://libass.googlecode.com/files/libass-0.10.1.tar.gz http://sourceforge.net/projects/modplug-xmms/files/libmodplug/0.8.8.4/libmodplug-0.8.8.4.tar.gz http://ftp.gnu.org/gnu/libcdio/libcdio-0.83.tar.bz2 https://github.com/downloads/taglib/taglib/taglib-1.8.tar.gz http://prdownloads.sourceforge.net/swig/swig-2.0.8.tar.gz

nimesin certdatan vielä certdata.txt:ksi.
mv certdata.txt?raw=1 certdata.txt

Pakettien asennus:

En käy läpi erikseen jokaista paketin kääntämistä, sillä pakettejahan on lähes puolisataa. Paketit toimitetaan yleensä pakattuina, ja pakkaamisen jälkeen paketit voivat vaatia myös configurointia. Tämänjälkeen paketit voidaan kääntää ja lopuksi asentaa. Tarkemmat ohjeet löyisin pääasiassa BLFS sivustolta.

Purkaminen

Paketit toimitetaan yleensä tar.gz tai tar.bz2 muodoissa. Poikkeuksena näistä mozillan certdata tiedosto(tekstitiedosto) sekä jasper joka toimitettiin .zip tiedostona. Eri muotojen purkamiskomento vaihtelee joten listaankin ne tässä

.tar.gz     ”tar -xvzf filename.tar.gz”
.tgz         ”tar -xvf filename.tgz”
.tar.Z        ”tar -xvf filename.tar.Z”
.tar.bz2    ”tar -xvjf filename.tar.bz2”

.zip        ”unzip filename.zip”

Configurointi

Pakettien configurointi onnistuu yleensä./configure komennolla, eli configure skriptin ajamalla. Kaikki paketit eivät edellytä tätä. Tyypillinen configuroitni on esim: ”./configure –prefix=/usr” Pakettien configurointi ja kääntöohjeet ovat katsottava jostain ja tyypillisesi löytäisinkin ne ”README” tai ”INSTALL” nimisistä tiedostoista paketin sisältä. Asensin paketit pääosin BLFS kirjan ohjeiden mukaisesti, turvautuen ohjeisiin ongelmatilanteissa.

Kääntö

Pakettien kääntäminen on prosessi jossa lähdekoodi muutetaan konekielelle. Kääntäminen vaatii mm. jo asennetut gcc (itse kääntäjä) ja make (ohjaa kääntämisprosessia). Työkaluna make lukee paketin mukana toimitettua tiedostoa ”makefile” joka sisältää tarkemmat kääntöohjeet.

Makefilestä ohjelman kääntö onnistuu siis komennolla
”make”

Huomiona pakettien kääntö voi viedä erittäin vaihtelevan määrän aikaa.

Asennus

Lopuksi paketti asennetaan käyttäen komentoa

”make install”

Make install kopio käännetyt binäärit lopulliseen sijaintiinsa.

–  Tuomas Latvanen

Kategoriat:Raspberry Pi, xbmc

Raspin käyttöönotto

Olen nyt kirjoittanut ko. netistä ladatun lfs julkaisun muistikortille, ja voin alkaa käyttää laitetta.

Huom: ennenkuin laitat laitetta verkkoon, sinun täytyy joko vaihtaa root käyttäjän salasana ”pilfs” toiseen taikka varmistaa että laite on semmoisessa verkossa jossa ulkopuolinen ei voi yhdistää porttiin 22. Muuten riskeeraat koko järjestelmän tietoturvan

DHCP clientin kytkeminen päälle

Halusin kääntää paketteja käyttäen ssh yhteyttä, joten minun täytyi laittaa verkkoyhteys toimimaan. Sitä ennen vaihdoinkuitenkin kirjainkartan käyttömukavuuden kannalta.

[root@tty1] [~] loadkeys fi

Intestines julkaisun verkkoasetukset sijaitsevat /etc/sysconfig/ kansiossa, jossa ”ifconfig.eth0” sisältää verkkoasetukset. Valmiit dhcp:tä käyttävät verkkoasetukset ovat ”ifconfig.dhcp” tiedostossa, joten muutaman tiedoston nimeämällä saadaan käyttöön dhcp.

[root@tty1] [~] cd /etc/sysconfig/
[root@tty1] [/etc/sysconfig/] mv ifconfig.eth0 ifconfig.eth0_old
[root@tty1] [/etc/sysconfig/] mv ifconfig.dhcp ifconfig.eth0

Vielä ssh yhteyden luomiseksi vaadittava ip osoite voidaan selvittää ”ip addr” komennolla.

Yhdistin nyt laitteeseen valitsemallasi salasanalla.
tuomas@morde:~/Downloads$ ssh root@192.168.1.151
root@192.168.1.151’s password:
Last login: Thu Jan  1 01:04:25 1970 from 192.168.1.101

–  Tuomas Latvanen

Kategoriat:Raspberry Pi, xbmc

XBMC – intestines xbmc:n kirjoitus levylle

Pakatun imagen lataaminen:
tuomas@morde:~$ cd Downloads/
tuomas@morde:~/Downloads$ wget http://circu.it/pilfs/pilfs-base-20121118.zip

–2012-12-09 08:11:01–  http://circu.it/pilfs/pilfs-base-20121118.zip
Resolving circu.it (circu.it)… 208.64.38.104
Connecting to circu.it (circu.it)|208.64.38.104|:80… connected.
HTTP request sent, awaiting response… 200 OK
Length: 377822116 (360M) [application/zip]
Saving to: `pilfs-base-20121118.zip’

100%[======================================>] 377,822,116 9.01M/s   in 46s

2012-12-09 08:11:48 (7.82 MB/s) – `pilfs-base-20121118.zip’ saved [377822116/377822116]

100%[===================================================================================================>] 1,086,337,762 11.2M/s   in 92s

2012-12-09 04:37:24 (11.2 MB/s) – `hiawatha0.2_quake.img.zip’ saved [1086337762/1086337762]

zip paketin purku:
tuomas@morde:~/Downloads$ unzip pilfs-base-20121118.zip

Archive:  pilfs-base-20121118.zip
inflating: pilfs-base-20121118.img

Imagen kirjoittaminen muistikortille

Image kirjoitetaan muistikortille käyttäen dd ohjelmaa.
tuomas@morde:~/Downloads$ sudo dd bs=4M if=/home/tuomas/Downloads/pilfs-base-20121118.img of=/dev/sdb

[sudo] password for tuomas:
237+1 records in
237+1 records out
996147200 bytes (996 MB) copied, 87.4062 s, 11.4 MB/s

Synkronisoin vielä kirjoitusmuistin komennolla sync
tuomas@morde:~/Downloads$ sync

Muistitikulle on nyt kirjoitettu netistä ladattu raspilfs image

DHCP:n käyttöönotto

Halusin kääntää paketteja käyttäen ssh yhteyttä, joten minun täytyi laittaa verkkoyhteys toimimaan. Sitä ennen vaihdoinkuitenkin kirjainkartan käyttömukavuuden kannalta.

[root@tty1] [~] loadkeys fi

Intestines julkaisun verkkoasetukset sijaitsevat /etc/sysconfig/ kansiossa, jossa ”ifconfig.eth0” sisältää verkkoasetukset. Valmiit dhcp:tä käyttävät verkkoasetukset ovat ”ifconfig.dhcp” tiedostossa, joten muutaman tiedoston nimeämällä saadaan käyttöön dhcp.

[root@tty1] [~] cd /etc/sysconfig/
[root@tty1] [/etc/sysconfig/] mv ifconfig.eth0 ifconfig.eth0_old
[root@tty1] [/etc/sysconfig/] mv ifconfig.dhcp ifconfig.eth0

Vielä ssh yhteyden luomiseksi vaadittava ip osoite voidaan selvittää ”ip addr” komennolla.

Kategoriat:Raspberry Pi, xbmc

XBMC jatkokehittelyä

Lisää mahdollisesti kehiteltäviä asioita xbmc:n päälle

    • SCP- tuki
      • Ei testattu
    • Videoformaatit – Mkv, avi, mp4
      • Toimii
    • ”Full hd”
      • Toimii. Noin / Yli 40 Mbit/s videostreami pätkii
    • matroska äänet, useammat eri streamit
      • Toimii(?) useamman streamin äänet (5.1) kuuluivat joissain videopätkissä väärin. Virhe saattaa liittyä myös ääniä tukevan hdmi ruudun ja 3.5″ liitännän yhtäaikaiseen kiinnitykseen.
    • matroska tekstitykset
      • Toimii
    • Kellotuksen testaus & raportointi
      • Tehty
    • Näyttömuistin koon testaus & raportointi
      • Tehty
    • Android kaukosäädin
    • Netflix
      • Ainoastaan selaimelle

– Tuomas Latvanen

Kategoriat:Raspberry Pi, xbmc

XBMC

XBMC

XBMC (lyhenne xbox media center) on avoimen lähdekoodin mediasoitin, joka on alunperin tehty xbox- pelikonsolille ja sittemmin käännetty mm. linux, windows, mac, bsd android ja ios alustoille.

Jotta saan xbmc:n toimimaan julkaisullemme, minun täytyy kääntää seuraavat paketit ennen XBMC:tä‬. En listaa paketteja kahta kertaa, (esim erikseenvaadittu libVorbis vaatii libOgg:in). Sisennetyt kohdat ovat siis vaatimusten vaatimuksia

Paketit

Listaan tässä paketit formaatissa:

Projektin kotisivu, paketin latausosoite, lisäohjeita kokoamiseen

Lähteenä

http://wiki.xbmc.org/index.php?title=XBMC_FAQ#What_is_XBMC.3F
http://www.linuxfromscratch.org/blfs/view/svn/general/
– Tuomas Latvanen

Kategoriat:Raspberry Pi, xbmc

Projektisuunnitelma

Tausta

Projektin niinsanottuna isänä toimi Tom Himanen, joka oli haaveillut LFS:n tekemisestä jo jonkin aikaa ja toikin tämän esille kuukausia ennen kurssin alkua. Ideasta innostuttiin heti ja aloimme jo hyvissä ajoin etsimään kurssia, jonka puitteissa voisimme totetuttaa ideamme.

Aluksi projekti oli ajateltu tehtäväksi käyttäen x86-arkkitehtuuria ja mahdollisesti ajallisten resurssien salliessa myös ARM:ia, mutta tämä tarkentui kurssin ensimmäisellä lähiopetuskerralla koskemaan vain ARM:ia.

Projektin lopulliseksi sisällöksi määrittyi Linux From Scratchin ja joidenkin laajempien ohjelmistojen asentaminen Raspberry Pi -laitteelle. LFS:n päälle on määrä asentaa lähdekoodista kääntäen  OMXPlayer, Xbmc ja Quake 3. Ohjelmisto valikoimaa laajennetaan resurssien salliessa.

Projektiryhmä

  • Friman Santeri
  • Himanen Tom
  • Jokela Antti-Ville
  • Jylhä Ilkka
  • Latvanen Tuomas

Vastuuopettaja: Tero Karvinen

Tavoite ja lopputulos

Projektissa on tarkoitus tehdä Linux-julkaisu käyttäen apuna kirjaa, joka opastaa Linux From Scratchin (LFS) asentamisessa ARM-arkkitehtuuria käyttävälle piirilevylle.

Lopputuloksena esitellään Raspberry Pi, mihin on asennettu ryhmän alusta alkaen tekemä käyttöjärjestelmä joka sisältää vähintään kolme aikaisemmin mainittua ohjelmaa.

Projektissa käytämme Raspberry Pi Model B -tietokonetta. Projekti on jaettu kahteen eri osaan:

  • Perusjärjestelmän (käytön kannalta tärkeimmät ohjelmat, ydin ja ytimen moduulit) tekemiseen
  • Hyötyohjelmien kääntämiseen

Projektin eri osa-alueilla on vastuuhenkilöt, jotka huolehtivat osa-alueen tekemisestä. Himanen ja Jylhä ottaa vastuun varsinaisen LFS:n teosta, kun taas Friman, Jokela ja Latvanen keskittyvät ohjelmien kääntämiseen.

Ensimmäisenä prioriteettina on saada LFS, Xbmc, OMXPlayer ja Quake 3 toimimaan Raspberry Pi:lla. Jos ohjelmien kääntämisessä ei tule suuria ongelmia vastaan ja kääntäminen onnistuu etuajassa, ohjelmien määrää kasvatetaan.

Projektin tavoitteena ei ole tuottaa minkään näköistä kaupallista lisäarvoa. Tavoitteena on ensisijaisesti kasvattaa ymmärrystämme siitä, miten Linux rakentuu ja toimii, miten ohjelmia käännetään.

Rajaus

Projekti rajataan koskemaan vain ARM-arkkitehtuuria ja toimimaan Raspberry Pi:llä.

Budjetti

Projekti käyttää avointa lähdekoodia mikä mahdollistaa lähes nollabudjetin, mutta Raspberry Pi model B maksaa Suomessa noin 45 euroa. Tämän lisäksi täytyy olla muistikortti, virtalähde, näppäimistö, hiiri, näyttö ja näytölle menevä kaapeli, joten jos mitään edellä olevista ei omista ennestään ja haluaa projektin tehdä, joutuu varautumaan vähintään noin sadan euron kuluihin ilman näyttöä.

Investointeja on suoritettu seuraavasti:

  • Raspberry Pi model B   3 kpl
  • SD muistikortti 8Gt         2 kpl
  • Virtalähde microusb        2 kpl
  • Hdmi -kapeli            1 kpl

Aikataulu

Projekti alkoi 24.10.2012 vahvistamalla osallistumisen kurssille ja projektin aiheen. Projektisuunnitelman tuli olla palautettuna kurssin vastuuopettajalle seuraavan viikon keskiviikkona.

  • w43 Projektin jako osiin, , blogin teko, raspberry pi:n hankinta ja tutustuminen
  • w44 Projektisuunnitelma, itsenäistä työskentelyä josta raportointi blogiin.
  • w45 Itsenäistä työskentelyä, raportointi blogiin.
  • w46 Esitykset projektin tilasta, Väliraportti.
  • w47 Perusjärjestelmä ja osasuoritukset toimintakuntoon.
  • w48 Projektin osasuoritukset valmiina, eri osien yhdistäminen.
  • w49 Loppuraportti palautettu, projekti esittelyä vaille valmis.
  • w50 Projektin esittelyn valmistelu, päätökset demoista ja demojen valmistelu.

Työsuunnitelma

Projekti toteutetaan kaksijakoisesti. Tavoitteena oleva järjestelmä jaetaan minimaaliseen järjestelmään (base system) ja sen päälle rakennettavaan järjestelmään. Eri osille annetaan vastuujäsenet.

Koska projekti on jaettu osiin pääsevät kaikki projektin jäsenet tekemään heti omaa vastuualuetta.

  • Käyttöjärjestelmä = Himanen & Jylhä
  • Omxplayer = Friman & Jokela
  • XBMC = Latvanen
  • Quake 3 = Himanen & Jylhä

Muita mahdollisia osia

  • LXDE työpöytäympäristö
  • ssh-palvelin

Jos LFS:n teko alusta-alkaen muodostuu mahdottomaksi, on varasuunnitelmana käyttää jo olemassa olevaa lfs-julkaisua (http://www.intestinate.com/pilfs/) ja kääntää ohjelmat siihen. Muuten projekti pidetään samana. Tällöin keskitytään softan nopeuteen ja käytettävyyteen. Käännetään ja optimoidaan softaa itse ym ym.

Jos käyttöjärjestelmä saadaan hyvissä ajoin kasaan, siitä tehdään päähaara. Jokainen rakentaa päähaaran päälle ohjelmakokonaisuuksia tai ohjelmia, jolloin LFS-jakelun kehitys haarautuu. Kun ohjelmistot on todettu toimiviksi, ne hyväksytään päähaaraan.

Tavoitteena on siis kehittää itse tekemämme käyttöjärjestelmän päälle rakennettuja sivuhaaroja ja sulauttaa ne päähaaraan tarvittavan testauksen jälkeen.

Projektinhallinnolliset menettelytavat

Projektin tiedostot tallennetaan Google Drive -pilvipalveluun. Etäkonferenssit pidetään Google Hangouts -VOIP-ohjelmalla.  Pienemmät keskustelut käydään IRC:n välityksellä.

Yksilötyö raportoidaan viikottain yhteiseen blogiimme. Raportit kirjoitetaan suomeksi. Myöhemmin blogipostit kootaan myös erilliselle nettisivulle, jonka toteuttaa Tuomas. Nettisivun toteutus ei sisälly projektin aikabudjettiin.

Kategoriat:Uncategorized