LINUX.ORG.RU

Haiku на RISC-V плате HiFive Unmatched и ЛОРом в NetSurf

 , ,


10

3

Сегодня открылся ЛОР в NetSurf в Haiku RISC-V.

С начала этого года делаю порт свободной UNIX-like операционной системы Haiku на процессорную архитектуру RISC-V (64 бит) (подробнее: My Haiku RISC-V port progress, My progress on real RISC-V hardware). Сейчас система уже неплохо работает на реальном RISC-V железе HiFive Unmatched, есть графика, сеть WiFi, поддержка многоядерности (SMP), пакеты портов собираются на самом железе, работает воспроизведение видео.

RISC-V — полностью открытая и свободная от каких либо отчислений процессорная архитектура, конкурирующая с ARM. Архитектура довольно новая и свободная от легаси вроде четырёх несовместимых наборов команд в ARM, разных MMU, и т.п.. Также архитектура очень простая и выразительная: я написал дизассеблер за два дня и минимально работающий порт Haiku за несколько недель. Для Haiku это первый рабочий порт на не x86-совместимую архитектуру. Остальные порты находятся в зачаточном состоянии без рабочего userland более 10 лет.

Компания SiFive производит открытые ядра RISC-V и готовые платы с полностью открытым программным обеспечением включая драйверы и прошивки. Я использую плату HiFive Unmatched. На плате есть шина PCIe так что можно использовать многие существующие драйвера Haiku без изменений.

Железо выглядит как-то так: раз, два.

Используемое железо:

  • Мат. плата: HiFive Unmatched.
  • Диск: Silicon Power SSD 256GB 3D TLC NAND M.2 2280 PCIe3.0×4 NVMe1.3 P34A60
  • Сеть: Intel AC 9260 M.2 WiFi
  • Видеокарта: AMD Radeon R7 250

>>> Просмотр (1920x1080, 263 Kb)

★★★★★

Проверено: cetjs2 ()
Последнее исправление: cetjs2 (всего исправлений: 1)

Мега-ачивка! Мои поздравления всему сообществу Haiku.

aist1 ★★★
()

Ошеломительно быстрая работа!!! Поздравляю!!!

beos ★★
()

Ну, поздравляю, не зря подкатили. Пора делать исошки и разворачивать репозиторий бинарных пакетов для риски =) Хвались что конкретно нужно было сделать что-бы завести ну не прям по шагам, а в общем виде. И что ещё в планах? Сколько времени идёт сборка гайки под железо? И да ещё как сибирают по частям, ну не зная ядро, гуй, оболочки и в целом. Я вааще не в курсе. Игорь какой компилял? Без игоря нещитово!

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)

Радует минимальная загрузка 4 голового проца на скриншоте. Энергоэффективный проц + видеокарта помощнее+ Гайка… перспективный неттоп получается.

Видеокарта от 2014 года на 28 нанометров техпроцесс - не айс…

beos ★★
()
Последнее исправление: beos (всего исправлений: 1)

А какие нибудь потребительские решения на базе RISC-V есть? Или пока только игрушки для девелоперов?

Sunderland93 ★★★★★
()

Поаплодирую сидя. Не каждый сможет портировать ОС на совершенно новую архитектуру.

А вентилятор над CPU такой куцый, словно во времена первого "пенька". Или то был второй?

Korchevatel ★★★★★
()

Поздравляю, хорошее дело делаешь.

Также интересует вопрос производительности - можно ли такую плату использовать как десктоп?

Turbid ★★★★★
()

И еще вопрос - можно ли на QEMU начать учить ассемблер RISC-V? При условии, что для X86 изучал когда-то в школе и сейчас почти ничего не помню? Есть ли какие-то пособия?

Turbid ★★★★★
()
Ответ на: комментарий от beos

Радует минимальная загрузка 4 голового проца на скриншоте.

А сколько ещё оно должно жрать в простое?

devl547 ★★★★★
()
Ответ на: комментарий от greenman

производительность равна нулю, так

Ну так смартфон - он не для производительности, а для деградации.

devl547 ★★★★★
()

Илья, моё почтение!

Bass ★★★★★
()
Ответ на: комментарий от Zyy

Я про то, что оно в принципе работает на RISC-V. На RPi пытаются завести хоть какую-нибудь видеокарту без какого-либо успеха.

