perjantai 10. lokakuuta 2008

Näin kaatuu Linux

Linux on normaalisti varsin luotettava. Ajurit lienevät syyllisiä useimpiin kaatumisiin. Piireissä on tapana syyttää varsinkin suljettuja ajureita. Tutkimustietoa kaatumisten syistä tuskin on. Microsoft on jo vuosien ajan kerännyt tietoa OCA-järjestelmän avulla ja todennut, että useimmiten Windowsin kaataa jonkin muun kuin Microsoftin koodi.

Linuxin kaataminen haluttaessa on varsin helppoa, mutta tosin vaikeampaa kuin Windowsin. Linuxin eduksi voidaan tosin lukea ajureiden kehittämisen matala aloituskynnys Windowsiin verrattuna. Ubunnussa riittää asentaa paketit build-essential ja module-assistant. Tämän jälkeen tehdään seuraavansisältöinen Makefile:

obj-m := panic.o
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KDIR) M=$(PWD) modules
Varsinainen lähdekoodi ei juuri yksinkertaisempi voisi olla:
//panic.c:

#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");

static int panic_init(void)
{
panic("Panic!");
}

module_init(panic_init);
Sitten tarvitsee vain rakentaa moduuli komennolla make. Tämän jälkeen moduuli asennetaan komennolla sudo insmod panic.ko. Linuxin kaataminen on siis tällä ajurilla siinä mielessä vaikeampaa kuin Windowsin, että Linuxissa tarvitaan ylläpito-oikeudet itse kaatamiskäskyyn. Tietysti Linuxiinkin voisi koodata näppäimistöajurin, joka kaataa samalla periaatteella kuin Windowsin, mutta tämä vaatiikin jo astetta syvempää ymmärrystä näppäimistöajurin toiminnasta.

Ei kommentteja: