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

 
 
> Минимальный initrd для встраиваемых систем
Pasa
сообщение Oct 2 2013, 08:05
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 107
Регистрация: 4-03-09
Из: Беларусь, Минск
Пользователь №: 45 665



Всем доброго дня/ночи/вечера/утра!
Есть отладочная плата от StarterKit - армовский проц AT9260.
В комплекте были исходники пропатченного для платы ядра и файловой системы.
Слегка их модифицировал под свою плату, не вдаваясь глубоко в теорию, сделал проект и успешно забыл.
Сейчас возникла необходимость реанимровать проект. Решил подойти к изучению линукса основательно - понять как фукционирует/грузится ядро и собирается файловая система. Применение - встраиваемые системы.

На основе материала http://www.opennet.ru/base/sys/initrd_intro.txt.html
собрал initrd. Подсунул его вместо прежней файловой системы. Ядро 2.6.28.
И ядро и initrd грузятся через tftpboot c виртуальной машины, на которой я собственно и собираю ядро и файловую систему.
В минимальном созданном вручную initrd в корне сделал linuxrc как описано в мануале.
Но ядро упорно ищет init и не хочет выполнять linuxrc.

Но в мануале написано:
"Предпоследний шаг - создание файла linuxrc. После того как ядро
монтирует ram диск, оно ищет init скрипт для выполнения. Если файл init
не найден, ядро выполняет файл linuxrc вместо init."

Такое вот на консоль выводит.
Kernel panic - not syncing: No init found. Try passing init= option to kernel.

В конфиге ядра:
CONFIG_CMDLINE="root=/dev/ram0 rw initrd=0x21000000,0x500000 console=ttyS0,115200 mem=32M"

Подскажите в каком направлении копать, может я что-то не так понял в руководстве, почему не запускается linuxrc?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Pasa
сообщение Oct 11 2013, 08:36
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 107
Регистрация: 4-03-09
Из: Беларусь, Минск
Пользователь №: 45 665



удалось запустить стартовый скрипт linuxrc. Но при условии, что я busybox подменил - взял готовый бинарник собранный в buildroot и руками сделал в корне /lib и напихал туда все библиотеки, котрые понаделал buildroot.

Но никак не удается собрать busybox статически.
Ругается:
-----------------------------------------------------------
applets/applets.c:20:2: error: #warning Static linking against glibc produces buggy executables
applets/applets.c:21:2: error: #warning (glibc does not cope well with ld --gc-sections).
applets/applets.c:22:2: error: #warning See sources.redhat.com/bugzilla/show_bug.cgi?id=3400
applets/applets.c:23:2: error: #warning Note that glibc is unsuitable for static linking anyway.
applets/applets.c:24:2: error: #warning If you still want to do it, remove -Wl,--gc-sections
applets/applets.c:25:2: error: #warning from top-level Makefile and remove this warning.
make[1]: *** [applets/applets.o] Error 1
make: *** [applets] Error 2
--------------------------------------------------------------

удаляю -Wl,--gc-sections из makefile....все равно получаю это сообщение


Цитата(xor.kruger @ Oct 2 2013, 14:17) *
Неоднократно использовал Initramfs. Собирал его Busybox'ом. Работало все отлично со множеством архитектур.
Шаги такие:
1. Качаете Busybox на официальном сайте www.busybox.org
2. Выставляете необходимые опции через make menuconfig. Для начала экспириментов обязательно выставьте опции сборки static.
3. Собираете Busybox: make CROSS_COMPILE=префикс
3. Инсталлируете (по умолчанию в каталог _install): make install CROSS_COMPILE=префикс
4. В каталоге _install делаете ссылку init на bin/busybox
5. Добавляете необходимые файлы устройств в каталог dev, inittab и необходимые скрипты загрузки в etc
6. Запаковываете: find . | cpio -H newc -o > ../initramfs.cpio
7. Архивируете (например gzip): gzip -9 initramfs.cpio
8. Перемещаете в каталог с ядром, указываете в опциях ядра имя файла и алгоритм сжатия. Компилируете и наслаждаетесь sm.gif

ЗЫ: При таком случае в параметрах загрузки о Initramfs необязательно что-то указывать.


- подскажите....для чего шаг 4.... Такую ссылку наблюдаю, когда собираю rootfs с помощью buildroot

- поясните пж-ста шаг 8. Где и в каких опциях ядра и что нужно указать?

Сообщение отредактировал Pasa - Oct 11 2013, 08:37
Go to the top of the page
 
+Quote Post



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

 


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


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