Linux għandu ħafna uċuħ: kif taħdem fuq kwalunkwe distribuzzjoni

Linux għandu ħafna uċuħ: kif taħdem fuq kwalunkwe distribuzzjoni

Il-ħolqien ta 'applikazzjoni ta' backup li taħdem fuq kwalunkwe distribuzzjoni mhix biċċa xogħol faċli. Biex tiżgura li Veeam Agent għal Linux jaħdem fuq distribuzzjonijiet minn Red Hat 6 u Debian 6, għal OpenSUSE 15.1 u Ubuntu 19.04, trid issolvi firxa ta 'problemi, speċjalment meta wieħed iqis li l-prodott tas-softwer jinkludi modulu tal-kernel.

L-artiklu nħoloq ibbażat fuq materjali minn diskors fil-konferenza Linux Peter 2019.

Linux mhix biss waħda mis-sistemi operattivi l-aktar popolari. Essenzjalment, din hija pjattaforma li fuq il-bażi tagħha tista 'tagħmel xi ħaġa unika, xi ħaġa tiegħek. Grazzi għal dan, Linux għandu ħafna distribuzzjonijiet li jvarjaw fis-sett tagħhom ta 'komponenti tas-softwer. U hawn tqum problema: sabiex prodott tas-softwer jiffunzjona fuq kwalunkwe distribuzzjoni, trid tqis il-karatteristiċi ta 'kull wieħed.

Maniġers tal-pakketti. .deb vs .rpm

Ejja nibdew bil-problema ovvja tad-distribuzzjoni tal-prodott fuq distribuzzjonijiet differenti.
L-aktar mod tipiku biex jitqassmu prodotti tas-softwer huwa li tpoġġi l-pakkett fuq repożitorju sabiex il-maniġer tal-pakketti mibni fis-sistema jkun jista 'jinstallah minn hemm.
Madankollu, għandna żewġ formati ta 'pakketti popolari: rpm и deb. Dan ifisser li kulħadd ikollu jappoġġja.

Fid-dinja tal-pakketti deb, il-livell ta 'kompatibilità huwa aqwa. L-istess pakkett jinstalla u jaħdem tajjeb ugwalment kemm fuq Debian 6 kif ukoll fuq Ubuntu 19.04. L-istandards għall-proċess tal-bini ta 'pakketti u l-ħidma magħhom, stabbiliti fid-distribuzzjonijiet Debian qodma, jibqgħu rilevanti fil-Linux Mint ġodda u OS elementari. Għalhekk, fil-każ ta' Veeam Agent għal Linux, pakkett deb wieħed għal kull pjattaforma tal-ħardwer huwa biżżejjed.

Iżda fid-dinja tal-pakketti rpm, id-differenzi huma kbar. L-ewwelnett, minħabba l-fatt li hemm żewġ distributuri kompletament indipendenti, Red Hat u SUSE, li għalihom il-kompatibilità hija kompletament bla bżonn. It-tieni, dawn id-distributuri għandhom kits ta 'distribuzzjoni minn dawk. appoġġ u sperimentali. M'hemmx bżonn ta' kompatibilità bejniethom lanqas. Irriżulta li el6, el7 u el8 għandhom il-pakketti tagħhom. Pakkett separat għal Fedora. Pakketti għal SLES11 u 12 u wieħed separat għal openSUSE. Il-problema ewlenija hija d-dipendenzi u l-ismijiet tal-pakketti.

Problema ta' dipendenza

Sfortunatament, l-istess pakketti spiss jispiċċaw taħt ismijiet differenti f'distribuzzjonijiet differenti. Hawn taħt hawn lista parzjali tad-dipendenzi tal-pakkett veeam.

Għal EL7:
Għal SLES 12:

  • libblkid
  • libgcc
  • libstdc++
  • ncurses-libs
  • fuse-libs
  • file-libs
  • veeamsnap=3.0.2.1185
  • libblkid1
  • libgcc_s1
  • libstdc++6
  • libmagic1
  • libfuse2
  • veeamsnap-kmp=3.0.2.1185

