Плата реально классная. В течение ближайших месяцев постараюсь подготовить всё необходимое для сервиса непрерывной интеграции builds.sr.ht, через который будет автоматизирована оставшаяся часть переноса Alpine Linux, а также установка любых других операционных систем (в том числе не-Linux) и пользовательских программ, которые вы захотите портировать на RISC-V. Я вполне уверен, что это будет первый подобный проект на оборудовании RISC-V, открытый для публики.
Есть два этапа портирования операционной системы на новую архитектуру: начальная загрузка (бутстрапинг) и… собственно, портирование. За неимением лучшего термина. Для начальной загрузки нам нужен кросс-компилятор, нужно портировать libc и кросс-компилировать базовые элементы. Начальная загрузка завершается, когда система способна к самохостингу, то есть может скомпилировать себя. Процесс «портирования» включает в себя компиляцию всех пакетов, доступных для вашей операционной системы. Процесс может занять много времени и в целом автоматизирован.
Первым делом кросс-компилятор. Поддержка RISC-V появилась в binutils 2.28 и gcc 7.1 несколько релизов назад, об этом можно не беспокоиться. Достаточно собрать оба компилятора с параметром
--target=riscv64-linux-musl
. Другая важная часть — стандартная библиотека C или libc. В отличие от компилятора C, этот шаг потребовал некоторых усилий с моей стороны, поскольку Alpine Linux основан на musl libc, а её порт для RISC-V ещё не завершён и не включён в основную ветку.Но есть патч для поддержки RISC-V, хотя его никогда не тестировали в таком масштабе. Соответственно, я столкнулся с несколькими багами, для которых написал несколько патчей (1, 2, 3). Наличие рабочего дистрибутива, основанного на порте RISC-V — убедительный аргумент в пользу зрелости портированной версии, поэтому я рад, что поймал эти баги. До того времени приходилось вручную добавлять порт и свои патчи в пакет Alpine Linux musl.
Компилятор C и реализация libc открывают двери для переноса на вашу платформу огромного объёма программного обеспечения. Следующий шаг — определить и перенести необходимые пакеты для системы самохостинга. Тут в Alpine есть отличный скрипт, который готовит кросс-компилятор и собирает базовую систему. Многие (если не большинство) из этих пакетов требовали исправления, настройки и ручного вмешательства — это не готовое решение, но невероятно полезный инструмент. Наиболее важные пакеты на данном этапе — нативные инструменты (то есть компилятор не только компилирует, но и сам работает под RISC-V), сам парольный менеджер и разные другие полезные вещи, такие как tar, patch, openssl и так далее.
Как только необходимые пакеты собраны и система может скомпилировать себя, начинается длительный процесс переноса. Здесь обычно разумно отказаться от кросс-компилятора и приступить к нативной сборке, если железо достаточно быстрое. Это компромисс, потому что система RISC-V несколько медленнее, чем моя загрузочная машина x86_64, но многие пакеты требуют много ручных настроек и исправлений для кросс-компиляции. Сэкономленное за счёт этого время компенсирует более медленную сборку (хотя на самом деле я весьма впечатлён скоростью HiFive Unleashed. Основным узким местом является драйвер mmcblk, но как только файлы попадают в кэш ядра, всё становится очень быстро и приятно).
Там тысячи пакетов, поэтому следующий шаг для меня (и всех, кто работает над переносом) — автоматизация оставшейся части процесса. Для меня промежуточным шагом является интеграция с сервисом builds.sr.ht, чтобы организовать собственную работу и сделать циклы доступными для других людей, заинтересованных в RISC-V. Не все пакеты будут портироваться автоматически — но многие будут! Как только вы портируете языки программирования — C, Python, Perl, Ruby (я уже сделал это!) и т. д. — большинство программ с открытым исходным кодом довольно переносимы на разных архитектурах. Одна из моих основных целей в sr.ht — поощрять распространение портируемого программного обеспечения!
Если у кого-то из читателей есть собственное оборудование RISC-V или он хочет попробовать его с qemu, вот репозиторий Alpine Linux для RISC-V. Примерно такая команда установит его в /mnt:
apk add -X https://mirror.sr.ht/alpine/main/ --allow-untrusted --arch=riscv64 --root=/mnt alpine-base alpine-sdk vim chrony
Запустите
/bin/busybox --install
и apk fix
при первой загрузке. Работа ещё продолжается, поэтому настройка остального — упражнение для читателя, пока я не очищу процесс и не сделаю нормальный скрипт установки. Удачи!В заключение: огромное спасибо за помощь участникам сообщества #riscv на Freenode, а также разработчикам Debian и Fedora, которые во многом расчистили дорогу и выпустили патчи для многих программ! Но мне досталась вся радость переноса musl, так что дорога не была полностью чистой :)
Комментарии (18)
xlop-chik
25.12.2018 23:27а Debian точно поддерживает? расскажи про видео… точно не mali400?
LonFas
26.12.2018 00:13У этого одноплатника я что-то видеовыхода не вижу.
p.s. Для mali аппаратное декодирование пилится www.kickstarter.com/projects/bootlin/allwinner-vpu-support-in-the-official-linux-kernel/posts/2332363timdorohin
26.12.2018 00:53Мимо. Это никоим образом не касается Mali — это драйвер VPU aka видеодекодера в процессорах Allwinner.
Свободный драйвер для Mali это Lima — gitlab.freedesktop.org/lima
timdorohin
25.12.2018 23:59Мммм… может не стоит издеваться над SD-карточкой, а завести сеть и использовать AoE/NFS? В случае одного дноплатника с настоящим гигабитным портом у меня это вышло на порядок быстрее microSD.
Тоже, кстати, использовал его как сборочную машинку ибо некоторые пакеты упорно не хотели кросскомпилироваться.
xlop-chik
26.12.2018 00:01а как к нему подключить sata жёсткий диск?
kiba
26.12.2018 04:49через Expansion Board
konchok
26.12.2018 17:41>Плата реально классная
Ни SATA, ни USB, и даже флеш убогий микроСД. Вообще не понял чем эта плата классная, по мне так фигня какая-то
maquefel
26.12.2018 08:34Покупали или бесплатно получили?
Не заметил, что это перевод — прошу пардона.
defecator
26.12.2018 12:28всегда интересовало, а что заставляет на всё это железо постоянно натянуть Linux?
Я вот предпочитаю писать bare metal и иметь полный контроль на железом,
тем более таких проектов полно в интернете.
Нет, понятно, что народу хочется «побыстрее», но тратить уйму ресурсов железа просто на поддержку чудовищной прослойки в виде Linux?..abondarev
26.12.2018 13:33Ну Вы же сами сказали, хочется побыстрее.
Если Вам нужно иметь функциональность какого нибудь веб-сервера + какую нибудь файловую систему + удаленный доступ + да мало ли чего еще. Если Вы попробуете это сделать на bare metal, то боюсьчто Вы не будете экономить ресурсы разработчика, то есть у величится время разработки, следовательно время выхода на рынок, а это, сейчас, гораздо больше ценится.
DaylightIsBurning
26.12.2018 18:55Я вот предпочитаю писать bare metal и иметь полный контроль на железом,
А сколько процентов Вам удавалось выиграть по производительности отказавшись от линукса в пользу железа? По какой метрике?
maquefel
26.12.2018 13:49В общем поскольку народ совсем не в теме позволю себе маленькую ремарку:
— RISC-V это набор ISA (instruction set architecture) открытых спецификаций, которые небходимо соблюдать, что быть RISC-V совместимыми
— есть открытые реазизации процессоров соответвующих данным спецификациям (открытые — есть код, бери и заливай на FGPA или запекай, участвуй в разработке)
— доподлинно известно, что микроконтроллеры по RISC-V уже используют NVIDIA и Western Digital
— Собственно V — означает пятую попытку :-D
Данная инициатива интересна своей открытостью, то есть все открыто и бесплатно.
Laney1
Дрю ДеВолт конечно уникальный тип. В 25 лет ярый фанат email, irc, mutt и всего прочего олдскульного, ненавидит C++ и nvidia в лучших традициях раннего Линуса. Одновременно пилит просто тонну сложных проектов (sr.ht, sway, какая-то ОС для калькуляторов, куча патчей в сторонние проекты), имея при этом хобби вроде изучения японского языка и собственного телескопа.
Достойная смена растет Линусу, достойная
mspaint
Список проектов на патреоне не поражает воображение.
На замену Линусу не тянет.
>ненавидит C++
Вопрос открытый, хорошо это для linux или плохо. Плюсы развиваются, в отличие от. Ну и безопасность сейчас в большем приоритете, чем голая скорость.