Как сделать собственную сборку Linux дистрибутива для ARM процессора (Rockchip 3399)?
Доброго времени года!
После покупки ROCK Pi 4b (на базе Rockchip 3399, с 4 Гб LPDDR4) и опробовав штатные дистрибутивы GNU/Linux от производителя (Debian Stretch, Ubuntu Server Bionic) — задался вопросом из сабжа.
Что нужно/хотелось бы иметь внутри сборки:
1. Последний стабильный Debian 9.9 или Ubuntu 19.04 (только система, с минимальным ПО для начальной настройки, без офисов/игр/etc)
2. Gnome 3 + предустановленные 1-2 темы и наборы иконок с gnome-look
3. Ограниченный набор программ, типа Gimp, Inkscape, VS Code (с моим конфигом), FileZilla и т.д.
4. Консоль с Zsh + настроенный (мой) визуальный конфиг
5. Последние стабильные версии Python, Golang, Node.js, PostgreSQL, SQLite
6. Настроенные/работающие драйверы для WiFi, Bluetooth, USB, звука, видео, LAN
7. Предустановленные покупные шрифты для системы и консоли
8. Обоины на рабочий стол и прочие украшательства
Как такое можно сделать (и можно ли вообще), имея в распоряжении только ноутбук с macOS 10.14 и одноплатник?
debian или ubuntu (точнее те что на основе пакетного менеджера .deb) имеют штатный инструмент - debootstrap, он позволяет собрать минимальную сборку порядка 200мб, в которую вы можете доустановить необходимые пакеты. Причем ничто не мешает все манипуляции проводить с ноутбука (т.е. отличная архитектура).
Если результирующая сборка все еще будет тяжелой (а она будет таковой, и речь не только о размере дистрибутива, но и о потреблении оперативной памяти), и вы гонитесь за действительно компактной инсталляцией, посмотрите на gentoo, тамошняя система portage позволяет сконфигурировать вашу собственную сборку (и даже обслуживать и поддерживать репозитарий, позволяющий поддерживать установку с этой конфигурацией, например для вашего парка устройств).
Я не знаю никакой другой системы пакетов (т.е. инструмент, позволяющий обслуживать программные пакеты и их зависимости), которая позволила бы создать сборку на столько эффективной и компактной по использованию ресурсов. Я собирал инсталляцию для eeepc с xserver и awesome de, с затратами оперативной памяти в 50мб (после запуска сразу доступен запуск браузера или просмотр видео mvp), когда как минимальная сборка на базе ubuntu занимала 200 или 300мб (и оставшихся не хватало для комфортной работы браузера).
[...] Причем ничто не мешает все манипуляции проводить с ноутбука (т.е. отличная архитектура).
Подскажите, пожалуйста, какая должна быть последовательность действий и необходимое ПО, чтобы собрать, например, дистрибутив Debian под macOS, да ещё и для ARM64 архитектуры?
[...] посмотрите на gentoo, тамошняя система portage позволяет сконфигурировать вашу собственную сборку [...]
Gentoo мне всё ещё кажется очень страшным, так же, как и Arch :) Хотя идея аскетичной ОС, где будет только того, что реально нужно только мне — будоражит сознание..
Если есть какие-то хорошие подробные мануалы, которые помогут совсем новичку в Gentoo, быстро в нём освоится и сделать первую сборку, то буду очень благодарен (en/ru, не важно).
Vic Shóstak, я дал более чем достаточно ключевых слов для поиска информации, плюс, если вы не умеете гуглить по готовому, вы не сможете разобраться, те более если у вас mac, с этой архитектурой больше всего проблем, постарайтесь ее исключить.
rPman, гуглить умею (яжпрограммист), только вот проблемка: статьи по Gentoo (которые я встретил в ТОП выдаче гугла) про сборку готовых образов — датируются бородатыми годами и часто фигурирует словосочетание "calculate linux".
Также, ни в одной статье/видео про сборку Debian-like дистрибутивов, я не встретил сборку именно под ARM64. Да, много написано про саму эмуляцию архитектуры (привет, QEMU), но это никак не помогает создать образ.
Плюс, всегда процесс сборки происходит с Linux-хоста, который и будут клонировать и превращать в ISO. Я же зацепился за вашу фразу:
[...] Причем ничто не мешает все манипуляции проводить с ноутбука (т.е. отличная архитектура).
Поняв её так: "эй, парень, тебе ничто не мешает сделать свой образ Linux с блэкджеком и барышнями на твоём macOS ноутбуке". Собственно, от этого и были мои вопросы выше.
Окей, ясно-понятно, ответ на мой вопрос — этого нельзя сделать на Mac, нужен PC с Linux дистрибутивом, который хочешь собирать. Спасибо.
P.S. попробовал в live-USB режиме Ubuntu 19.04 — не получилось, так как "live — это live, тут только смотрят".
Про mac, наверное все же можно, например с помощью виртуальной машины (с виртуализацией вообще решается куча проблем)
p.s.
попробовал в live-USB режиме Ubuntu 19.04 — не получилось, так как "live — это live, тут только смотрят".
если хотите чтобы вам помогли, выдавайте больше информации. фраза - 'не получилось', не информативна. Где именно что пошло не так?
p.p.s. забыл уточнение, то что железо arm64 не значит что установка linux в принципе возможна. Производитель мог поставить много много палок в колеса, одна борьба с подписанным загрузчиком чего стоит, изучите вопрос, можете ли вы в принципе установить на свое железо linux
rPman, в том и дело, как я уже написал тов. Рональд Макдональд в комментах, — VirtualBox 6.0 не может эмулировать ARM. Плюс, arm64 ISO образы дебиана/убунты — не являются загрузочными, поэтому даже после эмуляции с помощью QEMU — развернуть ISO не вышло. Скорее всего, я не разобрался (хотя, честно, старался), но на данный момент времени — у меня вот такой результат.
В моей карте мира весь процесс сводится к тому, что в (теоритической) виртуалке разворачивается самый минимально-доступный ISO системы нужной архитектуры (благо, через эмулаторы можно всё настроить, вплоть до используемых ядер CPU). Далее, происходит его настройка, тюнинг и установка нужного ПО. После этого: папка с образом копируется на SD или eMMC и вставляется в одноплатник. Для переноса на другой одноплатник — пакуем всё в ZIP. Конец.
Я вот именно про это здесь. Так как думал, что есть какое-то простое решение для тех, кому ещё рано (по разным причинам) знать, как компилировать ядро и не осилить всю ту свободу в выборе решений, которую даёт всем желающим Gentoo :)
На ум приходит аналогия из мира программирования. Раньше все писали iOS-приложения на Objective-C. Был хардкор и высокий порог входа (даже по железу, на котором ты пишешь). Пришёл React Native и теперь каждый junior может за пару дней (при должном усердии) создать свою приложеньку для iPhone.
Такое вот "прогрессивное улучшение" подхода к созданию __________ (впишите нужное), которое я искал, стартовав этот вопрос.
как я и предположил, у вас проблема именно с загрузчиком, это основная проблема arm машин, там бардак с этим, и если производитель не позаботился об этом, то скорее всего это будет невозможно (вторая проблема - драйвера на перифирию, типа сеть, bluetooth, сенсорный экран и собственно видеокарта...).
rPman, так точно. Со стандартных образов от производителя — я и начал свои попытки.
Есть ощущение, что проще всего (в моём случае) будет сделать таким образом: развернуть образ от Radxa на самом одноплатнике, совершить все действия по удалению/установке ПО и тем оформления. Далее, сделать образ из этой SD.
Да, хотелось бы максимально чистый образ, но что поделать. Может быть у Radxa ещё нет драйверов/загрузчика для других систем, например, поэтому у них Ubuntu Server 18.04.2 используется.
До меня дошло, вы не понимаете главную проблему современных SoC - поддержка производителей ниже плинтуса.
Беда в том что нет драйверов. Для linux драйвер это не бинарный блоб, как в windows, который можно подсунуть системе и все заработает (и там драйвера должны соответствовать версии OS), в случае с linux, драйвер это не только файл модуля ядра (фактически кусок ядра linux), жестко привязанный к версии ядра, но и набор библиотек, которые так же достаточно привязаны к ядру.
Т.е. чтобы сменить версию linux вы должны иметь как минимум исходники драйверов, чтобы пересобрать (поверьте, это не просто, и даже при полном содействии производителя, что почти нереально в мире arm, сопряжено с почти нерешаемыми трудностями).
С некоторой незначительно вероятностью вы можете попробовать использовать текущее старое ядро и новую версию всей системы, отличный тест - в текущей работающей linux с помощью debootstrap устанавливаете новую версию, делаете в нее chroot (предварительно смонтируйте с помощью mount -t bind каталоги /proc, /sys и /dev) и тестируете, если все работает - пробуйте.