derlafff ★★★★★
()

Стандарты ЛОРа соблюдены

Ляпота! Даже двое часов есть.

remes
()

О! Круто круто!

Расскажи про плату побольше? Есть ли PCIe Bifurcation? Можно ли 10GbE воткнуть и чтобы при этом осталось шины под SATA? Сильно процессор греется под нагрузкой? Какие требования по питанию? Можно ли вместо ATX использовать 5V или 12V DC? Есть ли аппаратная виртуализация и работает ли она там?

hateyoufeel ★★★★★
()
Последнее исправление: hateyoufeel (всего исправлений: 3)
Ответ на: комментарий от hateyoufeel

Есть ли аппаратная виртуализация и работает ли она там?

В архитектуру еще не довезли расширение для аппаратной виртуализации, пока только драфт.

steeels
()
Ответ на: комментарий от derlafff

Они еще на Unleashed борде видюху пускали, но нужна была «плата расширения», которая стоила 2к баксов, когда анлишд стоила 1к.[br] В чем проблема завести pci-e девайс на одноплатнике на арме, у которого есть нормальный pci-e слот?

steeels
()

Компания SiFive производит открытые ядра RISC-V

Не могу не докопаться, что ядра-то хоть и на открытой архитектуре, но сама имплементация закрыта.

steeels
()
Последнее исправление: steeels (всего исправлений: 1)
Ответ на: комментарий от steeels

В чем проблема завести pci-e девайс на одноплатнике на арме, у которого есть нормальный pci-e слот?

Ну… оно не работает. Мне казалось, что фундаментальная проблема в том, что в архитектуре видеокарт что-то прибито гвоздями к x86, поэтому я и удивился видеокарте в RISC-V.

Вот, если интересно прочитать, один пример:

https://github.com/geerlingguy/raspberry-pi-pcie-devices/issues/4

Кажется, основные проблемы побеждены, осталось подебажить драйвер и понять, почему именно он падает.

https://pipci.jeffgeerling.com/#gpus-graphics-cards

derlafff ★★★★★
()
Последнее исправление: derlafff (всего исправлений: 2)
Ответ на: комментарий от derlafff

Спасибо, интересные линки.
Я на своей армовой борде видеокарту пускать не пробовал, ограничился eth адаптером, чтобы проверить, что сетап работает, и убрал плату на полку.

фундаментальная проблема в том, что в архитектуре видеокарт что-то прибито гвоздями к x86

Емнип, это касается только старых карт, в которых лежали х86 блобы для их инициализации биосом. Но я тут могу сильно врать.

steeels
()
Ответ на: комментарий от derlafff

Если я правильно понимаю, с видеокартами проблема в VGABIOS. Ему нужен реальный режим x86 и само собой IO порты.

И если IO порты можно было бы замаппить через MMIO, то для VGABIOS нужно эмулировать 16-битный x86.

Ах да. Автор молодец за проделанную работу! :)

a1batross ★★★★★
()
Последнее исправление: a1batross (всего исправлений: 1)
Ответ на: комментарий от LINUX-ORG-RU

Пора делать исошки и разворачивать репозиторий бинарных пакетов для риски =)

По идее это могут сделать текущие администраторы инфраструктуры Haiku когда все необходимые патчи будут приняты и апстрим будет работать под RISC-V. Желающие уже объявились.

Хвались что конкретно нужно было сделать что-бы завести ну не прям по шагам, а в общем виде.

Сначала была сделана так называемая мной «Мини ОС» для того чтобы поэкспериментировать и разобраться как работает платформа. Мини ОС собирается с помощью Clang, всё слинковано статически, память линейная с кучей на всей доступной памяти, защиты памяти нет, есть потоки. Также есть GUI и простой самописный тулкит. Скриншоты: раз, два. Часть кода Mini OS была взята в Haiku.

И что ещё в планах?

3D ускорение наконец завести. По идее должно работать как на x86, так и на RISC-V, везде есть шина PCIe под видеокарту. Только это скорее в следующем году. Пока по мелочи собираем пакеты и фиксим баги.

Сколько времени идёт сборка гайки под железо?

Собирать систему на самой себе кроме отдельных программ и библиотек пока не пробовал. На компьютере разработки это занимает не более 20 минут.

