Компилирование ядра и модулей

Примечание: В будущем, я планирую использовать T2 систему, чтобы компилировать ядро и модули для Puppy. T2 в настоящее время устанавливается, чтобы компилировать ядро и многочисленные дополнительные модули, но не та версия, которая в данный момент используется в Puppy. Я предполагаю синхронизировать в будущих версиях Puppy, таким образом ядро, откомпилированные в T2, будет использоваться в Puppy. См. http://www.puppyos.net/pfs/ для дальнейшей информации относительно Puppy и T2.

У Puppy есть очень простой способ использования C/C++ компиляторов при помощи добавления единственного файла devx_xxx.sfs, где xxx — номер версии. Например, у Puppy 2.12 был бы файл разработки соответствия названный devx_212.sfs. Работая в режиме LiveCD, поместите файл devx_xxx.sfs в то же самое место, где находится ваш персональный файл настроек pup_save.3fs, который, обычно, находится в каталоге /mnt/home/. Это также относится и для других режимов инсталляции, у которых есть pup_save.3fs файл. Если Puppy установлен на жесткий диск с полной инсталляцией «Option 2», то в этом случае нет никакого личного файла, посмотрите на web-страницах Puppy, чтобы компилирован с различными опциями выбора конфигурации, таким образом модули не совместимы. Эти версии требуют только одного исправления для squashfs. Puppy 2.12 имеет ядро 2.6.18.1 и имеет три исправления; squashfs, значение loglevel в консоли по умолчанию и исправление с выключением компьютера.

Эти команды исправляющие ядро даны исключительно для вашего самообразования, поскольку доступно уже исправленное ядро…

Первое, что вы должны вначале сделать это скачать само ядро. Оно находится тут, чтобы найти ссылку на подходящий сайт загрузки. Это должен быть «древний» источник, доступный на kernel.org или его зеркалах.

Подключитесь к интернету, загрузите ядро в папку /usr/src . Затем распакуйте его:

cd /usr/src
tar -jxf linux-2.6.16.7.tar.bz2

ИЛИ…

tar -zxf linux-2.6.16.7.tar.gz

Вы должны видеть эту папку: /usr/src/linux-2.6.16.7. Вы тогда должны удостовериться, что эта ссылка указывает на ядро:

ln -sf linux-2.6.16.7 linux
ln -sf linux-2.6.16.7 linux-2.6.9

Вы должны применить следующие исправления, так, чтобы у Вас был точно тот же самый источник который используется при компилировании ядра для Puppy. Иначе, у вас будут появляться сообщения об ошибках «unresolved symbols»(нерешенными символами), при компиляции драйвера и затем пытаетесь использовать его с ядром Puppy. Применение исправления squashfs

Во-вторых, примените исправление Squashfs. Исправление Squashfs добавляет поддержку Squashfs делающую файловую систему только для чтения.

Загрузите исправление, squashfs2.1-patch-k2.6.9.gz, в папку /usr/src. Отметьте,что это исправление было сделано для версии 2.6.9 ядра, но продолжает работать и в 2.6.11.x версиях, пока существует ссылка на linux-2.6.9. Затем, примените исправление:

cd/usr/src
gunzip squashfs2.1-patch-k2.6.9.gz
cd/usr/src/linux-2.6.11.11

Замечание, у p1 это число 1, не символ l… (Отличная шутка — прим. перев.)

patch --dry-run -p1 < ../squashfs2.1-patch
patch -p1 < ../squashfs2.1-patch

Готово! Ядро готово к компилированию!

Компилирование ядра

Необходимо получить файл конфигурации для ядра. Копия его находится в папке /lib/modules.

Затем проделайте эти шаги:

cd/usr/src/linux-2.6.18.1

Если есть .config файл, скопируйте его куда-нибудь временно или переименуйте.

make clean
make mrproper

Скопируйте .config файл для Puppy в /usr/src/linux-2.6.18.1… В /lib/modules у него будет различные названия, так что переименуйте в .config… Следующие шаги считывают .config файл и генерирует новый.

make menuconfig

… сделайте любые изменения, которые вы хотите и сохраните их. У Вас теперь будет новый .config файл, и Вы должны скопировать его куда-нибудь для сохранности. См. примечание ниже1)

make bzImage

Вот теперь вы скомпилировали ядро.

Отлично, вы найдете ядро Linux в папке /usr/src/linux-2.6.18.1/arch/i386/boot/bzImage

Компилирование модулей

Теперь войдите в /lib/modules и если уже есть папка, названная 2.6.18.1, переименуйте папку 2.6.18.1 в 2.6.18.1-old.

Теперь устанавливать новые модули:

cd/usr/src/linux-2.6.18.1
make modules
make modules_install

… после этого вы должны найти новые модули установленными в папке /lib/modules/2.6.18.1.

Отметьте, последний шаг выше выполняет программу «depmod» и это может дать сообщения об ошибках о недостающих символах для некоторых из модулей. Не волнуйтесь об этом — один из разработчиков лоханулся, и это означает, что мы не можем использовать тот модуль.

Как использовать новое ядро и модули

Лучше, если у Вас есть установленный Puppy Unleashed. Тогда tarball расширен и существуют 2 каталога: «boot» и «kernels».

«Boot» содержит структуру файла и скрипт, чтобы создать начальный виртуальный диск. Вы должны будете поместить туда некоторые модули ядра.

У «kernels» каталога есть каталог kernels/2.6.18.1/, и Вы должны будете заменить модули с Вашими обновленными. Можно и не заменять если Вы перекомпилировали ту же самую версию ядра (2.6.18.1).

Отметьте, что в kernels/2.6.18.1 есть файл c именем 'System.map'. Вы должны переименовать его и заменить новым из /usr/src/linux-2.6.18.1. Просмотрите папку kernels/2.6.18.1/, и Вы должны знать что нужно обновить.

Если Вы компилировали ядро в полной инсталляции Puppy, Вы можете перезагрузить используя новое ядро. make modules_install шагом выше, устанавливали новые модули в /lib/modules/2.6.18.1, но вы должны также установить новое ядро. Я гружусь с Grub, и просто скопирую новое ядро в каталог /boot (и переименуйте файл с bzImage в vmlinuz).


Barry Kauler www.puppyos.com

Перевёл PHILOSOPH

Оригинал статьи

1) Примечание, относительно menuconfig(конфигурация меню). Я использовал его целую вечность, так что считайте некоторые вещи само собой разумеющимся, однако новичок мог бы быть сбит с толку, желая выйти от программы. В меню верхнего уровня есть меню, чтобы сохранить конфигурацию - игнорируйте его. Только нажмите TAB клавишу (или клавиша стрелки «вправо»), чтобы подсветить Exit «кнопку» и нажимите клавишу ENTER. После этого вас спросят, хотите ли Вы сохранить новую конфигурацию, и ваш ответ должен быть Да (Yes)
 
articles/compile-kernel.txt · Последние изменения: 01.03.2016 в 18:18 (внешнее изменение)
 
За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki