На этой неделе в LFA (5)
(период с 22 по 28 апреля)
Продолжаю шлифовать страницы по сборке программ. Исправил страницу с установкой библиотеки
Работаю над разделом о сборке загрузчика U-Boot. Переработал страницу по сборке U-Boot для эмулятора QEMU, переместив в начало только то, что нужно, а дополнительные сведения и рекомендации по сборке убрав вниз, а также начал работать над страницами о сборке загрузчика для плат на базе SoC Broadcom и Rockchip.
Перед анонсом первой версии редактирую все страницы руководства, чтобы выглядели единообразно и целостно, стараюсь исправлять ошибки и опечатки. Дату выхода первой версии руководства назначать себе не стал, LFA 1.0 выйдет тогда, когда будет готова. Может быть, это будет начало-середина июня.
#Week
(период с 22 по 28 апреля)
Продолжаю шлифовать страницы по сборке программ. Исправил страницу с установкой библиотеки
libgcc
: теперь если LFA собирается для 32-битной архитектуры, библиотека ищется в правильной директории и копируется в нужное место.Работаю над разделом о сборке загрузчика U-Boot. Переработал страницу по сборке U-Boot для эмулятора QEMU, переместив в начало только то, что нужно, а дополнительные сведения и рекомендации по сборке убрав вниз, а также начал работать над страницами о сборке загрузчика для плат на базе SoC Broadcom и Rockchip.
Перед анонсом первой версии редактирую все страницы руководства, чтобы выглядели единообразно и целостно, стараюсь исправлять ошибки и опечатки. Дату выхода первой версии руководства назначать себе не стал, LFA 1.0 выйдет тогда, когда будет готова. Может быть, это будет начало-середина июня.
С обновлённой версией LFA можно ознакомиться здесь: https://linux-for-arm.github.io/lfa/dev/index.html
#Week
На этой неделе в LFA (6)
(период с 29 апреля по 5 мая)
На выходных удалось поработать с библиотекой
Сейчас там только структуры для обработки ошибок (
На сайте руководства переработал страницу с ссылками на определённые версии LFA: теперь список доступных версий представлен в виде таблицы, содержащий имя версии LFA, описание и ссылки для чтения HTML и PDF-версии руководства.
#Week
(период с 29 апреля по 5 мая)
На выходных удалось поработать с библиотекой
lfa-rs
— Rust-крейт, содержащий основные объекты для работы с системой LFA. В планах в будущем начать работу над системой сборки LFA и несколькими другими программами, поэтому эта библиотека будет очень кстати.Сейчас там только структуры для обработки ошибок (
Error
, ErrorKind
и Result<T, Error>
) и макросы для вывода сообщений в stdout/stderr.На сайте руководства переработал страницу с ссылками на определённые версии LFA: теперь список доступных версий представлен в виде таблицы, содержащий имя версии LFA, описание и ссылки для чтения HTML и PDF-версии руководства.
С обновлённой версией LFA можно ознакомиться здесь: https://linux-for-arm.github.io/lfa/dev/index.html
#Week
На этой неделе в LFA (7)
(период с 13 по 19 мая)
Майские закончились, пришло время вернуться к работе над LFA. Самым главным изменением за эту неделю является доработка четвёртой страницы о Linux. Описал основные реализации coreutils для систем Linux и сферы их применения.
Для сборки загрузчика U-Boot для компьютеров, оснащённых SoC Rockchip, предлагается дополнительный компонент
Перед выходом первой версии исправляю опечатки и привожу все обозначения и иные вещи в руководстве к единому внешнему виду. Добавил несколько мелких предупреждающих сообщений по поводу сборки пакетов.
Теперь сайт LFA индексируется поиском Яндекса. В гугле пока на запросы «Linux for ARM» и «Linux для ARM» ничего нет.
#Week
(период с 13 по 19 мая)
Майские закончились, пришло время вернуться к работе над LFA. Самым главным изменением за эту неделю является доработка четвёртой страницы о Linux. Описал основные реализации coreutils для систем Linux и сферы их применения.
Для сборки загрузчика U-Boot для компьютеров, оснащённых SoC Rockchip, предлагается дополнительный компонент
rkbin
. tar.xz
-архив с этим компонентом расположен в репозиториях LFA. Удивился тому, что на сайте до сих пор не было инструкций по сборке U-Boot для Rockchip SoC (я точно помню, что писал их и даже отправлял в репозиторий LFA) — залил их на сайт.Перед выходом первой версии исправляю опечатки и привожу все обозначения и иные вещи в руководстве к единому внешнему виду. Добавил несколько мелких предупреждающих сообщений по поводу сборки пакетов.
Теперь сайт LFA индексируется поиском Яндекса. В гугле пока на запросы «Linux for ARM» и «Linux для ARM» ничего нет.
С обновлённой версией LFA можно ознакомиться здесь: https://linux-for-arm.github.io/lfa/dev/index.html
#Week
Linux for ARM
На этой неделе в LFA (7) (период с 13 по 19 мая) Майские закончились, пришло время вернуться к работе над LFA. Самым главным изменением за эту неделю является доработка четвёртой страницы о Linux. Описал основные реализации coreutils для систем Linux и сферы…
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, но это уже мечты, и я не знаю, воплощу ли их когда-либо в жизнь. Как обычно бывает, когда замышляешь что-то крупное, постоянно нет возможности это реализовать — то не хватает времени, то сил, то всего вместе.
Linux for ARM 1.0.0
20 мая вышла первая версия руководства «Linux for ARM» (LFA).
LFA - краткое руководство по сборке дистрибутива Linux с нуля для компьютеров, использующих ARM SoC, которое является вольным переводом CLFS Embedded.
В отличие от оригинала, LFA предоставляет более новые версии ПО, добавляет поддержку архитектуры AArch64 (основной упор сделан на неё, в будущем планируется оставить только эту архитектуру, отказавшись от поддержки других), а также ради эксперимента содержит инструкции по сборке загрузчика U-Boot. Сейчас представлены только общие сведения о загрузчике и работа ещё далека от завершения, однако к версии 2.0 планируется закончить раздел об U-Boot.
LFA предлагает пользователю собрать ядро Linux 6.9, стандартную библиотеку C
Для чтения предлагаются онлайн руководство, офлайн HTML-версия и PDF-версия руководства.
Исходный код доступен в репозитории GitHub.
20 мая вышла первая версия руководства «Linux for ARM» (LFA).
LFA - краткое руководство по сборке дистрибутива Linux с нуля для компьютеров, использующих ARM SoC, которое является вольным переводом CLFS Embedded.
В отличие от оригинала, LFA предоставляет более новые версии ПО, добавляет поддержку архитектуры AArch64 (основной упор сделан на неё, в будущем планируется оставить только эту архитектуру, отказавшись от поддержки других), а также ради эксперимента содержит инструкции по сборке загрузчика U-Boot. Сейчас представлены только общие сведения о загрузчике и работа ещё далека от завершения, однако к версии 2.0 планируется закончить раздел об U-Boot.
LFA предлагает пользователю собрать ядро Linux 6.9, стандартную библиотеку C
musl-1.2.5
, набор утилит UNIX BusyBox 1.36.1 и загрузчик U-Boot 2023.10.Для чтения предлагаются онлайн руководство, офлайн HTML-версия и PDF-версия руководства.
Исходный код доступен в репозитории GitHub.
Важно: LFA - это мой pet-проект, над которым я занимаюсь только в свободное время. Допускаю, что в будущем этого времени у меня будет меньше. Поэтому я готов к сотрудничеству и буду рад любым предложениям и изменениям.
На этой неделе в 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 (9)
(период с 27 мая по 2 июня)
Несмотря на то, что эту неделю я отсутствовал (и буду отсутствовать, видимо, ещё всю следующую), мне удалось внести несколько изменений в LFA, которые касались исключительно шливофки будущего релиза 1.1 и исправлением ошибок версии 1.0. Кроме того, у меня возникли проблемы со своим компьютером, в то время как на новый денег нет и вряд-ли они появятся в ближайшем будущем. Работаю над LFA по мере возможности, поэтому скоро выйдет версия 1.1.
Так, например, в список необходимого на хосте ПО был добавлен пакет
В планах на будущее добавить информацию о FIT-образе, дополнить раздел о сборке загрузчика для QEMU и выпустить наконец LFA 1.1. Может быть я напишу про Devicetree Overlay, но может и не напишу.
Убрал с домашней страницы информацию о прогрессе разработки LFA 1.0 - это больше не актуально, поэтому смысла в этой записи никакого нет.
#Week
(период с 27 мая по 2 июня)
Несмотря на то, что эту неделю я отсутствовал (и буду отсутствовать, видимо, ещё всю следующую), мне удалось внести несколько изменений в LFA, которые касались исключительно шливофки будущего релиза 1.1 и исправлением ошибок версии 1.0. Кроме того, у меня возникли проблемы со своим компьютером, в то время как на новый денег нет и вряд-ли они появятся в ближайшем будущем. Работаю над LFA по мере возможности, поэтому скоро выйдет версия 1.1.
Так, например, в список необходимого на хосте ПО был добавлен пакет
flex
, а также дополнил страницу о сборке пакета BusyBox. Она получилась довольно большой, так что я думаю, что в будущем сделаю раздел о сборке BusyBox, в котором будут несколько отдельных страниц поменьше взамен одной большой странице.В планах на будущее добавить информацию о FIT-образе, дополнить раздел о сборке загрузчика для QEMU и выпустить наконец LFA 1.1. Может быть я напишу про Devicetree Overlay, но может и не напишу.
Убрал с домашней страницы информацию о прогрессе разработки LFA 1.0 - это больше не актуально, поэтому смысла в этой записи никакого нет.
С обновлённой версией LFA можно ознакомиться здесь: https://linux-for-arm.github.io/lfa/dev/index.html
#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
👍1
Навигация по руководству
Устали использовать мышь для переключения на страницу вперёд/назад? Используйте клавиатуру! С помощью стрелок "Влево" и "Вправо" возможна навигация на страницу вперёд/назад, а по нажатию на клавишу
#Tips
Устали использовать мышь для переключения на страницу вперёд/назад? Используйте клавиатуру! С помощью стрелок "Влево" и "Вправо" возможна навигация на страницу вперёд/назад, а по нажатию на клавишу
s
откроется строка поиска по руководству.#Tips
👍1
Офлайн версия руководства
Если вам нужен доступ к 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
👍1
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.0
6 августа вышло обновление руководства "Linux for ARM". На самом деле это не совсем обновление, потому что из всех изменений — понижение версии ядра Linux с 6.9 до 6.1.103. Всё дело в том, что поддержка версии 6.9 завершена, а 6.1 является LTS-версией, поддерживаемой до 2026 года.
Доступны онлайн-версия, HTML-версия для локального чтения (откройте файл index.html) и PDF.
Исходный код доступен в репозитории GitHub.
Вы можете отблагодарить разработчика, отправив донат на карту:
6 августа вышло обновление руководства "Linux for ARM". На самом деле это не совсем обновление, потому что из всех изменений — понижение версии ядра Linux с 6.9 до 6.1.103. Всё дело в том, что поддержка версии 6.9 завершена, а 6.1 является LTS-версией, поддерживаемой до 2026 года.
Доступны онлайн-версия, HTML-версия для локального чтения (откройте файл index.html) и PDF.
Исходный код доступен в репозитории GitHub.
Важно: LFA - это мой pet-проект, над которым я занимаюсь только в свободное время. Допускаю, что в будущем этого времени у меня будет меньше. Поэтому я готов к сотрудничеству и буду рад любым предложениям и изменениям.
Вы можете отблагодарить разработчика, отправив донат на карту:
2202206252335406 (Сбер)
🎉1
Linux for ARM pinned «Linux for ARM 1.1.0 6 августа вышло обновление руководства "Linux for ARM". На самом деле это не совсем обновление, потому что из всех изменений — понижение версии ядра Linux с 6.9 до 6.1.103. Всё дело в том, что поддержка версии 6.9 завершена, а 6.1 является…»