Bħala riżultat, il-lista tad-dipendenzi hija unika għad-distribuzzjoni.

Dak li jiggrava huwa meta verżjoni aġġornata tibda taħbi taħt l-isem il-qadim tal-pakkett.

Eżempju:

Il-pakkett ġie aġġornat f'Fedora 24 nursijiet mill-verżjoni 5 għall-verżjoni 6. Il-prodott tagħna nbena bil-verżjoni 5 biex tiġi żgurata l-kompatibilità ma 'distribuzzjonijiet anzjani. Biex nuża l-5 verżjoni l-antika tal-librerija fuq Fedora 24, kelli nuża l-pakkett ncurses-compat-libs.

Bħala riżultat, hemm żewġ pakketti għal Fedora, b'dipendenzi differenti.

Aktar aktar interessanti. Wara l-aġġornament tad-distribuzzjoni li jmiss, il-pakkett ncurses-compat-libs bil-verżjoni 5 tal-librerija jirriżulta li mhux disponibbli. Huwa għali għal distributur li jkaxkru libreriji qodma f'verżjoni ġdida tad-distribuzzjoni. Wara xi żmien, il-problema rrepetiet ruħha fid-distribuzzjonijiet SUSE.

Bħala riżultat, xi distribuzzjonijiet kellhom inaqqsu d-dipendenza espliċita tagħhom fuq ncurses-libs, u waħħal il-prodott sabiex ikun jista 'jaħdem ma' kwalunkwe verżjoni tal-librerija.

Mill-mod, fil-verżjoni 8 ta 'Red Hat m'għadx hemm pakkett meta python, li jirreferi għall-qadim tajjeb Python 2.7. Hemm python2 и python3.

Alternattiva għall-maniġers tal-pakketti

Il-problema tad-dipendenzi hija antika u ilha ovvja. Ftakar biss l-infern tad-Dipendenza.
Biex tgħaqqad diversi libreriji u applikazzjonijiet sabiex kollha jaħdmu b'mod stabbli u ma jidħlux f'kunflitt - fil-fatt, dan huwa l-kompitu li kull distributur Linux jipprova jsolvi.

Il-maniġer tal-pakketti jipprova jsolvi din il-problema b'mod kompletament differenti. Snappy minn Canonical. L-idea ewlenija: l-applikazzjoni taħdem f'kaxxa tar-ramel iżolata u protetta mis-sistema prinċipali. Jekk applikazzjoni teħtieġ libreriji, dawn jiġu fornuti bl-applikazzjoni nnifisha.

Flatpak jippermettilek ukoll li tmexxi applikazzjonijiet f'sandbox billi tuża Kontenituri Linux. L-idea sandbox tintuża wkoll AppImage.

Dawn is-soluzzjonijiet jippermettulek toħloq pakkett wieħed għal kwalunkwe distribuzzjoni. F'każ li Flatpak l-installazzjoni u t-tnedija tal-applikazzjoni huma possibbli anki mingħajr l-għarfien tal-amministratur.

Il-problema ewlenija hija li mhux l-applikazzjonijiet kollha jistgħu jaħdmu f'sandbox. Xi nies jeħtieġu aċċess dirett għall-pjattaforma. Jien lanqas biss qed nitkellem dwar moduli tal-qalba, li huma strettament dipendenti fuq il-qalba u ma jidħlux fil-kunċett ta 'sandbox.

It-tieni problema hija li d-distribuzzjonijiet popolari fl-ambjent tal-intrapriża minn Red Hat u SUSE għadhom ma fihomx appoġġ għal Snappy u Flatpak.

F'dan ir-rigward, Veeam Agent għal Linux mhux disponibbli snapcraft.io mhux fuq flathub.org.

Biex nikkonkludi l-mistoqsija dwar il-maniġers tal-pakketti, nixtieq ninnota li hemm għażla li tabbanduna għal kollox il-maniġers tal-pakketti billi tgħaqqad fajls binarji u skript għall-installazzjoni tagħhom f'pakkett wieħed.

