{"id":38929,"date":"2019-10-31T22:26:48","date_gmt":"2019-10-31T19:26:48","guid":{"rendered":"https:\/\/prohoster.info\/blog\/linux-mnogolikij-kak-rabotat-na-lyubom-distributive\/"},"modified":"2019-10-31T22:26:48","modified_gmt":"2019-10-31T19:26:48","slug":"linux-mnogolikij-kak-rabotat-na-lyubom-distributive","status":"publish","type":"post","link":"https:\/\/prohoster.info\/hr\/blog\/administrirovanie\/linux-mnogolikij-kak-rabotat-na-lyubom-distributive","title":{"rendered":"Linux raznolik: kako raditi na bilo kojoj distribuciji","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Linux raznolik: kako raditi na bilo kojoj distribuciji\" src=\"\/wp-content\/uploads\/2019\/10\/ee1aaad566204532c974a3ce8f13b915.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIzrada aplikacije za sigurnosnu kopiju koja radi na bilo kojoj distribuciji je slo\u017een zadatak. Da bi Veeam Agent for Linux radio na distribucijama od Red Hat 6 do Debian 6, pa sve do OpenSUSE 15.1 i Ubuntu 19.04, potrebno je rije\u0161iti niz problema, osobito uzimaju\u0107i u obzir da softverski proizvod uklju\u010duje modul jezgre.<\/p>\n<p>\u010clanak je napravljen na temelju materijala sa konferencije <noindex><a rel=\"nofollow\" href=\"https:\/\/linuxpiter.com\/materials\/2636\"> LinuxPiter 2019<\/a><\/noindex>.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nLinux nije samo jedan od najpopularnijih operativnih sustava. U su\u0161tini, to je platforma na kojoj se mo\u017ee izraditi ne\u0161to jedinstveno, ne\u0161to svoje. Zbog toga postoji mnogo distribucija Linuxa, koje se razlikuju po skupu softverskih komponenti. I tu se javlja problem: kako bi softverski proizvod funkcionirao na bilo kojoj distribuciji, potrebno je uzeti u obzir osobitosti svake.<\/p>\n<h2>Upravitelji paketa: .deb vs .rpm<\/h2>\n<p>\nZapo\u010dnimo s o\u010diglednim problemom distribucije proizvoda za razli\u010dite distribucije.<br \/>\nNajtipi\u010dniji na\u010din distribucije softverskih proizvoda je postaviti paket na repozitorij kako bi ga ugra\u0111eni upravitelj paketa u sustavu mogao instalirati s njega.<br \/>\nMe\u0111utim, imamo dva popularna formata paketa: <i>rpm<\/i> i <i>deb<\/i>. To zna\u010di da \u0107emo morati podr\u017eavati svaki.<\/p>\n<p>U svijetu deb paketa razina kompatibilnosti je zapanjuju\u0107a. Isti paket jednako dobro radi i na Debian 6 i na Ubuntu 19.04. Standardi procesa izrade paketa i rada s njima, postavljeni u starim Debian distribucijama, ostaju relevantni i u modernim Linux Mint i elementary OS. Stoga je za Veeam Agent for Linux dovoljan jedan deb paket za svaku hardversku platformu.<\/p>\n<p>Me\u0111utim, u svijetu rpm paketa razlike su velike. Prvo, zbog toga \u0161to postoje dva potpuno neovisna distributera, Red Hat i SUSE, koji ne trebaju kompatibilnost. Drugo, ovi distributeri imaju distribucije s tehni\u010dkom podr\u0161kom i eksperimentalne. Izme\u0111u njih kompatibilnost tako\u0111er nije potrebna. Tako da imamo svoje pakete za el6, el7 i el8. Odvojeno paket za Fedora. Paketi za SLES11 i 12 i odvojen za openSUSE. Glavni problem le\u017ei u zavisnostima i imenima paketa. <\/p>\n<h2>Problem zavisnosti<\/h2>\n<p>\nNa\u017ealost, isti paketi \u010desto se pojavljuju pod razli\u010ditim imenima u razli\u010ditim distribucijama. Ispod je nepotpun popis zavisnosti paketa veeam.<\/p>\n<p>Za EL7:<br \/>\nZa SLES 12:<\/p>\n<ul>\n<li>libblkid<\/li>\n<li>libgcc<\/li>\n<li>libstdc++<\/li>\n<li>ncurses-libs<\/li>\n<li>fuse-libs<\/li>\n<li>file-libs<\/li>\n<li>veeamsnap = 3.0.2.1185<\/li>\n<\/ul>\n<ul>\n<li>libblkid1<\/li>\n<li>libgcc_s1<\/li>\n<li>libstdc++6<\/li>\n<li>libmagic1<\/li>\n<li>libfuse2<\/li>\n<li>veeamsnap-kmp = 3.0.2.1185<\/li>\n<\/ul>\n<p>\nKao rezultat, popis ovisnosti postaje jedinstven za distribuciju. <\/p>\n<p>Gore je kada se pod starim imenom paketa po\u010dne skrivati nova verzija. <\/p>\n<p><b>Primjer:<\/b><\/p>\n<p>U Fedora 24 a\u017euriran paket <i>ncurses<\/i> s verzije 5 na verziju 6. Na\u0161 proizvod je izgra\u0111en s 5. verzijom, kako bi se osigurala kompatibilnost sa starim distribucijama. Da bismo koristili staru 5. verziju biblioteke na Fedora 24, morali smo koristiti paket <i>ncurses-compat-libs<\/i>. <\/p>\n<p>Kao rezultat, za Fedoru se pojavljuju dva paketa, s razli\u010ditim ovisnostima. <\/p>\n<p>Dalje postaje zanimljivije. Nakon jo\u0161 jednog a\u017euriranja distribucije, paket <i>ncurses-compat-libs<\/i> s 5. verzijom biblioteke postaje nedostupan. Distributeru je skupo zadr\u017eavati stare biblioteke u novoj verziji distribucije. Nakon nekog vremena, problem se ponovio i u distribucijama SUSE.<\/p>\n<p>Kao rezultat, za neke distribucije je bilo potrebno odustati od eksplicitne ovisnosti o <i>ncurses-libs<\/i>, a proizvod prilagoditi tako da mo\u017ee raditi s bilo kojom verzijom biblioteke.<\/p>\n<p>Usput, u 8. verziji Red Hat vi\u0161e nema meta-paketa <i>python<\/i>, koji se odnosio na stari dobri <i>python 2.7<\/i>. Postoji <i>python2<\/i> i <i>python<\/i>3. <\/p>\n<h2>Alternativa paketnim menad\u017eerima<\/h2>\n<p>\nProblemi s ovisnostima su stari i dobro poznati. Sjetite se samo Dependency hell. <br \/>\nUjediniti raznolike biblioteke i aplikacije tako da svi stabilno rade i ne sukobljavaju se \u2014 to je zadatak koji svaki Linux distributer poku\u0161ava rije\u0161iti.<\/p>\n<p>Posve druga\u010dije ovaj problem poku\u0161ava rije\u0161iti paketni menad\u017eer <b>Snappy<\/b> od Canonical. Osnovna ideja: aplikacija se izvr\u0161ava u izoliranoj i za\u0161ti\u0107enoj od glavnog sistema sandboxu. Ako aplikaciji trebaju biblioteke, one se isporu\u010duju zajedno s aplikacijom.<\/p>\n<p><b>Flatpak<\/b> tako\u0111er omogu\u0107ava pokretanje aplikacija u sandboxu koriste\u0107i Linux Containers. Ideju sandboxa koristi i <b>AppImage<\/b>.<\/p>\n<p>Ova rje\u0161enja omogu\u0107avaju stvaranje jednog paketa za sve distribucije. U slu\u010daju s <b>Flatpak<\/b> instalacija i pokretanje aplikacije mogu\u0107a su \u010dak i bez znanja administratora.<\/p>\n<p>Osnovni problem je u tome \u0161to ne mogu sve aplikacije raditi u sandboxu. Nekima je potrebno izravno obra\u0107anje platformi. O ne govorim o kernel modulima koji su strogo ovisni o kernelu i nikako se ne uklapaju u koncept sandboxa. <\/p>\n<p>Drugi problem je taj \u0161to popularni distribucije od Red Hata i SUSE u enterprise okru\u017eenju jo\u0161 uvijek nemaju podr\u0161ku za Snappy i Flatpak. <\/p>\n<p>U vezi s tim, Veeam Agent za Linux nije ni na <noindex><a rel=\"nofollow\" href=\"https:\/\/snapcraft.io\/\">snapcraft.io<\/a><\/noindex> ni na <noindex><a rel=\"nofollow\" href=\"https:\/\/flathub.org\/home\">flathub.org<\/a><\/noindex>.<\/p>\n<p>Na kraju, kada je rije\u010d o paket-menad\u017eerima, postoji mogu\u0107nost da se potpuno odrekne paketa, kombiniraju\u0107i binarne datoteke i skriptu za njihovu instalaciju. <\/p>\n<p>Takav bundle omogu\u0107uje stvaranje jednog zajedni\u010dkog paketa za razli\u010dite distribucije i platforme, kao i interaktivni proces instalacije uz potrebnu prilagodbu. Takve pakete za Linux sam vi\u0111ao samo od VMware-a.<\/p>\n<h2>Problem a\u017euriranja<\/h2>\n<p>\n<img decoding=\"async\" alt=\"Linux raznolik: kako raditi na bilo kojoj distribuciji\" src=\"\/wp-content\/uploads\/2019\/10\/aa14b10a434c28541574421d97807de7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n\u010cak i ako su svi problemi s zavisnostima rije\u0161eni, program mo\u017ee raditi razli\u010dito na istoj distribuciji. Rije\u010d je o a\u017euriranjima.<\/p>\n<p>Postoje 3 strategije a\u017euriranja:<\/p>\n<ul>\n<li>Najjednostavnija je nikada ne a\u017eurirati. Podesite server i zaboravite. Za\u0161to a\u017eurirati ako sve radi? Problemi po\u010dinju pri prvom pozivu u slu\u017ebu podr\u0161ke. Stvoritelj distribucije podr\u017eava samo a\u017euriranu verziju. <\/li>\n<li>Mo\u017ee se vjerovati distributeru i postaviti automatsko a\u017euriranje. U tom slu\u010daju je poziv u slu\u017ebu podr\u0161ke vjerojatan odmah nakon neuspje\u0161nog a\u017euriranja.<\/li>\n<li>Opcija ru\u010dnog a\u017euriranja tek nakon testiranja u testnoj infrastrukturi je najpouzdanija, ali skupa i zahtijeva mnogo rada. Nisu svi u mogu\u0107nosti to priu\u0161titi.<\/li>\n<\/ul>\n<p>\nBudu\u0107i da razli\u010diti korisnici primjenjuju razli\u010dite strategije a\u017euriranja, potrebno je odr\u017eavati i najnoviju verziju te sve ranije objavljene. To komplicira i proces razvoja i testiranja, dodaje glavobolju slu\u017ebi podr\u0161ke.<\/p>\n<h2>Raznolikost hardverskih platformi<\/h2>\n<p>\nRazli\u010dite hardverske platforme predstavljaju problem, koji je uglavnom specifi\u010dan za native kod. Bar je potrebno sastaviti binarne datoteke za svaku podr\u017eanu platformu.<\/p>\n<p>U projektu Veeam Agent za Linux jo\u0161 uvijek ne mo\u017eemo podr\u017eati ni\u0161ta \u0161to je RISC-ovine.<\/p>\n<p>O ovom pitanju ne\u0107u se detaljno zadr\u017eavati. Samo \u0107u ozna\u010diti glavne probleme: platformi zavisni tipovi, kao \u0161to su <code>size_t<\/code>, poravnanje struktura i redoslijed bajtova.<\/p>\n<h2>Stati\u010dka i\/ili dinami\u010dka povezivanje<\/h2>\n<p>\n<img decoding=\"async\" alt=\"Linux raznolik: kako raditi na bilo kojoj distribuciji\" src=\"\/wp-content\/uploads\/2019\/10\/dc473aad4ea0818940af7eafdbc641fd.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nA pitanje 'Kako se povezivati s bibliotekama - dinami\u010dki ili stati\u010dki?' vrijedi raspraviti.<\/p>\n<p>U pravilu, C\/C++ aplikacije na Linuxu koriste dinami\u010dko vezivanje. To dobro funkcionira ako je aplikacija sastavljena posebno za odre\u0111enu distribuciju.<\/p>\n<p>Ako postoji potreba za obuhva\u0107anjem raznih distribucija jednim binarnim datotekom, potrebno je orijentirati se na najstariju podr\u017eavanu distribuciju. Za nas je to Red Hat 6. Sadr\u017ei gcc 4.4, koji \u010dak ne podr\u017eava standard C++11. <noindex><a rel=\"nofollow\" href=\"https:\/\/gcc.gnu.org\/projects\/cxx-status.html\">Potpuno.<\/a><\/noindex>.<\/p>\n<p>Na\u0161 projekt sastavljamo pomo\u0107u gcc 6.3, koji potpuno podr\u017eava C++14. Naravno, u tom slu\u010daju na Red Hat 6 moramo sa sobom ponijeti libstdc++ i boost knji\u017enice. Najjednostavnije je povezati se s njima stati\u010dki.<\/p>\n<p>Ali na\u017ealost, ne mo\u017eemo se sa svim knji\u017enicama povezivati stati\u010dki.<\/p>\n<p>Prvo, sistemske knji\u017enice kao \u0161to su <i>libfuse<\/i>, <i>libblkid<\/i> moraju se povezivati dinami\u010dki kako bismo bili sigurni u njihovu kompatibilnost s kernelom i njegovim modulima. <\/p>\n<p>Drugo, postoji nijansa s licencama. <\/p>\n<p>GPL licenca u na\u010delu dopu\u0161ta povezivanje knji\u017enica samo s opensource kodom. MIT i BSD dopu\u0161taju stati\u010dko vezivanje i omogu\u0107uju uklju\u010divanje knji\u017enica u projekt. A LGPL, \u010dini se, ne proturje\u010di stati\u010dkom vezivanju, ali zahtijeva da se javno dostupni datoteke potrebne za vezivanje. <\/p>\n<p>U op\u0107em smislu, kori\u0161tenje dinami\u010dkog vezivanja osigurava da ne bude potrebe ne\u0161to pru\u017eati.<\/p>\n<h2>Sastavljanje C\/C++ aplikacija<\/h2>\n<p>\nZa sastavljanje C\/C++ aplikacija za razli\u010dite platforme i distribucije dovoljno je odabrati ili sastaviti gcc odgovaraju\u0107e verzije i koristiti kri\u017ene kompajlere za specifi\u010dne arhitekture, te prikupiti cijeli set knji\u017enica. Ovaj rad je sasvim ostvariv, ali prili\u010dno zamoran. I ne postoje nikakve garancije da \u0107e odabrani kompajler i knji\u017enice osigurati funkcionalnu verziju. <\/p>\n<p>O\u010dita prednost: infrastruktura se zna\u010dajno pojednostavljuje, jer se cijeli proces sastavljanja mo\u017ee izvr\u0161iti na jednoj ma\u0161ini. Osim toga, dovoljno je prikupiti jedan skup binarnih datoteka za jednu arhitekturu i mogu\u0107e ih je pakirati u pakete za razli\u010dite distribucije. Tako se zapravo sastavljaju paketi za Veeam Agent for Linux.<\/p>\n<p>Umjesto ovog pristupa, mo\u017eete jednostavno pripremiti build farmu, \u0161to uklju\u010duje nekoliko ra\u010dunala za kompilaciju. Svako od tih ra\u010dunala \u0107e osigurati kompilaciju aplikacije i izradu paketa za odre\u0111eni distribucijski sustav i specifi\u010dnu arhitekturu. U tom slu\u010daju, kompilacija se vr\u0161i alatima koje je pripremio distributer. Dakle, faza pripreme kompajlera i odabir biblioteka otpada. Osim toga, proces izrade mo\u017ee se lako paralelizirati. <\/p>\n<p>Me\u0111utim, postoji i nedostatak ovog pristupa: za svaki distribucijski sustav unutar jedne arhitekture morat \u0107e se izraditi vlastiti set binarnih datoteka. Tako\u0111er, nedostatak je \u0161to je potrebno odr\u017eavati mnoge ure\u0111aje, dodijeliti veliku koli\u010dinu prostora na disku i radne memorije. <\/p>\n<p>Na taj se na\u010din sastavljaju KMOD paketi modula jezgre veeamsnap za distribucije Red Hat.<\/p>\n<h2>Open Build Service<\/h2>\n<p>\nKolege iz SUSE-a poku\u0161ali su realizirati neku zlatnu sredinu u obliku posebne usluge za kompiliranje aplikacija i izradu paketa \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/openbuildservice.org\/\">openbuildservice<\/a><\/noindex>.<\/p>\n<p>U su\u0161tini, to je hipervizor koji stvara virtualnu ma\u0161inu, instalira sve potrebne pakete u nju, izvodi kompilaciju aplikacije i izradu paketa u ovom izoliranom okru\u017eenju, nakon \u010dega se ta virtualna ma\u0161ina osloba\u0111a.<\/p>\n<p><img decoding=\"async\" alt=\"Linux raznolik: kako raditi na bilo kojoj distribuciji\" src=\"\/wp-content\/uploads\/2019\/10\/93d2a70c589a7186ecef85a7863e59e8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPlaner implementiran u OpenBuildService sam \u0107e odrediti koliko virtualnih ma\u0161ina mo\u017ee pokrenuti za optimalnu brzinu izrade paketa. Ugra\u0111eni mehanizam potpisivanja automatski \u0107e potpisati pakete i staviti ih u ugra\u0111eni repozitorij. Ugra\u0111eni sustav upravljanja verzijama \u0107e sa\u010duvati povijest promjena i izrada. Ostaje samo dodati svoje izvore u ovaj sustav. Nema potrebe ni podizati vlastiti server, ve\u0107 se mo\u017ee iskoristiti otvoreni.<\/p>\n<p>Ipak, postoji problem: takav stroj te\u0161ko se uklapa u postoje\u0107u infrastrukturu. Na primjer, upravljanje verzijama nije potrebno jer ve\u0107 imamo svoj za izvore. Mehanizam potpisivanja se razlikuje kod nas: koristi se poseban server. Tako\u0111er, repozitorij nije potreban. <\/p>\n<p>Osim toga, podr\u0161ka za druge distribucije \u2014 primjerice, Red Hat \u2014 implementirana je prili\u010dno oskudno, \u0161to je sasvim razumljivo.<\/p>\n<p>Prednost ove usluge je brza podr\u0161ka za novu verziju SUSE distribucije. Prije slu\u017ebene objave o pu\u0161tanju, potrebni paketi za izgradnju objavljuju se u javnom repozitoriju. Na popisu dostupnih distribucija u OpenBuildServiceu pojavljuje se novi. Ozna\u010dimo ga, i dodaje se u plan izgradnje. Tako se dodavanje nove verzije distribucije provodi prakti\u010dki jednim klikom.<\/p>\n<p>U na\u0161oj infrastrukturi, koriste\u0107i OpenBuildService, sastavlja se raznolikost KMP paketa modula jezgre veeamsnap za SUSE distribucije.<\/p>\n<p>Nakon toga, \u017eelio bih se osvrnuti na pitanja koja su specifi\u010dna za module jezgre.<\/p>\n<h2>kernel ABI<\/h2>\n<p>\nLinux moduli jezgre su povijesno distribuirani u obliku izvornog koda. Naime, kreatori jezgre ne optere\u0107uju se brigom o podr\u0161ci stabilnom API-ju za module jezgre, a pogotovo na binarnoj razini, kasnije kABI.<\/p>\n<p>Da bi se modul sastavio za vanilija jezgru, trebaju se to\u010dno ti headeri, i radit \u0107e samo na toj jezgru. <\/p>\n<p>DKMS omogu\u0107ava automatizaciju procesa izgradnje modula pri a\u017euriranju jezgre. Kao rezultat, korisnici Debian repozitorija (i njegovih brojnih ro\u0111aka) koriste module jezgre ili iz repozitorija distributera ili ih sastavljaju iz izvornog koda pomo\u0107u DKMS-a.<\/p>\n<p>Me\u0111utim, takva situacija ne odgovara posebno Enterprise segmentu. Distributeri proprietarnog koda \u017eele distribuirati proizvod u obliku sastavljenih binarnih datoteka. <\/p>\n<p>Administratori ne \u017eele imati sredstva za razvoj na produkcijskim serverima iz sigurnosnih razloga. Distributeri Enterprise Linuxa \u2014 poput Red Hat-a i SUSE-a \u2014 odlu\u010dili su da \u0107e za svoje korisnike podr\u017eati stabilno kABI. Kao rezultat, pojavili su se KMOD paketi za Red Hat i KMP paketi za SUSE.<\/p>\n<p>Bit takvog rje\u0161enja je prili\u010dno jednostavan. Za odre\u0111enu verziju distribucije, API jezgre se zamrzava. Distributer izjavljuje da koristi to\u010dno jezgru, primjerice, 3.10, i unosi samo ispravke i pobolj\u0161anja koja se na bilo koji na\u010din ne doti\u010du su\u010delja jezgre, a moduli sastavljeni za najprvu jezgru mogu se koristiti za sve kasnije bez ponovne kompilacije.<\/p>\n<p>Red Hat tvrdi kako osigurava kABI kompatibilnost za distribuciju tijekom cijelog \u017eivotnog ciklusa. To zna\u010di da sastavljeni modul za rhel 6.0 (izdanje iz studenog 2010.) treba raditi i na verziji 6.10 (izdanje iz lipnja 2018.). To je gotovo 8 godina. Naravno, zadatak je prili\u010dno slo\u017een. <br \/>\nPrimijetili smo nekoliko slu\u010dajeva kada je zbog problema s kABI kompatibilno\u0161\u0107u modul veeamsnap prestao raditi. <\/p>\n<p>Nakon \u0161to je modul veeamsnap, sastavljen za RHEL 7.0, postao nekompatibilan s kernelom iz RHEL 7.5, ali se pritom u\u010ditavao i jam\u010dio ru\u0161enje poslu\u017eitelja, odustali smo od kori\u0161tenja kABI kompatibilnosti za RHEL 7 u potpunosti. <\/p>\n<p>Trenutno KMOD paket za RHEL 7 sadr\u017ei izdanje za svaku verziju i skriptu koja osigurava u\u010ditavanje modula.<\/p>\n<p>SUSE je pristupio zadatku kABI kompatibilnosti opreznije. Oni osiguravaju kABI kompatibilnost samo unutar jednog service packa. <\/p>\n<p>Na primjer, izdanje SLES 12 je objavljeno u rujnu 2014. A SLES 12 SP1 ve\u0107 u prosincu 2015., \u0161to zna\u010di da je pro\u0161lo ne\u0161to vi\u0161e od godine. Unato\u010d tome \u0161to oba izdanja koriste kernel 3.12, oni nisu kABI kompatibilni. O\u010dito je da je odr\u017eavanje kABI kompatibilnosti tijekom samo jedne godine znatno lak\u0161e. Godi\u0161nji ciklus a\u017euriranja modula kernela ne bi trebao predstavljati probleme za proizvo\u0111a\u010de modula. <\/p>\n<p>Kao rezultat te politike, SUSE nije zabilje\u017eio nijedan problem s kABI kompatibilno\u0161\u0107u na\u0161eg modula veeamsnap. Istina, broj paketa za SUSE je gotovo redom ve\u0107i.<\/p>\n<h2>Zaklju\u010dci i backportovi<\/h2>\n<p>\nUnato\u010d tome \u0161to distributeri nastoje osigurati kABI kompatibilnost i stabilnost kernela, tako\u0111er poku\u0161avaju pobolj\u0161ati performanse i otkloniti nedostatke ovog stabilnog kernela. <\/p>\n<p>Pri tom, osim vlastitog 'rada na gre\u0161kama', programeri enterprise linux kernela prate promjene u vanilijom kernelu i prenose ih u svoje 'stabilno'.<\/p>\n<p>Ponekad to dovodi do novih <noindex><a rel=\"nofollow\" href=\"https:\/\/access.redhat.com\/solutions\/3658111\">gre\u0161aka<\/a><\/noindex>.<\/p>\n<p>U posljednjem izdanju Red Hat 6 u jednom od manjih a\u017euriranja do\u0161lo je do gre\u0161ke. Ona je uzrokovala da modul veeamsnap jam\u010di ru\u0161enje sustava prilikom osloba\u0111anja snimke. Usporediv\u0161i izvore kernela prije i nakon a\u017euriranja, saznali smo da je razlog bio backport. Sli\u010dan popravak je napravljen u vanilijom kernelu verzije 4.19. No, u vanilijom kernelu ovaj popravak je radio normalno, a prilikom preno\u0161enja u 'stabilno' 2.6.32 pojavila se problem sa spin-lockingom.<\/p>\n<p>Naravno, gre\u0161ke se doga\u0111aju svima i uvijek, ali je li bilo potrebno prenijeti kod s 4.19 na 2.6.32, riskiraju\u0107i stabilnost?.. Nisam siguran...<\/p>\n<p>Najgore je kada se marketing uklju\u010di u povla\u010denje u\u017eeta izme\u0111u \"stabilnosti\" i \"modernizacije\". Marketin\u0161kom odjelu treba stabilno jezgro a\u017eurirane distribucije s jedne strane, a s druge strane bolje performanse i nove funkcije. To dovodi do \u010dudnih kompromisa. <\/p>\n<p>Kada sam poku\u0161ao sastaviti modul na jezgru 4.4 iz SLES 12 SP3, s iznena\u0111enjem sam otkrio funkcionalnosti iz vanilnog 4.8. Po mom mi\u0161ljenju, implementacija blokiranog ulaza\/izlaza jezgra 4.4 iz SLES 12 SP3 vi\u0161e li\u010di na jezgro 4.8 nego na prethodno stabilno izdanje 4.4 jezgra iz SLES12 SP2. Kakav je bio postotak prenesenog koda iz jezgra 4.8 u SLES-ovo 4.4 za SP3, ne bih se usudio suditi, me\u0111utim, ne mogu re\u0107i da je jezgro i dalje stabilno 4.4. <\/p>\n<p>Najneugodnije u svemu je to \u0161to se prilikom pisanja modula koji bi jednako dobro radio na razli\u010ditim jezgrama vi\u0161e ne mo\u017ee oslanjati na verziju jezgra. Tako\u0111er se mora uzeti u obzir i distribucija. Dobro je \u0161to se ponekad mo\u017ee vezati na definiranu konstantu koja dolazi s novom funkcionalno\u0161\u0107u, me\u0111utim, ta se mogu\u0107nost ne pojavljuje uvijek. <\/p>\n<p>Kao rezultat, kod postaje prepun \u010dudnih direktiva uvjetne kompilacije.<\/p>\n<p>Ima i zakrpa koje mijenjaju dokumentirano API jezgra. <br \/>\nNai\u0161ao sam na distribuciju <noindex><a rel=\"nofollow\" href=\"https:\/\/neon.kde.org\/\">KDE neon<\/a><\/noindex> 5.16 i bio sam vrlo iznena\u0111en kada sam vidio da je poziv lookup_bdev u ovoj verziji jezgra promijenio popis ulaznih parametara.<\/p>\n<p>Kako bih se sastavio, morao sam dodati skriptu u makefile koja provjerava postoji li parametar mask za funkciju lookup_bdev.<\/p>\n<h2>Potpis modula jezgra<\/h2>\n<p>\nAli se vratimo pitanju distribucije paketa.<\/p>\n<p>Jedna od prednosti stabilnog kABI-a je ta da se moduli jezgra u obliku binarnih datoteka mogu potpisati. U tom slu\u010daju, programer mo\u017ee biti siguran da modul nije slu\u010dajno o\u0161te\u0107en ili namjerno izmijenjen. To se mo\u017ee provjeriti naredbom modinfo. <\/p>\n<p>Distribucije Red Hat i SUSE omogu\u0107uju provjeru potpisa modula i u\u010ditavanje samo ako je u sustavu registriran odgovaraju\u0107i certifikat. Certifikat predstavlja javni klju\u010d kojim se potpisuje modul. Mi ga distribuiramo u obliku zasebnog paketa.<\/p>\n<p>Problem je u tome \u0161to certifikati mogu biti ili ugra\u0111eni u jezgru (koriste ih distributeri), ili moraju biti pohranjeni u nevolatilnu memoriju EFI pomo\u0107u alata <i>mokutil<\/i>. Alat <i>mokutil<\/i> pri instalaciji certifikata zahtijeva ponovno pokretanje sustava i jo\u0161 prije u\u010ditavanja jezgre operativnog sustava nudi administratoru da odobri u\u010ditavanje novog certifikata. <\/p>\n<p>Dakle, dodavanje certifikata zahtijeva fizi\u010dki pristup administratora sustavu. Ako se stroj nalazi negdje u oblaku ili jednostavno na udaljenom poslu\u017eitelju, a pristup je mogu\u0107 samo putem mre\u017ee (na primjer, putem ssh), onda dodavanje certifikata nije mogu\u0107e. <\/p>\n<h2>EFI na virtualnim strojevima<\/h2>\n<p>\nUnato\u010d tome \u0161to gotovo svi proizvo\u0111a\u010di mati\u010dnih plo\u010da podr\u017eavaju EFI ve\u0107 dugo, administrator mo\u017eda ne\u0107e razmisliti o potrebnosti EFI prilikom instalacije sustava, i mogao bi biti isklju\u010den. <\/p>\n<p>Ne podr\u017eavaju svi hipervizori EFI. VMWare vSphere podr\u017eava EFI po\u010dev\u0161i od verzije 5. <br \/>\nMicrosoft Hyper-V tako\u0111er je dobio podr\u0161ku za EFI, po\u010dev\u0161i od Hyper-V za Windows Server 2012R2. <\/p>\n<p>Me\u0111utim, u zadnjoj konfiguraciji ta funkcionalnost za Linux strojeve je isklju\u010dena, \u0161to zna\u010di da certifikat ne mo\u017ee biti instaliran. <\/p>\n<p>U vSphere 6.5, opcija <b>Secure Boot<\/b> mo\u017ee se postaviti samo u staroj verziji web su\u010delja, koja radi preko Flash-a. Web UI na HTML-5 jo\u0161 uvijek znatno zaostaje.<\/p>\n<h2>Eksperimentalne distribucije<\/h2>\n<p>\nNa kraju, razmotrimo pitanje eksperimentalnih distribucija i distribucija bez slu\u017ebene podr\u0161ke. S jedne strane, takve distribucije vjerojatno se ne\u0107e na\u0107i na serverima ozbiljnih organizacija. Takve distribucije nemaju slu\u017ebenu podr\u0161ku. Stoga se ne mo\u017ee osigurati tehni\u010dka podr\u0161ka za proizvod na takvoj distribuciji. <\/p>\n<p>Me\u0111utim, takve distribucije postaju zgodna platforma za isprobavanje novih eksperimentalnih re\u0161enja. Na primjer, Fedora, OpenSUSE Tumbleweed ili Unstable verzije Debian. To su prili\u010dno stabilne distribucije. U njima su uvijek nove verzije programa i uvijek novo jezgro. Kroz godinu dana ova eksperimentalna funkcionalnost mo\u017ee se na\u0107i u a\u017euriranom RHEL, SLES ili Ubuntu. <\/p>\n<p>Dakle, ako ne\u0161to ne radi na eksperimentalnoj distribuciji \u2014 to je prilika da se prou\u010di problem i rije\u0161i ga. Treba biti spreman na to da \u0107e se ta funkcionalnost uskoro pojaviti na proizvodnim poslu\u017eiteljima korisnika.<\/p>\n<p>Trenutni popis slu\u017ebeno podr\u017eanih distribucija za verziju 3.0 mo\u017eete prou\u010diti <noindex><a rel=\"nofollow\" href=\"https:\/\/helpcenter.veeam.com\/docs\/agentforlinux\/userguide\/system_requirements.html?ver=30\">ovdje<\/a><\/noindex>. No, stvarni popis distribucija na kojima na\u0161 proizvod mo\u017ee raditi je znatno \u0161iri.<\/p>\n<p>Mene je osobno zanimalo eksperimentirati s operativnim sustavom \u201eElbrus\u201c. Nakon dorade paketa veeam, na\u0161 proizvod se instalirao i po\u010deo raditi. O tom eksperimentu pisao sam na Habr-u u <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/veeam\/blog\/447960\/\">\u010dlanku<\/a><\/noindex>. <\/p>\n<p>Podr\u0161ka za nove distribucije se nastavlja. O\u010dekujemo dolazak verzije 4.0. Beta bi trebala uskoro biti dostupna, pa pratite <noindex><a rel=\"nofollow\" href=\"https:\/\/www.veeam.com\/whats-new-linux-agent.html\">whats-new<\/a><\/noindex>!<br \/>\n<br \/>Izvor: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/veeam\/blog\/471226\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0433\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u0435 \u043d\u0430 \u043b\u044e\u0431\u043e\u043c \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0435 \u2014 \u0437\u0430\u0434\u0430\u0447\u043a\u0430 \u043d\u0435\u043f\u0440\u043e\u0441\u0442\u0430\u044f. \u0427\u0442\u043e\u0431\u044b \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443 Veeam Agent for Linux \u043d\u0430 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430\u0445 \u043e\u0442 Red Hat 6 \u0438 Debian 6, \u0434\u043e OpenSUSE 15.1 \u0438 Ubuntu 19.04 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0440\u0435\u0448\u0430\u0442\u044c \u0441\u043f\u0435\u043a\u0442\u0440 \u043f\u0440\u043e\u0431\u043b\u0435\u043c, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0435\u0441\u043b\u0438 \u0443\u0447\u0435\u0441\u0442\u044c, \u0447\u0442\u043e \u0432 \u0441\u043e\u0441\u0442\u0430\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430 \u0432\u0445\u043e\u0434\u0438\u0442 \u043c\u043e\u0434\u0443\u043b\u044c \u044f\u0434\u0440\u0430. \u0421\u0442\u0430\u0442\u044c\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u043f\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430\u043c \u0432\u044b\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u044f \u043d\u0430 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":29206,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-38929","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0433\u043e.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/hr\/blog\/administrirovanie\/linux-mnogolikij-kak-rabotat-na-lyubom-distributive\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"hr_HR\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Linux \u043c\u043d\u043e\u0433\u043e\u043b\u0438\u043a\u0438\u0439: \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430 \u043b\u044e\u0431\u043e\u043c \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0435 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0433\u043e.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/hr\/blog\/administrirovanie\/linux-mnogolikij-kak-rabotat-na-lyubom-distributive\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:26:48+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:26:48+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Linux je raznolik: kako raditi na bilo kojoj distribuciji | ProHoster","description":"Izradite aplikaciju za sigurnosnu kopiju.","canonical_url":"https:\/\/prohoster.info\/hr\/blog\/administrirovanie\/linux-mnogolikij-kak-rabotat-na-lyubom-distributive","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hr_HR","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Linux \u043c\u043d\u043e\u0433\u043e\u043b\u0438\u043a\u0438\u0439: \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430 \u043b\u044e\u0431\u043e\u043c \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0435 | ProHoster","og:description":"\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0433\u043e.","og:url":"https:\/\/prohoster.info\/hr\/blog\/administrirovanie\/linux-mnogolikij-kak-rabotat-na-lyubom-distributive","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:26:48+00:00","article:modified_time":"2019-10-31T19:26:48+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"38929","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-23 23:59:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:00:26","updated":"2026-01-23 23:59:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts\/38929","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/comments?post=38929"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts\/38929\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/media\/29206"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/media?parent=38929"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/categories?post=38929"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/tags?post=38929"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}