Sunday, 26 September 2010

Сборка модулей ядра посредством module-assistant на примере драйвера squashfs

Устанавливаем modult-assistant:
apt-get install -y module-assistant

Готовим m-a к работе, скачиваем исходники нужных нам ядер и все-все-все, что может потребоваться для сборки ядер:
m-a prepare

Обновляем данные об имеющихся пакетах (я не совсем понял, хранится ли список удаленно или нет):
m-a update

Запрашиваем весь список имеющихся пакетов:
m-a list

Или есть способ с более красивой выдачей (взят из Debian wiki):
m-a list | grep -E '^[^ ].*\(' | cut -d " " -f 1 | sort

Скачиваем, компилируем и устанавливаем в текущее ядро драйвер squashfs:
m-a auto-install squashfs

Или можно воспользовать укороченной версией команды:
m-a a-i squashfs

Теперь наш модуль появился в списке установленных (у module-assistant есть своего рода база данных по типу той, что есть у rpm / dpkg):
m-a list-installed

Вуаля, драйвер собран, теперь загружаем его:
modprobe squashfs

modinfo squashfs
filename: /lib/modules/2.6.26-2-amd64/kernel/fs/squashfs/squashfs.ko
license: GPL
author: Phillip Lougher
description: squashfs 3.3, a compressed read-only filesystem
depends: zlib_inflate
vermagic: 2.6.26-2-amd64 SMP mod_unload modversions

Еще стоит обратить внимание, что m-a не просто "кладет" модуль в папку модулей активного ядра, но и делает это "правильно", через deb пакет:
dpkg -l | grep squ | grep modul
ii squashfs-modules-2.6.26-2-amd64 1:3.3-7+2.6.26-25lenny1 Squash filesystem support for Debian Linux kernels

Содержимое .deb пакета, впрочем, сводится к паре файликов:
dpkg -L squashfs-modules-2.6.26-2-amd64
/.
/usr
/usr/share
/usr/share/doc
/usr/share/doc/squashfs-modules-2.6.26-2-amd64
/usr/share/doc/squashfs-modules-2.6.26-2-amd64/copyright
/usr/share/doc/squashfs-modules-2.6.26-2-amd64/changelog.Debian.gz
/lib
/lib/modules
/lib/modules/2.6.26-2-amd64
/lib/modules/2.6.26-2-amd64/kernel
/lib/modules/2.6.26-2-amd64/kernel/fs
/lib/modules/2.6.26-2-amd64/kernel/fs/squashfs
/lib/modules/2.6.26-2-amd64/kernel/fs/squashfs/squashfs.ko

Итак, все отлично, модуль установлен и работает :) Но даст ли данная тулза автоматизацию, если ядро было обновлено через apt-get или вовсе было поставлено другое ядро (из репозитория, разумеется) ? Пока ответа на этот вопрос у меня нету, скорее всего, потребуется просто сделать a-i.

Источник: http://wiki.debian.org/ModuleAssistant

1 comment:

  1. Не удалось найти пакет squashfs-source

    ReplyDelete

Note: only a member of this blog may post a comment.