Tali pakkett jippermettilek li toħloq pakkett komuni wieħed għal distribuzzjonijiet u pjattaformi differenti, twettaq proċess ta 'installazzjoni interattiv, billi twettaq l-adattament meħtieġ. Stajt biss iltqajt ma 'pakketti bħal dawn għal Linux minn VMware.

Aġġorna l-problema

Linux għandu ħafna uċuħ: kif taħdem fuq kwalunkwe distribuzzjoni
Anke jekk il-kwistjonijiet ta 'dipendenza kollha jiġu solvuti, il-programm jista' jaħdem b'mod differenti fuq l-istess distribuzzjoni. Hija kwistjoni ta 'aġġornamenti.

Hemm 3 strateġiji ta' aġġornament:

  • L-aktar waħda sempliċi hija li qatt ma taġġorna. I waqqaf is-server u nesa dwaru. Għaliex taġġorna jekk kollox jaħdem? Il-problemi jibdew l-ewwel darba li tikkuntattja l-appoġġ. Il-kreatur tad-distribuzzjoni jappoġġja biss ir-rilaxx aġġornat.
  • Tista' tafda lid-distributur u twaqqaf aġġornamenti awtomatiċi. F'dan il-każ, sejħa għall-appoġġ x'aktarx immedjatament wara aġġornament bla suċċess.
  • L-għażla ta 'aġġornament manwali biss wara li titħaddem fuq infrastruttura tat-test hija l-aktar affidabbli, iżda għalja u tieħu ħafna ħin. Mhux kulħadd jista’ jaffordjaha.

Peress li utenti differenti jużaw strateġiji ta 'aġġornament differenti, huwa meħtieġ li jiġu appoġġjati kemm l-aħħar rilaxx kif ukoll dawk kollha rilaxxati qabel. Dan jikkomplika kemm il-proċess ta 'żvilupp kif ukoll l-ittestjar u jżid uġigħ ta' ras lit-tim ta 'appoġġ.

Varjetà ta 'pjattaformi tal-ħardwer

Pjattaformi ta 'hardware differenti huma problema li hija fil-biċċa l-kbira speċifika għall-kodiċi nattiv. Bħala minimu, għandek tiġbor binarji għal kull pjattaforma appoġġjata.

Fil-proġett Veeam Agent għall-Linux, għadna ma nistgħux nappoġġjaw xi ħaġa bħal din RISC.

Mhux se nitkellem fuq din il-kwistjoni fid-dettall. Se niddeskrivi biss il-problemi ewlenin: tipi dipendenti fuq il-pjattaforma, bħal size_t, l-allinjament tal-istruttura u l-ordni tal-byte.

Konnessjoni statika u/jew dinamika

Linux għandu ħafna uċuħ: kif taħdem fuq kwalunkwe distribuzzjoni
Iżda l-mistoqsija hija "Kif torbot mal-libreriji - b'mod dinamiku jew statiku?" ta’ min jiddiskuti.

Bħala regola, l-applikazzjonijiet C/C++ taħt Linux jużaw rabta dinamika. Dan jaħdem tajjeb jekk l-applikazzjoni hija mibnija speċifikament għal distribuzzjoni speċifika.

Jekk il-kompitu huwa li tkopri diversi distribuzzjonijiet b'fajl binarju wieħed, allura trid tiffoka fuq l-eqdem distribuzzjoni appoġġjata. Għalina, dan huwa Red Hat 6. Fih gcc 4.4, li anke l-istandard C++ 11 ma jappoġġjax kompletament.

Nibnu l-proġett tagħna billi tuża gcc 6.3, li jappoġġja bis-sħiħ C++14. Naturalment, f'dan il-każ, fuq Red Hat 6 trid iġorr il-libstdc++ u ssaħħaħ il-libreriji miegħek. L-eħfef mod huwa li tgħaqqadhom b'mod statiku.

