apt-get, apt-key ja gpg-key

Debianissa paketinhallintajärjestelmä Apt:ssa on versiossa 0.6 tullut vakiona allekirjoitusten tarkistus (signature) päällä. Näin varmistetaan, että Debiania peilaavilla palvelimilla on oikeita paketteja. Allekirjoitusten tarkistaminen voi kuitenkin aiheuttaa hieman ihmetetystä, jos käytetyistä Apt:n lähteistä ei ole GPG-avainta tallessa allekirjoitusten varmistamiseksi.

Tarvittavien GPG-avainten hakeminen onnistuu kuitenkin helposti, sillä Apt (apt-get update) antaa puuttuvan avaimen numeron, jonka perusteella haluttu avain voidaan hakea avainpalvelimelta. Ensin uusi avain haetaan avainpalvelimelta koneelle, jonka jälkeen avain voidaan lisätä Apt:n tietoisuuteen apt-key ohjelmalla. Tämän jälkeen voidaan suorittaa apt-get update uudestaan, jolloin kaiken pitäisi taas olla kunnossa.

Lyhyesti sanottuna avaimen hakeminen ja lisääminen onnistuu seuraavasti:

# gpg --keyserver wwwkeys.eu.pgp.net --recv-keys <pub_key_no>
# gpg --armor --export <pub_key_no> | apt-key add -
# apt-get update

Linuxin perustyökalut: Screen

Screen -ohjelma on yksi kätevimmistä työkaluista mitä Unix-pohjaisista käyttöjärjestelmistä löytyy. Screenillä voi laittaa ohjelman tausta-ajoon, jolloin ohjelma toimii, vaikket itse olisikaan yhteydessä tietokoneeseen. Erittäin kätevää ja yleistä muun muassa Irssien ajamiseen palvelimilla.

Screenin käyttäminen on suhteellisen yksinkertaista. Peruskäyttöön ei tarvitse opetella kuin muutama komento ja homma toimii. Kun screen-istunto on saatu tehtyä komennolla screen, voidaan sinne käynnistää esimerkiksi Irssi-ohjelma. Ohjelman saa jätettyä taustalle komennolla Ctrl+a d ja takaisin päästään kirjoittamalla screen -r tai screen -rd, jos istunto on jäänyt auki jollekin toiselle koneelle. Jos halutaan luoda useita Screen-istuntoja, voidaan eri istunnoille antaa eri nimet käynnistämällä Screen komennolla screen -S <nimi>. Haluttuun istuntoon päästään kirjoittamalla screen -r <nimi>.

Peruskomentojen lisäksi Screenissä on paljon muitakin toimintoja. Screen-ikkunoita voidaan luoda useita yhden Screen-istunnon sisään, istunto voidaan lukita ja ikkunasta voidaan kopioida alueita. Seuraavassa listassa on listattu muutamia peruskomentoja Screenin käyttämiseen.

  • Ctrl+a c, uusi ikkuna
  • Ctrl+a n, seuraava ikkuna
  • Ctrl+a p, edellinen ikkuna
  • Ctrl+a ”, valitse ikkuna listasta
  • Ctrl+a Ctrl+a, edellinen valittu ikkuna
  • Ctrl+a d, laita screen-ikkuna taustalle terminaalissa
  • Ctrl+a A, aseta ikkunalle otsikko
  • Ctrl+a x, lukitse screen-istunto
  • Ctrl+a [, voit kopioida alueita scrollbackista painamalla Enteriä aloittaaksesi ja lopettaaksesi kopioinnin.
  • Ctrl+a ], liitä kopioimasi teksti
  • Ctrl+a >, kirjoita kopioimasi teksti tiedostoon
  • Ctrl+a < , lue tiedostosta sinne kirjoittamasi teksti
  • Ctrl+a ?, näytä näppäinkomennot

Lisää Screenin toiminnasta voi lukea man-sivuilta kirjoittamalla terminaalissa man screen.

OpenWrt Workshop ja säätämisen ilo

Tänään oli yliopistolla Atk-kerho Ruutin ja LTY:n tietoliikennetekniikan laitoksen järjestämä hakkeripäivä aiheena OpenWrt. Koska jokaiseen mahdolliseen ja mahdottomaan laitteeseen pitää änkeä Linux, asennettiin OpenWrt Workshopissa muutamaan Linksys Wrt54G tukiasemaan ja yhteen Buffalon tukiasemaan OpenWrt -firmwaret. Tavoitteena oli päästä ideoimaan ja kokeilemaan erilaisia asioita, joita voidaan tehdä OpenWrt:n ja sulautetun reititinlaitteen kanssa.

Ideoinnin ja OpenWrt:hen tutustumisen jälkeen itse firmwaren asennus sujui helposti tukiaseman web-liitynnän kautta. Laitteisiin asennettiin OpenWrt White Russian RC5 käyttäen Squashfs-versiota. Tällöin osa systeemistä on vain-luku -muodossa (”/rom” -osio, Squashfs -tiedostojärjestelmä) ja muutokset järjestelmään tehdään JFFS2 -muotoiseen ”/” -osioon. Onnistuneen päivityksen jälkeen laitteeseen pystyi ottamaan yhteyden telnetillä ja salasanan asettamisen jälkeen tukiasemaan voidaan kirjautua käyttämällä ssh:ta.

Uusien ohjelmien asentaminen onnistuu Debian-tyyliin Apt-työkalua muistuttavaa ipkg:ta käyttämällä. Ohjelmatarjontaa on snmp:sta WWW-palvelimeen. OpenWrt ja saatavilla olevan ohjelmat tarjoavat Linksysin firmwareen verrattuna uusia mahdollisuuksia tukiaseman käyttämiseen, ja perusasetusten jälkeen laitteen syslog asetettiinkin kirjoittamaan logit verkon toiselle koneelle, jolloin voidaan seurata mitä tukiasemassa tapahtuu. Lisäksi workshopissa leikittiin muun muassa Kismetin, virtuaalitunnelin ja NFS-levyjakojen kanssa. Linksys Wrt54G:n 4MB flash-muisti ei paljon ylimääräistä tilaa ohjelmille tarjoa, mutta valittujen toimintojen toteuttamiseen ihan riittävästi. Neljästä megasta puolet menee vielä firmwarelle, joten käytettävää tilaa on nihkeät alle kaksi megaa. Tukiasemaan toivoisikin USB-liitintä ulkoisen USB-kiintolevyn liittämistä varten, jolloin saataisiin lisää tilaa ohjelmille ja päästäisiin eroon flashille kirjoittamisesta.

Itse jatkoin tästä iBookin kanssa säätäen langattomalle yhteydelle WPA/WPA2 salauksia, joka pitäisi olla suhteellisen triviaalia. Salausten ja iBookin Airportin kanssa sitten menikin aikaa, koska Airport on hieman nirso. Applen käyttäjäystävällisyys ylettyy myös virheilmoituksiin ja ”The network does not support the requested encryption method” tai ”There was an error” -tyyliset virheilmoitukset eivät todellakaan lämmittäneet mieltä, kun laite ei suostunut yhteystyöhön. Eri WPA, WPA2, TKIP ja AES yhdistelmien jälkeen päädyin ainakin tällä kertaa päivittämään laitteeseen Linksysin firmwaren takaisin, joka taisi tosin olla hieman tuoreempi versio kuin alunperin.

OpenWrt ja hallintapaneeli vaikuttivat yleisesti ihan hyviltä. Web-käyttöliittymä oli selkeä ja lisäksi asetuksia pystyi muokkaamaan suoraan hallintakonsolista ssh:n kautta. OpenWrt on vielä kehitysvaiheessa, mutta vaikutti ihan toimivalta kokonaisuudelta asennuksen ja dokumentoinninkin osalta. Pitänee seuraavaa versiota testailla uudestaan Windowsin ja Mac OS X:n kanssa, jos vaikka WPA2 suostuisi toimimaan. Linksysin firmwarella WPA2 ja TKIP+AES lähtivät toimimaan ilman säätämistä, joten jossain täytyy olla eroa. Myös syvempi tutustuminen *BSD:hen ja Darwiniin auttaisi kiertämään Applen ”käyttäjäystävälliset” virheilmoitukset ja saamaan enemmän informaatiota virheistä.

Linuxin kerneli ja eri sorsat

Linuxille on saatavilla useita erilaisia kernelin sorsia, eli ytimen lähdekoodeja, joilla voi terästää omaa Linuxia haluamillaan tavoilla. Vanilla-kernel on se perus-kerneli, jonka päälle sitten kasataan keko patcheja ja saadaan uusia ominaisuuksia ja kenties lisää ”tehoa” irti koneesta.

Normaalisti käytän Gentoossani Con Kolivasin ck-sources kerneliä ja aikaisemmin testailin cko-sourceja, jotka perustuvat ck-sourceihin, mutta tuovat lisää ominaisuuksia mm. tiedostojärjestelmän ja alsan osalta. Suorituskyvyssä ei juurikaan ollut eroa ja palasin päivitettävyyden takia takaisin käyttämään ck-sourceja. Lisäksi cko-sourcesin kehitys loppui.

Huomasin pari päivää sitten, että cko-sources jatkaa tavallaan elämää beyond-sources nimellä (aikaisemmin nimellä archck-sources) ja yhdistää nyt myös nitro-sourcesissa olleet patchit. Beyond-sourcesiin löytyi valmis ebuild Gentoon bugi-kannasta numerolla #103354. Ebuildit helpottavat huomattavasti hieman erikoisempien ja paketinhallinnasta löytymättömien ohjelmien kokeilemista.

Kaikkea on aina kiva testata, mutta koska käytän alsaa moduulina, eikä tarvetta ole erikoisimmille tiedostojärjestelmille kuten reiser4 tai UnionFS, on erikoisimpien kernelien käyttäminen hieman turhaa. Myöskään suorituskyvyssä en eroa huomannut ck-sourcesiin verrattuna. Viime syksyn kernelien interbench -testien perusteella eri kernelien erot perusasetuksilla ovat lähinnä käyttäjän korvien välissä. Erot tulevat lähinnä esille, jos tarvitaan hieman erikoisempia ominaisuuksia tai halutaan kehuskella kavereille erikoisella kernelillä.

Debian ja puuttuva tiedosto

Debian Administration kirjoittaa keinosta löytää jokin tietty kirjasto tai tiedosto ja vastaava Debian-paketti, joka sisältää haetun tiedoston.

Tiedoston etsiminen paketista onnistuu käyttämällä dpkg:tä –search argumentilla. Toinen vaihtoehtoinen tapa on käyttää apt-file -komentoa.

Ensin apt-file pitää asentaa komennolla: apt-get install apt-file. Komennolla apt-file update haetaan data, josta apt-file etsii tiedostoja. Tämän jälkeen voidaan etsiä tiedostoa debian-paketeista komennolla: apt-file search <tiedosto> .

Toiminto näyttää esimerkiksi seuraavalta ja saamme selville, että alisp.h löytyy paketista libasound2-dev:

~$ apt-file search alisp.h
libasound2-dev: usr/include/alsa/alisp.h

HP LinuxForum

Hewlet Packard, eli HP, järjestää jälleen ilmaisen Linux-aiheisen tapahtuman. Tapahtuma pidetään torstaina 4.5.2006 Helsingin Messukeskuksessa ja teemoina ovat Linux ja Total Cost of Ownership (TCO), Linux ja tietoturva sekä Open Source. Ohjelma koostuu esityksistä, paneelikeskusteluista ja esityksiä tukevista ratkaisunäyttelyistä.

Paneelissa keskustelemassa on mm. Novellin toimitusjohtaja Kim Aaltonen, Microsoftin tietoturvajohtaja Kimmo Bergius, F-Securen tutkimusjohtaja Mikko Hyppönen, sekä Market-Vision analyytikko Ilkka Holopainen. Näyttelyssä mukana ovat: F-Secure Oy, Intel, Nordicmind Oy, Novell, Oracle, RedHat, Suomen Linux -käyttäjäyhdistys (FLUG), Suomen Open Source -keskus (COSS) ja Tieturi Oy.

Tapahtuman sivut ja lisätietoa löytyy osoitteesta: http://www.hp.fi/linuxforum/index.html ja ilmoittautuminen pitää suorittaa viimeistään keskiviikkoon 26.4.2006 mennessä.

Tilaisuuden päätteeksi luvataan mukava Linux-yllätys.

Vim ja tekstin automaattinen sisennys

Linuxille on monia hyviä tekstieditoreja komentorivikäyttöön. Toiset pitävät nanosta, toiset emacsista, mutta mielestäni kenties parhain on kuitenkin vim. Tuo ohjelma, jonka ekaa kertaa käynnistäessäsi et tiennyt kuinka siitä pääsee pois. Myöhemmin viisaammat kertoivat ESC-:q -komennon ja kirosit koko ohjelman syvimpään hautaan. Jos ensimmäinen käyttökerta ei pelästyttänyt, kannattaa tutustua vimtutor -ohjelmaan ja oppia käyttämään vim:iä, sillä vim on pieni ja tehokas tekstieditori.

Vim on kehittyvä ohjelma ja uudet versiot tuovat uusia ominaisuuksia, joista kaikki eivät ole aina toivottuja. Jossain vaiheessa huomasin, että liittäessäni tekstiä vimissä auki olevaan tiedostoon, menivät kaikki liitetyn tekstin sisennykset aivan ketuilleen. Onneksi Google kertoi oikean vastauksen ongelmaan löytyvän vim.org -sivustolta. Kysymykseen oli annettu monia eri ratkaisuja, mutta itselle ja omaan tarkoitukseen kelpaava ratkaisu löytyi asettamalla kotihakemistoni .vimrc -tiedostoon rivit:

set nosmartindent
set noautoindent 

Nyt vim ei automaattisesti käytä edellisen rivin sisennystä liitettäessä tekstiä tai sisennä automaattisesti, kun kirjoitetaan koodia. Ei aivan täydellinen ratkaisu, sillä automaattinen sisennys koodatessa on kyllä kätevä.

Ohjeissa ehdotettiin myös lisäämään filetype off .vimrc -tiedostoon tai F11-napin määrittämistä :set paste -komennolle:

" Paste Mode On/Off
map <F11> :call Paste_on_off()
set pastetoggle=<F11>

let paste_mode = 0 " 0 = normal, 1 = paste

func! Paste_on_off()
        if g:paste_mode == 0
                set paste
                let g:paste_mode = 1
        else
                set nopaste
                let g:paste_mode = 0
        endif  
        return
endfunc

Kyseinen funktio mahdollistaa paste-ominaisuuden päälle/pois -kytkemisen ja nyt myös voidaan käyttää autoindent ja smartindent -optioita koodauksen helpottamiseksi.