Hlavní navigace

Debian přidává podporu pro 64bitovou architekturu RISC-V

Petr Krčmář

O otevřené architektuře RISC-V se hovoří čím dál více. Přestože reálné procesory ještě nikdo neviděl, už se pro ně připravuje softwarová podpora. Debian založil nový port riscv64 a už kompiluje balíčky.

Doba čtení: 3 minuty

otevřeném procesoru RISC-V se v posledních měsících hovoří čím dál více, vývoj už získal podporu velkých firem jako Google, Samsung, Qualcomm a Tesla. Nyní se k přípravě přidal také Debian, který mezi své porty zařadil novou architekturu riscv64.

Vývoj ve skutečnosti začal už před rokem, ale v té době chyběly některé podstatné komponenty (gcc, glibc, binutils) a vývoj probíhal mimo Debian. Potřebné nástroje totiž nebyly součástí upstreamu a ABI bylo ještě velmi živé a zásadním způsobem se velmi rychle měnilo.

Během roku se ale vývoj stabilizoval a všechny důležité utility podporu pro RISC-V přidaly: GNU binutils ve verzi 2.28, GCC ve verzi 7, linuxové jádro 4.15 a konečně v únoru pak glibc 2.27. Hlavní komponenty jsou tedy k dispozici, stále je ale co vylepšovat: chybí některé ovladače, v jádru chybí některé části riscv32 a podpora v QEMU má ještě chyby.

Krátká historie RISC-V v Debianu

Přestože je podpora ve velmi rané fázi, už je možné začít ji využívat. Proto se vývojáři Debianu rozhodli zařadit riscv64 mezi oficiální porty a začít postupně pracovat na přípravě Debianu pro RISC-V. Protože skutečný procesor ještě nebyl vyroben, probíhá vývoj s pomocí emulace v QEMU ( qemu-system-riscv64).

Během března tedy začala cross-kompilace základních komponent, bylo potřeba patchovat některé utility, vyřešit konflikty některých verzí utilit, používat balíčky z větve experimental a podobně. Při práci hodně pomohla utilita rebootstrap, která celý proces automatizuje. Nakonec se podařilo zkompilovat poměrně velké množství balíčků, přestože ne všechny zatím fungují stoprocentně. Řada těchto balíčků není podstatná pro běh systému, ale je nutná pro kompilaci dalších balíčků.

S touto základní sadou balíčků pak bylo v polovině března možné zkompilovat systém nativně, tedy bez cross-kompilace, která dělá některým zdrojovým balíkům problémy. Jedním z takových balíků je například Perl, který je ovšem velmi důležitou součástí distribuce. Od té chvíle už tedy systém běžel v QEMU a nabídl prostředí schopné sestavovat balíky – systém tedy mohl kompilovat sám sebe.

Ve druhé polovině března pak vývojáři pracovali na tom, aby bylo možné s minimem úprav zkompilovat balíčky z větve unstable a nová architektura se tak mohla hladce zařadit mezi porty. Bylo nutné použít podporu build-profiles, protože některé zásadní balíky (třeba openjdk-9-jdk) zatím nejsou k dispozici.

Bylo také nutné vypnout některé testy, protože část z nich dopadala neúspěšně. Důvodem byla zejména doba sestavování, protože emulované prostředí v QEMU je pomalé. Nakonec se ale podařilo většinu zamýšlených balíků zkompilovat beze změn, ostatní budou zkompilovány znovu, až bude možné uspokojit jejich závislosti.

Současný stav

V tuto chvíli jsou zkompilovány tisíce balíčků, většina z nich standardní cestou. Některé ale vyžadují úpravu kvůli chybějícím závislostem nebo patchování kvůli architektuře. Bylo také potřeba ručně rozetnout některé cykly: cmake například závisí na Qt, ale Qt zase závisí na cmake.

Takto je zkompilováno přibližně 30 % zdrojových balíčků, což znamená více než 4100 balíků. Pokud k tomu připočteme všechny platformně nezávislé balíky (dokumentaci, moduly pro Python a podobně), je pro RISC-V dostupných asi 65 až 70 % balíčků z Debianu. Jak bylo řečeno, většina věcí byla zkompilována zcela automaticky bez nutnosti zvláštní péče.

Stav celého procesu je možné průběžně sledovat na buildd.debian.org. Následující graf ukazuje, jak v čase roste počet balíčků zkompilovaných pro novou architekturu:

Co bude dál?

Vše je zatím připravováno v plně emulovaném prostředí, protože skutečný procesor RISC-V ještě nikdo neviděl. Zatím je vše navrhováno jen na FPGA a předpokládá se, že během následujících měsíců se objeví velmi omezený počet testovacích kusů. Vývojáři doufají, že na nich Debian bude fungovat, ale to se zjistí až praktickým pokusem.

Při sestavování se stále objevují některé zvláštní problémy a proces se zasekává. V tuhle chvíli ale není možné bez reálného hardware zjistit, jestli za to může QEMU, chyby v software, kompilátoru nebo nějaká zvláštní kombinace problémů ve více komponentách. Protože se už ale podařilo úspěšně zkompilovat poměrně velkou porci balíků, nevypadá to nijak špatně.

MIF18 tip v článku témata

Teď je v plánu zkompilovat celý archiv Debianu, vytvořit instalační obrazy použitelné v QEMU a poté dotáhnout podporu až do Debianu stable – tedy mezi všechny dospělé architektury.

Pokud se chcete přidat nebo si port pro RISC-V vyzkoušet, sáhněte po správných repozitářích, další detaily pak najdete ve wiki Debianu. Zajímat vás budou pravděpodobně také otevřené bugy a seznam balíků, které zatím nebylo možné zkompilovat.

Našli jste v článku chybu?