Imma sfortunatament, mhux il-libreriji kollha jistgħu jiġu konnessi b'mod statiku.

L-ewwelnett, libreriji tas-sistema bħal libfuse, libblkid huwa meħtieġ li torbot b'mod dinamiku biex tiġi żgurata l-kompatibilità tagħhom mal-qalba u l-moduli tagħha.

It-tieni nett, hemm sottili mal-liċenzji.

Il-liċenzja GPL bażikament tippermettilek torbot libreriji biss b'kodiċi opensource. MIT u BSD jippermettu linking statiku u jippermettu li libreriji jiġu inklużi fi proġett. Iżda l-LGPL ma jidhirx li jikkontradixxi l-irbit statiku, iżda jeħtieġ li l-fajls meħtieġa għall-konnessjoni jkunu kondiviżi.

B'mod ġenerali, l-użu ta 'linking dinamiku ma jħallikx ikollok tipprovdi xi ħaġa.

Bini ta' applikazzjonijiet C/C++

Biex tibni applikazzjonijiet C/C++ għal pjattaformi u distribuzzjonijiet differenti, huwa biżżejjed li tagħżel jew tibni verżjoni xierqa ta 'gcc u tuża cross-comilers għal arkitetturi speċifiċi u tiġbor is-sett kollu ta' libreriji. Dan ix-xogħol huwa pjuttost fattibbli, iżda pjuttost idejqek. U m'hemm l-ebda garanzija li l-kompilatur u l-libreriji magħżula se jipprovdu verżjoni li tista' taħdem.

Vantaġġ ovvju: l-infrastruttura hija ssimplifikata ħafna, peress li l-proċess kollu tal-bini jista 'jitlesta fuq magna waħda. Barra minn hekk, huwa biżżejjed li tiġbor sett wieħed ta 'binarji għal arkitettura waħda u tista' tippakkjahom f'pakketti għal distribuzzjonijiet differenti. Dan huwa kif il-pakketti veeam huma mibnija għal Veeam Agent għal Linux.

Għall-kuntrarju ta 'din l-għażla, tista' sempliċement tipprepara razzett tal-bini, jiġifieri diversi magni għall-assemblaġġ. Kull magna bħal din se tipprovdi kumpilazzjoni ta 'applikazzjoni u assemblaġġ ta' pakkett għal distribuzzjoni speċifika u arkitettura speċifika. F'dan il-każ, il-kumpilazzjoni titwettaq bl-użu tal-mezzi ppreparati mid-distributur. Jiġifieri, l-istadju tal-preparazzjoni tal-kompilatur u l-għażla tal-libreriji huwa eliminat. Barra minn hekk, il-proċess tal-bini jista 'jiġi parallelizzat faċilment.

Hemm, madankollu, żvantaġġ għal dan l-approċċ: għal kull distribuzzjoni fl-istess arkitettura, ser ikollok tiġbor is-sett tiegħek ta 'fajls binarji. Żvantaġġ ieħor huwa li numru daqshekk kbir ta 'magni jeħtieġ li jinżammu u ammont kbir ta' spazju fuq disk u RAM għandhom jiġu allokati.

Dan huwa kif il-pakketti KMOD tal-modulu tal-kernel veeamsnap huma kkompilati għal distribuzzjonijiet Red Hat.

Servizz tal-Bini Miftuħ

Kollegi minn SUSE ppruvaw jimplimentaw xi triq tan-nofs fil-forma ta 'servizz speċjali għall-kumpilazzjoni ta' applikazzjonijiet u assemblaġġ ta 'pakketti - openbuildservice.

Essenzjalment, huwa hypervisor li joħloq magna virtwali, jinstalla l-pakketti kollha meħtieġa fiha, jikkompila l-applikazzjoni u jibni l-pakkett f'dan l-ambjent iżolat, u wara tiġi rilaxxata l-magna virtwali.

Linux għandu ħafna uċuħ: kif taħdem fuq kwalunkwe distribuzzjoni

L-iskedar implimentat f'OpenBuildService jiddetermina kemm jista' jniedi magni virtwali għall-aħjar veloċità tal-bini tal-pakketti. Il-mekkaniżmu tal-iffirmar inkorporat jiffirma l-pakketti u jtellahom fir-repożitorju integrat. Is-sistema ta 'kontroll tal-verżjoni integrata se tiffranka l-istorja tal-bidliet u l-bini. Li jibqa 'huwa li sempliċement iżżid is-sorsi tiegħek ma' din is-sistema. Lanqas m'għandekx għalfejn twaqqaf is-server lilek innifsek; tista 'tuża wieħed miftuħ.

Hemm, madankollu, problema: tali ħsad huwa diffiċli biex jidħol fl-infrastruttura eżistenti. Pereżempju, il-kontroll tal-verżjoni mhuwiex meħtieġ; diġà għandna tagħna stess għall-kodiċi tas-sors. Il-mekkaniżmu tal-firma tagħna huwa differenti: nużaw server speċjali. Repożitorju wkoll mhux meħtieġ.

Barra minn hekk, appoġġ għal distribuzzjonijiet oħra - pereżempju, Red Hat - huwa implimentat pjuttost ħażin, li jinftiehem.

Il-vantaġġ ta 'tali servizz huwa appoġġ mgħaġġel għall-verżjoni li jmiss tad-distribuzzjoni SUSE. Qabel it-tħabbira uffiċjali tar-rilaxx, il-pakketti meħtieġa għall-assemblaġġ jitpoġġew fuq repożitorju pubbliku. Waħda ġdida tidher fil-lista ta 'distribuzzjonijiet disponibbli fuq OpenBuildService. Aħna niċċekkjaw il-kaxxa u hija miżjuda mal-pjan tal-bini. Għalhekk, iż-żieda ta 'verżjoni ġdida tad-distribuzzjoni ssir fi kważi klikk waħda.

Fl-infrastruttura tagħna, bl-użu ta 'OpenBuildService, il-varjetà sħiħa ta' pakketti KMP tal-modulu tal-kernel veeamsnap għal distribuzzjonijiet SUSE hija mmuntata.

Sussegwentement, nixtieq nitkellem fuq kwistjonijiet speċifiċi għall-moduli tal-kernel.

għadma ABI

Il-moduli tal-kernel tal-Linux storikament ġew distribwiti fil-forma tas-sors. Il-fatt hu li l-ħallieqa tal-qalba ma jgħabbix lilhom infushom bit-tħassib li jappoġġaw API stabbli għall-moduli tal-qalba, u speċjalment fil-livell binarju, imsejjaħ aktar bħala kABI.

Biex tibni modulu għal qalba tal-vanilla, definittivament għandek bżonn l-intestaturi ta 'dan il-qalba partikolari, u se taħdem biss fuq dan il-qalba.

DKMS jippermettilek awtomat il-proċess tal-bini ta 'moduli meta taġġorna l-kernel. Bħala riżultat, l-utenti tar-repożitorju Debian (u l-ħafna qraba tiegħu) jużaw moduli tal-kernel jew mir-repożitorju tad-distributur jew ikkompilati mis-sors bl-użu tad-DKMS.

Madankollu, din is-sitwazzjoni ma taqbilx b'mod partikolari għas-segment tal-Intrapriża. Id-distributuri tal-kodiċi proprjetarji jridu jqassmu l-prodott bħala binarji kkompilati.

L-amministraturi ma jridux iżommu għodod ta 'żvilupp fuq servers ta' produzzjoni għal raġunijiet ta 'sigurtà. Distributuri Enterprise Linux bħal Red Hat u SUSE iddeċidew li jistgħu jappoġġjaw kABI stabbli għall-utenti tagħhom. Ir-riżultat kien pakketti KMOD għal Red Hat u pakketti KMP għal SUSE.

