Как создать .ko файлы в Linux

Для генерации случайного нового UUID можно использовать:

$ uuidgen

На самом деле изменить UUID - зависимый файловой системы.

Принятие файловой системы семейства расширения

# tune2fs -U <output of uuidgen> /dev/sdb1

Или если Вы - уверенный uuidgen, собирается работать:

# tune2fs -U $(uuidgen) /dev/sdb1

Принятие btrfs файловая система

# btrfstune -U $(uuidgen) /dev/sdb1

UUID хранится в суперблоке, таким образом, копия байта для байта файловой системы будет иметь тот же UUID.

7
08.12.2010, 22:14
2 ответа

Создайте 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.

8
27.01.2020, 20:17
  • 1
    Тот штраф... Но я хочу знать, какая опция конкретно дана для создания его как *.ko как-c для *.o или-fpic - совместно использованный для *.so для gcc.. –  Renjith G 08.12.2010, 09:01
  • 2
    я не думаю gcc, имеет такую опцию. Или .ko является просто другим названием *.a/.so или (что более вероятно), это постобрабатывается некоторым сценарием. –  Maciej Piechotka 09.12.2010, 00:17
  • 3
    @Renjith G: Точно, как a .ko сделан может измениться от выпуска ядра до выпуска ядра и единственного способа удостовериться, что Вы работаете с ядром, должен использовать Make-файлы ядра. –  ephemient 09.12.2010, 00:54
  • 4
    Затем можно ли объяснить меня значение каждого предложения в вышеупомянутом make-файле? –  Renjith G 09.12.2010, 05:56

Короткий ответ: Вы не можете. .ko файл является больше, чем просто скомпилированная версия Вашего источника драйвера. Система сборки ядра включает некоторую дополнительную информацию, например (версия компилятора, зависимости от модуля...).

Можно, вероятно, вырыть через систему сборки ядра для нахождения всех необходимых операций, но Вы не были должны. Это почти наверняка порвет со следующим выпуском ядра или тем после этого. Необходимо использовать make-файл ephemient предоставленный.

2
27.01.2020, 20:17

Теги

Похожие вопросы