Aktuální vydání

celé číslo

01

2025

Veletrh Amper 2025, automatizace v energetice a systémy managementu energií

Snímače teploty, tlaku, průtoku a hladiny, řídicí technika budov

celé číslo

Migrace na Linux: proč a jak?

Hans Jürgen Rauscher
 
Operační systém Linux má na trhu vestavných řešení pevné místo, ale migrace existujícího zdrojového programu na jiný operační systém je obtížný úkol. Tento článek prochází postupné etapy migrace, objasňuje technické požadavky a možná úskalí a vysvětluje rozdíly mezi nákupem zavedené komerční implementace Linuxu a vývojem a údržbou implementace vlastní.
 
Linux is firmly established in the embedded market, but migrating existing source code to the operating system is a considerable undertaking. This article explores the different steps necessary to migrate, the technical requirements and possible pitfalls and the differences between buying an established Linux implementation and developing and maintaining one internally.
 

1. Proč migrovat?

Operační systém Linux má na trhu vestavných systémů své pevné místo. To vyvolává otázku, zda se při vývoji nových produktů nebo aplikačních programů vyplatí dosavadní operační systémy nahrazovat Linuxem. Jakákoliv migrace operačního systému je totiž spojena s obtížemi a nemalým rizikem. Analýza, návrh projektu a řešení technických problémů spojených s migrací vyžadují mnoho úvah i času.
 
Důvody, proč se rozhodnout pro migraci na Linux, jsou rozdílné u různých firem, a dokonce u různých produktů. Může jít o snahu využívat u nových produktů funkce, pro něž je kapacita současného hardwaru a operačního systému nedostatečná. Velmi běžným důvodem k migraci je snaha ušetřit náklady na modernizaci, když se doba života původního systému blíží ke konci.
 

2. Proč Linux?

Linux pevně zakotvil nejen v běžné informační technice, ale i na trhu vestavných systémů. Hlavními důvody jsou úspornost zdrojového programu, jeho dostupnost pro opakované použití, podpora různých typů hardwaru, rozsáhlá komunita vývojářů, kteří Linux používají, a s tím vším spojené úspory nákladů. Linux je velmi pružný a prostřednictvím vývojových nástrojů nabízí úplnou kontrolu nad operačním systémem i asociovanými sadami softwaru.
 
Linux v současné době představuje výhodnou platformu pro návrh operačních systémů určených i pro náročné vestavné systémy v telekomunikacích nebo v automatizaci. Vlastnosti reálného času a certifikace, obojí životně důležité pro využití vestavných systémů v průmyslu, se stále vyvíjejí.
 

3. Softwarové komponenty

To, co tvoří skutečnou hodnotu koncového zařízení a představuje konkurenční výhodu, je obvykle aplikační software. Při úvahách o migraci je proto aplikační software první na řadě. Potřebný middleware − software, který umožňuje běh aplikačního programu − může být při migraci doplněn novými funkcemi, které činí migraci ještě užitečnější. Ovšem middleware mnohdy využívá různé specifické funkce operačního systému, což naopak činí migraci obtížnější a znevýhodňuje ji ve srovnání s vývojem zcela nového produktu.
 

4. Jak migrovat?

Na začátku je nutné načrtnout si efektivní postup migrace. Zaprvé je třeba stanovit cíle projektu migrace a ohodnotit s ním spojená rizika. V principu existují tři postupy, jak aplikační program zkonvertovat pro Linux.
 
V prvním postupu je většina úsilí věnována úpravě aplikačního programu. Tento postup poskytuje nejvíce příležitostí, jak využít možnosti Linuxu. Zdrojový program je vhodný pro portování (v tomto případě: přenos aplikačního programu z jedné platformy na jinou), jestliže API (např. Unix nebo POSIX) a vnitřní struktura aplikačního programu jsou kompatibilní s Linuxem. Příklad je uveden na obr. 1; jde o model migrace použitý pro aplikační software zařízení od firmy Wind River.
 
Jestliže je zdrojový program příliš „protkaný“ API současného operačního systému, je možné vytvořit mezivrstvu, která zabezpečí komunikaci mezi API dosavadního systému a API Linuxu. A třetím postupem migrace je převést do Linuxu aplikační program i se současným operačním systémem (obr. 2). Tento postup vyžaduje, aby v současném operačním systému existovala vrstva HAL, Hardware Abstraction Layer. Jestliže ji systém nepoužívá nebo není dobře zdokumentována, může to být značný problém. Jako alternativu lze použít metodu virtualizace, kterou se operační systém a aplikační program dohromady zapouzdří. Virtualizace by v ideálním případě měla být podporována také cílovým CPU, aby se výkonnost systému udržela na přijatelné úrovni.
 

5. Problémy specifické pro Linux

Při migraci je třeba brát v úvahu některé problému specifické pro Linux. Úlohy operačního systému reálného času jsou seskupeny jako vlákna v daném procesu, a tak je třeba vzít v úvahu problém implementace vláken na úrovni jádra nebo na úrovni uživatele a oddělení uživatelského a systémového prostoru.
 