L-essenza ta 'din is-soluzzjoni hija pjuttost sempliċi. Għal verżjoni speċifika tad-distribuzzjoni, l-API tal-qalba hija ffriżata. Id-distributur jiddikjara li juża l-kernel, pereżempju, 3.10, u jagħmel biss korrezzjonijiet u titjib li ma jaffettwawx l-interfaces tal-kernel, u l-moduli miġbura għall-ewwel għadma jistgħu jintużaw għal dawk kollha sussegwenti mingħajr rikompilazzjoni.

Red Hat titlob il-kompatibbiltà tal-kABI għad-distribuzzjoni tul iċ-ċiklu kollu tal-ħajja tagħha. Jiġifieri, il-modulu immuntat għal rhel 6.0 (rilaxx ta 'Novembru 2010) għandu jaħdem ukoll fuq il-verżjoni 6.10 (rilaxx ta' Ġunju 2018). U dan huwa kważi 8 snin. Naturalment, dan il-kompitu huwa pjuttost diffiċli.
Irreġistrajna diversi każijiet fejn il-modulu veeamsnap waqaf jaħdem minħabba kwistjonijiet ta' kompatibilità kABI.

Wara li l-modulu veeamsnap, ikkompilat għal RHEL 7.0, irriżulta li kien inkompatibbli mal-qalba minn RHEL 7.5, iżda tgħabba u kien garantit li jikkraxxja s-server, abbandunajna l-użu tal-kompatibilità kABI għal RHEL 7 għal kollox.

Bħalissa, il-pakkett KMOD għal RHEL 7 fih assemblaġġ għal kull verżjoni ta 'rilaxx u skript li jgħabbi l-modulu.

SUSE avviċinat il-kompitu tal-kompatibilità kABI b'aktar attenzjoni. Huma jipprovdu kompatibilità kABI biss fi ħdan pakkett wieħed tas-servizz.

Pereżempju, ir-rilaxx ta 'SLES 12 seħħ f'Settembru 2014. U SLES 12 SP1 kien diġà f'Diċembru 2015, jiġifieri, għaddiet ftit aktar minn sena. Anke jekk iż-żewġ rilaxxi jużaw il-kernel 3.12, huma kABI inkompatibbli. Ovvjament, iż-żamma tal-kompatibilità tal-kABI għal sena biss hija ħafna aktar faċli. Iċ-ċiklu annwali tal-aġġornament tal-modulu tal-kernel m'għandux jikkawża problemi għal dawk li joħolqu l-moduli.

Bħala riżultat ta 'din il-politika SUSE, aħna ma rreġistrajna l-ebda problema waħda bil-kompatibilità kABI fil-modulu veeamsnap tagħna. Veru, in-numru ta 'pakketti għal SUSE huwa kważi ordni ta' kobor akbar.

Garża u backports

Għalkemm id-distributuri jippruvaw jiżguraw il-kompatibilità tal-kABI u l-istabbiltà tal-qalba, huma wkoll jippruvaw itejbu l-prestazzjoni u jeliminaw id-difetti ta 'din il-qalba stabbli.

Fl-istess ħin, minbarra "xogħol fuq żbalji" tagħhom stess, l-iżviluppaturi ta 'l-intrapriża Linux kernel jimmonitorjaw bidliet fil-qalba tal-vanilla u jittrasferixxuhom għal waħda "stabbli" tagħhom.

Xi drabi dan iwassal għal oħrajn ġodda żbalji.

Fl-aħħar ħarġa ta’ Red Hat 6, sar żball f’wieħed mill-aġġornamenti minuri. Dan wassal għall-fatt li l-modulu veeamsnap kien garantit li jikkraxxja s-sistema meta nħarġet l-istampa. Wara li qabblu s-sorsi tal-kernel qabel u wara l-aġġornament, sirna nafu li t-tort kien il-backport. Saret soluzzjoni simili fil-verżjoni tal-qalba tal-vanilla 4.19. Huwa biss li din it-tiswija ħadmet tajjeb fil-qalba tal-vanilla, iżda meta ttrasferixxiha għall-"stabbli" 2.6.32, qamet problema bl-ispinlock.

Ovvjament, kulħadd dejjem ikollu żbalji, imma kien ta' min ikaxkar il-kodiċi minn 4.19 għal 2.6.32, jirriskja l-istabbiltà?.. M'inix ċert...

L-agħar ħaġa hija meta l-marketing jiġi involut fit-tig-of-war bejn "stabbiltà" u "modernizzazzjoni." Id-dipartiment tal-kummerċjalizzazzjoni jeħtieġ li l-qalba tad-distribuzzjoni aġġornata tkun stabbli, minn naħa waħda, u fl-istess ħin tkun aħjar fil-prestazzjoni u jkollha karatteristiċi ġodda. Dan iwassal għal kompromessi strambi.

Meta ppruvajt nibni modulu fuq il-kernel 4.4 minn SLES 12 SP3, kont sorpriż li sibt funzjonalità minn vanilla 4.8 fiha. Fl-opinjoni tiegħi, l-implimentazzjoni tal-blokk I/O tal-qalba 4.4 minn SLES 12 SP3 hija aktar simili għall-qalba 4.8 mir-rilaxx preċedenti tal-qalba 4.4 stabbli minn SLES12 SP2. Ma nistax niġġudika liema perċentwal ta 'kodiċi ġie trasferit mill-kernel 4.8 għal SLES 4.4 għal SP3, iżda lanqas nista' nsejjaħ il-kernel l-istess 4.4 stabbli.

L-iktar ħaġa spjaċevoli dwar dan hija li meta tikteb modulu li jaħdem tajjeb bl-istess mod fuq qlub differenti, ma tistax toqgħod aktar fuq il-verżjoni tal-qalba. Trid tqis ukoll id-distribuzzjoni. Tajjeb li kultant tista’ tinvolvi ruħek f’definizzjoni li tidher flimkien ma’ funzjonalità ġdida, iżda din l-opportunità mhux dejjem tidher.

B'riżultat ta 'dan, il-kodiċi jitkabbar b'direttivi strambi ta' kumpilazzjoni kondizzjonali.

Hemm ukoll garżi li jibdlu l-API tal-qalba dokumentata.
Iltqajt mad-distribuzzjoni KDE neon 5.16 u kien sorpriż ħafna meta jara li s-sejħa lookup_bdev f'din il-verżjoni tal-kernel biddlet il-lista tal-parametri tad-dħul.

Biex ġġibu flimkien, kelli nżid skript mal-makefile li jiċċekkja jekk il-funzjoni lookup_bdev għandhiex parametru tal-maskra.

Iffirmar ta' moduli tal-qalba

Imma ejja nerġgħu lura għall-kwistjoni tad-distribuzzjoni tal-pakketti.

Wieħed mill-vantaġġi ta 'kABI stabbli huwa li l-moduli tal-qalba jistgħu jiġu ffirmati bħala fajl binarju. F'dan il-każ, l-iżviluppatur jista 'jkun żgur li l-modulu ma jkunx ġie aċċidentalment bil-ħsara jew modifikat intenzjonalment. Tista 'tiċċekkja dan bil-kmand modinfo.

Distribuzzjonijiet Red Hat u SUSE jippermettulek tiċċekkja l-firma tal-modulu u tgħabbiha biss jekk iċ-ċertifikat korrispondenti jkun irreġistrat fis-sistema. Iċ-ċertifikat huwa ċ-ċavetta pubblika li biha jiġi ffirmat il-modulu. Aħna nqassmuh bħala pakkett separat.

Il-problema hawnhekk hija li ċ-ċertifikati jistgħu jew jinbnew fil-qalba (id-distributuri jużawhom) jew iridu jinkitbu fil-memorja mhux volatili EFI billi tuża utilità. mokutil. Utilità mokutil Meta tinstalla ċertifikat, teħtieġ li terġa 'tibda s-sistema u, anki qabel ma tgħabbi l-qalba tas-sistema operattiva, iħeġġeġ lill-amministratur biex jippermetti t-tagħbija ta' ċertifikat ġdid.

