Linux for ARM
UPD. Согласно milestone, релиз готов на 97%. Т.е. нужно закрыть одно issue, протестировать руководство и всё.
Несмотря на то, что над версией LFA 1.0.0 я работал несколько месяцев, я не могу назвать её стабильной на 100% - ничто не идеально. В будущих корректирующих версиях, которые я планирую выпускать так долго, пока не выйдет LFA 2.0.0 (да и вообще не хочу спешить с выходом мажорных версий), конечно, будут исправляться многие ошибки и недочёты, но по-настоящему стабильная и серьёзная версия LFA, на мой взгляд, будет не LFA 1.X, а LFA 2.X.
Условия выхода LFA 2.0.0 таковы:
1. Разработка автоматизированной системы сборки LFA. Система сборки не является заменой ручного метода сборки системы, она предназначена для упрощения тестирования сборочных инструкций LFA на корректность.
2. Расширение и конкретизация сведений о сборке загрузчика U-Boot. Я хочу добавить больше сведений о файлах
3. Возможный отказ от 32-битных архитектур семейства ARM. Вообще, я хочу оставить поддержку только ARMv8, но не знаю, решусь ли я на этот радикальный шаг к версии LFA 2.0. Возможно, во втором релизе руководства сохранятся текущие поддерживаемые архитектуры.
Кроме того мне очень хочется написать некое подобие пакетного менеджера для LFA, но это уже мечты, и я не знаю, воплощу ли их когда-либо в жизнь. Как обычно бывает, когда замышляешь что-то крупное, постоянно нет возможности это реализовать — то не хватает времени, то сил, то всего вместе.
Условия выхода LFA 2.0.0 таковы:
1. Разработка автоматизированной системы сборки LFA. Система сборки не является заменой ручного метода сборки системы, она предназначена для упрощения тестирования сборочных инструкций LFA на корректность.
2. Расширение и конкретизация сведений о сборке загрузчика U-Boot. Я хочу добавить больше сведений о файлах
boot.cmd
и uInitrd
, конкретизировать главу по сборке img-образа системы, а также добавить информацию о некоторых патчах, которые желательно бы применить к некоторым пакетам.3. Возможный отказ от 32-битных архитектур семейства ARM. Вообще, я хочу оставить поддержку только ARMv8, но не знаю, решусь ли я на этот радикальный шаг к версии LFA 2.0. Возможно, во втором релизе руководства сохранятся текущие поддерживаемые архитектуры.
Кроме того мне очень хочется написать некое подобие пакетного менеджера для LFA, но это уже мечты, и я не знаю, воплощу ли их когда-либо в жизнь. Как обычно бывает, когда замышляешь что-то крупное, постоянно нет возможности это реализовать — то не хватает времени, то сил, то всего вместе.
На этой неделе в LFA (8)
(период с 20 по 26 мая)
На этой неделе вышел в свет наш первый релиз LFA 1.0! В принципе, писать больше нечего. Версия 1.1 будет в содержать в основном обновления пакетов, исправления опечаток и дополнение инструкций по сборке загрузчика U-Boot.
Ну и конечно же ALFA (Automated Linux for ARM) — программа для сборки LFA из исходного кода. Я планирую начать работу над ней и закончить к выходу LFA 2.0. Я хочу использовать ALFA для тестирования сборочных инструкций, потому что собирать всё вручную — это долго и муторно для тестирования и работы над LFA.
Для LFA 1.1 обновил часть пакетов и дополнил список требований к хосту. Спасибо одному из читателей за обратную связь!
#Week
(период с 20 по 26 мая)
На этой неделе вышел в свет наш первый релиз LFA 1.0! В принципе, писать больше нечего. Версия 1.1 будет в содержать в основном обновления пакетов, исправления опечаток и дополнение инструкций по сборке загрузчика U-Boot.
Ну и конечно же ALFA (Automated Linux for ARM) — программа для сборки LFA из исходного кода. Я планирую начать работу над ней и закончить к выходу LFA 2.0. Я хочу использовать ALFA для тестирования сборочных инструкций, потому что собирать всё вручную — это долго и муторно для тестирования и работы над LFA.
Для LFA 1.1 обновил часть пакетов и дополнил список требований к хосту. Спасибо одному из читателей за обратную связь!
#Week
Система инициализации LFA
Большинство современных дистрибутивов Linux в качестве системы инициализации используют systemd. Есть несколько "особенных", которые вместо него используют либо SysVInit, либо OpenRC либо что-то ещё более экзотическое.
А вот в LFA ничего из этого нет! Всё дело в том, что LFA это руководство, в котором рассказывается о встраиваемой системе, поэтому применение какого-то "тяжёлого" софта, на мой взгляд, не является предпочтительным, поэтому здесь используется система инициализации из состава BusyBox. Подобно SysVInit он использует загрузочные скрипты, с примером которых вы можете ознакомиться в нашем репозитории lfa-bootscripts. В LFA 1.1 о системе инициализации BusyBox будет рассказано подробнее.
Вообще, BusyBox содержит в себе просто кучу самых разных программ (понятное дело, весьма минималистичных), объединённых в один двоичный файл. Вы можете ознакомиться с каждой из них при сборке этого пакета.
#Tips
Большинство современных дистрибутивов Linux в качестве системы инициализации используют systemd. Есть несколько "особенных", которые вместо него используют либо SysVInit, либо OpenRC либо что-то ещё более экзотическое.
А вот в LFA ничего из этого нет! Всё дело в том, что LFA это руководство, в котором рассказывается о встраиваемой системе, поэтому применение какого-то "тяжёлого" софта, на мой взгляд, не является предпочтительным, поэтому здесь используется система инициализации из состава BusyBox. Подобно SysVInit он использует загрузочные скрипты, с примером которых вы можете ознакомиться в нашем репозитории lfa-bootscripts. В LFA 1.1 о системе инициализации BusyBox будет рассказано подробнее.
Вообще, BusyBox содержит в себе просто кучу самых разных программ (понятное дело, весьма минималистичных), объединённых в один двоичный файл. Вы можете ознакомиться с каждой из них при сборке этого пакета.
#Tips
Навигация по руководству
Устали использовать мышь для переключения на страницу вперёд/назад? Используйте клавиатуру! С помощью стрелок "Влево" и "Вправо" возможна навигация на страницу вперёд/назад, а по нажатию на клавишу
#Tips
Устали использовать мышь для переключения на страницу вперёд/назад? Используйте клавиатуру! С помощью стрелок "Влево" и "Вправо" возможна навигация на страницу вперёд/назад, а по нажатию на клавишу
s
откроется строка поиска по руководству.#Tips
Офлайн версия руководства
Если вам нужен доступ к LFA и без интернета, то вы, конечно, можете воспользоваться PDF-версией, однако она, на мой взгляд, не очень удобна по сравнению с HTML-версией. Скачайте архив с offline-html руководством и откройте файл
#Tips
Если вам нужен доступ к LFA и без интернета, то вы, конечно, можете воспользоваться PDF-версией, однако она, на мой взгляд, не очень удобна по сравнению с HTML-версией. Скачайте архив с offline-html руководством и откройте файл
index.html
. На этом всё - больше никаких телодвижений для чтения руководства предпринимать не нужно и уж тем более не нужно устанавливать никаких серверов и прочего ПО.#Tips
Сборка дополнительного ПО
Если в собранной системе LFA вы хотите иметь дополнительное ПО, то, конечно, можете попробовать собрать его с помощью нашего кросс-компилятора. Этот метод наиболее предпочтительный, если вы собираете некрупную программу с небольшим числом зависимостей или вообще без них. Однако если же вы собираете что-то крупное, то вам будет сложно скомпилировать как его зависимости, так и искомую программу, да и в случае кросс-компиляции такого крупного ПО шанс собрать что-то не так возрастает.
Поэтому для сложного ПО рекомендуем вам поднять виртуальную машину (да ту же QEMU) и собирать там. Для этого вам нужна уже собранная по LFA система - она у вас уже есть. Всё, что вам нужно - это собрать загрузчик U-Boot для QEMU и создать ряд необходимых для него файлов, после чего сгенерировать образ полученной системы и загрузиться с него (обратите также своё внимание на то, что ядро также должно иметь поддержку эмулируемых железок в QEMU). Далее вы собираете в этой системе все зависимости, а также искомую программу, запаковываете собранные зависимости и программу в архив (и только их, но не всю систему!) и распаковываете в
#Tips
Если в собранной системе LFA вы хотите иметь дополнительное ПО, то, конечно, можете попробовать собрать его с помощью нашего кросс-компилятора. Этот метод наиболее предпочтительный, если вы собираете некрупную программу с небольшим числом зависимостей или вообще без них. Однако если же вы собираете что-то крупное, то вам будет сложно скомпилировать как его зависимости, так и искомую программу, да и в случае кросс-компиляции такого крупного ПО шанс собрать что-то не так возрастает.
Поэтому для сложного ПО рекомендуем вам поднять виртуальную машину (да ту же QEMU) и собирать там. Для этого вам нужна уже собранная по LFA система - она у вас уже есть. Всё, что вам нужно - это собрать загрузчик U-Boot для QEMU и создать ряд необходимых для него файлов, после чего сгенерировать образ полученной системы и загрузиться с него (обратите также своё внимание на то, что ядро также должно иметь поддержку эмулируемых железок в QEMU). Далее вы собираете в этой системе все зависимости, а также искомую программу, запаковываете собранные зависимости и программу в архив (и только их, но не всю систему!) и распаковываете в
$LFA_SYS
, т.е. туда, где содержатся файлы собранной системы LFA.#Tips
https://wiki.freebsd.org/arm/Allwinner/booting
Информация с WiKi FreeBSD по поводу записи загрузчика (U-Boot) на компьютеры с Allwinner SoC. 3 достаточно распространённых среди одноплатников SoC Allwinner, Broadcom и Rockchip. Мб есть и другие, но я пока что встречал одноплатники именно с этими.
Информация с WiKi FreeBSD по поводу записи загрузчика (U-Boot) на компьютеры с Allwinner SoC. 3 достаточно распространённых среди одноплатников SoC Allwinner, Broadcom и Rockchip. Мб есть и другие, но я пока что встречал одноплатники именно с этими.
А у нас появился Boosty!
boosty.to
Linux for ARM - Автор руководства «Linux for ARM»
Автор руководства Linux for ARM (LFA). LFA — руководство по сборке своего дистрибутива Linux с
нуля из исходного кода для компьютеров на ARM-архитектуре. Сборка такой
системы осуществляется посредством кросс-компиляции исходного кода
необходимых компонентов…
нуля из исходного кода для компьютеров на ARM-архитектуре. Сборка такой
системы осуществляется посредством кросс-компиляции исходного кода
необходимых компонентов…
Обновления ядра Linux
Final Results
75%
Использовать только LTS-версии ядра; обновлять их редко
25%
Использовать последние версии ядра