И да ещё как сибирают по частям, ну не зная ядро, гуй, оболочки и в целом.

В Haiku ядро, драйвера, тулкит и стандартные программы находятся в одном репозитории и устанавливаются одним пакетом. Во время тестирования ядра используется специальная версия системы без пакетов в которой файлы обновляются скриптом. Пересобрать и обновить ядро можно за несколько секунд. Также есть специальный загрузчик для виртуальных машин, который грузит ядро меньше чем за пол секунды. Всякие u-boot, EFI тормозные. Скорость компиляции и запуска важна для ускорения цикла тестирования и разработки в целом.

Игорь какой компилял? Без игоря нещитово!

Пока нет. Игры SDL требуют, а ему нужны жирные Mesa и LLVM, которые надо пол дня компилить.

X512 ★★★★★
() автор топика
Ответ на: комментарий от LINUX-ORG-RU

Монитор от дуновения ветра не рухнет?

Нет. Он даже от небольших землетрясений и случайных ударов рукой не падает. Конструкция сбалансирована.

X512 ★★★★★
() автор топика
Ответ на: комментарий от fernandos

Как плата по производительности?

Существенно уступает x86, на уровне Raspberry Pi. Но зато доступная разная PCIe периферия такая как видеокарты, NVMe диски, WiFi карты, SATA контроллеры и вообще всё что угодно PCIe совместимое. Обычно всё сразу заводится, достаточно драйверы пересобрать.

X512 ★★★★★
() автор топика
Ответ на: комментарий от Sunderland93

risc-v ядра ставят в чипы от huami и в контроллеры ssd, например: тот же WD и Seagate.

steeels
()
Ответ на: комментарий от Sunderland93

Как давно она стала Unix-like?

С самого начала. В Haiku нативная поддержка POSIX и многие программы он Linux/BSD можно собрать. Основное отличие от Линукс дистрибутивов в том что вместо стека Free Desktop используется полностью свой десктопный стек со своим тулкитом и GUI сервером. Много чего на BSD похоже и оттуда берутся сетевые драйверы.

X512 ★★★★★
() автор топика

Вдруг ты подскажешь: в ядре хайку, может, где-нибудь есть подходящее место, чтобы PointerMasking(TBI в терминах ARM) привернуть? Секурити какая-нибудь, например.
Сейчас я его для hwasan использую, но хочется иметь больше юзкейсов.

steeels
()
Ответ на: комментарий от Turbid

И еще вопрос - можно ли на QEMU начать учить ассемблер RISC-V?

Можно. Можно собрать RAW бинарник, указать его в качестве BIOS и он будет загружен и запущен по адресу 0x80000000. При запуске в регистре A0 номер текущего ядра, в регистре A1 указатель на FDT с описанием оборудования. В QEMU есть монитор где можно посмотреть содержимое регистров и памяти. Также можно подключит GDB.

Есть ещё довольно простой эмулятор TinyEMU с читабельным кодом, который при этом достаточно продвинутый чтобы запустить Haiku или Linux с GUI.

Есть много книжек про RISC-V, есть готовые проекты под FPGA.

X512 ★★★★★
() автор топика
Ответ на: комментарий от nihirash

К слову, там webkit пока совсем не завезли?

По идее его достаточно собрать. Он довольно жирный и будет долго собираться. Ещё ему нужен LLVM. Пока использую NetSurf.

X512 ★★★★★
() автор топика
Ответ на: комментарий от a1batross

Если я правильно понимаю, с видеокартами проблема в VGABIOS. Ему нужен реальный режим x86 и само собой IO порты.

Тут обошлось без эмуляции x86. Я использую видеокарту ATI/AMD в которой есть AtomBIOS со своими архитектуронезависимыми опкодами и интерпретатором этих опкодов в драйвере.

Правда графика начинает работать только после загрузки ядра и запуска GUI сервера, загрузочная заставка не показывается потому что прошивка и загрузчик не могут работать с видеокартой.

И если IO порты можно было бы замаппить через MMIO

На этой плате так и сделано. Есть отдельный диапазон физической памяти под IO порты.

X512 ★★★★★
() автор топика
Ответ на: комментарий от X512

О, повезло.

