DublÄjuma lietojumprogrammas izveide, kas darbojas jebkurÄ izplatÄ«Å”anÄ, nav viegls uzdevums. Lai nodroÅ”inÄtu, ka Veeam Agent for Linux darbojas izplatÄ«jumos no Red Hat 6 un Debian 6 lÄ«dz OpenSUSE 15.1 un Ubuntu 19.04, jums ir jÄatrisina virkne problÄmu, jo Ä«paÅ”i Åemot vÄrÄ to, ka programmatÅ«ras produktÄ ir iekļauts kodola modulis.
Raksts tapis, balstoties uz konferencÄ uzstÄÅ”anÄs materiÄliem
Linux ir ne tikai viena no populÄrÄkajÄm operÄtÄjsistÄmÄm. BÅ«tÄ«bÄ Å”Ä« ir platforma, uz kuras pamata jÅ«s varat izveidot kaut ko unikÄlu, kaut ko savu. Pateicoties tam, Linux ir daudz distribÅ«ciju, kas atŔķiras pÄc programmatÅ«ras komponentu komplekta. Un Å”eit rodas problÄma: lai programmatÅ«ras produkts darbotos jebkurÄ izplatÄ«Å”anÄ, jums ir jÄÅem vÄrÄ katras funkcijas.
PakeÅ”u vadÄ«tÄji. .deb pret .rpm
SÄksim ar acÄ«mredzamo problÄmu, kas saistÄ«ta ar produkta izplatÄ«Å”anu dažÄdos izplatÄ«jumos.
TipiskÄkais programmatÅ«ras produktu izplatÄ«Å”anas veids ir pakotnes ievietoÅ”ana repozitorijÄ, lai sistÄmÄ iebÅ«vÄtais pakotÅu pÄrvaldnieks to varÄtu instalÄt no turienes.
TomÄr mums ir divi populÄri pakotÅu formÄti: rpm Šø deb. Tas nozÄ«mÄ, ka ikvienam bÅ«s jÄatbalsta.
Deb pakotÅu pasaulÄ saderÄ«bas lÄ«menis ir pÄrsteidzoÅ”s. Viena un tÄ pati pakotne tiek instalÄta un darbojas vienlÄ«dz labi gan Debian 6, gan Ubuntu 19.04. Standarti pakotÅu veidoÅ”anas procesam un darbam ar tÄm, kas noteikti vecajos Debian izplatÄ«jumos, joprojÄm ir aktuÄli jaunizveidotajÄ Linux Mint un elementÄrajÄ OS. TÄpÄc Veeam Agent for Linux gadÄ«jumÄ pietiek ar vienu deb pakotni katrai aparatÅ«ras platformai.
TaÄu apgriezienu skaita pakeÅ”u pasaulÄ atŔķirÄ«bas ir lielas. PirmkÄrt, tÄpÄc, ka ir divi pilnÄ«gi neatkarÄ«gi izplatÄ«tÄji, Red Hat un SUSE, kuriem saderÄ«ba ir pilnÄ«gi nevajadzÄ«ga. OtrkÄrt, Å”iem izplatÄ«tÄjiem ir izplatÄ«Å”anas komplekti no tiem. atbalsts un eksperimentÄls. ArÄ« starp tÄm nav nepiecieÅ”ama saderÄ«ba. IzrÄdÄ«jÄs, ka el6, el7 un el8 ir savi iepakojumi. AtseviŔķa pakotne Fedora. SLES11 un 12 pakotnes un atseviŔķa openSUSE. GalvenÄ problÄma ir atkarÄ«bas un pakotÅu nosaukumi.
AtkarÄ«bas problÄma
DiemžÄl vienas un tÄs paÅ”as pakotnes dažÄdos izplatÄ«jumos bieži nonÄk ar dažÄdiem nosaukumiem. ZemÄk ir daļÄjs veeam pakotÅu atkarÄ«bu saraksts.
EL7:
SLES 12:
- liblkid
- libgcc
- libstdc++
- ncurses-libs
- droÅ”inÄtÄjs-libs
- file-libs
- veeamsnap=3.0.2.1185
- liblkid1
- libgcc_s1
- libstdc ++ 6
- libmagic1
- libfuse2
- veeamsnap-kmp=3.0.2.1185
TÄ rezultÄtÄ atkarÄ«bu saraksts ir unikÄls izplatÄ«Å”anai.
SliktÄk ir tas, ka atjauninÄtÄ versija sÄk slÄpties zem vecÄ pakotnes nosaukuma.
PiemÄrs:
Pakotne ir atjauninÄta Fedora 24 ncurs no 5. versijas uz 6. versiju. MÅ«su produkts tika izveidots ar 5. versiju, lai nodroÅ”inÄtu saderÄ«bu ar vecÄkiem izplatÄ«jumiem. Lai Fedora 5 izmantotu veco bibliotÄkas 24. versiju, man bija jÄizmanto pakotne ncurses-compat-libs.
RezultÄtÄ Fedora ir divas pakotnes ar dažÄdÄm atkarÄ«bÄm.
VÄl interesantÄk. PÄc nÄkamÄ izplatÄ«Å”anas atjauninÄjuma pakotne ncurses-compat-libs ar bibliotÄkas 5. versiju izrÄdÄs, ka tÄ nav pieejama. IzplatÄ«tÄjam ir dÄrgi ievilkt vecÄs bibliotÄkas jaunÄ izplatÄ«Å”anas versijÄ. PÄc kÄda laika problÄma atkÄrtojÄs SUSE izplatÄ«jumos.
TÄ rezultÄtÄ dažiem izplatÄ«jumiem bija jÄatsakÄs no tieÅ”Äs atkarÄ«bas ncurses-libsun labojiet produktu, lai tas varÄtu darboties ar jebkuru bibliotÄkas versiju.
Starp citu, Red Hat 8. versijÄ vairs nav meta pakotnes pitons, kas atsaucÄs uz veco labo python 2.7. Ir python2 Šø pitons3.
AlternatÄ«va pakotÅu pÄrvaldniekiem
AtkarÄ«bu problÄma ir sena un jau sen ir acÄ«mredzama. VienkÄrÅ”i atcerieties atkarÄ«bas elli.
Apvienot dažÄdas bibliotÄkas un lietojumprogrammas, lai tÄs visas darbotos stabili un nekonfliktÄtu ā patiesÄ«bÄ tas ir uzdevums, ko mÄÄ£ina atrisinÄt jebkurÅ” Linux izplatÄ«tÄjs.
PakeÅ”u pÄrvaldnieks mÄÄ£ina atrisinÄt Å”o problÄmu pavisam citÄ veidÄ. Snappy no Canonical. GalvenÄ ideja: lietojumprogramma darbojas smilÅ”u kastÄ, kas izolÄta un aizsargÄta no galvenÄs sistÄmas. Ja lietojumprogrammai ir nepiecieÅ”amas bibliotÄkas, tÄs tiek piegÄdÄtas kopÄ ar paÅ”u lietojumprogrammu.
Flatpak ļauj arÄ« palaist lietojumprogrammas smilÅ”kastÄ, izmantojot Linux konteinerus. Tiek izmantota arÄ« smilÅ”u kastes ideja AppImage.
Å ie risinÄjumi ļauj izveidot vienu pakotni jebkurai izplatÄ«Å”anai. GadÄ«jumÄ, ja Flatpak lietojumprogrammas instalÄÅ”ana un palaiÅ”ana ir iespÄjama pat bez administratora ziÅas.
GalvenÄ problÄma ir tÄ, ka ne visas lietojumprogrammas var darboties smilÅ”u kastÄ. Dažiem cilvÄkiem ir nepiecieÅ”ama tieÅ”a piekļuve platformai. Es pat nerunÄju par kodola moduļiem, kas ir stingri atkarÄ«gi no kodola un neietilpst smilÅ”u kastes koncepcijÄ.
Otra problÄma ir tÄda, ka uzÅÄmuma vidÄ populÄrie izplatÄ«jumi no Red Hat un SUSE vÄl neietver Snappy un Flatpak atbalstu.
Å ajÄ sakarÄ Veeam Agent for Linux nav pieejams
NoslÄdzot jautÄjumu par pakotÅu pÄrvaldniekiem, vÄlos atzÄ«mÄt, ka ir iespÄja pilnÄ«bÄ atteikties no pakotÅu pÄrvaldniekiem, apvienojot binÄros failus un skriptu to instalÄÅ”anai vienÄ pakotnÄ.
Å Äds komplekts ļauj izveidot vienu kopÄ«gu paketi dažÄdiem izplatÄ«jumiem un platformÄm, veikt interaktÄ«vu instalÄÅ”anas procesu, veicot nepiecieÅ”amo pielÄgoÅ”anu. Ar Å”ÄdÄm Linux pakotnÄm esmu sastapies tikai no VMware.
AtjauninÄÅ”anas problÄma
Pat ja visas atkarÄ«bas problÄmas ir atrisinÄtas, programma vienÄ un tajÄ paÅ”Ä izplatÄ«Å”anÄ var darboties atŔķirÄ«gi. Tas ir atjauninÄjumu jautÄjums.
Ir 3 atjauninÄÅ”anas stratÄÄ£ijas:
- VienkÄrÅ”Äkais ir nekad neatjauninÄt. Es uzstÄdÄ«ju serveri un aizmirsu par to. KÄpÄc atjauninÄt, ja viss darbojas? ProblÄmas rodas, pirmo reizi sazinoties ar atbalsta dienestu. IzplatÄ«juma veidotÄjs atbalsta tikai atjauninÄto versiju.
- Varat uzticÄties izplatÄ«tÄjam un iestatÄ«t automÄtiskos atjauninÄjumus. Å ÄdÄ gadÄ«jumÄ atbalsta zvans, visticamÄk, tÅ«lÄ«t pÄc neveiksmÄ«gas atjauninÄÅ”anas.
- ManuÄlas atjauninÄÅ”anas iespÄja tikai pÄc tÄs palaiÅ”anas testa infrastruktÅ«rÄ ir visdroÅ”ÄkÄ, taÄu dÄrga un laikietilpÄ«ga. Ne visi to var atļauties.
TÄ kÄ dažÄdi lietotÄji izmanto dažÄdas atjauninÄÅ”anas stratÄÄ£ijas, ir jÄatbalsta gan jaunÄkÄ versija, gan visas iepriekÅ” izlaistas. Tas sarežģī gan izstrÄdes, gan testÄÅ”anas procesu un sagÄdÄ galvassÄpes atbalsta komandai.
DažÄdas aparatÅ«ras platformas
DažÄdas aparatÅ«ras platformas ir problÄma, kas lielÄ mÄrÄ ir raksturÄ«ga vietÄjam kodam. Vismaz jums ir jÄapkopo binÄrie faili katrai atbalstÄ«tajai platformai.
ProjektÄ Veeam Agent for Linux mÄs joprojÄm nevaram atbalstÄ«t neko lÄ«dzÄ«gu Å”im RISC.
SÄ«kÄk pie Ŕī jautÄjuma nekavÄÅ”os. Es tikai iezÄ«mÄÅ”u galvenÄs problÄmas: no platformas atkarÄ«gie veidi, piemÄram, size_t
, struktÅ«ras izlÄ«dzinÄÅ”ana un baitu secÄ«ba.
StatiskÄ un/vai dinamiskÄ saistÄ«Å”ana
Bet jautÄjums ir "KÄ izveidot saiti ar bibliotÄkÄm - dinamiski vai statiski?" diskusiju vÄrts.
Parasti C/C++ lietojumprogrammas operÄtÄjsistÄmÄ Linux izmanto dinamisko saistÄ«Å”anu. Tas darbojas lieliski, ja lietojumprogramma ir Ä«paÅ”i izstrÄdÄta konkrÄtam izplatÄ«Å”anai.
Ja uzdevums ir aptvert dažÄdus izplatÄ«jumus ar vienu binÄro failu, tad jÄkoncentrÄjas uz vecÄko atbalstÄ«to izplatÄ«Å”anu. Mums tas ir Red Hat 6. TajÄ ir gcc 4.4, ko neatbalsta pat C++11 standarts.
MÄs veidojam savu projektu, izmantojot gcc 6.3, kas pilnÄ«bÄ atbalsta C++14. Protams, Å”ajÄ gadÄ«jumÄ Red Hat 6 jums ir jÄnÄsÄ lÄ«dzi libstdc++ un jÄpalielina bibliotÄkas. VienkÄrÅ”Äkais veids ir izveidot saiti ar tiem statiski.
Bet diemžÄl ne visas bibliotÄkas var saistÄ«t statiski.
PirmkÄrt, sistÄmas bibliotÄkas, piemÄram, libfuse, liblkid ir nepiecieÅ”ams dinamiski saistÄ«t, lai nodroÅ”inÄtu to saderÄ«bu ar kodolu un tÄ moduļiem.
OtrkÄrt, ar licencÄm ir smalkums.
GPL licence pamatÄ Ä¼auj saistÄ«t bibliotÄkas tikai ar atvÄrtÄ pirmkoda kodu. MIT un BSD nodroÅ”ina statisku saiti un ļauj projektÄ iekļaut bibliotÄkas. TaÄu Ŕķiet, ka LGPL nav pretrunÄ ar statisko saistÄ«Å”anu, bet prasa, lai saistÄ«Å”anai nepiecieÅ”amie faili tiktu koplietoti.
Parasti dinamiskÄs saistÄ«Å”anas izmantoÅ”ana neļaus jums neko nodroÅ”inÄt.
C/C++ lietojumprogrammu veidoŔana
Lai izveidotu C/C++ lietojumprogrammas dažÄdÄm platformÄm un izplatÄ«jumiem, pietiek atlasÄ«t vai izveidot piemÄrotu gcc versiju un izmantot savstarpÄjos kompilatorus konkrÄtÄm arhitektÅ«rÄm un apkopot visu bibliotÄku komplektu. Å is darbs ir diezgan iespÄjams, bet diezgan apgrÅ«tinoÅ”s. Un nav garantijas, ka izvÄlÄtais kompilators un bibliotÄkas nodroÅ”inÄs funkcionÄjoÅ”u versiju.
AcÄ«mredzama priekÅ”rocÄ«ba: infrastruktÅ«ra ir ievÄrojami vienkÄrÅ”ota, jo visu veidoÅ”anas procesu var pabeigt vienÄ maŔīnÄ. TurklÄt vienai arhitektÅ«rai pietiek savÄkt vienu binÄro failu kopu, un jÅ«s varat tos iepakot pakotnÄs dažÄdiem izplatÄ«jumiem. Å Ädi tiek veidotas veeam pakotnes Veeam Agent for Linux.
AtŔķirÄ«bÄ no Ŕīs iespÄjas, jÅ«s varat vienkÄrÅ”i sagatavot fermu, tas ir, vairÄkas maŔīnas montÄžai. Katra Å”Äda iekÄrta nodroÅ”inÄs lietojumprogrammu apkopoÅ”anu un pakotÅu montÄžu konkrÄtam izplatÄ«Å”anai un noteiktai arhitektÅ«rai. Å ajÄ gadÄ«jumÄ apkopoÅ”ana tiek veikta, izmantojot izplatÄ«tÄja sagatavotos lÄ«dzekļus. Tas ir, kompilatora sagatavoÅ”anas un bibliotÄku atlases posms ir izslÄgts. TurklÄt veidoÅ”anas procesu var viegli paralÄli.
TomÄr Å”ai pieejai ir arÄ« negatÄ«va puse: katram izplatÄ«jumam vienÄ un tajÄ paÅ”Ä arhitektÅ«rÄ jums bÅ«s jÄsavÄc savs binÄro failu kopums. VÄl viens mÄ«nuss ir tÄds, ka ir jÄuztur tik liels maŔīnu skaits un jÄpieŔķir daudz vietas diskÄ un RAM.
Å Ädi tiek apkopotas veeamsnap kodola moduļa KMOD pakotnes Red Hat izplatÄ«jumiem.
Atveriet Build Service
KolÄÄ£i no SUSE mÄÄ£inÄja ieviest kÄdu vidusceļu Ä«paÅ”a pakalpojuma veidÄ lietojumprogrammu apkopoÅ”anai un pakotÅu komplektÄÅ”anai -
BÅ«tÄ«bÄ tas ir hipervizors, kas izveido virtuÄlo maŔīnu, instalÄ tajÄ visas nepiecieÅ”amÄs pakotnes, apkopo aplikÄciju un izveido pakotni Å”ajÄ izolÄtajÄ vidÄ, pÄc kÄ tiek atbrÄ«vota virtuÄlÄ maŔīna.
PakalpojumÄ OpenBuildService ieviestais plÄnotÄjs noteiks, cik virtuÄlo maŔīnu tas var palaist optimÄlam pakotÅu veidoÅ”anas Ätrumam. IebÅ«vÄtais parakstÄ«Å”anas mehÄnisms parakstÄ«s pakotnes un augÅ”upielÄdÄs tÄs iebÅ«vÄtajÄ repozitorijÄ. IebÅ«vÄtÄ versiju kontroles sistÄma saglabÄs izmaiÅu un bÅ«vÄjumu vÄsturi. Atliek vienkÄrÅ”i pievienot savus avotus Å”ai sistÄmai. Jums pat nav paÅ”am jÄiestata serveris; varat izmantot atvÄrtu.
TomÄr ir problÄma: Å”Ädu harvesteru ir grÅ«ti iekļaut esoÅ”ajÄ infrastruktÅ«rÄ. PiemÄram, versiju kontrole nav nepiecieÅ”ama, mums jau ir savs pirmkods. MÅ«su parakstu mehÄnisms ir atŔķirÄ«gs: mÄs izmantojam Ä«paÅ”u serveri. Repozitorijs arÄ« nav vajadzÄ«gs.
TurklÄt atbalsts citiem izplatÄ«jumiem - piemÄram, Red Hat - tiek Ä«stenots diezgan vÄji, kas ir saprotams.
Å Äda pakalpojuma priekÅ”rocÄ«ba ir Ätrs atbalsts nÄkamajai SUSE izplatÄ«Å”anas versijai. Pirms oficiÄlÄ paziÅojuma par izlaiÅ”anu komplektÄcijai nepiecieÅ”amÄs paketes tiek ievietotas publiskajÄ repozitorijÄ. OpenBuildService pieejamo izplatÄ«jumu sarakstÄ tiek parÄdÄ«ts jauns. MÄs atzÄ«mÄjam izvÄles rÅ«tiÅu, un tas tiek pievienots bÅ«vniecÄ«bas plÄnam. TÄdÄjÄdi jaunas izplatÄ«Å”anas versijas pievienoÅ”ana tiek veikta gandrÄ«z ar vienu klikŔķi.
MÅ«su infrastruktÅ«rÄ, izmantojot OpenBuildService, tiek apkopotas visas veeamsnap kodola moduļa KMP pakotnes SUSE izplatÄ«Å”anai.
TÄlÄk es vÄlÄtos pakavÄties pie jautÄjumiem, kas raksturÄ«gi kodola moduļiem.
kodols ABI
Linux kodola moduļi vÄsturiski ir izplatÄ«ti avota formÄ. Fakts ir tÄds, ka kodola veidotÄji neapgrÅ«tina sevi ar rÅ«pÄm par stabilas API atbalstÄ«Å”anu kodola moduļiem, un jo Ä«paÅ”i binÄrajÄ lÄ«menÄ«, ko turpmÄk dÄvÄ par kABI.
Lai izveidotu moduli vaniļas kodolam, jums noteikti ir nepiecieÅ”amas Ŕī konkrÄtÄ kodola galvenes, un tas darbosies tikai Å”ajÄ kodolÄ.
DKMS ļauj automatizÄt moduļu veidoÅ”anas procesu kodola atjauninÄÅ”anas laikÄ. RezultÄtÄ Debian repozitorija lietotÄji (un daudzi tÄ radinieki) izmanto kodola moduļus vai nu no izplatÄ«tÄja repozitorija, vai kompilÄti no avota, izmantojot DKMS.
TomÄr Ŕī situÄcija nav Ä«paÅ”i piemÄrota uzÅÄmumu segmentam. PatentÄtu kodu izplatÄ«tÄji vÄlas izplatÄ«t produktu kÄ apkopotus binÄros failus.
Administratori droŔības apsvÄrumu dÄļ nevÄlas glabÄt izstrÄdes rÄ«kus ražoÅ”anas serveros. Enterprise Linux izplatÄ«tÄji, piemÄram, Red Hat un SUSE, nolÄma, ka viÅi varÄtu atbalstÄ«t stabilu kABI saviem lietotÄjiem. RezultÄts bija KMOD pakotnes Red Hat un KMP pakotnes SUSE.
Å Ä« risinÄjuma bÅ«tÄ«ba ir pavisam vienkÄrÅ”a. KonkrÄtai izplatÄ«Å”anas versijai kodola API ir iesaldÄta. IzplatÄ«tÄjs norÄda, ka izmanto kodolu, piemÄram, 3.10, un veic tikai tÄdus labojumus un uzlabojumus, kas neietekmÄ kodola saskarnes, un paÅ”am pirmajam kodolam savÄktos moduļus var izmantot visiem nÄkamajiem bez pÄrkompilÄcijas.
Red Hat apgalvo, ka izplatÄ«Å”anai ir saderÄ«ga kABI visÄ tÄ dzÄ«ves ciklÄ. Tas nozÄ«mÄ, ka samontÄtajam rhel 6.0 modulim (izlaidums 2010. gada novembrÄ«) ir jÄdarbojas arÄ« versijÄ 6.10 (izlaidums 2018. gada jÅ«nijÄ). Un tas ir gandrÄ«z 8 gadi. Protams, Å”is uzdevums ir diezgan grÅ«ts.
MÄs esam reÄ£istrÄjuÅ”i vairÄkus gadÄ«jumus, kad veeamsnap modulis pÄrstÄja darboties kABI saderÄ«bas problÄmu dÄļ.
PÄc tam, kad RHEL 7.0 kompilÄtais veeamsnap modulis izrÄdÄ«jÄs nesaderÄ«gs ar RHEL 7.5 kodolu, taÄu tas tika ielÄdÄts un tika garantÄta servera avÄrija, mÄs pilnÄ«bÄ atteicÄmies no kABI saderÄ«bas izmantoÅ”anas RHEL 7.
PaÅ”laik KMOD pakotnÄ RHEL 7 ir komplekts katrai laidiena versijai un skripts, kas ielÄdÄ moduli.
SUSE kABI saderÄ«bas uzdevumam pievÄrsÄs rÅ«pÄ«gÄk. Tie nodroÅ”ina kABI saderÄ«bu tikai vienÄ servisa pakotnÄ.
PiemÄram, SLES 12 izlaiÅ”ana notika 2014. gada septembrÄ«. Un SLES 12 SP1 jau bija 2015. gada decembrÄ«, tas ir, ir pagÄjis nedaudz vairÄk kÄ gads. Lai gan abos laidienos tiek izmantots 3.12 kodols, tie nav saderÄ«gi ar kABI. AcÄ«mredzot kABI saderÄ«bas uzturÄÅ”ana tikai gadu ir daudz vienkÄrÅ”Äka. IkgadÄjais kodola moduļa atjauninÄÅ”anas cikls nedrÄ«kst radÄ«t problÄmas moduļa veidotÄjiem.
Å Ä«s SUSE politikas rezultÄtÄ mÄs savÄ veeamsnap modulÄ« neesam reÄ£istrÄjuÅ”i nevienu kABI saderÄ«bas problÄmu. Tiesa, SUSE pakotÅu skaits ir gandrÄ«z par vienu pakÄpi lielÄks.
Patches un backports
Lai gan izplatÄ«tÄji cenÅ”as nodroÅ”inÄt kABI saderÄ«bu un kodola stabilitÄti, viÅi arÄ« cenÅ”as uzlabot Ŕī stabilÄ kodola veiktspÄju un novÄrst defektus.
TajÄ paÅ”Ä laikÄ uzÅÄmuma Linux kodola izstrÄdÄtÄji papildus savam ādarbam pie kļūdÄmā uzrauga izmaiÅas vaniļas kodolÄ un pÄrsÅ«ta tÄs uz savu āstabiloā.
Dažreiz tas noved pie jauniem
Red Hat 6 jaunÄkajÄ izlaidumÄ tika pieļauta kļūda vienÄ no nelielajiem atjauninÄjumiem. Tas noveda pie tÄ, ka tika garantÄts, ka veeamsnap modulis sabruks sistÄmÄ, kad momentuzÅÄmums tika atbrÄ«vots. SalÄ«dzinot kodola avotus pirms un pÄc atjauninÄÅ”anas, mÄs noskaidrojÄm, ka vainojams backport. LÄ«dzÄ«gs labojums tika veikts vaniļas kodola versijÄ 4.19. VienkÄrÅ”i Å”is labojums vaniļas kodolÄ darbojÄs labi, taÄu, pÄrsÅ«tot to uz āstabiloā 2.6.32, radÄs problÄma ar spinlock.
Protams, visiem vienmÄr ir kļūdas, bet vai bija vÄrts vilkt kodu no 4.19 uz 2.6.32, riskÄjot ar stabilitÄti?.. Neesmu pÄrliecinÄts...
SliktÄkais ir tad, kad mÄrketings iesaistÄs virves vilkÅ”anÄ starp āstabilitÄtiā un āmodernizÄcijuā. MÄrketinga nodaļai ir nepiecieÅ”ams, lai atjauninÄtÄ izplatÄ«Å”anas kodols bÅ«tu stabils, no vienas puses, un tajÄ paÅ”Ä laikÄ bÅ«tu labÄks veiktspÄja un jaunas funkcijas. Tas noved pie dÄ«vainiem kompromisiem.
Kad es mÄÄ£inÄju izveidot moduli uz kodola 4.4 no SLES 12 SP3, es biju pÄrsteigts, atklÄjot tajÄ vanilla 4.8 funkcionalitÄti. ManuprÄt, 4.4 kodola bloka I/O ievieÅ”ana no SLES 12 SP3 ir vairÄk lÄ«dzÄ«ga 4.8 kodolam nekÄ iepriekÅ”Äjai stabilÄ 4.4 kodola versijai no SLES12 SP2. Es nevaru spriest, cik procentu koda tika pÄrsÅ«tÄ«ts no kodola 4.8 uz SLES 4.4 SP3, bet es pat nevaru saukt kodolu par to paÅ”u stabilo 4.4.
Pats nepatÄ«kamÄkais ir tas, ka, rakstot moduli, kas vienlÄ«dz labi darbotos dažÄdos kodolos, vairs nevar paļauties uz kodola versiju. JÄÅem vÄrÄ arÄ« sadalÄ«jums. Ir labi, ka dažreiz jÅ«s varat iesaistÄ«ties definÄ«cijÄ, kas parÄdÄs kopÄ ar jaunu funkcionalitÄti, taÄu Ŕī iespÄja ne vienmÄr parÄdÄs.
RezultÄtÄ kods kļūst aizaugts ar dÄ«vainÄm nosacÄ«jumu kompilÄcijas direktÄ«vÄm.
Ir arÄ« ielÄpi, kas maina dokumentÄto kodola API.
SaskÄros ar izplatÄ«Å”anu
Lai to apkopotu, man makefile bija jÄpievieno skripts, kas pÄrbauda, āāvai funkcijai lookup_bdev ir maskas parametrs.
Kodola moduļu parakstīŔana
Bet atgriezÄ«simies pie pakeÅ”u izplatÄ«Å”anas jautÄjuma.
Viena no stabila kABI priekÅ”rocÄ«bÄm ir tÄ, ka kodola moduļus var parakstÄ«t kÄ binÄru failu. Å ajÄ gadÄ«jumÄ izstrÄdÄtÄjs var bÅ«t pÄrliecinÄts, ka modulis nav nejauÅ”i bojÄts vai tÄ«Å”i pÄrveidots. To var pÄrbaudÄ«t ar komandu modinfo.
Red Hat un SUSE izplatÄ«jumi ļauj pÄrbaudÄ«t moduļa parakstu un ielÄdÄt to tikai tad, ja sistÄmÄ ir reÄ£istrÄts attiecÄ«gais sertifikÄts. SertifikÄts ir publiskÄ atslÄga, ar kuru modulis ir parakstÄ«ts. MÄs to izplatÄm kÄ atseviŔķu iepakojumu.
ProblÄma Å”eit ir tÄda, ka sertifikÄtus var iebÅ«vÄt kodolÄ (izplatÄ«tÄji tos izmanto), vai arÄ« tie jÄieraksta EFI nemainÄ«gajÄ atmiÅÄ, izmantojot utilÄ«tu. mokutil. LietderÄ«ba mokutil InstalÄjot sertifikÄtu, jums ir jÄrestartÄ sistÄma un pat pirms operÄtÄjsistÄmas kodola ielÄdes administratoram tiek piedÄvÄts atļaut jauna sertifikÄta ielÄdi.
TÄdÄjÄdi, lai pievienotu sertifikÄtu, ir nepiecieÅ”ama fiziska administratora piekļuve sistÄmai. Ja iekÄrta atrodas kaut kur mÄkonÄ« vai vienkÄrÅ”i attÄlÄ servera telpÄ un piekļuve notiek tikai caur tÄ«klu (piemÄram, caur ssh), tad sertifikÄtu pievienot nebÅ«s iespÄjams.
EFI virtuÄlajÄs maŔīnÄs
Neskatoties uz to, ka EFI jau sen atbalsta gandrÄ«z visi mÄtesplates ražotÄji, uzstÄdot sistÄmu, administrators var nedomÄt par EFI nepiecieÅ”amÄ«bu, un tas var tikt atspÄjots.
Ne visi hipervizori atbalsta EFI. VMWare vSphere atbalsta EFI, sÄkot no 5. versijas.
Microsoft Hyper-V arÄ« ieguva EFI atbalstu, sÄkot ar Hyper-V operÄtÄjsistÄmai Windows Server 2012R2.
TomÄr noklusÄjuma konfigurÄcijÄ Å”Ä« funkcionalitÄte ir atspÄjota Linux iekÄrtÄm, kas nozÄ«mÄ, ka sertifikÄtu nevar instalÄt.
ProgrammÄ vSphere 6.5 iestatiet opciju Secure Boot iespÄjams tikai vecajÄ tÄ«mekļa saskarnes versijÄ, kas darbojas, izmantojot Flash. TÄ«mekļa lietotÄja interfeiss HTML-5 joprojÄm ir tÄlu atpalicis.
EksperimentÄlie sadalÄ«jumi
Un visbeidzot, apskatÄ«sim jautÄjumu par eksperimentÄlu izplatÄ«Å”anu un izplatÄ«Å”anu bez oficiÄla atbalsta. No vienas puses, Å”Ädu izplatÄ«Å”anu diez vai var atrast nopietnu organizÄciju serveros. Å Äda veida izplatÄ«Å”anai nav oficiÄla atbalsta. TÄpÄc nodroÅ”iniet tos. Produktu nevar atbalstÄ«t Å”ÄdÄ izplatÄ«Å”anÄ.
TomÄr Å”Ädas izplatÄ«Å”anas kļūst par Ärtu platformu jaunu eksperimentÄlu risinÄjumu izmÄÄ£inÄÅ”anai. PiemÄram, Fedora, OpenSUSE Tumbleweed vai Debian nestabilÄs versijas. Tie ir diezgan stabili. ViÅiem vienmÄr ir jaunas programmu versijas un vienmÄr jauns kodols. Gada laikÄ Å”Ä« eksperimentÄlÄ funkcionalitÄte var nonÄkt atjauninÄtÄ RHEL, SLES vai Ubuntu.
TÄtad, ja eksperimentÄlÄ sadalÄ«jumÄ kaut kas nedarbojas, tas ir iemesls, lai noskaidrotu problÄmu un to atrisinÄtu. Jums jÄbÅ«t gatavam tam, ka Ŕī funkcionalitÄte drÄ«zumÄ parÄdÄ«sies lietotÄju ražoÅ”anas serveros.
Varat izpÄtÄ«t paÅ”reizÄjo oficiÄli atbalstÄ«to izplatÄ«jumu sarakstu versijai 3.0
PersonÄ«gi mani interesÄja eksperiments ar Elbrus OS. PÄc veeam pakotnes pabeigÅ”anas mÅ«su produkts tika uzstÄdÄ«ts un darbojÄs. Es rakstÄ«ju par Å”o eksperimentu par HabrÄ
Nu, atbalsts jauniem izplatÄ«jumiem turpinÄs. MÄs gaidÄm versijas 4.0 izlaiÅ”anu. DrÄ«zumÄ parÄdÄ«sies beta versija, tÄpÄc sekojiet lÄ«dzi
Avots: www.habr.com