Monday 7 March 2011

Отново и отново

Wireshark отново излиза с бъг фикс версия 1.4.4, и разбира се ми предстои нова компилация. Повече подробности на сайта на проекта:
http://www.wireshark.org/docs/relnotes/wireshark-1.4.4.html

Компилацията досега правех винаги на домашния комп, но сега ще я пусна на ВМ на работния - и без това резултатът в края е .deb пакети, а после е лесно. Също не е зле да се провери дали kismet излиза с нова версия. Да не забравяме и ядрото, моят звяр е 2.6.37.1, а на линия е вече 2.6.37.2, т.е. - още една компилация ;-)

Monday 10 January 2011

Компилиране "на части"

След целия sturm und drang покрай 2.6.37-sched както обикновено се сещам за липсващ модул. "Липсващ" в смисъл не влязал в компилацията. Досещате се става дума за UAS (USB attached SCSI). Който вече се разбрахме не ми влиза още в работа, но какъв шанс да се научиш да компилираш модул отделно от ядрото. И винаги започваме с google: "compile single kernel module" е първото предположение. Постепенно се изчитат разни видове и родове документи до достигането до TLDP и The Linux Kernel Module Programming Guide. Вече подкован теоретично пробвам:

find src/linux-2.6.37/ -name uas*c
cd src/linux-2.6.37/drivers/usb/storage/
ll uas*
cd ../../../
make M=drivers/usb/storage/
make CONFIG_USB_UAS=m drivers/usb/storage/


Наблюдава се известен ефект от рода на "CC [M] drivers/usb/storage/uas.o", не точно каквото се търси. А се търси модул uas.ko. Тогава да сменя src/linux-2.6.37/drivers/usb/storage/Makefile? Речено-сторено:

$ cat Makefile
obj-m += uas.o

all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules

clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean

Нова компилация:

cd src/linux-2.6.37/drivers/usb/storage/
$ make
make -C /lib/modules/2.6.37-sched/build M=/home/drago/tmp/linux-2.6.37/drivers/usb/storage modules
make[1]: Entering directory `/home/drago/tmp/linux-2.6.37'
CC [M] /home/drago/tmp/linux-2.6.37/drivers/usb/storage/uas.o
Building modules, stage 2.
MODPOST 1 modules
LD [M] /home/drago/tmp/linux-2.6.37/drivers/usb/storage/uas.ko
make[1]: Leaving directory `/home/drago/tmp/linux-2.6.37'


Това беше, остават проби от сорта "защо ги ручахме жабетата":

$ modinfo ./uas.ko
filename: ./uas.ko
author: Matthew Wilcox and Sarah Sharp
license: GPL
srcversion: A6AD03F37C0CDE765E33F4B
alias: usb:v*p*d*dc*dsc*dp*ic08isc06ipAA*
alias: usb:v*p*d*dc*dsc*dp*ic08isc06ip62*
alias: usb:v*p*d*dc*dsc*dp*ic08isc06ip50*
depends:
vermagic: 2.6.37 SMP mod_unload modversions 686

$ sudo insmod ./uas.ko
$ lsmod | grep uas
uas 7100 0
$ sudo rmmod uas
$ lsmod | grep uas
$ sudo tail /var/log/messages
Jan 10 19:14:26 ubuntu kernel: [10517.104535] usbcore: registered new interface driver uas
Jan 10 19:15:07 ubuntu kernel: [10558.230712] usbcore: deregistering interface driver uas
$ sudo cp uas.ko /lib/modules/2.6.37-sched/kernel/drivers/usb/storage/
$ sudo depmod -a
$ sudo modprobe uas
$ lsmod | grep uas
uas 7100 0
$ sudo rmmod uas

Толкова за днес...