Для генерации случайного нового UUID можно использовать:
$ uuidgen
На самом деле изменить UUID - зависимый файловой системы.
# tune2fs -U <output of uuidgen> /dev/sdb1
Или если Вы - уверенный uuidgen, собирается работать:
# tune2fs -U $(uuidgen) /dev/sdb1
# btrfstune -U $(uuidgen) /dev/sdb1
UUID хранится в суперблоке, таким образом, копия байта для байта файловой системы будет иметь тот же UUID.
Создайте a Makefile
как это.
ifneq ($(KERNELRELEASE),)
obj-m := mymodule.o
else
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
all:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
install:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules_install
%:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) $@
endif
Принятие источника Вашего модуля находится в mymodule.c
, выполнение make
создаст mymodule.ko
.
Короткий ответ: Вы не можете. .ko файл является больше, чем просто скомпилированная версия Вашего источника драйвера. Система сборки ядра включает некоторую дополнительную информацию, например (версия компилятора, зависимости от модуля...).
Можно, вероятно, вырыть через систему сборки ядра для нахождения всех необходимых операций, но Вы не были должны. Это почти наверняка порвет со следующим выпуском ядра или тем после этого. Необходимо использовать make-файл ephemient предоставленный.
.ko
сделан может измениться от выпуска ядра до выпуска ядра и единственного способа удостовериться, что Вы работаете с ядром, должен использовать Make-файлы ядра. – ephemient 09.12.2010, 00:54