Għalhekk, iż-żieda ta 'ċertifikat teħtieġ aċċess ta' amministratur fiżiku għas-sistema. Jekk il-magna tinsab x'imkien fis-sħab jew sempliċiment f'kamra tas-server remota u l-aċċess huwa biss permezz tan-netwerk (per eżempju, permezz ta 'ssh), allura jkun impossibbli li żżid ċertifikat.

EFI fuq magni virtwali

Minkejja l-fatt li l-EFI ilha appoġġjata minn kważi l-manifatturi tal-motherboards kollha, meta tinstalla sistema, l-amministratur jista 'ma jaħsibx dwar il-ħtieġa għal EFI, u jista' jkun diżattivat.

Mhux l-hypervisors kollha jappoġġjaw l-EFI. VMWare vSphere jappoġġja EFI li jibda mill-verżjoni 5.
Microsoft Hyper-V kiseb ukoll appoġġ EFI li beda b'Hyper-V għal Windows Server 2012R2.

Madankollu, fil-konfigurazzjoni default din il-funzjonalità hija diżattivata għall-magni Linux, li jfisser li ċ-ċertifikat ma jistax jiġi installat.

Fi vSphere 6.5, issettja l-għażla Ibbutja Sikura possibbli biss fil-verżjoni l-antika tal-interface tal-web, li timxi permezz tal-Flash. Web UI fuq HTML-5 għadha lura ħafna.

Distribuzzjonijiet sperimentali

U fl-aħħarnett, ejja nikkunsidraw il-kwistjoni ta 'distribuzzjonijiet u distribuzzjonijiet sperimentali mingħajr appoġġ uffiċjali. Min-naħa waħda, distribuzzjonijiet bħal dawn x'aktarx ma jinstabux fuq is-servers ta 'organizzazzjonijiet serji. M'hemm l-ebda appoġġ uffiċjali għal distribuzzjonijiet bħal dawn. Għalhekk, ipprovdi dawk. Il-prodott ma jistax jiġi appoġġjat fuq distribuzzjoni bħal din.

Madankollu, distribuzzjonijiet bħal dawn isiru pjattaforma konvenjenti biex jiġu ppruvati soluzzjonijiet sperimentali ġodda. Pereżempju, verżjonijiet Fedora, OpenSUSE Tumbleweed jew Unstable ta' Debian. Huma pjuttost stabbli. Dejjem għandhom verżjonijiet ġodda tal-programmi u dejjem għadma ġdida. F'sena, din il-funzjonalità sperimentali tista' tispiċċa f'RHEL, SLES jew Ubuntu aġġornati.

Mela jekk xi ħaġa ma taħdimx fuq distribuzzjoni sperimentali, din hija raġuni biex insemmu l-problema u ssolviha. Trid tkun ippreparat għall-fatt li din il-funzjonalità dalwaqt tidher fuq is-servers tal-produzzjoni tal-utenti.

Tista' tistudja l-lista attwali ta' distribuzzjonijiet appoġġjati uffiċjalment għall-verżjoni 3.0 hawn. Iżda l-lista reali ta 'distribuzzjonijiet li fuqhom il-prodott tagħna jista' jaħdem hija ħafna usa '.

Personalment, kont interessat fl-esperiment bl-Elbrus OS. Wara li ffinalizzaw il-pakkett veeam, il-prodott tagħna kien installat u jaħdem. Ktibt dwar dan l-esperiment fuq Habré fi artikolu.

Ukoll, l-appoġġ għal distribuzzjonijiet ġodda jkompli. Qed nistennew li tiġi rilaxxata l-verżjoni 4.0. Beta waslet biex tidher, għalhekk oqgħod attent X'hemm ġdid!

Sors: www.habr.com

Żid kumment