|
initfamfs - busybox - kernel, порочный круг при сборке |
|
|
|
Dec 5 2013, 10:42
|
Знающий
   
Группа: Участник
Сообщений: 881
Регистрация: 21-03-10
Из: _// \\_
Пользователь №: 56 107

|
Вот какая загвоздка. Имеем линукс для платформы c6x, который собираем с rootfs в варианте min-root, который по сути содержит 1) busybox, 2) mtd-utils, 3) libc. При сборке с нуля возникает такая проблема. Чтобы собрать cpio образ rootfs, нужно в него положить все бинарники, то есть, в том числе, busybox, libc*.so и пр. Чтобы собрать busybox нужно иметь собранное ядро. А когда ядро собирается в конфигурации с initramfs, то конфгурационный скрипт дописывает в ($BLD)/.config строчку CONFIG_INITRAMFS_SOURCE=<путь к cpio>. Ну и вот при первой сборке никакого cpio то и нет еще. Получается порочный круг, и вообще гладко ничего собрать нельзя.
Пока что изворачивались тем, что подкладывали вначале какой-нибудь левый min-root-c6x.cpio, чтобы пройти цепочку и собрать настоящий rootfs, но это все в ручном режиме, противоречить идее make.
Может быть есть более прямой способ сборки? Например, меня бы устроил вариант, когда сначала ядро собирается само по себе, а потом отдельным таргетом к нему пришивается initramfs, и я могу управлять моментом этого пришивания - после сборки busybox, mtf-utils,... -> rootfs. Но уж как-то странно, что это надо прописывать через .config. Изменил .config, пересобирай снова все ядро...
|
|
|
|
|
 |
Ответов
|
Dec 13 2013, 06:02
|
Знающий
   
Группа: Участник
Сообщений: 881
Регистрация: 21-03-10
Из: _// \\_
Пользователь №: 56 107

|
sasamy1) У меня проблема в том, что образ ядра грузится по TFTP, а параметр initrd, который Вы упоминаете, описан как filename, который содержит образ рамдиска. То, что с 2.6 можно туда тоже подпихнуть initramfs, я прочитал, но непонятно, как ядро найдет по этому имени что-то, если образ загружен по tftp. Обычный initrd в дескотоповой системе ссылается на /boot/inird-..., и ядро, видимо как-то монтирует сам boot раздел. В моем случае такого раздела нет, и поэтому это вариант я пока не смотрел. 2) Образ uImage с двумя файлами внутри уже интереснее. Из примера следует, что образ рамдиска встроен в uImage в виде второго файла. Однако пока непонятен механизм, как ядро узнает о наличии этого образа? Насколько я понимаю, ядро само по себе не обучено взаимодействовать с u-boot. Наоборот, U-boot скармливает ядру необходимые опции. А тут речь идет о том, как научить ядро находить по имени, подставленному в initrd=, собственно файл с образом initramfs. 3) Вот этот вот комментарий (http://git.buildroot.net/buildroot/tree/linux/linux.mk#n172) Цитата # As the kernel gets compiled before root filesystems are # built, we create a fake cpio file. It'll be # replaced later by the real cpio archive, and the kernel will be # rebuilt using the linux26-rebuild-with-initramfs target. доказывает, что проблема существует, и что ядро действительно надо собирать дважды через его собственные Makefile-ы, чтобы получить результат. То есть эта "ерунда" из ядра произрастает, а все кто вокруг как-то под это подстраиваются. c6x еще на предыдущей ступени развития в этой части. 4) Любой большой проект включает в себя этапы, в соответствии с которыми что-то делается фундаментально и сразу, а что-то упрощенно, как временная мера, просто потому, что сразу на все ресурсов не хватает. Наша задача - разобраться в том, что есть, и развить то, что нам необходимо. Все в детстве писают в штаны, но потом все налаживается.
|
|
|
|
Сообщений в этой теме
Hoodwin initfamfs - busybox - kernel Dec 5 2013, 10:42 Dron_Gus Зачем busybox'у собранное ядро? Dec 5 2013, 14:27 Hoodwin Вот это еще одна загадка, на которую я пока не име... Dec 5 2013, 15:37 sasamy Цитата(Hoodwin @ Dec 5 2013, 14:42) Может... Dec 5 2013, 18:55 Hoodwin 1) Вообще то там чаще индусы попадаются
2) makefi... Dec 5 2013, 19:38 sasamy Цитата(Hoodwin @ Dec 5 2013, 23:38) 3) Кр... Dec 5 2013, 19:50 Hoodwin Ну, допустим. Тогда объясните на пальцах, как прав... Dec 5 2013, 20:07 sasamy Цитата(Hoodwin @ Dec 6 2013, 00:07) Ну, д... Dec 5 2013, 20:27 Tarbal Цитата(Hoodwin @ Dec 6 2013, 00:07) Ну, д... Dec 12 2013, 13:45 Hoodwin Ну не выходит то, что при сборке с нуля ядра со вс... Dec 5 2013, 20:45 sasamy Цитата(Hoodwin @ Dec 6 2013, 00:45) Вы мн... Dec 5 2013, 20:53 Hoodwin Так вот засада то в том, что для линковки ядра с н... Dec 5 2013, 21:03 sasamy Цитата(Hoodwin @ Dec 6 2013, 01:03) Так в... Dec 5 2013, 21:14 Dron_Gus Что у Вас за загрузчик? Если что-то не очень кастр... Dec 6 2013, 07:44 Hoodwin U-Boot 2012.04.01 (Feb 07 2013 - 18:10:09) Dec 6 2013, 09:09 Dron_Gus Цитата(Hoodwin @ Dec 6 2013, 13:09) U-Boo... Dec 6 2013, 14:56 krux почитайте
http://www.linuxfromscratch.org/lfs/vie... Dec 6 2013, 17:37 Hoodwin ну то, что это самодельный дистрибутив, оно понятн... Dec 6 2013, 19:46 Hoodwin Есть у меня такая книжка. Правда издания 2006 года... Dec 12 2013, 14:37 Tarbal Цитата(Hoodwin @ Dec 12 2013, 18:37) Есть... Dec 12 2013, 20:26 Hoodwin Tarbal
Ну и как этот текст помогает решить исходну... Dec 12 2013, 21:22 sasamy Цитата(Hoodwin @ Dec 13 2013, 01:22) И во... Dec 12 2013, 22:26 sasamy Цитата(Hoodwin @ Dec 13 2013, 10:02) 1) У... Dec 13 2013, 07:01 Hoodwin sasamy
ЦитатаУ вас проблема со чтением
Цитата
ini... Dec 13 2013, 09:45 sasamy ЦитатаКонкретно про filename прочитал тут:
с наск... Dec 13 2013, 10:23 Dron_Gus Цитата(Hoodwin @ Dec 13 2013, 13:45) Я не... Dec 16 2013, 07:01 Hoodwin Да проверю, конечно. Просто сейчас текучки много, ... Dec 16 2013, 12:08 Dron_Gus Цитата(Hoodwin @ Dec 16 2013, 16:08) Да п... Dec 18 2013, 06:53 Hoodwin А, ну я там подписал в комментарии "бред... Dec 19 2013, 07:57 Hoodwin Вот я смотрю в своем ядре (2.6.34), тэги для рамди... Dec 19 2013, 17:00 Dron_Gus Вполне может быть, что и не прижилось. Я работаю в... Dec 20 2013, 09:30 Hoodwin Ладно, пока решил перенести код с армов, там вполн... Dec 20 2013, 12:42
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|