Компиляции Linux ядра для ARM машины (linux kernel cpu arm compile)
Ключевые слова: linux , kernel , cpu , arm , compile , (найти похожие документы )
From: Russell King <http://www.nixsys.narod.ru> ;
Date: Mon, 24 Mar 2005 18:21:07 +0000 (UTC)
Subject: Компиляции Linux ядра для ARM машины
Оригинал: http://www.nixsys.narod.ru/kerncomp2s.html (сайт зарыт?)
Создание своего ядра для своей машины может показаться сложной
задачей. Эта дока описывает процесс компиляции ядра для ARM машины и
целевой системы.
примечание:
* "bash$" и "bash#" это приглашение оболочки (shell), т.е. не
команды.
* "host" машина на которой вы строите ядро для ARM.
* "target" машина для которой вы строите ARM ядро.
1. Выбор директория для сборки ядра Сначала вам надо решить где вы
будете собирать ядро для ARM Linux. По умолчанию ядро собирается в
директории /usr/src/arm. Если вы хотите строить ядро в другой
директории, переместите /usr/src/arm в предпочтительную для вас
директорию. Пожалуйста имейте ввиду, что построение
ядра в /usr/src/linux не рекомендуется.
Вам необходимо создать директорий /usr/src/arm перед загрузкой
исходных текстов и патчей, если он уже не существует. Эта
дирктория должна принадлежать любому не root пользователю. Что бы
сделать это, зайдите как пользователь root:
bash$ su
Password:
bash# cd /usr/src
bash# mkdir arm
bash# chown myuser.mygroup arm
bash# exit
bash$
2. Выбор версии ядра Сначала, вам необходимо решить какую версию ядра
вы будете компилировать. Наиболее часто выбирают последнюю
стабильную версию ядра. Для того, что бы вам помочь определиться с
выбором версии ядра, разработчики ядра используют систему
нумерования версий ядра. Для любых версий ядра x.y.z,
+ x - старший номер ядра
+ y - младший номер, где:
чётный номер обозначает стабильную версию ядра
нечётный номер обозначает "не стабильная" или "beta" версия
ядра
+ z - номер патча ядра
На момент создания доки последняя версия для ARM - 2.4.2 (?)
По дереву версий ARM ядра вы можете найти суффикс для номера
версии '-rmkn', где 'n' есть номер версии ядра для ARM. Это
главный ARM патч, который всегда применяется.
Другие патчи поддержки подобно Николасу Питру (Nicolas Pitre)
производят дополнительные патчи, и они добавляют суффикс версии. К
названию патча Николаса Питра (Nicolas Pitre's) добавлен суффикс
'-np'.
Когда выбирается версия ядра, всегда работает от индивидуального
разработчика главного дерева.(When choosing a kernel version,
always work from the individual maintainer towards the main tree.)
Не обращайте внимания на последнее дерево ядра ftp.*.kernel.org -
вполне может быть что у нас нет к ним патчей!
3. Загрузка специфических патчей от индивидуальных разработчиков. При
некоторых обстоятельствах, вы нуждаетесь в специальных
(индивидуальных) патчах от разработчиков. Дополнительные
специфические патчи от разработчиков могут добавляют/улучшать
поддержку устройств, но патчи могут сделать ядро менее стабильным.
В основном, разработчики пересылают часть своих патчей в дерево
-rmk и они довольны этим изменением.
Пожалуйста, зайдите поссылке [10]список машин [11]список машин для
получения информации о дополнительных патчах.
4. Загрузка патчей для ARM. Вам понадобится загрузка патчей ядра,
которые содержат все специфические для ARM обновления для
конкретной версии ядра. Патчи могут находится на
ftp://ftp.arm.linux.org.uk/pub/armlinux/source/kernel-patches/
Релизы ядра разделены на дериктории соответствующие major/minor
номеру ядра.
Индивидуальные файлы названы patch-x.y.z-rmkn.gz, где 'x', 'y',
'z' и 'n' номера версий упомянутых выше. Вы должны выбрать
последнюю версию патча и загрузить в /usr/src/arm. Это один,
который будет иметь наилучшие характеристики, или обнаруженные
баги. Вам нужна будет последняя версия патча, когда вы найдёте
последнюю версию ядра (???).
примечание: некоторые файлы могут быть названы
pre-patch-x.y.z-rmkn.gz. Это альфа или бета версии патчей, которые
вероятно не стабильны. Вы не должны их использовать если в них не
уверены и не знаете что вы делаете.
примечание 2: Некоторые ядра основаны на серии ядра Алана Кокса
(Alan Cox). Имена этих ядер похожи на patch-x.y.z-acm-rmkn.gz где
x.y.z номер версии ядраis Линуса (Linus') и m номер версии ядра
Алана (Alan's). В этом случае вам необходимо получить
соответствующий патч Алана Кокса с сервера kernel.org, в
директории /pub/linux/kernel/people/alan/linux-2.4/.
5. Загрузка основных исходников ядра Файлы патчей обычно не содержат
полностью компилируемый код, а являются заплатками для исходного текста
ядра. Следовательно вам необходимо получить основной текст ядра.
Исходные тексты ядра могут быть найдены на kernel.org FTP сайте.
Там много сайтов разбросанных по всему миру, и имена соответсвуют
обьединённой схемой наименования. Все сайты начинаются с 'ftp.' и
заканчиваются '.kernel.org'. В середине этого места идентификатор
страны. Для примера:
+ ftp.uk.kernel.org
+ ftp.us.kernel.org
+ ftp.de.kernel.org
и так далее. Вы можете найти больше информации о тех сайтах зайдя
на сайт http://www.kernel.org. Как только вы зайдёте на сайт, вам
надо будет найти исходные тексты ядра. Они хранятся в
поддиректории: /pub/linux/kernel. Каждый релиз ядра сопровождается
несколькоми файлами:
+ linux-x.y.z.tar.gz
+ linux-x.y.z.tar.bz2
+ patch-x.y.z.gz
+ patch-x.y.z.bz2
Вы должны скачать файл linux-x.y.z.tar.gz, снова в вашу
/usr/src/arm директорию. Этот файл большой (почти 45MB или
больше), если у вас модем, то это займет много времени.
6. Распаковка исходников ядра ARM Распакуйте tar архив который вы
скачали, испрользуя команду:
bash$ tar zxvf linux-x.y.z.tar.gz
Сейчас, измените в директории linux, и примените файлы патчей:
bash$ zcat ../patch-x.y.z-rmkn.gz | patch -p1
Патчи построены иерархически, поэтому вы должны добавлять их
последовательно. Файлы патчей с большими расширениями зависят от
файлов с ментшими расширениями, поэтому вы должны применять,
например -rmk патч перед -np патчем.
Дерево исходных текстов ядра готово сейчас готово для
конфигурирования.
7. Конфигурирование дерева исходных текстов ядра Во-первых, если вы
не компилировали ядро полностью "с нуля", тогда вам необходимо
модифицировать верхний уровень makefile ядра. Вам необходимо
изменить определения "ARCH" и "CROSS_COMPILE". Замените строчку
начинающуюся с ARCH := с ARCH := arm. Установите начало
CROSS_COMPILE = что бы путь и префикс средств вашего компилятора
(например, CROSS_COMPILE = /usr/local/bin/arm-linux- ).
Также прочтите linux/Documentation/README и
linux/Documentation/arm/README перед компиляцией.
Диапазон 'make' целевых систем который позволяет установить по
умолчанию выбранную машину для которой вы компилируете. Некоторые
примеры приведены ниже:
+ a5k_config
+ ebsa110_config
+ footbridge_config
+ rpc_config
+ brutus_config
+ victor_config
+ empeg_config
Выберите одну их них как "основную" конфигурацию следующим
образом: make footbridge_config. Затем, используйте make config
или make menuconfig для "обогощения" конфигурации. Большинство
опций конфигурации имеют помощь, поэтому если вы не уверены что
надо ответить, пожалуйста прочитайте помощь.
примечание: Если вы хотите изменить конфигурацию через make
xxx_config, пожалуйста переместите файл linux/.config немедленно
перед запуском команды.
8. Компилирование исходников ядра Если вы установили дерево исходных
текстов ядра только для программ, тогда вы закончили. Если вы
хотите перекомпилировать ядра "с нуля", выполните слудующие
команды:
bash$ make clean
bash$ make dep
bash$ make zImage
bash$ make modules
Последние две команды реально перекомпилируют ядро и модули (для ветки 2.4)
9. Установка ядра После успешной компиляции ядра, у вас есть образ
ядра, arch/arm/boot/zImage. Создайте зависимости если вы провели
кросс компиляцию.
Если вы сделали кросс компиляцию перейдие к секции: "[14]Установка
кросс компиляции ядра". (?)
Если вы строили "с нуля" (т.е., на таргете для таргета; таргет -
целевая система), читайте далее.
10. Установка ядра созданного "с нуля" С того моента как вы
собираетесь обновить системные файлы, зайдите в систему под рутом
("root") 'root'. Для того, что бы сделать это наберите:
bash$ su
Password:
bash#
Очень рекомендуется хранить текущую работающую версию ядра и
модулей (бакап, backup). Вам необходимо создать зависимоти для
машины. Отметте, что желательно иметь поледние работающие ядро и
модули, чтобы можно было откатиться назад.
Ниже приведён пример создания бакапа (for a 2.4.3-rmk1 kernel):
bash# cd /lib/modules
bash# ls
bash# mv 2.4.3-rmk1 2.4.3-rmk1.old
bash# cd /boot
bash# mv vmlinuz vmlinuz.bak
bash# mv System.map System.map.bak
bash#
Сейчас, установите новые модуля ядра:
bash# cd /usr/src/arm/linux
bash# make modules_install
bash#
Фактически копируются модули ядра в директорию /lib/modules/x.y.z.
Затем, установите образ ядра (обычно в /boot):
bash# cd /boot
bash# cat /usr/src/arm/linux/arch/arm/boot/zImage >vmlinuz
bash# cp /usr/src/arm/linux/System.map .
bash#
Обратите внимание, что используется команда копирования модулей
ядра cat, а не обычная cp. Традиционно Unix не выделяется
пространство в секции файлов содержащие нулевые данные, но заместо
создаются "дырки" в файлах. Некоторые загрузчики ядра не понимают
дырок в ядре, а следовательно используют cat в этом пути
проверяется что это не случиться.
11. Запуск loadmap Loadmap это часть Линуксового загрузчика на Acorn
машине, а также EBSA285 машины EBSA285BIOS используещие IDE диск.
Для других машин, пожалуйста смотрите документацию на другие
машины.
Редактируйте конфигурационный файл загрузчика /etc/boot.conf так
что вы можете загружать любой vmlinuz.bak или vmlinuz образ. Если
вы устанавливаете первое ядро vmlinuz, тогда это ядра должно быть
использованным загрузчиком по умолчанию.
Больше информации вы можете найти используя команду man boot.conf.
Запустите утилиту boot load map:
bash# loadmap -v
bash#
для обновления map.
Вы закончили и сейчас готовы перезагрузить машину с вашим новым
ядром! Если у вас будут проблемы пожалуйста зайдите на ссылку
"Проблемы" следующий шаг.
12. Установка кросс компилированного ядра Установка модулей в
/usr/src/arm/ ниже:
bash$ make modules_install INSTALL_MOD_PATH=/usr/src/arm/
bash$
Эти модули установятся в /usr/src/arm/lib/modules/x.y.z директорию
хоста, который может быть помещён в любое место диска, или передан
на файловую систему целевой машины. (отметте что
/usr/src/arm/lib/modules/x.y.z становиться /lib/modules/x.y.z на
целевой машине). Пожалуйста отметте что вы не устанавливаете
модули этого ядра на свою файловую систему, поскольку они не
совместимы с ядром вашего хоста.
Ядро доступно на /usr/src/arm/linux/arch/arm/boot/zImage и
символьная информация ядра в /usr/src/arm/linux/System.map. Точная
информация, как установить ядро на целевую систему находится за
рамками этого документа.
Важно, что бы вы безопасно сохранили файл System.map - содержит
символьную инфорацию про это ядро, которая потребуется, если вы
столнётесь с проблемами.
13. Сообщения о проблемах Пожалуйста ниже REPORTING-BUGS руководство
дереве исходников ядра. Тем не менее, используйте
linux-arm-kernel почтовые рассылки для сообщения опроблемах,
предпочтительнее чем почтовые рассылки linux-kernel
(http://www.nixsys.narod.ru/armlinux/mailinglists.php ) (сайт зарыт?).
Last modified: September 15, 2001
© 2004 Russell King All rights reserved.
1.1 , playnet (? ), 11:30, 12/03/2007 [ответить ]
+ /–
Писал явный грамотей...
Кто такой отметте, я так и не понял. Животное такое чтоли..
А про случаи, когда в словах ставится мягкий знак, автор видать вообще не знает. Это класс так 6-7.. И ТАКИХ сажают собирать ядро? Им же учиться надо!
Ну и вечная проблема всех детей и даунов: запятые ставятся только как отмаза для учителей.
1.2 , lamer (?? ), 12:33, 12/03/2007 [ответить ]
+ /–
>Обсуждение статьи тематического каталога: Компиляции Linux ядра для ARM
>машины (linux kernel cpu arm compile)
Своеобразно написано ))
1) Те кто компилит ядра под ARM и так наверное знает что такое # и $ в промпте, не обязательно рассказывать.Не знают?Тем хуже для них - странно компилить ядра не зная основ работы системы, это примерно как пытаться водить машину давя педали и вертя руль наобум в надежде что поедет и при том куда надо :).
2) Directory (Директория) вообще-то в русском обычно женского рода.Кто такой "директорий"?
3) зайдите как пользоватtkm root:
Опечатка однако.Проверять статьи до постинга - не вредно.В конце концов, статью прочитает на сайте толпа народа.Низкое качество статьи попортит вашу репутацию.
4) Некоторые ядра основаны на сирии ядра Алана Кокса
Я б на месте Кокса обиделся на такую классификацию его .. эээ.. потуг 8-/
> если вам необходимо откотиться назад.
5)Про зверя "отметте" сказал предыдущий оратор.Но вот при чем тут коты?
> Сейчас, установите новые модуля ядра
6) Все-таки "модули", сэр!
> Сообщения о проблемах Пожалуйста ниже REPORTING-BUGS руководство дереве исходников ядра.
7) "Стою на асфальте я в лыжи обутый!Или лыжи не едут, или я **анутый!".Пытался понять смысл вон той фразы которая выше.Не осилил что-то за 10 минут.
Автор!При всей полезности статьи может быть можно до публикации натравливать на нее хотя-бы спеллчекер?И перечитать разок-другой, а?А еще лучше запрягать для проверки кого-нибудь со знанием русского языка на благо народа, так сказать.Все-таки ваша статья будет ведь висеть годами на сайтах.Демонстрируя ваш уровень знаний по русскому языку :(.Который еще можно простить в комментах но для статьи это как-то не ахти.
2.3 , jaybee (? ), 09:58, 20/03/2007 [^ ] [^^ ] [^^^ ] [ответить ]
+ /–
да это машинный перевод статьи чьей-то
(наглядно видны стандартные обороты... как то:
>Вам должно нравиться читать linux/Documentation/README и
>linux/Documentation/arm/README перед процессом компиляции.)
1.5 , Alex (?? ), 18:18, 02/07/2010 [ответить ]
+ /–
А вам напиши и в рот положи а вы только сьели и еще обосрать где запятые !
Ответ В жепе!
1.8 , SerG (? ), 08:04, 05/05/2017 [ответить ]
+ /–
Поэтому и нет на русском языке них..ра никакой технической документации. Русский язык нужен что бы в баре посидеть про бл..дей поговорить, больше он не для чего не нужен.