А я веселее придумал...
Идем домой,
$ cd ~
Пишем дружественный модульpavel@suse64:~> cat /home/pavel/fake.c
----
#include <linux/version.h>
#include <linux/module.h>
int fake_init(void ) {
printk(KERN_DEBUG "FAKE ME\n");
return 0;
}
module_init(fake_init);
---
pavel@suse64:~> cat ~/Makefile
---
obj-m := fake.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
---
pavel@suse64:~> make
make -C /lib/modules/2.6.36+/build M=/home/pavel/ modules
make[1]: Entering directory `/media/kernel/linux-2.6'
CC [M] /home/pavel/fake.o
Building modules, stage 2.
MODPOST 1 modules
CC /home/pavel/fake.mod.o
LD [M] /home/pavel/fake.ko
make[1]: Leaving directory `/media/kernel/linux-2.6'
----
Добавляемся в modprobe:
pavel@suse64:~> LD_AUDIT="libpcprofile.so" PCPROFILE_OUTPUT="/etc/modprobe.d/99-fake.conf" ping
ERROR: ld.so: object 'libpcprofile.so' cannot be loaded as audit interface: undefined symbol: la_version; ignored.
Usage: ping [-LRUbdfnqrvVaA] [-c count] [-i interval] [-w deadline]
[-p pattern] [-s packetsize] [-t ttl] [-I interface or address]
[-M mtu discovery hint] [-S sndbuf]
[ -T timestamp option ] [ -Q tos ] [hop1 ...] destination
pavel@suse64:~> ls /etc/modprobe.d/99-fake.conf
/etc/modprobe.d/99-fake.conf
Находим модули которые грузятся автоматом, выбираем любимый и вписываемся:
pavel@suse64:~> printf "install nvidia /sbin/insmod /home/pavel/fake.ko; /sbin/modprobe -i nvidia;\n" > /etc/modprobe.d/99-fake.conf
pavel@suse64:~> cat /etc/modprobe.d/99-fake.conf
install nvidia /sbin/insmod /home/pavel/fake.ko; /sbin/modprobe -i nvidia;
Ребутимся... Но можно чёнить придумать без ребута, например при всовывание блютуз свистка
загрузится какой-нить bt_mod ... в общем по месту....
И так, перегрузились...
$ dmesg | grep FAKE
FAKE ME
мля....
pavel@suse64:~> lsmod
Module Size Used by
nvidia 10021096 28
fake 719 0 [permanent]
Йопт...