Минимальный initrd для встраиваемых систем
Модератор: Olej
Re: Минимальный initrd для встраиваемых систем
Появились мысли, что Busybox собран криво. Погружаюсь в этот момент. Отпишусь по результатам.
Re: Минимальный initrd для встраиваемых систем
Во флэшке у меня сидит слегка подправленный мной U-boot , с помощью которого ядро и rootfs по сети грузятся в RAM. Никаких чтений/записи во флэш нету. Грузятся практически голое ядро и rootfs , в которой только busybox.alex65su писал(а):Как-то пропустил...
Так что разобраться со всеми этими приёмами на на десктопном дистрибутиве будет не только возможно, но и в разы легче, а то и дешевле (по неопытности, заказную железку одной неосторожной записью во флеш можно легко превратить в "кирпич").
Никаких NFS с поднятием сети, x-ов, драйверов видео и т.п. Думаю, что такой набор все-таки попроще, чем тонкий клиент на десктопе. После загрузки все полностью автономно, все сидит только в RAM. Если ошибаюсь поправьте.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Минимальный initrd для встраиваемых систем
Поправляю ("если ошибаюсь...") : меньше - вовсе не означает проще.Pasa писал(а):Никаких NFS с поднятием сети, x-ов, драйверов видео и т.п. Думаю, что такой набор все-таки попроще, чем тонкий клиент на десктопе. После загрузки все полностью автономно, все сидит только в RAM. Если ошибаюсь поправьте.
P.S. Но ... "хозяин барин"
Или "мы не ищем лёгких путей!"
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Минимальный initrd для встраиваемых систем
Какой BusyBox? Откуда взятый?Pasa писал(а):Появились мысли, что Busybox собран криво.
P.S. У меня за разное время набралось несколько сот коллег, сотрудников, студентов, учеников ... разное, с кем пришлось работать.
Не было ни одного раза, чтобы, если что-то работает "не так", хоть кто-то сказал: "я неправ", всегда говорится что "компьютер неправ" и что "собрано криво"
Re: Минимальный initrd для встраиваемых систем
буду первым....я не прав....собрал busybox не статически ...при выставлении опции static при сборке появляются ошибки...пошел учить матчасть
Re: Минимальный initrd для встраиваемых систем
busybox можно собрать и НЕстатически. В этом случае в соответствующем месте файловой системы вашей железки должны лежать библиотеки (*.so-шки), которые необходимы для работы busyboxPasa писал(а): буду первым....я не прав....собрал busybox не статически ...при выставлении опции static при сборке появляются ошибки...пошел учить матчасть
Re: Минимальный initrd для встраиваемых систем
удалось запустить стартовый скрипт 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....все равно получаю это сообщение
Но никак не удается собрать 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....все равно получаю это сообщение
Re: Минимальный initrd для встраиваемых систем
Вполне возможен вариант, что в Вашем случае busybox статически собираться не должОн...
В embedded поделках кроме "классической" библиотеки glibc могут использоваться другие, несколько облегченные библиотеки. Возможно, что такая замена библиотеки позволит Вам собрать busybox статически. Замечу, что это всего лишь предположение(!).
В embedded поделках кроме "классической" библиотеки glibc могут использоваться другие, несколько облегченные библиотеки. Возможно, что такая замена библиотеки позволит Вам собрать busybox статически. Замечу, что это всего лишь предположение(!).
Re: Минимальный initrd для встраиваемых систем
Подскажите пж-ста что и где надо поменять, чтобы собрать с другими библиотекамиalex65su писал(а):Вполне возможен вариант, что в Вашем случае busybox статически собираться не должОн...
В embedded поделках кроме "классической" библиотеки glibc могут использоваться другие, несколько облегченные библиотеки. Возможно, что такая замена библиотеки позволит Вам собрать busybox статически. Замечу, что это всего лишь предположение(!).
Re: Минимальный initrd для встраиваемых систем
В качестве альтернативы glibc могут использоваться:Pasa писал(а):Подскажите пж-ста что и где надо поменять, чтобы собрать с другими библиотекамиalex65su писал(а):Вполне возможен вариант, что в Вашем случае busybox статически собираться не должОн...
В embedded поделках кроме "классической" библиотеки glibc могут использоваться другие, несколько облегченные библиотеки. Возможно, что такая замена библиотеки позволит Вам собрать busybox статически. Замечу, что это всего лишь предположение(!).
* dietlibc — альтернативная небольшая реализация Стандартной библиотеки языка Си
* uClibc — Стандартная библиотека языка Си для встраиваемых систем на базе Linux (MMU-less)
* Newlib — Стандартная библиотека языка Си для встраиваемых систем (MMU-less)
* klibc — применяется главным образом для загрузки Linux-систем.
* eglibc — разновидность glibc для встраиваемых систем.
Прежде чем собирать с какой-то другой библиотекой, имеет смысл почитать/просмотреть документацию в _вашей_ поставке busybox. Там, по идее, должно указываться с какими библиотеками (и их версиями), отличными от glibc, он должен собираться и как (кажись, в файле INSTALL, но могу ошибиться).
Дальше, берёте исходники нужной библиотеки, собираете toolchain и библиотеку, собираете ядро, busybox, ..., etc, и... радуетесь успешному результату :)
если чего-то не получилось, то... занимаетесь тюнингом, кувалдингом и напилингом...
PS
Вообще, если Вы серьёзно вцепились в embedded-Linux-поделку, то Вам имеет смысл обзавестись парой-тройкой базовых букварей по embedded-Linux, просмотреть/прочитать их и использовать их как шпаргалку, чтобы легче было ориентироваться в данном предмете вообще. Более конкретные и тонкие моменты будут характерны именно для того оборудования с которым Вы непосредственно имеете дело. Поэтому, дальше следует искать собратьев уже по оборудованию.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость