LINUX.ORG.RU

 # cd /usr/src/linux
 # make fs/reiserfs/reiserfs.ko
 # mkdir /lib/modules/`uname -r`/kernel/fs/reiserfs/
 # cp ./fs/reiserfs/reiserfs.ko /lib/modules/`uname -r`/kernel/fs/reiserfs/
 # depmod -a

Примерно так.

Deleted
()
Ответ на: комментарий от Deleted

Чтобы так сработало, надо чтобы в /usr/src/linux до этого уже собиралось текущее ядро. Можно проще, через /lib/modules/`uname -r`/build, как-то так:

make -C /lib/modules/`uname -r`/build M=`pwd` modules
Соберет модуль в текущей папке. Единственно, нужны заголовки ядра, и чтобы в текущем образе ядра уже были все функции, которые захочет модуль.

naszar
()
Ответ на: комментарий от Deleted

Неужели ты имел в виду modprobe ?

...есть собранное ядро с модулем ec_sys, выдрать модуль из ядра, ну и что-то типа modprobe.

Trauka
() автор топика
Ответ на: комментарий от Trauka

Если модуль собран как модуль то достаточно активировать этот модуль чрез modprobe, если модуль вкомпилен в ядро то он и так должен работать.

Или у тебя два ядра, в одном модуль есть, а вдругом нет и ты хочешь пересадить модуль из одного ядра в другое? Думаю если модуль собран как модуль и ядра одинаковой версии и скомпилены одинаково то может сработать, в противном случае — настоятельно не советую.

MrClon ★★★★★
()
Ответ на: комментарий от naszar

Соберет модуль в текущей папке. Единственно, нужны заголовки ядра, и чтобы в текущем образе ядра уже были все функции, которые захочет модуль.

...т.е. ec_sys на стоковом ядре не собрать

Trauka
() автор топика

Модуль ec_sys (CONFIG_ACPI_EC_DEBUGFS) ты можешь собрать отдельно, имея исходники текущего ядра, и вручную скопировать в /lib/modules/$(uname -r)/kernel, так что это не проблема. У тебя же проблема в том, что CONFIG_DEBUG_FS на стоковом ядре не включен, а его модулем собрать нельзя.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

У тебя же проблема в том, что CONFIG_DEBUG_FS на стоковом ядре не включен, а его модулем собрать нельзя.

...привет))) ...уже понял. Модуль собрал, но не загрузил. Вообщем- НИКАК. ...да?

Trauka
() автор топика
Ответ на: комментарий от intelfx

У тебя же проблема в том, что CONFIG_DEBUG_FS на стоковом ядре не включен, а его модулем собрать нельзя.

...оказалось, что CONFIG_DEBUG_FS на стоковом ядре включен. Осталось только разобраться с загрузкой ec_sys, вот что получается

root@Lenovo-IdeaPad:/# modprobe ec_sys
ERROR: could not insert 'ec_sys': Exec format error

Trauka
() автор топика
Ответ на: комментарий от Trauka

....правда модуль не собран из исходников, а взят из ядра, собранного командой localmodconfig. На своем ядре ec_sys загружается без ошибок и работает.

Trauka
() автор топика
Ответ на: комментарий от Trauka

Это означает, что файл модуля не является таковым для данной версии ядра (ты скопировал пустой файл, или скопировал не *.ko-файл, или собрал под другой архитектурой, или что-либо ещё).

Чтобы собирать модули для уже имеющегося ядра, нужно:

  • перейти в директорию с исходниками (твоего) ядра
  • очистить дерево при помощи make distclean
  • извлечь из работающего ядра конфиг (zcat /proc/config.gz > .config)
  • запустить make silentoldconfig
  • запустить make nconfig или другой конфигуратор и включить (M) только ту опцию, которая нужна, не трогая ничего другого
  • сделать make <путь-до-нужного-модуля>, т. е. например make drivers/acpi/ec_sys.ko
  • скопировать этот самый модуль в /lib/modules/$(uname -r)/kernel
  • сделать depmod -a
intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 3)
Ответ на: комментарий от Trauka

А нужно было собирать, т. к. модули подходят только к «своему» ядру, т. е. той же версии и с тем же набором опций.

intelfx ★★★★★
()
Ответ на: комментарий от intelfx

...ничего не поменялось

