Turvakamera web-kameran ja Linuxin avulla

Debian Administration ”blogissa” on esitelty ohjeet, kuinka Linuxin ja web-kameran avulla saadaan rakennettua turvakamera käyttämällä motion ja ffmpeg -ohjelmia. Lyhyesti sanottuna Motion -ohjelma tunnistaa kuvasta liikettä ja ffmpeg tekee kuvista videon. Kohtalaisen yksinkertainen turvakamera, joskin kuvanlaatu varsinkin hämärässä jättänee toivomisen varaa.

Google Earth Linuxissa

Google Earth on saatavilla Windowsille ja Macille, mutta Linux versiota ei vielä ole julkaistu, vaikka Google Earth onkin toteutettu alustariippumattomasti käyttäen Qt-kirjastoja ja OpenGL:ää. Tai näin ainakin luin netistä. Ohjelma on kuitenkin mahdollista saada toimimaan Linuxilla käyttäen Wineä.

En ole juurikaan Winen kanssa aikaisemmin jaksanut leikkiä, sillä olen ollut tyytyväinen ilmankin ja Mac OS X on täyttänyt ne harvat ”windowsmaiset” tarpeet. Syksyllä Wine saavutti beta -asteen ja kehitystä toimivuuden suhteen oli tapahtunut, joten oli aika kokeilla miten eri ohjelmat sillä toimisivat.

AMD64 ja 64 bittinen Gentoo ei ole se helpoin alusta testailla eri ohjelmia ja varsinkin Winen kanssa oli aikaisemmin ongelmia. Nyt kuitenkin Wine 0.9.7 asentui ongelmitta. Winelle on saatavissa erilaisia apuohjelmia muun muassa ohjelmien asennukseen ja lähdinkin liikenteeseen WineToolsilla. Winetoolsin voi asentaa itse hakemalla sivuilta tar-pallon tai Gentoossa portagen avulla hakemalla ensin WineTools ebuildin, eli Bugin numero 46390.

Aluksi asentelin ”Fake Windowsin”, ”DCOM98:n”, muutamat Truetype fontit ja sitten Internet Explorer 6:n. Tämän jälkeen olikin aika kokeilla Winetoolsissa listattuja ohjelmia, jotka on testattu toimiviksi Winellä. Google Earth asentuikin ongelmitta, mutta toiminta jätti toivomisen varaa. Heti alkuruudun jälkeen konsoliin tuli virhe ”X connection to :0.0 broken (explicit kill or server shutdown)” ja Wine kaatui. Koska Winetoolsin toiminta on testattu vain Winen versioilla 0.9[123], oli siis kokeiltava vanhempaa versiota. Ensin 0.9.3, jolla ongelma pysyi samana, mutta 0.9.2 versiolla Google Earth toimi mainiosti, tai ainakin melkein. Maapalloa pystyi ”selaamaan”, mutta valikot eivät toimineet.

gearth

Ongelmaan löytyi kuitenkin ratkaisu Googlettamalla esiin Gentoo Wiki, jossa Google Earthin asennus ja ongelmatilaneet oli kuvattu. Muokkaamalla ”Program Files/Google/Google Earth/kvw/default_lt.kvw” tiedostoa Wikin ohjeilla, alkoivat myös valikot näkymään. Kauneusvirheeksi jäi vielä fonttien toimivuus. Wikissä oli kuvattu muutamia keinoja fonttien korjaamiseksi, mutta en niitä jaksanut testata. Myös toimivuus 0.9.3, 0.9.4 ja 0.9.5 versioillakin oli mainittu.

gearth 2

Swap-tiedostot

Swappia voi Linuxissa käyttää perinteisen swap-osion asemesta myös suoraan tiedostoista, eli swap-fileistä. Swapin hallinta on muutenkin helppoa, sillä swap-tilan voi kytkeä päälle ja pois ilman uudelleenkäynnistystä ja vaikka tila olisikin käytössä.

Perinteisesti swap on sijoitettu erilliselle osiolleen (mahdollisesti turvallisempaa), mutta swapin voi käytännöllisistä syistä luoda myös tiedostoja käyttäen. Swap-tiedostot ovat swap-osioihin verrattuna helpompia luoda, poistaa ja muuttaa kooltaan.

Swap-tiedoston luominen onnistuu seuraavalla komennolla (x86-alustalla maksimissaan 2GB), kuten ”man mkswap” ohjeistaa:
dd bs=1024 count=1M if=/dev/zero of=/path/to/swapfile.n

Komento luo 1 GB kokoisen tiedoston (1 MB * 1024) paikkaan ”/path/to/swapfile.n”

