Рубрики
kernel \ source \ пакеты \ исходники

kernel / usb / blacklist / make

 
1. Чем ядро из дистрибутива Debian отличается от “ванильного” ядра с kernel.org?
Во-первых, оттуда могут быть удалены части, которые не вписываются в DFSG - приложения о том, 
что есть действительно свободное ПО с точки зрения политики Debian. 
При этом люди, которые поддерживают пакет ядра Debian стараются сделать изменения между ванильным и дистрибутивным ядром минимальными. 
Кроме того, среди дистрибутивных ядер нередко можно найти уже готовые ядра со специально наложенными патчами vserver или xen.
Отдельно патчи можно получить, установив пакет linux-patch-debian-версия.
Подробнее о том, что изменяется в ядре можно почитать здесь, здесь и здесь.


2. Некоторые соглашения относительно названий и назначения пакетов, которые относятся к ядру Linux в составе дистрибутива.
Ядро Linux (не забывайте, что Debian портирован и на некоторые другие ядра, 
например Free или NetBSD или даже Hurd) собирается из пакета исходных текстов linux-версия.
В результате получаются независимые от архитектуры пакеты:
linux-source-версия - содержит исходные тексты ядра с уже наложенными патчами от Debian.
linux-manual-версия - содержит страницы руководства (man) по API ядра.
linux-doc-версия - содержит документацию ядра
linux-patch-debian-версия - содержит патчи, наложенные на ванильные исходные тексты ядра, чтобы получить linux-source-версия.
linux-tree-версия - это просто пакет, зависящий от других пакетов, необходимых для сборки ядра. 
Его установка повлечет за собой установку в систему всех необходимых пакетов (в том числе исходных текстов), 
нужных для сборки ядра нужной версии.
linux-support-версия-имяABI - содержит файлы для поддержки сборки сторонних модулей для ядра указанной версии и ABI.

Ну и зависимые от архитектуры пакеты:
linux-headers-версия-имяABI - заголовочные файлы ядра. Также могут быть дополнены разновидностями типа bigmem/smp/что-то еще.
linux-image-разновидность - специальный пакет, притягивающий в виде зависимостей последнюю версию ядра определенного типа. 
Например linux-image-alpha-smp. Возможны и варианты linux-image-главная_версия-разновидность 
для установки определенной линейки ядер (2.4 или 2.6).
linux-image-верися-архитектура-разновидность - образ ядра определенной версии для определенной архитектуры.

3. Сборка ядра
Как уже стало ясно, получить исходные тексты ядра Debian можно путем установки соответствующего пакета, например:
# aptitude install linux-source-2.6.24
После этого нужно перейти в каталог /usr/src/ и распаковать полученный тарболл с исходными текстами:
# cd /usr/src
# tar xf linux-source-2.6.24.tar.bz2
Затем нужно перейти в директорию с исходными текcтами ядра:
# cd linux-source-2.6.24

Теперь ядро необходимо сконфигурировать перед сборкой 
(иначе зачем мы его вообще собираем собирать самостоятельно?).
Сделать это можно любым доступным способом:
make config - через простой текстовый интерфейс
make oldconfig - используя старый конфигурационный файл ядра
make menuconfig - используя ncurses интерфейс
make xconfig - используя графический интерфейс.
По окончанию конфигурации мы готовы собирать ядро в пакет.
Для этого прежде всего требуется утилита make-kpkg, 
предназначенная как раз для этого. 
Она содержится в пакете kernel-package:

# aptitude install kernel-package
# make-kpkg clean
# make-kpkg –initrd kernel-image
либо, если хочется добавить дополнительную “ревизию” к версии ядра -
# make-kpkg –initrd –revision=10.0 kernel-image
или даже “разновидность”
# make-kpkg –initrd –append-to-version=k7 kernel-image
То же самое с помощью make-kpkg можно проделать и используя оригинальное ядро с kernel.org.
В результате в директории уровнем выше появится пакет linux-image-версия, который можно без опаски устанавливать 
с помощью dpkg -i - ядро будет автоматически установлено и даже прописано в меню загрузчика.

4. Сборка дополнительных модулей для ядра.
Сюда относятся разнообразные драйверы устройств и файловых систем, не включенные в дерево исходных текстов ядра.
Для их установки желательно пользоваться утилитой module-assistant, особенно если их исходные тексты уже включены в репозитарий дистрибутива.

# m-a a-i nvidia-kernel

Как пример, эта команда вызовет установку пакета nvidia-kernel-source последней доступной версии, 
сборку пакета с модулем для текущего ядра и его автоматическую установку. 
Для этого потребуется только пакет linux-headers той же версии, что и текущее ядро.

Модули ядра:

 
lsmod - Показать все модули загруженные в ядро
modprobe isdn - Загрузить модуль (в данном случае isdn)
modinfo module_name - показать информацию о модуле
systool -v -m module_name - вывести список опций, с которыми загружен модуль
modprobe -c | less - отобразить настройки для всех модулей
modprobe -c | grep module_name -  отобразить настройки для отдельного модуля
modprobe --show-depends module_name - узнать зависимости модуля (или его псевдонима), включая сам модуль
modprobe module_name - загрузка модуля
modprobe -r module_name - выгрузка модуля

Отмена загрузки модуля (драйвера):

nano /etc/modprobe.d/blacklist.conf
blacklist snd_hda_intel - отключить драйвер звука intel
blacklist snd-usb-audio - отключить драйвер usb звука
blacklist nouveau - отключить драйвер nvidia

Перезагрузка USB порта без перезагрузки системы:

modprobe -r usbhid - отключаем
modprobe usbhid - включаем 

Перезагрузка USB порта без перезагрузки системы,
Внешние накопители (диски, флешки):

modprobe -r usb-storage - отключаем
modprobe usb-storage - включаем 

Перезагрузка USB порта без перезагрузки системы,

lsusb - смотрим общую информацию о том какое устройство к какому порту подключено
lsusb -t - древовидный вид подключения. Здесь видно какой драйвер используется
lsusb -v -s 4:1 | grep iSerial - определяем адрес устройства, где параметр -s содержит номер bus:device
echo -n «0000:00:1d.0» | tee /sys/bus/pci/drivers/ehci-pci/unbind - отключам устройство ehci-pci
echo -n «0000:00:1d.0» | tee /sys/bus/pci/drivers/ehci-pci/bind - подключаем устройство ehci-pci

Сборка ядра(компиляция):

 
cd /usr/src/linux - переходим в каталог с исходниками ядра
make mrproper - Очистка, включая файлы конфигурации
make oldconfig - Повторно использовать старые конфиги, если есть 
make menuconfig - xconfig (Qt) или gconfig (GTK)
make - Создание сжатого образа ядра
make modules - Компиляция модулей
make modules_install - Установка модулей
make install - Установка ядра
reboot