Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Компиляция ядра LINUX
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы
Илья_Антоненко
Всем доброго времени суток.

Помогите пожалуйста вот с какой проблемой. У меня стоит RED HAT на VMWare Workstation. Я попытался перекомпелировать ядро LINUX. Я скачал исходники ядра 2.6.20. Когда дошел до команды make bzImage началась компиляция, но заканчилась она не успешным завершением, а сообщением, которое приведено в приложенной картинке. Если кто-нибудь знает в чем дело подскажите пожалуйста.
path_finder
скорее всего надо обновить bin-utils.
кстати в RH рекомендуется обновляться из rpm-ов.
Кстати, какая текущая версия ядра?
Илья_Антоненко
Текущая версия 2.4.20.
А обновляю таким образом, так как нужно сделать своеобразный загрузачный винчестер. Т.е. взять винчестер залить на него загрузчик и ядро, настроить соответствующим образом и подключить к системе с одним только BIOS, надо чтобы это все заработало. Вот я и хочу для начала скомпилировать ядро и посмотреть как загрузчик настраивается.

Можно еще в догонку вопрос. Ведь если скопировать просто образ ядра и настроить на него загрузчик(расположенный на винчестере), это работать не будет. Что еще нужно сделать, чтобы такая система начала жить?
forever failure
Однако большой бубен, начальник. Переход с ветки 2.4 на 2.6 требует ещё кучу дополнетельных операций. Вам оно точно понадобилось, что б ядро было 2.6.20 ?
А может будет проще собрать самое свежее (по моему 2.4.32) ядро из 2.4 ветки ?

ЗЫ. Если просто скопировать сжатый образ в нужное место, и сделать на него ссылки в конфиге загрузчика, то это может и работать, при условии, что в ядре нет выгружаемых модулей. Если есть, то надо ещё и установливать модули.
Илья_Антоненко
Понял, отстал.
Будем компилеть 2.4.xx. Хотя надо будет почитать как на 2.6.хх перейти.
Damon
Цитата(Илья_Антоненко @ Feb 23 2007, 17:21) *
Ведь если скопировать просто образ ядра и настроить на него загрузчик(расположенный на винчестере), это работать не будет. Что еще нужно сделать, чтобы такая система начала жить?

Покури man initrd.

Для быстрого "въезда" можешь глянуть здесь: _http://posix.ru/distro/rip/

При загрузке initrd грузиться в память загрузчиком, как и ядро. Посему, смотри man на свой загрузчик. Если GRUB могу пример конфига кинуть.

Подробнее можно прочесть здесь: _http://www.opennet.ru/opennews/art.shtml?num=8017

В 2.6.х на смену initrd пришла новая фича -- initramfs. Интересна тем, что не блочное устр-во. Т.е. если файлы с initrd, как и с RAM-диска еще и дополнительно кешировались в памяти, то initramfs, как и tmpfs, фактически представляет собой "...по сути примонтированный кэш ядра." (_http://www.opennet.ru/opennews/art.shtml?num=7156). До кучи могут еще и в своп вытесняться, дополнительно освобождая память.

С inintrd у меня как-то не срослось (надобности ковырять небыло), а с initramfs сейчас себе роутер собрать пытаюсь. Чем понравилась именно initramfs -- ее образ (файл архива *.cpio), можно слинковать с ядром пири компиляции последнего. Т.е. при необходимости написания своего загрузчика задача упрощается -- надо будет грузить всего один файл, ядро, а уж оно там само разберется, что к чему.

Позабавило, что при использовании tmpfs, отпадает надобность в форматировании устройства (онож не блочное) и код остальных fs (ext2/3, reiser и т.д.) можно просто выкинуть из ядра.

Из последних достижений -- образ bzImage размером 645 килов. Это, вместе с прилинкованным образом initramfs. Правда, отключено все что можно, включая сеть, УСБи и пр...

PS. чуть не забыл. :-)
Поскольку экспериментирую с uClibc, для борки образа initramfs пользуюсь buildroot'ом. Должен быть на uClibc.org.
Илья_Антоненко
Да, именно с initrd у меня незадача и вышла.
Ядро я перекомпилил, вроде все нормально. Настраиваю Grub на работу с другим ядром, пишу ему
root .....
kernel.... root=....
initrd.....