В e2k прям в BIOS и ядро вшивают эмулятор реального режима x86(судя по всему что-то похожее на этот), чтобы с VGABIOS работать. IO порты тоже замаплены через обычный MMIO.

a1batross ★★★★★
()
Последнее исправление: a1batross (всего исправлений: 1)
Ответ на: комментарий от X512

Существенно уступает x86

В х86, столько денег вложено, это не удивительно.

на уровне Raspberry Pi

Это радует, конкуренция нужна.

Но зато доступная разная PCIe периферия такая как видеокарты, NVMe диски, WiFi карты, SATA контроллеры и вообще всё что угодно PCIe совместимое

Вот-вот, ИМХО, преогромнейшее преимущество.

fernandos ★★★
()
Ответ на: комментарий от Korchevatel

Или то был второй?

Второй был в слотовом решении, Slot 1, разве нет?

EXL ★★★★★
()

Отличная и интересная работа!

EXL ★★★★★
()
Ответ на: комментарий от Turbid

Процик в HiFive Unmatched по IPC находится где-то примерно на уровне Cortex-A53. На 1GHz это будет слабовато для десктопа.

Надо ждать их следующих ядер и проциков, которые ожидаются уже примерно на уровне A72 и хороших частотах. И это будет уже примерно как R-pi 4. За одно, может быть, штатную встроенную графику подвезут.

aist1 ★★★
()
Ответ на: комментарий от steeels

А иначе никак, там у фабрик NDA на PDK. Оно постепенно демократизируется, так как железоклепатели хотят через модель opensource снизить косты. И мы со временем увидим полностью открытые CPU десктопного класса.

aist1 ★★★
()
Ответ на: комментарий от Sunderland93

UNIX-like операционной системы Haiku

Как давно она стала Unix-like?

В нашем прошлом споре о том, является ли Haiku UNIX-like операционной системой, ты привёл следующие критерии соответствия и аргументацию:

IPC (Unix Sockets, например), файлы устройств, FHS, потоки. То есть система и внешне и внутренне должна быть максимально похожа на Unix. В Linux это чётко прослеживается, но вот если считать что поддержка POSIX - это всё что нужно чтобы называться Unix-like, то и AmigaOS с MorphOS тоже Unix-like системы.

Я оставил твоё сообщение без ответа, потому что у меня нет должной компетенции и опыта использования BeOS и Haiku, но поскольку этот вопрос ещё раз поднялся, думаю кое-что напишу. Надеюсь ТС меня поправит, если я что-то скажу неправильно.

  1. Так вот, IPC в Haiku реализовано поверх BSD Sockets, тогда как в BeOS вроде как использовались Berkeley sockets, по сути предок.

  2. Насчёт файлов устройств не могу ничего сказать, потому что не помню, были ли они в Haiku, когда я её тыкал года три назад. Но если посмотреть в документцию по написанию драйверов, там можно найти следующие строки:

device_hooks *find_device(const char *name)

returns an array of function pointers that provide the dev file system calls to: open, close, free, control, read, write, select, deselect, readv, writev (in that order)

https://www.haiku-os.org/documents/dev/device_driver_basics/

Учитывая что большинство драйверов переносится из FreeBSD, в каком-то виде это должно существовать. Возможно просто скрыто от пользователя.

  1. FHS довольно слабый критерий соответствия UNIX-like, как по мне. Огромное количество UNIX-like операционных систем (вроде той же macOS) соответствует ему примерно так, как это делает Haiku. Да, я помню что в Haiku были некоторые ошмётки FHS.

  2. Для потоков в Haiku используется pthreads, как и во многих UNIX-like. А вот в BeOS кажется было что-то другое.

Так что ИМХО, вопрос о том, является ли BeOS – UNIX-like OS действительно спорный, то в случае с Haiku ответ на него стремится к истине.

P.S. Вот ещё мнение одного из разработчиков Haiku, который недавно был нанят Haiku Inc.:

For me, by far the biggest indicator of an OS being POSIX/UNIX-like or not is (1) the fork-based process model, and (2) POSIX file management [modes, permissions, etc.]. Haiku uses both, and “natively”, i.e. there is no other process model or file management system behind these, i.e. the POSIX functions are not wrappers around some other API. So Haiku is thus indisputably a UNIX-like OS.

EXL ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.