Naštěstí snad vždy jde spustit „generický userspace“ (možná mimo akcelerovanou grafiku). Nejde ovšem spustit „generický kernel“. Na x86-64 mám jednu binárku kernelu a jeden univerzální initramdisk, který nabootuje v podstatě na všem. Funguje to tak už u ARMu? Nainstaluju debianí balíček linux-image-arm64, ukážu tomu DTB a jedu? Před lety měla každá druhá deska custom kernel.
Funguje to tak samozrejme i u ARMu, pri konfiguraci kernelu si v System type vyberete, jake vsechny platformy maji byt podporovane danym kernelem. Bylo to tak uz v dobe Linuxu 2.6. Problem byva u platforem, ktere nejsou soucasti vanila jadra, protoze na nich vetsinou pracuji programatori podrane kvality a nacpou si ruzne hacky do generickeho kodu, coz pak rozbije ostatni platformy.
Pokud je v desce UEFI firmware (mám rád TowBoot), tak na tom opravdu nabootuje generický aarch64 image a hurá. Nahrávám si to do všeho, co mi přijde po ruce a má to trošku SPI flashe.
To je IMO ten klíčový rozdíl v UX mezi světem PC a těchto jednočipových počítačů: každé PC se dodává s předinstalovaným firmwarem s jednotným API, zatímco tyto desky jsou až na výjimky prázdné. Většina uživatelů moc nerozlišuje firmware (např. uboot) od operačního systému protože na sdkartě mají obojí, tak si to vykládají jako že musí pro každou desku hledat extra OS.
V jádru samozřejmě musí být ovladače a DTB, což ale není takový rozdíl oproti PC, kde musíte mít pro danou desku ovladače a ideálně i ACPI quirks, jinak to taky neroztlačíte. Je to tam ale jednodušší protože těch platforem je jen pár.
Já bych se trochu pozastavil i nad tím "zlaté x86". Ono sice má dnes podporu téměř generického bootloaderu, ale co všechno ten bootloader musí dělat pro to aby systém najel, to taky není úplně triviální. Uefi se to snaží zjednodušit pro další vrstvy, proto je samo o sobě komplikovanější.
U ARMu a Riscu je většinou minimalistický až žádný bootloader, žádné ACPI/APIC, nic, a všechno si vývojář OS musi udělat sám. Nejde jen vzít kernel a spustit ho (jak to umí uefi). Takže image z desky Sifive nepojede na desce HiFive,atd..
To je pravda. Nicméně ARM nebyl primárně určený pro univerzální PC. V embedded řešení bývá často vhodnější (rychlejší, spolehlivější) konfigurace interního HW natvrdo než autodetekce. A pro RISC-V je to také nejjednodušší cesta.
Prakticky jde obvykle "jen" o konfiguraci build options kernelu a nastavení device tree. Tipuju si, že v ubuntu je to jenom jiný balík s kernelem.
28. 5. 2024, 21:11 editováno autorem komentáře
Technicky je to opravdu jen o chybějících driverech v mainline, použité technologie jsou úplně stejné - konfig jádra + DTS.
Ono dostat kód do mainline jádra není úplně snadné, i malé patche mají běžně několik iterací, než je správce subsystému akceptuje. To je samozřejmě dobře. Na druhou stranu opravdu hodně i užitečných patchů končí zapadlých v mailinglistech, protože pokud si málo známý autor nevytvoří podporu u někoho dalšího, kdo mu dá v mailing listu k patchi aspoň Tested-By, málokdy správce patch sám od sebe akceptuje. Patchů chodí mraky a je pro něj těžké vybrat, které už jo.
Já jsem ale reagoval na něco jiného - původní ARM nemá s dnešním 64-bit ARMem nic společného, a všechny ty "revoluční" myšlenky původního ARMu v AArch64 vůbec nejsou.
A jasně, že architektura, která na každou instrukci potřebuje přesně 32 bitů se jednoduše dekóduje. Apple nepotřebuje ani cache pro dekódované instrukce, protože dekódování je tak rychlé, že tato mezivrstva by byla k ničemu.
Je jasné, že AArch64 rozdrtí X86, otázka jenom je, jak dlouho bude X86 schopný konkurovat. S AVX-512 a budoucím APX konkurovat může klidně ještě další 2 dekády, a pak se uvidí. Podle mě vznikne nová architektura, protože AArch64 má omezení a RISC-V je "too simple".
To je uplne jedno pro co byl arm puvodne navrzen. Maloktera vec skonci jen s tim na co byla navrzena.
To je otazka celkove standardizovane architektury pocitace s jeho adaptacnimi mezivrstvami na periferie a inicializaci.
Je to soucasti jejiho navrhu.
Kazdy takovy slozitejsi system kde se ocekavala nejaka otevrenost byl ve vyvojove fazi jen hloupy embedded projekt se spoustou veci natvrdo.
BIOS a UEFI sú reliktom z 8-bitových čias, keď programátor operačného systému bol skúsený assemblérový kúzelník, aby sa všetko vošlo do smiešne malej pamäte. BIOS dodal výrobca hardvéru, CP/M digital research.
Dnes nie je dôvod, keďže sú voľne dostupné operačné systémy a výrobca ich upraví. Lepšie podporované dosky budú aj tak v upstreame.
Takze jak tedy na univerzalni boot? Kazda deska bude delat inicializaci pred bootem jinak? Bude 3 zadele ruznych implementaci?
Jak budete univerzalne resit interface mezi radicem a zbytkem desky pred bootem? Jak budete resit boot z ruznych periferii? Nebo ze site?
Vzdy tam potřebujete mit nejakou zakladni integracni mezivrstvu nez se rizeni preda OS.
A to jeste ne zcela protoze environmental control je lepsi ridit subsystems bokem.
30. 5. 2024, 12:22 editováno autorem komentáře
RISC-V je tak jednoduchý, až to není praktické, a to je můj problém s tou architekturou. Když dnes porovnám X86_64, AArch64 a RISC-V, tak mi z toho co se týče praktičnosti nejlíp vychází právě AArch64. Tím nechci ale říct, že to je něco dokonalého, to ne... Jen tu instrukční sadu navrhl někdo, kdo chtěl aby se to dobře používalo.
Zobrem to inak. Ak by robili ďalší ARM počítač, povedzme Hurmikaki Pi, bola by to ďaľšia nezaujímavá čínska firma, ktorá robí waporware.
Keďže robia RISC-V, bez ohľadu, či sa vám to páči, alebo nepáči, tak vytŕčajú von a ich produkt je jedinečný. Naviac pre čínu je momentálne RISC-V zaujímavý z politických dôvodov. (Nebudem ďalej rozpitvávať).
strucne receno "ne". instrukcni sada je open, i nejake vhdl na githubu ktere si nahrajete do fpga je free ale v hotovem procesoru ktery se da koupit (jako treba StarFive JH7110) je mraky placeneho IP vcetne toho risc-v jadra
nakoupit risc-v jadro do sveho vlastniho designu muzete tady https://www.sifive.com/risc-v-core-ip
29. 5. 2024, 16:53 editováno autorem komentáře
Jen naivní devel co nedaval ve skole na okrajovych predmetech pozor si mysli ze doladenou implementaci svaba muze stahnout odnekud a je hotovo.
Ve skutecnosti je to neskutecna drina a utopi se v tom hromady penez. A resite treba takovou blbost aby vam pri deleni nechcipal procesor.
30. 5. 2024, 12:28 editováno autorem komentáře