Точных параметров не помню, все это дома, а я сейчас пишу с работы. Но общий смысл такой, после root= пишу тот раздел, где команда df олпределяет корневой каталог.
Далее перезагружаю, дохожу до момента загрузки, выбираю свое ядро, а дальше после некоторых шагов загрузки получаю kernel panic, связанный с тем, что не может примонтировать VFS. Предварительно сообщает, что патаметр root= задано не правильно. Честно говоря не знаю, что делать.

Может есть какой-нибудь совет, ну или ссылка где можно увеличить багаж знаний.
Damon
Цитата(Илья_Антоненко @ Feb 27 2007, 12:18) *
Может есть какой-нибудь совет, ну или ссылка где можно увеличить багаж знаний.

Я, когда у меня только начался интерес к процессу загрузки пингвина, ковырял Movix. Его initrd потрошил. Понравилось, как там определение оборудования сделано.

Цитата(Илья_Антоненко @ Feb 27 2007, 12:18) *
Далее перезагружаю, дохожу до момента загрузки, выбираю свое ядро, а дальше после некоторых шагов загрузки получаю kernel panic, связанный с тем, что не может примонтировать VFS. Предварительно сообщает, что патаметр root= задано не правильно. Честно говоря не знаю, что делать.

Здесь все просто. В initrd выполняется /initrc (кажется), который может быть скриптом. После выхода из него, ядро пытается примонтировать то, что было задано при компиляции или при загрузке с помощью опции root=... Если такового не существует, ведро впадает в панику. Вывод, здесь два варианта.
Первый описан в man initrd, и реализован в в различных дистрибах (в Movix'е в том числе), т.е. подгрузить модуль для дискового девайса и нужной fs и ядро потом само подмонтирует нужный раздел.
Второй, и наиболее простой, ИМХО, просто не выходить из /initrc...
Damon
Цитата(Илья_Антоненко @ Feb 27 2007, 12:18) *
Точных параметров не помню, все это дома, а я сейчас пишу с работы. Но общий смысл такой, после root= пишу тот раздел, где команда df олпределяет корневой каталог.

Упс... Пропустил мимо ушей... В продолжение предыдущего поста.
Не люблю гадать на кофейной гуще, но пара вопросов есть. Что у вас за винт/контроллер (SATA/PATA), есть ли поддержка сего в загружаемом ядре. Если скомпилена, то как? Модулем или вкомпилена, если модулем, то его и надо в initrd подгружать (для этого он и придуман ;-). Включена ли в ядре поддержка fs с данного раздела, опять, как она включена... Без всего этого ведро и будет в панику падать.
KirillS
Цитата(Илья_Антоненко @ Feb 27 2007, 11:18) *
Да, именно с initrd у меня незадача и вышла.
Ядро я перекомпилил, вроде все нормально. Настраиваю Grub на работу с другим ядром, пишу ему
root .....
kernel.... root=....
initrd.....

Точных параметров не помню, все это дома, а я сейчас пишу с работы. Но общий смысл такой, после root= пишу тот раздел, где команда df олпределяет корневой каталог.
Далее перезагружаю, дохожу до момента загрузки, выбираю свое ядро, а дальше после некоторых шагов загрузки получаю kernel panic, связанный с тем, что не может примонтировать VFS. Предварительно сообщает, что патаметр root= задано не правильно. Честно говоря не знаю, что делать.

Может есть какой-нибудь совет, ну или ссылка где можно увеличить багаж знаний.


В параметре root= задается девайс с которого загружается kernel. Например, root=/dev/ram rw .
Полезная ссылка - тут
PrSt
Цитата(KirillS @ Feb 28 2007, 14:30) *
В параметре root= задается девайс с которого загружается kernel. Например, root=/dev/ram rw .
Полезная ссылка - тут

кстати, может еще кому пригодится...
для начинающих - по ядру не плохо описано здесь - http://linux4u.jinr.ru/docs/add04/kernel-2...nstall-2.0.html
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.