warchief 17.08.2011 21:28
Есть вопрос! — [Решено][arch] Как скомпилировать только один модуль для ядра?
Собственно это всё.
K900 17.08.2011 23:04 #
+ 1 -
Кратко - если модуль поставляется с ядром, то никак.
о.О в смысле никак? знаю, что можно, только не знаю как. собственно мне нужен модуль tun.
Если хочется собрать так, как собираются ядра в арче мейнтейнерами - то никак. Если в обход пакетного менеджера - то обычно make в папке модуля хватает.
~ $ uname -sor
Linux 3.0-ARCH GNU/Linux
~ $ lsmod | grep tun
~ $ sudo modprobe tun
~ $ lsmod | grep tun
tun 12721 0
~ $
Linux 3.0-ARCH GNU/Linux
~ $ lsmod | grep tun
~ $ sudo modprobe tun
~ $ lsmod | grep tun
tun 12721 0
~ $
в арче же есть этот модуль. в чем проблема? объясни подробней, что тебе надо
допустим ядро собрано без этого модуля. как собрать только один модуль без пересборки всего ядра?
зачем тебе нужна сборка только одного?
можно покурить makefile и найти способ собрать "только один модуль". только вот зачем?
make -j 4
собирает ведро оооочень быстро
make modules
собирет только модули, без ведра.можно покурить makefile и найти способ собрать "только один модуль". только вот зачем?
случайно спойлер вставил вместо цитаты. make без трагета собирает ведро + модули, если че.
make help
для справки. а лучше даже
vim Makefile
хм, я попробовал собрать только один модуль
в принципе, если поковыряться, и модуль не особо сложный, то, наверное, можно найти решение разумной сложности. но гоораздо проще собрать все модули
gcc -DMODULE -D__KERNEL__ -O6 -c tun.c -I../../include -I../../arch/x86/include
получил ошибку
In file included from ../../include/linux/gfp.h:4:0,
from ../../include/linux/kmod.h:22,
from ../../include/linux/module.h:13,
from tun.c:44:
../../include/linux/mmzone.h:18:30: фатальная ошибка: generated/bounds.h: Нет такого файла или каталога
компиляция прервана.
т.о. скорее всего тебе в любом случае предется собрать либо ядро, либо модули, потому что какая-то часть заголовочников автогенерится при компиляции (директория generated)from ../../include/linux/kmod.h:22,
from ../../include/linux/module.h:13,
from tun.c:44:
../../include/linux/mmzone.h:18:30: фатальная ошибка: generated/bounds.h: Нет такого файла или каталога
компиляция прервана.
в принципе, если поковыряться, и модуль не особо сложный, то, наверное, можно найти решение разумной сложности. но гоораздо проще собрать все модули
make -j 4 modules
а потом взять из них только один неоходимый
обычно, нестандартные модули к ядру идут с Makefile'ом и набором необходимых заголовочников (я как-то видел подобный модуль для подключения осцилографа)
(я думаю, что) те модули, что входят в ядро используют мейки ядра и отделение их от процесса общей сборки никто не продумывал. так что оно трудновыполнимо.
возможно, стоит почитать документацию :) признаюсь честно, я просто просмотрел Makefile по диагонали. я могу быть неправ.
>.О в смысле никак? знаю, что можно
что ты имел в виду, кстати?
(я думаю, что) те модули, что входят в ядро используют мейки ядра и отделение их от процесса общей сборки никто не продумывал. так что оно трудновыполнимо.
возможно, стоит почитать документацию :) признаюсь честно, я просто просмотрел Makefile по диагонали. я могу быть неправ.
>.О в смысле никак? знаю, что можно
что ты имел в виду, кстати?
И как же решено?
Есть такая штука, module-assistant, вдруг поможет?
Есть такая штука, module-assistant, вдруг поможет?