Koje su novine u Linux kernelu
Linux kernel je jezgro svakog Linux sistema. Možemo reći da Linux pokreće gotovo svaki bitniji računar na svetu. 500 najbržih superkompjutera, većinu javnih cloud-ova, čak i Microsoft Azure. Uz to pokreće i oko 75% pametnih telefona. Takođe, zahvaljujući Android operativnom sistemu, Linux je najpopularniji operativni sistem za krajnje korisnike, pa tako vodi u odnosu na Windows (39% Linux naspram 35% Windows).
Svakako, Linux ne planira da se zaustavi na ovome. Nova poboljšanja koja donosi novi Linux kernel govore u prilog tome. Mi ćemo u današnjem tekstu nabrojati neke novine koje smatramo bitnim da ih znate.
VPN na Linux-u
Svakako najveća novina je to što će Linux sada postati platforma za VPN-ove. Iako je Linux, uglavnom zahvaljujući OpenVPN-u, već dugo jedan od ključnih igrača na polju VPN-a, pojavom revolucinarnog WireGuard-a, polako ali sigurno preuzima i primat na ovom polju.
Ovo se već obistinilo i integracijom WireGuard-a u Linux 5.6 verziju kernela koja je izdata u martu 2020.
Ali zašto je WireGuard toliko poseban za Linux?
Pre svega u pitanju je izuzetno kvalitetan softver sa veoma čistim i jednostavnim kodom, ali i sa veoma moćnom kriptografskom podrškom za Noise Protocol Framework, Curve25519, ChaCha20, Poly1305-AES, BLAKE2, SipHash24 i HKDF.
Ono što je za korinike najbitnije, WireGuard je mnogo brži od svoje konkurencije. Neka testiranja su pokazala da je više od dva puta brži od OpenVPN-a. Takođe, on može da radi na različitim platformama, pa tako sa jedne strane može raditi na Linux serveru, a sa klijentske strane na Windows-u, macOS-u, BSDu, iOS-u, Androidu i naravno, na Linux desktop platformi.
Pored toga, Linux kernel 5.6 nam dolazi i sa još jednim važnim rešenjem za sve one koji još uvek rade na 32-bitnim sistemima. Naime, svi 32-bitni sistemi, zbog ograničenog kapaciteta 32-bitnog zapisa, mogu ispravno računati vreme do datuma 19.01.2038 (tačnije do 3h:14min:8sec tog datuma). Nakon toga bi počeli da ga računaju unazad koristeći negativne brojeve.
Linux 5.6 je došao sa fiskom za ovaj problem, tako da i 32-bitni sistemi mogu koristiti 64-bitne brojeve za računanje (zapisivanje) vremena.
Sinhronizacija u proizvodnom procesu između Androida i Linux-a
Ukoliko malo pratite svet operativnih sistema, onda verovatno znate da je Android distribucija Linux-a specijalizovana za mobilne telefone. Ono što možda niste znali jeste da je dugo godina Andoid bio fork Linux-a.
Čak i sada nakon 10 godina rada na zajedničkom projektu, developeri Androida i Linux-a nisu baš sasvim usaglašeni. To se sada menja.
Naime, pre nego Linux postane sastavni deo vašeg novog Android telefona, on prolazi kroz tri zasebne i vremenski zahteve faze. Pre svega Google uzima LTS kernel i dodaje mu Android kod kako bi se dobio zajednički Android kernel. Nakon toga, Google isporučuje tu verziju kernela SoC (system-on-a-chip) proizvođaču kao što je na primer Qualcomm. OEM zatim prilagođava kernel specifičnom SoC proizvođaču i čipsetu. Na kraju, SoC kernel se isporučuje proizvođaču pametnih telefona, koji zatim na sve dodaje određeni hardver i drajvere za taj hardver. Taj kernel uređaja se naazi na vašem pametnom telefonu.
Usput, svaki telefon pretrpi dodavanje miliona linija kodova za kernel koji nisu deo standardne distribucije. Pri tome svaki taj telefon ima svoj hardver i drajvere za taj hardver, što znači da svaki dolazi sa svojim specifičnim miksom hardvera i drajvera. Upravo iz tog razloga je veoma teško napraviti jednu univerzalnu distribuciju Androida za pametne telefone.
Šta je krajnji rezultat toga?
Vaš novi Android telefon ima kernel star 2 godine! Zbog tako dugotrajnog procesa pripreme jednog Android operativnog sistema, Linux LTS kerneli sada imaju čak šest godina podrške.
Dakle, Google sada pokušava da sa developerskom zajednicom uskladi nove verzije Androida sa aktuelnom verzijom Linux kernela. Baš iz razloga pomenutog u prethodnom pasusu.
Ipak, to će malo sačekati dok ne bude potpuno realizovano. Sa jedne strane problem predstavlja otpor Linux developer-a da podrže stabilnu verziju ABI-a (application binary interface), a sa druge strane i otpor proizvođača hardvera da isporuče kod za njihove drajvere. Za one koji možda nisu upućeni u detalje, ABI definiše kako program radi sa hadverom. Sa druge strane developeri open source softvera žele da rade na nivou API-ja, dok proizvođači hardvera uglavnom žele da njihovi uređaji budu dostupni samo ABI-jima.
Bez obzira na sve pomenuto ipak se nalazimo dosta blizu konačne integracije Linux-a u produkcioni proces Androida. To znači da će Android u startu biti mnogo sigurniji nego što je to slučaj danas.
eBPF: Mrežni firewall koji je postao Linux debugger
Ako ste do sada dolazili u kontakt sa firewall-ovima, onda ste verovatno čuli za eBPF (extended Berkeley Packet Filter). U pitanju je firewall koji kao i svaki drugi firewall može da presreće, filtrira i blokira mrežne pakete. On to radi uz pomoć koda koji radi unutar kernela.
Možete da pokrenete eBPF da reaguje na aktivnosti na tracepoint, kprobes i perf događajima. Ovo vam ujedno omogućava da debagujete probleme unutar kernela i pokrenete analizu performansi sistema. Dodatno, s obzirom da eBPF programi imaju pristup strukturama podataka u kernelu, možete da unisujete, dodajete i testirate novi kod za debagovanje bez potrebe da rekompajlirate kernel. Ovo developerima donosi veliku uštedu vremena, pa sve češće koriste eBPF i za upravo pomenute namene.
Rust je postaje drugi jezik Linux-a
Od samih početka Linux-a, ukoliko biste želeli da nešto razvijate za Linux kernel ili bilo šta slično tome, morali biste to da uradite u C programskom jeziku. To se ipak pomalo menja. U developerskoj zajednici sve se češće pominje Rust kao drugi jezik Linux-a.
Rust je jezik visokog nivoa koji je sponzorisan od strane Mozilla-e. Popularan je zbog svoje visoke bezbednosti pogotovo u poređenju sa C programskim jezikom, pa je sve veća podrška ideji da se on koristi unutar Linux kernela. Ne treba zaboraviti i na njegovu superiornost kada je u pitanju upravljanje memorijom, što je još jedan razlog više u prilog pomenutoj ideji.
Za sada je ovo samo na nivou ideje, ali sve je češće pominjanje neophodnosti da se pored C programskog jezika uključi još neki jezik unutar kernela, a Rust se čini više nego dobar kandidat za tako nešto. Iz svega prethodno navedenog vrlo je verovatno da će uskoo Rust imati značajnu ulogu u razvoju Linux kernela i distribucija.
Linux kernel 6.0 i posle toga
Do kraja ove godine će se pojaviti Linux kernel 6.0, ali ne treba previše očekivati od tog izdanja. Jednostavno, Linux nije koncipiran tako da sa svakim novim izdanjem donosi velike novine i mogućnosti. Ipak, gledajući u budućnost Linux kernela, evidentno je da će i Linux 6, kao i sva prethodna izdanja, uglavnom doneti nove i poboljšane drajvere. Ono što će definitivno biti novina jeste podrška za AMD i Intel FSGSBASE set instrukcija . Da ne ulazimo previše u detalje, uglavnom računar koji radi na Linux-u koji podržava ovaj set instrukcija će raditi značajno brže u odnosu na prethodnu verziju. Neka rana testiranja pokazuju ubrzanje od čak 50%, što je samo po sebi dovoljno fascinantno.
Ono što na kraju možemo zaključiti je da će Linux očigledno nastaviti da unapređuje brzinu i sigurnost, što je donekle očigledno i iz činjenica iznetih u ovom tekstu. Takođe, Linux će definitivno i proširiti svoje tržište zahvaljujući intergrisanom WireGuard VPN-u.
Definitivno više nije pitanje da li će nego kada će Linux definitivno preuzeti primat i u svim ostalim segmentima, uključujući i desktop distribucije za manje napredne korisnike računara.
Do tada ostaje nam da sa isčekivanjem pratimo nova izdanja i novine koje će nam i ubuduće donositi.