KernelScript 0.1.0

Esitletud KernelScript — eksperimentaalne programmeerimiskeel eBPF-programmide, kasutajate laadijate ja Linuxi tuumalaienemiste arendamiseks ĂŒhest koodibaasist. Projekti arendab Multikernel Technologies, ettevĂ”te, mis edendab split-kernel / multikernel arhitektuuri Linuxile. KernelScriptist rÀÀkis ettevĂ”tte asutaja Cong Wang Linux Foundation Open Source Summit'il; projekti kood on avaldatud GitHubis litsentsi all Apache 2.0.


eBPF (Extended Berkeley Packet Filter) — tehnoloogia, mis vĂ”imaldab kĂ€ivitada vĂ€ikeseid programme otse Linuxi tuumas, seda puudutamata ja sĂŒsteemi stabiilsust ohustamata. eBPF aitab lahendada mitmeid probleeme, alates toimivuse jĂ€lgimisest kuni turva- ja vĂ”rguoptimeerimiseni. NĂ€iteks vĂ”imaldab eBPF jĂ€lgida sĂŒsteemi kutsungeid, vĂ”rgu liiklust ja muid sĂŒndmusi reaalajas. See aitab leida kitsaskohti toimivuses ja optimeerida sĂŒsteemi (Habr).

KernelScript'i idee on muuta eBPFi arendamine vĂ€hem valusaks kui C + libbpf kombinatsiooniga, samas mitte piirduda ainult jĂ€lgimisega nagu bpftrace. Arendajad kirjeldavad keelt kui tĂŒĂŒbikindlat DSL-i, mis ĂŒhendab eBPF, kasutajaruumi ja kernelspace arendamine: ĂŒhest lĂ€htefailist peab kompilaator genereerima koodi eBPF-programmide, kasutajaruumi osade ja integreerimise jaoks kernel moodulitega kfunc kaudu.

KernelScripti vÀljakuulutatud vÔimalused:

  • Kompileerimine erinevate sihtide jaoks ĂŒhest failist — atribuutidega funktsioonid nagu @xdp, @tc, @helper ja @kfunc kuuluvad automaatselt vajaliku ossa: XDP/TC programmidesse, helper-funktsioonidesse, kernel-funktsioonidesse vĂ”i tavalisse kasutajaruumi koodi.

  • Tail callide automatiseerimine — kĂ€sitsi program array seadistamise ja bpf_tail_call() kutsumise asemel soovitatakse arendajal kirjutada tavaline teise funktsiooni kutsumine, jĂ€ttes madala taseme eBPF-koodi genereerimise kompilaatorile.

  • Lihtsustatud töö dynptr ja eBPF kaardiga — keel varjab osa kĂ€sitsi tööst bpf_ringbuf_reserve_dynptr, bpf_dynptr_write ja sarnaste API-dega. eBPF kaarte saab kasutada nagu globaalset muutuvaid, mis on erinevatele programmidele kergesti ligipÀÀsetavad.

  • Programmide elutsĂŒkli kontroll — eBPF programmid esitatakse tĂŒĂŒbitud vÀÀrtustena, mis autorite arvates vĂ”imaldab kompileerimise ajal vĂ€ltida vigu, nagu nĂ€iteks attach() proovimine enne eduka laadimise toimumist.

  • Kfunci tugi — KernelScript vĂ”imaldab deklareerida @kfunc atribuudiga funktsioone, mis töötavad kernelis ja mida saab kutsuda eBPF-programmidest; nende jaoks on lubatud automaatne kernel mooduli ja BTF-registreerimise genereerimine.

  • Peamiste eBPF-programmi tĂŒĂŒpide tugi — README-s on nĂ€idatud nĂ€iteid XDP, TC, probe-programmide ja perf_event kohta, sealhulgas tööriistadega, mis kĂ€sitlevad riistvaralisi jĂ”udluskalkulaatoreid.

Autorid rÔhutavad eraldi, et KernelScript ei asenda Linuxi kernelit ega ole uus eBPF kÀituskeskkond. See on pigem kompilaator ja kÔrgem taseme keel, mille eesmÀrk on genereerida tuttavad madala taseme komponendid: eBPF-kood, userspace-laadijad, Makefile ja vajadusel kernel moodul.

Praegu tuleb projekti kĂ€sitleda varajase katsetusena. Repos on otseselt öeldud, et KernelScript on staadiumis beta, sĂŒntaks ja API vĂ”ivad muutuda tagasipöördumise ĂŒhilduvust sĂ€ilitamata, ning selle kasutamine tootmises ei ole hetkel soovitatav.

Allikas: linux.org.ru

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster