Author: Jani
-
[Ratkaisu] Km-moduulin kääntäminen ei onnistu
- Lähtökohta
- Näytönohjaimeni on Connect 3D:n valmistama, AGP-väylässä kiinni oleva Radeon 9600 -piirisarjalla varustettu All In Wonder. Kaappausta varten All In Wonder -näytönohjaimille on olemassa GATOS-projektin tuottama
km
-moduuli, jota ei ole saatavilla pakettivarastoista.
Linux-ytimestä käytössäni on versio 2.6.22-14-generic.
Pakettienhallinnassalinux-headers-generic
jacvs
on asennettuna. - Ongelma
- Jos lataan km:n sen www-sivuilta ja yritän kääntää lähdekoodia, kääntäminen epäonnistuu. Lisäksi lähdekoodissa ei ole Radeon 9600 -piirisarjan tunnistamiseen tarvittavia tietoja.
- Ongelman syy
- Km:n lähdekoodi on niin vanhaa ettei se ole yhteensopiva Linux-ytimeni kanssa eikä siinä ole huomioitu Radeon 9600 -piirisarjaa.
- Ratkaisu
- Lataan km:n lähdekoodin uusimman version
CVS
-versionhallintajärjestelmän avulla ja korjaan lähdekoodin toimivaksi.- Lataan km:n lähdekoodin uusimman version seuraavalla komennolla:
cvs -z3 \ -d:pserver:anonymous@gatos.cvs.sourceforge.net:/cvsroot/gatos \ co -P km
- Lataan korjaavan paikkaustiedoston seuraavalla komennolla:
wget http://mummila.net/vuorovaikutus/files/2008/r9600-2_6_22.patch
- Sovellan paikkaustiedoston tiedot km:n lähdekoodiin seuraavalla komennolla:
cd km && patch -p1 -i ../r9600-2_6_22.patch
- Nimeän 2.6-sarjan Linux-ytimelle sopivan
Makefile
-tiedoston niin ettämake
-komento käyttää sitä:
mv Makefile-2.6 Makefile</code
Kun tämän jälkeen käytän make-komentoa lähdekoodin kääntämiseen, sen suorittaminen onnistuu.
- Lataan km:n lähdekoodin uusimman version seuraavalla komennolla:
- Huomautuksia
-
- Vaikka kääntäminen onnistuu ja
sudo make test
-komennolla tehty moduulien käyttöönotto onnistuu, kaappaaminenAVview
-kaappausohjelmalla ei toimi. Ongelma saattaa liittyä X.orgiin. -
Olen sisällyttänyt paikkaustiedostoon tietoa monista eri lähteistä:
- Vihje Radeon-piirisarjan PCI-tunnisteen lisäämisestä tuli km-moduulin kehittäjältä, Vladimir Dergachevilta, ja sen käytännön toteutuksen jäljittelin persall88:lta. En lisännyt tunnistetta toiselle, näennäiselle näytönohjainlaitteelle, sillä se ei toiminut.
Pci_module_init
-funktioon liittyneen virheilmoituksen korjasin shinyravenin vinkin avulla.- Muistinhallinnan tarkistuksen ohituksen tekevä paikkaus on Francisco L. Fernandezin käsialaa.
KBUILD_MODNAME
-makroon liittyvän ongelman kiertäminen onnistui LinGregin avulla.
- Vaikka kääntäminen onnistuu ja
-
[Ratkaisu] Komentojen ja niiden ulostulon tallentaminen tiedostoon
- Lähtökohta
- Aion suorittaa monimutkaisen, paljon eri komentoja sisältävän tehtävän komentorivitulkissa.
- Ongelma
- Haluan tallentaa ajamani komennot ja kaiken niiden komentotulkkiin tuottaman ulostulon tiedostoon, jotta voin jälkeenpäin käyttää sitä muistiapuna kuvaillessani miten tehtävän suoritin.
- Ratkaisu
- Voin tallentaa komentorivitulkkiin kirjoittamani komennot ja niiden ulostulon
script
-komennolla.
Seuraavassa esimerkissä suoritan kaksiecho
-komentoa ja yhdencat
-komennon niin, että komennot ja niiden ulostulo tallentuvattesti.txt
-nimiseen tiedostoon. Tällainen, tavallaan script-komennon sisällä ajettava lohko on nimeltään istunto, ja olen lihavoinut sen sisällön seuraavassa:jani@shuttle-xpc:~/tmp$ script testi.txt Skripti käynnistetty, tiedosto on testi.txt jani@shuttle-xpc:~/tmp$ echo "tämä on testi." tämä on testi. jani@shuttle-xpc:~/tmp$ echo "voisin ajaa tässä mitä hyvänsä komentoja" > foo.txt jani@shuttle-xpc:~/tmp$ cat foo.txt voisin ajaa tässä mitä hyvänsä komentoja jani@shuttle-xpc:~/tmp$ exit Skripti suoritettu, tiedosto on testi.txt jani@shuttle-xpc:~/tmp$
Aloitin istunnon tallentamisen
script testi.txt
-komennolla ja lopetin senexit
-komennolla. Testi.txt -tiedostoon tallentui kaikki mitä näiden kahden komennon suorituksen välissä tapahtui eli yllä olevassa lihavoimani istunto, sekä lisäksi istunnon aloitus- ja lopetusaika. Tulostan seuraavassa cat-komennolla testi.txt -tiedoston sisällön ja lihavoin sen:jani@shuttle-xpc:~/tmp$ cat testi.txt Skripti käynnistetty to 28. helmikuuta 2008 09:36:31 jani@shuttle-xpc:~/tmp$ echo "tämä on testi." tämä on testi. jani@shuttle-xpc:~/tmp$ echo "voisin ajaa tässä mitä hyvänsä komentoja" > foo.txt jani@shuttle-xpc:~/tmp$ cat foo.txt voisin ajaa tässä mitä hyvänsä komentoja jani@shuttle-xpc:~/tmp$ exit Skripti suoritettu to 28. helmikuuta 2008 09:37:19 jani@shuttle-xpc:~/tmp$
- Huomautuksia
-
- Istunnon lopettamiseen voi käyttää exit-komennon sijasta näppäinyhdistelmää
Control + D
. - Script-komennon ohjesivu varoittaa, että jotkin interaktiiviset komennot (kuten
vi
) saattavat kirjoittaa tallennustiedostoonroskaa
, eli satunnaiselta vaikuttavia merkkejä. Niiden käytöstä ei välttämättä jää tallennustiedostoon ymmärrettäviä kirjauksia. - Ratkaisussa oleva ensimmäinen esimerkki on sekin tallennettu scriptiä käyttäen; ajoin siis script-komennon istunnossa, jota suoritin toisessa script-komennolla aloitetussa istunnossa. Istuntoja voi siis sisäkkäistää.
- Kaikki komennot tallentuvat
Bash
-komentotulkissa käyttäjäkohtaiseen historiaan, jota voi hallitaHISTSIZE
,HISTFILE
jaHISTFILESIZE
-muuttujien avulla. Komentohistoriaan tallennetaan kuitenkin vain komennot, ei niiden ulostuloa. Lisäksi komentohistorian koko on rajoitettu.
- Istunnon lopettamiseen voi käyttää exit-komennon sijasta näppäinyhdistelmää
-
Kolumni: Tietokoneesi on vaarassa!
Toverini Juha linkkasi minut kuvaan hauskasti mönkään menneestä huijausyrityksestä: Linux-käyttäjä oli saanut Skypen kautta ilmoituksen, jonka mukaan hänen
Windowsinsa
tietoturva oli vaarantunut, ja missä häntä kehotettiin lataamaanpaikkaustiedosto
ongelman korjaamiseksi. Kyse on tietysti Windows-haittaohjelman levityksestä valheellisen tietoturvailmoituksen avulla.Huomioni kiinnittyi blogimerkinnän perässä olleeseen kommenttiin, jonka mukaan yrityksen kohteeksi joutunut käyttäjä voisi aivan hyvin ollakin vaarassa, koska hän käyttää Ubuntua, joka muistuttaa niin paljon Windowsia. Auts!
Olen kyllä miettinyt, että Ubuntun (ja tietysti muidenkin vastaavien distrojen) tapa kysellä järjestelmänhallinnan salasanaa tuon tuostakin on pikkuisen huolestuttava sikäli, että siinä turtuu hyvin pian toimenpiteen ratkaisevuudelle. Olen itsekin asentanut Gutsyyni järjestelmänhallinnan oikeuksia käyttäen pari pakettia tutkimatta niiden alkuperää näin jälkikäteen ajateltuna riittävän hyvin. Kun web-sivuilla jaeltujen ohjelmapakettien asentaminen järjestelmänhallinnassa vaadittavin oikeuksin on näin suoraviivaista, ollaan jo käytännössä samalla viivalla Vistaa varhaisempien Windowsien kanssa siinä, että tietoturvan mahdollisesti vaarantavien ohjelmien asentelusta tulee liian helposti jokapäiväistä kauraa.
Tähän järjestelmänhallinnan helppouteen tottuneena en kuitenkaan kovin mieluusti enää luopuisi siitä. Ja sikäli uskoisin Linux-käyttäjänä vielä olevani vanhojen Windowsien käyttäjiä paremmassa turvassa, että ainakaan niin kauan kuin en ole onnistunut vaarantamaan järjestelmääni, ohjelmat eivät pääse järjestelmääni käsiksi omine nokkinensa, siis minun siitä tietämättä. Vaarantuminen vaatii periaatteessa aina minulta sen virheen, että annan vaaralliselle ohjelmalle ne järjestelmänvalvojan oikeudet. Mutta miten tätä järjestelmänhallinnan oikeuksien jatkuvaan peräämiseen liittyvää tietoturvariskiä voisi vähentää?
En ole perehtynyt SELinuxiin, mutta se voisi ehkä olla avuksi. Sen lisäksi en kyllä keksi äkkiseltään muuta ratkaisua kuin sen, että perusjärjestelmän päälle ei asenneta mitään muuta kuin virtualisointi, ja käyttäjä päästetään sen jälkeen vain virtuaalihiekkalaatikkoon, jossa saa asennella mitä huvittaa. Isäntäjärjestelmä tarjoaa palomuurin ja muita tietoturvaominaisuuksia, jotka valvovat tätä hiekkalaatikkoa, ja jos isäntä havaitsee hiekkalaatikossa epäilyttävää toimintaa kuten vaikkapa viruksen aiheuttamaksi epäiltyä liikennettä, se puuttuu peliin. Käyttäjää varoitetaan, ja vasta uhan torjumisen tai tietoturvan vaarantumisen paikkaamisen yhteydessä kysytään tarvittaessa oikeita järjestelmänvalvojan oikeuksia, eli oikeuksia isäntäjärjestelmän hallintaan.
Siinä tapauksessa sitten kylläkään käyttäjää ei hiekkalaatikkonsa tyhjäksitekemisen takia välttämättä enää paljoa lohduta se, ettei isäntäjärjestelmä ole vaarantunut. Isäntäjärjestelmä voisi kuitenkin pelkän valvonnan ohella tehdä hiekkalaatikosta myös varmuuskopioita tai järjestelmäkuvatiedostoja (snapshot) säännöllisesti, jolloin kokonaan puhtaalta pöydältä aloittamisen sijasta käyttäjä voisikin valita aiempaan, vielä vaarantumattomaan hiekkalaatikkoon palaamisen eikä siten menettäisi ihan kaikkea.
Lopuksi täytyy vielä todeta, että tähän ehdotukseeni voi olla sisältyä ammottavia aukkoja, sillä en ole tietoturva-asiantuntija, en virtualisointiasiantuntija enkä pidä itseäni edes Linux-asiantuntijana, vaikka siitä kokemukseni näistä kolmesta aiheesta lieneekin kaikkein laajin.