On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение
PHILOSOFF
Координатор переводчиков




Зарегистрирован: 06.09.07
Откуда: Зеленоград
Репутация: 2
ссылка на сообщение  Отправлено: 15.10.07 14:01. Заголовок: Компилирование ядра (kernel) и модули для Puppy Linux


Компилирование ядра (kernel) и модулей для Puppy Linux.

Примечание: В будущем, я планирую использовать 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, чтобы узнать, как установить devx_xxx.sfs.

Отметьте, я лично использовал полную инсталляцию Puppy, чтобы компилировать ядро и все дополнительные драйверы.
У devx_xxx.sfs есть файлы заголовка ядра, для того, чтобы приложения, нуждающиеся в них, могли быть сразу же откомпилированы. Однако, если вам нужно откомпилировать фактическое ядро, или должны откомпилировать драйвер или еще что-то, нуждающиеся в полном источнике ядра, затем продолжайте читать...
Загрузка ядра

Если Вы загружаете "древнее" ядро, Puppy требует один или более исправлений (patch). Однако, чтобы облегчить вам работу меня есть уже готовый источник онлайн. Пожалуйста зайдите на мою Страницу загрузки на уже исправленное(патченное) ядро. Также имеется это и на компакт-диске - подробности на Странице загрузки.
Примечание, Puppy 2.02 и 2.10 использует то же самое ядро, версию 2.6.16.7. У Puppy 2.01 и ранние также 2.6.16.7 ядро, но он откомпилирован с различными опциями выбора конфигурации, таким образом модули не совместимы. Эти версии требуют только одного исправления для squashfs. Puppy 2.12 имеет ядро 2.6.18.1 и имеет три исправления; squashfs, значение loglevel в консоли по умолчанию и исправление с выключением компютера.

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

Первое, что вы должны вначале сделать это скачать само ядро. Оно находится тут http://www.kernel.org, чтобы найти ссылку на подходящий сайт загрузки. Это должен быть "древний" источник, доступный на 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 файл, и Вы должны скопировать его куда-нибудь для сохранности.
См. примечание ниже *
# make bzImage

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

*Примечание относительно menuconfig(конфигурация меню). Я использовал его целую вечность, так что считайте некоторые вещи само собой разумеющимся, однако новичок мог бы быть сбит с толку, желая выйти от программы. В меню верхнего уровня есть меню, чтобы сохранить конфигурацию - игнорируйте его. Только нажмите TAB клавишу (или клавиша стрелки "вправо"), чтобы подсветить Exit "кнопку" и нажимите клавишу ENTER. После этого вас спросят, хотите ли Вы сохранить новую конфигурацию, и ваш ответ должен быть Да (Yes)

Отлично, вы найдете ядро 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').

(c) Copyright 2006 Barry Kauler www.puppyos.com/
Никакая часть этой страницы не должна быть воспроизведена где-нибудь еще. Бывало, что части моих web-страниц вставляются на других сайтах которые не обновляются, тогда как я обновляю свои страницы регулярно. Это не желательная ситуация, таким образом пожалуйста заходите только на мои страницы.


Статью перевел PHILOSOFF
Оригинал здесь

Спасибо: 0 
Профиль
Новых ответов нет


Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 7
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация вкл, правка нет