Swap-tilalle voidaan antaa myös prioriteetteja (man 2 swapon). Korkeamman prioriteetin swap-tila käytetään ennen alemman prioriteetin swappia ja saman prioriteetin swap-tila ”jaetaan” (striped). Prioriteetti määritellään joko swapin aktivoinnissa ”swapon” komennolla tai /etc/fstab tiedostossa (esimerkki).

# swap space in device partitions
/dev/hda2        none    swap    pri=5,defaults 0 0
/dev/hde2        none    swap    pri=5,defaults 0 0
# swap space in swap files
/work/swapfile.1 none    swap    pri=5,defaults 0 0
/work/swapfile.2 none    swap    pri=5,defaults 0 0

Kun swap-tila on varattu, täytyy se alustaa swap-otsikkotiedoilla seuraavasti.

	mkswap /dev/hda2
	mkswap /dev/hdb1
	mkswap /work/swapfile.1
	mkswap /work/swapfile.2

Swap-tila aktivoidaan järjestelmän käynnistyksessä ja myöhemmin sama voidaan myös tehdä ”swapon” komennolla ennen swapin käyttöönottoa, esimerkiksi seuraavasti:

	swapon /dev/hdf1
	swapon /work/swapfile.3

Swap-tilan käyttäminen useammalta osiolta tai swap-tiedostojen jakaminen useammalle osiolle vastaa RAID-0:n toimintaa. Yleensä on hyvä olla useampi swap-alue samalla prioriteetilla toiminnan tehostamiseksi. Jos koneessa on riittävästi muistia niin swappia ei periaatteessa tarvita ollenkaan, sillä swapin käyttäminen on hitaampaa kuin muistin käyttäminen.

Swapin poistaminen käytöstä voidaan suorittaa ”swapoff” komennolla (man swapoff).

	swapoff /work/swapfile.1
	swapoff /work/swapfile.2
	swapoff /dev/hdb1
	swapoff /dev/hda2

Lisää swapista voi lukea swap-mini-howto:sta

Pakettienhallinta Debianissa

Eri Linux jakelupaketeissa on ohjelmistojen jakelu ja päivitys toteutettu hieman erilailla. Nykyään lähes jokaisessa distribuutiossa on jonkinlainen hallittu pakettimanageri, joka hallitsee ohjelmien riippuvuudet, helpon asennuksen ja päivittelyn. FreeBSD:ssä on Ports, Gentoossa Portage, Susessa Yast, Fedora Coressa Yum ja Debianissa Apt.

Debianin Apt on toimiva kokonaisuus, ainakin omasta mielestäni. Ehkä sen toimivuus voisi olla hieman samanlaisempaa kuin Gentoon Portagen, mutta ulkonäölliset asiat ovat sivuseikkoja. Aptin käyttäminen onnistuu ”apt-get” ohjelmalla. Perustoiminnot onnistuvat komennoilla ”apt-get install foopacket” ja ”apt-get remove foopacket”.

Koska poistamalla paketin, ei riippuvuuksina asennettuja paketteja poisteta, voidaan poistetun ohjelman riippuvuuksia tarkastella komennolla ”dpkg -p foopacket” ja sitten poistaa apt-getillä. Lisäksi konfiguraatiotiedostot pitää mahdollisesti poistaa käyttämällä komentoa ”dpkg -P” eli ”–purge” lippua.

Lähdekoodeista asentamiseen komento ”apt-get source foopacket” hakee ohjelman lähdekoodit ja kääntäminen onnistuu menemällä lähdehakemistoon ja komentamalla ”./debian/rules”. Paketin riippuvuudet on helppo asentaa ”apt-get build-dep foopacket” -komennolla.

Systeemin asennetut paketit näkee komennolla ”dpkg -l” ja tiettyä pakettia voi etsiä komentamalla ”dpkg -l \*foopacket\*” joka listaa paketit joissa on sana ”foopacket”. Listaus näyttää kaikki järjestelmän paketit, ei vain asennettuja, joten kätevä myös pakettien etsimiseen. Listauksesta näkee myös paketin tilan; asennettu, asennettu ja poistettu vai poistettu mutta ei purgetettu. Paketteja voi etsiä myös ”apt-cache search foopacket” komennolla.

Paketin informaation näkee komennolla ”dpkg -p foopacket” ja ”dpkg -L foopacket” näyttää paketin asennetut tiedostot. ”dpkg -S foo.sh” voi etsiä tiedostoa ja mihin pakettiin kyseinen tiedosto kuuluu.

Lisää ohjelman käytöstä voi lukea vaikkapa Apt manuaalista.

Paketeista voi etsiä tietoa myös Debianin pakettisivulta. Web-käyttöliittymä on hieman ystävällisempi kuin konsolipohjainen liittymä.

Debian ja RAID1

Joulukuun kiireiden ohessa löytyi aikaa päivittää palvelinkonettakin. Ylimääräisenä ollut 200GB Seagate 7200.7 löysi uuden paikan toisen samanlaisen levyn vierestä RAID1 järjestelmää varten. Lopputuloksena oli 30GB:n järjestelmäosio ja 40GB:n kotihakemisto RAID1 peilattuna. Hieman toimintavarmuutta heikon tietokoneraudan maailmassa.

Operaatio sujui hyvin, alkukangerteluiden selvittyä, ja valmiiden ohjeiden mukaan tehtäessä tulos oli onnistunut. Lisää Redundant array of independent disks eli RAIDista voi lukea Wikipediasta.

Samalla palvelin söi sisuksiinsa 512MB SDRAMia ja Nvidia Geforce2 MX näytönohjaimen. Alkuperäisestä kokoonpanosta ei enää ole jäljellä kuin Intelin pro+ 10/100 verkkokortti.

Bleeding edge: Bash

Vinkki:
Gentoossa app-shells/bash-3.1 emergettaminen rikkoo käynnistysskriptien toiminnan kuten verkon asetukset. Bash-3.1 hajottaa baselayoutin syntaksin toiminnan, joten paketin maskaaminen (>=app-shells/bash-3.1) ja Bash-3.0:aan palaaminen auttaa.

http://bugs.gentoo.org/show_bug.cgi?id=115142

WLAN tukiasema ja zen ostamisen vaikeus

Olen tähän asti käyttänyt kotona iBookin sisäänrakennettua Ethernet-liitäntää ja koululla langatonta yhteyttä. Langaton yhteys on kuitenkin kätevä ja johtojen orjuudesta on päästävä eroon. Olenkin siis tutkaillut markkinoilla löytyviä WLAN tukiasemia ja kuten tyypillistä, hermothan siinä meinaa mennä. Vaikka lukuisista vaihtoehdoista on saatu karsittua pois suurin osa muun muassa ominaisuuksien ja hinnan osalta, ei päätöksen tekeminen ole helppoa.

Alkujaan vaihtoehtoina olivat ZyXEL G-2000 Plus (ilman Plussaa), Linksys WRT54GC ja Linksys WRT54G. Koreesta kuoresta huolimatta ensimmäiseksi listasta tippui ZyXEL hintansa ja ominaisuuksiensa takia. Seuraavaksi listasta karsiutui ulkonäöllisistä seikoista johtuen WRT54G ja päätös WRT54GC:n ostamiseksi oli lähes sinetöity. Techzone.comin ja Tomsnetworking.comin arvostelut ja testit laitteesta olivat lupaavia. Tosin laitteen pieni koko ja viisi verkkopiuhaa ei kovin käytännölliseltä vaikuta. Mukana ei tule myöskään erillistä antennia, vaan se on lisävarusteena (antenni n. 40e, laite 58e).

Jotta asia ei menisi näin helpoksi, ilmaantui markkinoille ”uusi” tuote, Linksys WRT54GL. Sama laite kuin WRT54G, mutta eri raudalla. L-malli toimisi Linuxilla, kuten v4-versiomallin G-malli. Tomsnetworking.comin testi laitteesta ei pahaa juuri sanonut. Ciscohan osti jokin aikaa sitten Linksysin ja nyt v5-malli käyttää VxWorksiä Linuxin sijaan, eikä kolmannen osapuolen firmwaret kuten OpenWrt enää toimi. Lisäksi v5 mallissa on puolitettu Flash- ja RAM muistin koot (OpenWrt.org laitelista). Listasta myös selvisi, ettei C-malli tukisi kolmannen osapuolen firmwareja.

WRT54G WRT54GC

Vaikka en ole varma tarvitsisinko muun kuin laitteen valmistajan tarjoaman ohjelmiston tuomia, mahdollisesti uusia, ominaisuuksia, on aina syytä pitää kaikki mahdollisuudet auki. Engadget.comissa ainakin arvostettiin päivitettävyyttä. Luultavasti pitänee odottaa pari päivää lisää, että Verkkokauppa saa Linuxilla toimivia tukiasemia maahan. Tästäkin Linuxin ja vapauden ilosta hintalapussa on 3e enemmän kuin suljetussa tuotteessa (70e vs 67e).