Минимальный initrd для встраиваемых систем

Вопросы программного кода и архитектуры Linux

Модератор: Olej

Pasa
Активист
Сообщения: 10
Зарегистрирован: 30 сен 2013, 17:41
Контактная информация:

Re: Минимальный initrd для встраиваемых систем

Непрочитанное сообщение Pasa » 03 окт 2013, 18:38

Появились мысли, что Busybox собран криво. Погружаюсь в этот момент. Отпишусь по результатам.

Pasa
Активист
Сообщения: 10
Зарегистрирован: 30 сен 2013, 17:41
Контактная информация:

Re: Минимальный initrd для встраиваемых систем

Непрочитанное сообщение Pasa » 03 окт 2013, 18:50

alex65su писал(а):Как-то пропустил...
Так что разобраться со всеми этими приёмами на на десктопном дистрибутиве будет не только возможно, но и в разы легче, а то и дешевле (по неопытности, заказную железку одной неосторожной записью во флеш можно легко превратить в "кирпич").
Во флэшке у меня сидит слегка подправленный мной U-boot , с помощью которого ядро и rootfs по сети грузятся в RAM. Никаких чтений/записи во флэш нету. Грузятся практически голое ядро и rootfs , в которой только busybox.
Никаких NFS с поднятием сети, x-ов, драйверов видео и т.п. Думаю, что такой набор все-таки попроще, чем тонкий клиент на десктопе. После загрузки все полностью автономно, все сидит только в RAM. Если ошибаюсь поправьте.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Минимальный initrd для встраиваемых систем

Непрочитанное сообщение Olej » 03 окт 2013, 19:38

Pasa писал(а):Никаких NFS с поднятием сети, x-ов, драйверов видео и т.п. Думаю, что такой набор все-таки попроще, чем тонкий клиент на десктопе. После загрузки все полностью автономно, все сидит только в RAM. Если ошибаюсь поправьте.
Поправляю ("если ошибаюсь...") :lol: : меньше - вовсе не означает проще.

P.S. Но ... "хозяин барин" ;-)
Или "мы не ищем лёгких путей!" :?: ;-)

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Минимальный initrd для встраиваемых систем

Непрочитанное сообщение Olej » 03 окт 2013, 19:42

Pasa писал(а):Появились мысли, что Busybox собран криво.
Какой BusyBox? Откуда взятый?

P.S. У меня за разное время набралось несколько сот коллег, сотрудников, студентов, учеников ... разное, с кем пришлось работать.
Не было ни одного раза, чтобы, если что-то работает "не так", хоть кто-то сказал: "я неправ", всегда говорится что "компьютер неправ" и что "собрано криво" ;-)

Pasa
Активист
Сообщения: 10
Зарегистрирован: 30 сен 2013, 17:41
Контактная информация:

Re: Минимальный initrd для встраиваемых систем

Непрочитанное сообщение Pasa » 04 окт 2013, 10:09

буду первым....я не прав....собрал busybox не статически ...при выставлении опции static при сборке появляются ошибки...пошел учить матчасть

alex65su
Писатель
Сообщения: 40
Зарегистрирован: 13 дек 2012, 10:27
Контактная информация:

Re: Минимальный initrd для встраиваемых систем

Непрочитанное сообщение alex65su » 04 окт 2013, 10:57

Pasa писал(а): буду первым....я не прав....собрал busybox не статически ...при выставлении опции static при сборке появляются ошибки...пошел учить матчасть
busybox можно собрать и НЕстатически. В этом случае в соответствующем месте файловой системы вашей железки должны лежать библиотеки (*.so-шки), которые необходимы для работы busybox ;-)

Pasa
Активист
Сообщения: 10
Зарегистрирован: 30 сен 2013, 17:41
Контактная информация:

Re: Минимальный initrd для встраиваемых систем

Непрочитанное сообщение Pasa » 11 окт 2013, 11:44

удалось запустить стартовый скрипт 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....все равно получаю это сообщение

alex65su
Писатель
Сообщения: 40
Зарегистрирован: 13 дек 2012, 10:27
Контактная информация:

Re: Минимальный initrd для встраиваемых систем

Непрочитанное сообщение alex65su » 12 окт 2013, 14:40

Вполне возможен вариант, что в Вашем случае busybox статически собираться не должОн...

В embedded поделках кроме "классической" библиотеки glibc могут использоваться другие, несколько облегченные библиотеки. Возможно, что такая замена библиотеки позволит Вам собрать busybox статически. Замечу, что это всего лишь предположение(!).

Pasa
Активист
Сообщения: 10
Зарегистрирован: 30 сен 2013, 17:41
Контактная информация:

Re: Минимальный initrd для встраиваемых систем

Непрочитанное сообщение Pasa » 13 окт 2013, 14:34

alex65su писал(а):Вполне возможен вариант, что в Вашем случае busybox статически собираться не должОн...

В embedded поделках кроме "классической" библиотеки glibc могут использоваться другие, несколько облегченные библиотеки. Возможно, что такая замена библиотеки позволит Вам собрать busybox статически. Замечу, что это всего лишь предположение(!).
Подскажите пж-ста что и где надо поменять, чтобы собрать с другими библиотеками

alex65su
Писатель
Сообщения: 40
Зарегистрирован: 13 дек 2012, 10:27
Контактная информация:

Re: Минимальный initrd для встраиваемых систем

Непрочитанное сообщение alex65su » 13 окт 2013, 15:02

Pasa писал(а):
alex65su писал(а):Вполне возможен вариант, что в Вашем случае busybox статически собираться не должОн...

В embedded поделках кроме "классической" библиотеки glibc могут использоваться другие, несколько облегченные библиотеки. Возможно, что такая замена библиотеки позволит Вам собрать busybox статически. Замечу, что это всего лишь предположение(!).
Подскажите пж-ста что и где надо поменять, чтобы собрать с другими библиотеками
В качестве альтернативы glibc могут использоваться:
* dietlibc — альтернативная небольшая реализация Стандартной библиотеки языка Си
* uClibc — Стандартная библиотека языка Си для встраиваемых систем на базе Linux (MMU-less)
* Newlib — Стандартная библиотека языка Си для встраиваемых систем (MMU-less)
* klibc — применяется главным образом для загрузки Linux-систем.
* eglibc — разновидность glibc для встраиваемых систем.

Прежде чем собирать с какой-то другой библиотекой, имеет смысл почитать/просмотреть документацию в _вашей_ поставке busybox. Там, по идее, должно указываться с какими библиотеками (и их версиями), отличными от glibc, он должен собираться и как (кажись, в файле INSTALL, но могу ошибиться).

Дальше, берёте исходники нужной библиотеки, собираете toolchain и библиотеку, собираете ядро, busybox, ..., etc, и... радуетесь успешному результату :)

если чего-то не получилось, то... занимаетесь тюнингом, кувалдингом и напилингом... 8-)

PS
Вообще, если Вы серьёзно вцепились в embedded-Linux-поделку, то Вам имеет смысл обзавестись парой-тройкой базовых букварей по embedded-Linux, просмотреть/прочитать их и использовать их как шпаргалку, чтобы легче было ориентироваться в данном предмете вообще. Более конкретные и тонкие моменты будут характерны именно для того оборудования с которым Вы непосредственно имеете дело. Поэтому, дальше следует искать собратьев уже по оборудованию.

Ответить

Вернуться в «Linux изнутри»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 12 гостей