На этой неделе в 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%
Использовать последние версии ядра
Linux for ARM 1.1.1
Корректирующий микровыпуск LFA.
Изменения:
- Исправил ссылки для скачивания файлов
- Обновил ядро Linux до версии 6.6
- Обновил Binutils до версии 2.43
Доступны онлайн-версия, HTML-версия для локального чтения (откройте файл index.html) и PDF.
Исходный код доступен в репозитории GitHub.
Корректирующий микровыпуск LFA.
Изменения:
- Исправил ссылки для скачивания файлов
wget-list
и md5sums
- Обновил ядро Linux до версии 6.6
- Обновил Binutils до версии 2.43
Доступны онлайн-версия, HTML-версия для локального чтения (откройте файл index.html) и PDF.
Исходный код доступен в репозитории GitHub.
Теперь для самостоятельной сборки руководства LFA требуется установить зависимость
Из-за непоняток с сервисом Boosty решил отказаться от него. Обычные банковские карты — наше всё.
Из нерешённого (на будущее):
- Обновление пакетов, входящих в состав LFA;
- Создание инструментария для автоматизации сборки руководства (HTML, PDF, offline HTML) и автоматизации редактирования метаданных (списки пакетов в файлах
mdbook-variables
. Этот пакет (Rust crate) используется в книге, чтобы не менять вручную ряд данных в руководстве, зависящих от версии LFA или используемых в ней пакетов.Из-за непоняток с сервисом Boosty решил отказаться от него. Обычные банковские карты — наше всё.
Из нерешённого (на будущее):
- Обновление пакетов, входящих в состав LFA;
- Создание инструментария для автоматизации сборки руководства (HTML, PDF, offline HTML) и автоматизации редактирования метаданных (списки пакетов в файлах
packages.toml
и pkg_list.toml
).Теперь для генерации файлов
Исходный код программы содержится в отдельном репозитории GitHub.
md5sums
, wget-list
, md/*/pkgs/*.md
применяется программа pkg
. Кроме того, она может использоваться и для редактирования метаданных руководства в удобном псевдографическом режиме (файлы packages.toml
и pkg_info.toml
).pkg
— программа, написанная на Rust (в репозитории handbook приведена её скомпилированная версия), являющаяся заменой нескольким Python-скриптам.Исходный код программы содержится в отдельном репозитории GitHub.
Мелкое изменение на сайте: теперь по ссылке https://linux-for-arm.github.io/lfa/stable/ всегда доступна стабильная на данный момент версия LFA.
До этого на странице для чтения на стабильную версию указывала последняя опубликованная версия.
До этого на странице для чтения на стабильную версию указывала последняя опубликованная версия.
linux-for-arm.github.io
Читать руководство — LFA
Читать реководство LFA (Linux for ARM). Доступна корректирующая версия 1.2!
У нас в чате возник вопрос по поводу дальнейших обновлений руководства.
В планах выпустить крупный релиз LFA 2.0. Но это будет не сейчас. Могу сказать, что это будет после февраля 2025 года. Из обязательных условий выхода второй версии LFA — релиз системы автоматизированной сборки LFA. Конечно, основная идея LFA заключается в самостоятельной сборке каждого пакета из исходного кода. Однако система для автоматизации сборки нужна в первую очередь мне, потому что после каждого обновления даже мелкого пакета в руководстве выполнять полную пересборку системы для тестирования правильности обновления, конечно, такое себе.
Пока эта система сборки находится на стадии проектирования и разработки, будут выходить корректирующие версии LFA 1.X с обновлениями пакетов и мелкими правками.
В планах выпустить крупный релиз LFA 2.0. Но это будет не сейчас. Могу сказать, что это будет после февраля 2025 года. Из обязательных условий выхода второй версии LFA — релиз системы автоматизированной сборки LFA. Конечно, основная идея LFA заключается в самостоятельной сборке каждого пакета из исходного кода. Однако система для автоматизации сборки нужна в первую очередь мне, потому что после каждого обновления даже мелкого пакета в руководстве выполнять полную пересборку системы для тестирования правильности обновления, конечно, такое себе.
Пока эта система сборки находится на стадии проектирования и разработки, будут выходить корректирующие версии LFA 1.X с обновлениями пакетов и мелкими правками.