1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
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 той же версии, что и текущее ядро. |
Модули ядра:
1 2 3 4 5 6 7 8 9 |
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 - выгрузка модуля |
Отмена загрузки модуля (драйвера):
1 2 3 4 |
nano /etc/modprobe.d/blacklist.conf blacklist snd_hda_intel - отключить драйвер звука intel blacklist snd-usb-audio - отключить драйвер usb звука blacklist nouveau - отключить драйвер nvidia |
Перезагрузка USB порта без перезагрузки системы:
1 2 |
modprobe -r usbhid - отключаем modprobe usbhid - включаем |
Перезагрузка USB порта без перезагрузки системы,
Внешние накопители (диски, флешки):
1 2 |
modprobe -r usb-storage - отключаем modprobe usb-storage - включаем |
Перезагрузка USB порта без перезагрузки системы,
1 2 3 4 5 |
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 |
Сборка ядра(компиляция):
1 2 3 4 5 6 7 8 9 |
cd /usr/src/linux - переходим в каталог с исходниками ядра make mrproper - Очистка, включая файлы конфигурации make oldconfig - Повторно использовать старые конфиги, если есть make menuconfig - xconfig (Qt) или gconfig (GTK) make - Создание сжатого образа ядра make modules - Компиляция модулей make modules_install - Установка модулей make install - Установка ядра reboot |