root@Lenovo-IdeaPad:/lib/modules/3.2.0-4-amd64/kernel/drivers/acpi# modprobe ec_sys
ERROR: could not insert 'ec_sys': Exec format error
root@Lenovo-IdeaPad:/lib/modules/3.2.0-4-amd64/kernel/drivers/acpi# insmod /lib/modules/3.2.0-4-amd64/kernel/drivers/acpi/ec_sys.ko
Error: could not insert module /lib/modules/3.2.0-4-amd64/kernel/drivers/acpi/ec_sys.ko: Invalid module format

Trauka
() автор топика
Ответ на: комментарий от intelfx

...вот

root@Lenovo-IdeaPad:/lib/modules/3.2.0-4-amd64/kernel# dmesg | tail
[  767.687340] device-mapper: ioctl: 4.22.0-ioctl (2011-10-19) initialised: dm-devel@redhat.com
[  773.195645] EFI Variables Facility v0.08 2004-May-17
[  773.328359] SGI XFS with ACLs, security attributes, realtime, large block/inode numbers, no debug enabled
[  773.329957] SGI XFS Quota Management subsystem
[  773.341827] JFS: nTxBlock = 8192, nTxLock = 65536
[  773.377017] NTFS driver 2.1.30 [Flags: R/W MODULE].
[  773.406129] QNX4 filesystem 0.2.3 registered.
[  773.449012] Btrfs loaded
[ 1601.500389] ec_sys: no symbol version for module_layout

Trauka
() автор топика
Ответ на: комментарий от intelfx

...а вот инфо модуля

root@Lenovo-IdeaPad:/usr/src/linux-source-3.2# modinfo ec_sys
filename:       /lib/modules/3.2.0-4-amd64/kernel/ec_sys.ko
license:        GPL
description:    ACPI EC sysfs access driver
author:         Thomas Renninger <trenn@suse.de>
depends:        
intree:         Y
vermagic:       3.2.57-rt81 SMP mod_unload modversions 
parm:           write_support:Dangerous, reboot and removal of battery may be needed. (bool)

Trauka
() автор топика
Ответ на: комментарий от Trauka

filename: /lib/modules/3.2.0-4-amd64/kernel/ec_sys.ko

vermagic: 3.2.57-rt81 SMP mod_unload modversions

У тебя ядро версии 3.2.0-4, а модуль выглядит так, будто он собран для ядра 3.2.57-rt81 (и из его исходников). Конечно, он не подгрузится — найди и скачай исходники _своего_ ядра.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

...ничего не понимаю, ...исходники качаю вот эти (сори за портянку)

root@Lenovo-IdeaPad:/lib/modules/3.2.0-4-amd64/kernel/drivers/acpi# apt-cache show linux-source-3.2
Package: linux-source-3.2
Source: linux
Version: 3.2.57-3+deb7u2
Installed-Size: 75691
Maintainer: Debian Kernel Team <debian-kernel@lists.debian.org>
Architecture: all
Provides: linux-source
Depends: binutils, bzip2
Suggests: libncurses-dev | ncurses-dev, libqt4-dev, pkg-config
Description-en: Linux kernel source for version 3.2 with Debian patches
 This package provides source code for the Linux kernel version 3.2. This
 source closely tracks official Linux kernel releases.  Debian's
 modifications to that source consist of security fixes, bug fixes, and
 features that have already been (or are believed to be) accepted by the
 upstream maintainers.
Description-md5: 44fed9e01c77dea853508fb986b72e84
Multi-Arch: foreign
Recommends: libc6-dev | libc-dev, gcc, make
Section: kernel
Priority: optional
Filename: pool/updates/main/l/linux/linux-source-3.2_3.2.57-3+deb7u2_all.deb
Size: 77439592
MD5sum: e60fea139451f9fe99a92f80dce8b316
SHA1: 8179da64d8d3484feb69eff763b5ba15d3d3a9dc
SHA256: dbb5b0b673c0226a26c396effde49d964c7831a63bb05d7809d1a1880d123fd6

