реклама на сайте
подробности

 
 
> initfamfs - busybox - kernel, порочный круг при сборке
Hoodwin
сообщение Dec 5 2013, 10:42
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 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, пересобирай снова все ядро...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Hoodwin
сообщение Dec 16 2013, 12:08
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 881
Регистрация: 21-03-10
Из: _// \\_
Пользователь №: 56 107



Да проверю, конечно. Просто сейчас текучки много, не хватает времени глубоко копать. Дело в том, что bootm передает управление в кастомную функцию (arch/c6x/lib/bootm.c):
Код
int do_bootm_linux(int flag, int argc, char * const argv[],
        bootm_headers_t *images)
{
        void (*kernel)() = (void *)images->ep;
        char *commandline = getenv("bootargs");
        if (commandline) {
                char *dst = (char *)images->ep + 0x1000;
                strncpy(dst, commandline, 1023);
                dst[1023] = 0;
        }
        {
                unsigned int *ptr = (unsigned int *)0xc1f00000;
                ptr[0] = 0x64000001; /*TAG_SOL*/
                ptr[1] = 0; /*size SOL*/
                ptr[2] = 0x64000002; /*TAG_EOL*/
                ptr[3] = 0;
        }
        asm("MVKL .S1 0x54694265,A4");
        asm("MVKH .S1 0x54694265,A4");
        asm("MVKL .S2 0xc1f00000,B4");  // это бред
        asm("MVKH .S2 0xc1f00000,B4"); // это тоже бред
        kernel();
        printf("after kernel\n");
        return 1;
}


То есть, как видно, ничего оно никуда не передает, только комстроку копирует. А вот как сказать ядру, что есть еще какие-то данные я пока не знаю. Это через тэги над сделать, или указателем в регистре?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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
- - Hoodwin   sasamy 1) У меня проблема в том, что образ ядра г...   Dec 13 2013, 06:02
|- - 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
|- - 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


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 26th June 2025 - 00:52
Рейтинг@Mail.ru


Страница сгенерированна за 0.01408 секунд с 7
ELECTRONIX ©2004-2016