V závislosti na požadované době odezvy aplikačního programu a výkonu CPU by Linuxové jádro mělo být schopno plnit úlohy reálného času samo o sobě (při době odezvy v řádu desítek milisekund), nebo vyžaduje přídavné funkce, např. patch PREEMPT_RT (pro doby odezvy v desítkách mikrosekund). Jestliže ale aplikační program vyžaduje deterministickou, 100% garantovanou dobu odezvy v řádu jednotek mikrosekund, jádro nemusí být schopno takový požadavek splnit. Potom je zapotřebí instalovat vhodný plánovací mechanismus, např. Wind River Real- Time Core for Linux. Tento mechanismus řídí práci CPU a přiděluje výpočetní čas CPU Linuxu jen tehdy, když jej pro sebe nevyžaduje žádné vlákno reálného času nebo přerušení.
 
Přechod od často používaného modelu paměti s fyzickými adresami k modelu s virtuálními adresami a stránkami chráněnými managementem paměti může také znamenat nutnost změnit určité části zdrojového programu. Komunikace a synchronizace mezi procesy budou zachovány za předpokladu, že se nevyskytnou žádné problémy s kompatibilitou softwarových komponent.
 
Linux má výraznou uživatelskou a souborovou strukturu a také jsou zde mnohem častější požadavky na uživatelské přizpůsobení aplikačních programů. Jedna možnost, jak se s tím vypořádat, je napsat zapouzdřený podprogram startup, který vytvoří potřebné prostředí, a potom spustit migrovaný aplikační program jako dceřiný proces. To ale znamená, že je nutné velmi pečlivě odladit úlohy reálného času v Linuxovém modelu proces-vlákna. Také nemá smysl migrovat ovladače zařízení, a jestliže je to třeba, je dobré spíše uvažovat o nové implementaci.
 
Při návrhu hardwaru je třeba vzít v úvahu požadavky Linuxu na paměti RAM i flash. Velikost typického Linuxového vlákna je 1 až 2 MB, tzn. že systém bude vyžadovat typicky 8 MB RAM. Pro snazší testování a ladění zdrojového programu by mělo být k dispozici kromě rozhraní JTAG také sériové rozhraní a rozhraní pro Ethernet, a to nejlépe na vývojové desce. Zavádění Linuxu se zřetelně odlišuje od zavádění operačních systémů reálného času, neboť vyžaduje zaváděcí program boot loader a přístup k inicializačnímu kořenovému adresáři obsahujícímu všechny potřebné binární sady. Ty mohou být umístěny v paměti flash, na přímo přístupném disku nebo jako soubor NFS na serveru v síti.
 

6. Jaký Linux?

V principu lze použít čtyři druhy Linuxu:
  • Původním typem Linuxu je Linux, který si uživatel dotvoří sám. Angličtina pro něj někdy používá výraz známý spíše kuřákům: „roll your own“, tedy „ubal si ho sám“, ve zkratce RYO. Tento typ Linuxu umožňuje uživateli plnou kontrolu, ale naproti tomu jej zatěžuje plnou odpovědností za údržbu a podporu aplikačního programu. Navíc k velkým nákladům na údržbu a podporu s sebou projekty s Linuxem RYO nesou také velká rizika; z hlediska uživatele ovšem Linux RYO nepřináší nic, co by přispívalo ke zlepšení užitných vlastností nebo kvality produktu.
  • Distribuce Linuxu jako Ubuntu, Fedora, OpenSUSE nebo Ebian jsou zdarma, ale pro vestavné systémy jsou často nevhodné, protože jsou primárně zaměřeny na architekturu CPU x86 a na použití v serverech nebo stolních počítačích.
  • Verze Linuxu nabízené dodavateli hardwaru často nejsou právě nejaktuálnější a zřídka lze očekávat jejich dlouhodobou podporu. Často také trpí nedostatečnou integrací s vývojovými nástroji mimo kompilátor, a tak jsou pro mnohé projekty nevhodné, ač nabízejí dobrou podporu pro cílovou hardwarovou platformu.
  • Komerční verze Linuxu, jako např. Wind River Linux, poskytují uživateli mnoho výhod: otevřenost, dostupnost zdrojového programu a širokou podporu, a to bez neúměrných nákladů na vývoj, odladění aplikačních programů a omezení typických chyb pro verze RYO nebo verze distribuované dodavateli hardwaru (obr. 3).

7. Závěr

Za předpokladu, že bude celý projekt pečlivě naplánován a budou vzaty v úvahu všechna popsaná úskalí, bude migrace na Linux úspěšná a přinese značný užitek. Požadavky na dlouhodobou podporu v praxi znamenají, že lepší volbou často bývá komerční distribuce Linuxu než různé varianty Linuxu vyvíjené přímo uživatelem. Použití komerční distribuce Linuxu umožní vývojářům, aby se soustředili na návrh aplikačního programu a zlepšování vlastností koncového zařízení, a minimalizuje krátkodobá a dlouhodobá rizika migrace.
 
Hans Juergen Rauscher, Wind River
 
Hans Juergen Rauscher pracuje ve firmě Wind River, Germany jako konzultant pro klíčové zákazníky z oblasti telekomunikací. Zabývá se architekturou systémů a komunikačních sítí.
 
Obr. 1. Metodický postup migrace navržený firmou Wind River Professional Services
Obr. 2. Aplikační programy mohou být přepsány, portovány nebo nově použity, dokonce i se současným operačním systémem
Obr. 3. Komerční distribuce Linuxu redukují náklady a dobu potřebnou na vývoj a přinášejí další výhody