Package: linux-source-3.2
Source: linux
Version: 3.2.57-3
Installed-Size: 75710
Maintainer: Debian Kernel Team <debian-kernel@lists.debian.org>
Architecture: all
Provides: linux-source
Depends: binutils, bzip2
Recommends: libc6-dev | libc-dev, gcc, make
Suggests: libncurses-dev | ncurses-dev, libqt4-dev, pkg-config
Description-en: Linux kernel source for version 3.2 with Debian patches
 This package provides source code for the Linux kernel version 3.2. This
 source closely tracks official Linux kernel releases.  Debian's
 modifications to that source consist of security fixes, bug fixes, and
 features that have already been (or are believed to be) accepted by the
 upstream maintainers.
Multi-Arch: foreign
Description-md5: 44fed9e01c77dea853508fb986b72e84
Section: kernel
Priority: optional
Filename: pool/main/l/linux/linux-source-3.2_3.2.57-3_all.deb
Size: 77460674
MD5sum: bd5e73f75bb9e0a67e143c3a4a7c1eb2
SHA1: 09328f81fd5b51870153e030c49902f4f9efd21e
SHA256: 41bfa714e0d9d1edc10ca572139e6329adf673b60101045eb1a3ba2981f71564
...ядро в системе такое
root@Lenovo-IdeaPad:/home/user# uname -a
Linux Lenovo-IdeaPad 3.2.0-4-amd64 #1 SMP Debian 3.2.57-3+deb7u2 x86_64 GNU/Linux
...из, выше описанных исходников, собран модуль
root@Lenovo-IdeaPad:/home/user# modinfo ec_sys
filename:       /lib/modules/3.2.0-4-amd64/kernel/drivers/acpi/ec_sys.ko
license:        GPL
description:    ACPI EC sysfs access driver
author:         Thomas Renninger <trenn@suse.de>
depends:        
intree:         Y
vermagic:       3.2.57 SMP mod_unload modversions 
parm:           write_support:Dangerous, reboot and removal of battery may be needed. (bool)
...при загрузки модуля
root@Lenovo-IdeaPad:/lib/modules/3.2.0-4-amd64/kernel/drivers/acpi# modprobe ec_sys
ERROR: could not insert 'ec_sys': Exec format error

Trauka
() автор топика
Ответ на: комментарий от Trauka

Ну так. Ты поставил исходники от ядра 3.2.57, а в системе (запущено) у тебя ядро 3.2.0.

Можно попытаться сделать вот что (предположим, что ты находишься в директории с исходниками этого самого 3.2.57), предварительно удалив ранее собранный ec_sys.ko оттуда, куда ты его положил:

make distclean
make -C "/lib/modules/$(uname -r)/build" "M=$(pwd)" drivers/acpi/ec_sys.ko
install -Dm644 drivers/acpi/ec_sys.ko "/lib/modules/$(uname -r)/extra"
depmod -a
modprobe ec_sys
intelfx ★★★★★
()
Ответ на: комментарий от intelfx

Да, и надо поставить хедеры для твоего ядра (linux-headers, наверное; не знаю, как в дебиане соотв. пакет называется).

intelfx ★★★★★
()
Ответ на: комментарий от intelfx

Ты поставил исходники от ядра 3.2.57, а в системе (запущено) у тебя ядро 3.2.0.

...сейчас попробую по твоему рецепту, просто исходников 3.2.0 нету

Trauka
() автор топика
Ответ на: комментарий от intelfx

со старта ошибка

root@Lenovo-IdeaPad:/usr/src/linux-source-3.2# make -C "/lib/modules/$(uname -r)/build" "M=$(pwd)" drivers/acpi/ec_sys.ko
make: Entering directory `/usr/src/linux-headers-3.2.0-4-amd64'
make[3]: *** Нет правила для сборки цели `drivers/acpi/ec_sys.o'.  Останов.
make[2]: *** [drivers/acpi/ec_sys.ko] Ошибка 2
make[1]: *** [sub-make] Ошибка 2
make: *** [all] Ошибка 2
make: Leaving directory `/usr/src/linux-headers-3.2.0-4-amd64'

Trauka
() автор топика
Ответ на: комментарий от Trauka

Тогда хрен знает. Видимо, я разучился собирать модули out-of-tree, а make help ничего внятного мне не сказал.

В общем, ищи исходники для конкретно своего ядра (или обнови ядро на то, для которого у тебя исходники!), копируй конфиг (zcat /proc/config.gz > .config) и собирай искомый модуль.

intelfx ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.