{"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\/et\/blog\/administrirovanie\/linux-mnogolikij-kak-rabotat-na-lyubom-distributive","title":{"rendered":"Linux on mitme n\u00e4oga: kuidas t\u00f6\u00f6tada igas distributsioonis","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Linux on mitme n\u00e4oga: kuidas t\u00f6\u00f6tada igas distributsioonis\" src=\"\/wp-content\/uploads\/2019\/10\/ee1aaad566204532c974a3ce8f13b915.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nRakenduse loomine, mis varundab igasugustel jaotustel, on keeruline \u00fclesanne. Veeam Agent for Linuxi t\u00f6\u00f6tagamiseks Red Hat 6 ja Debian 6 jaotustel kuni OpenSUSE 15.1 ja Ubuntu 19.04 tuleb lahendada mitmeid probleeme, eriti kui arvestada, et toote koosseisus on ka kernelimoodul.<\/p>\n<p>Artikkel on koostatud konverentsi ettekande materjalide alusel. <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 ei ole lihtsalt \u00fcks populaarsemaid operatsioonis\u00fcsteeme. Tegelikult on see platvorm, millel saab luua midagi ainulaadset, midagi oma. Seet\u00f5ttu on Linuxi p\u00f5hjal palju jaotuseid, mis erinevad oma programmikomponentide kogumi poolest. Ja siin tekib probleem: et tarkvara toode t\u00f6\u00f6taks igasugustel jaotustel, tuleb arvesse v\u00f5tta iga\u00fche omadusi.<\/p>\n<h2>Pakettide haldajad. .deb vs .rpm<\/h2>\n<p>\nAlustame ilmsest probleemist toote jaotamise osas erinevatele jaotustele.<br \/>\nK\u00f5ige tavalisem viis tarkvaratootesid levitada on paketi panemine repo, et s\u00fcsteemi sisse ehitatud pakettide haldaja saaks selle sealt installida.<br \/>\nKuid populaarseid pakettformaate on meil kaks: <i>rpm<\/i> ja <i>deb<\/i>. Seega tuleb toetada iga\u00fcht neist.<\/p>\n<p>Deb-pakettide maailmas on \u00fchilduvuse tase h\u00e4mmastav. \u00dcks ja sama pakett installitakse ja t\u00f6\u00f6tab sama h\u00e4sti nii Debian 6-l kui ka Ubuntu 19.04-l. Pakettide loomise ja nendega t\u00f6\u00f6tamise standardid, mis on paika pandud vanades Debian jaotustes, j\u00e4\u00e4vad asjakohaseks ka moodsates Linux Mint ja elementary OS jaotustes. Seet\u00f5ttu on Veeam Agent for Linuxi jaoks piisav \u00fcks deb-pakett iga riistvara platvormi jaoks.<\/p>\n<p>Kuid rpm-pakettide maailmas on erinevused suured. Esiteks, kuna on kaks t\u00e4iesti s\u00f5ltumatut tootjat \u2014 Red Hat ja SUSE \u2014 kellele \u00fchilduvus \u00fcldse ei ole vajalik. Teiseks, neil tootjatel on jaotused tehnilise toe ja eksperimentaalsete versioonidega. Nende vahel ei ole \u00fchilduvus vajalik. Tulemuseks on see, et el6, el7 ja el8 jaoks on oma paketid. Eraldi pakett Fedora jaoks. Paketid SLES11 ja 12 jaoks ning eraldi openSUSE jaoks. Peamine probleem on s\u00f5ltuvustes ja paketide nimedes. <\/p>\n<h2>S\u00f5ltuvuste probleem<\/h2>\n<p>\nKahjuks on samad paketid tihti erinevates jaotustes erinevate nimedega. Allpool on mittet\u00e4ielik nimekiri veeam paketi s\u00f5ltuvustest.<\/p>\n<p>EL7 jaoks:<br \/>\nSLES 12 jaoks:<\/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>\nTulemuseks on s\u00f5ltuvuste loend, mis osutub distributsioonile ainulaadseks. <\/p>\n<p>Halvem on see, kui vana paketi nime all hakkab peituma uuendatud versioon. <\/p>\n<p><b>N\u00e4ide:<\/b><\/p>\n<p>Fedora 24-s on pakett uuendatud <i>ncurses<\/i> versioonilt 5 versioonile 6. Meie toode oli \u00fcles ehitatud just 5. versioonile, et tagada \u00fchilduvus vanade distributsioonidega. Fedora 24-s vana 5. versiooni raamatukogu kasutamiseks tuli kasutada paketti <i>ncurses-compat-libs<\/i>. <\/p>\n<p>Tulemuseks on Fedora jaoks kaks paketti, erinevate s\u00f5ltuvustega. <\/p>\n<p>Edasi l\u00e4heb huvitavamaks. P\u00e4rast j\u00e4rjekordset distributsiooni uuendamist on pakett <i>ncurses-compat-libs<\/i> 5. versiooniga raamatukogu k\u00e4ttesaamatu. Jagajale on koormav uue distributsiooni alla vanade raamatukogude vedamine. M\u00f5ne aja p\u00e4rast kordus probleem ka SUSE distributsioonides.<\/p>\n<p>Tulemuseks on see, et m\u00f5nede distributsioonide puhul tuli loobuda otsesest s\u00f5ltuvusest <i>ncurses-libs<\/i>, ning toodet kohandada nii, et see saaks t\u00f6\u00f6tada iga raamatukogu versiooniga.<\/p>\n<p>\u00dcldse, 8. versioonis Red Hat'is ei ole enam meta-paketti <i>python<\/i>, mis viitas vanale headusele <i>python 2.7<\/i>. On olemas <i>python2<\/i> ja <i>python<\/i>3. <\/p>\n<h2>Alternatiiv pakihalduritele<\/h2>\n<p>\nS\u00f5ltuvuste probleem on vana ja ammu n\u00e4htud. M\u00f5tle n\u00e4iteks Dependency hell'ile. <br \/>\nErinevaid raamatukogusid ja rakendusi tuleb \u00fchendada nii, et nad k\u00f5ik stabiilselt t\u00f6\u00f6taksid ja ei konfliktiks \u2014 tegelikult just seda probleemi p\u00fc\u00fcab lahendada iga Linuxi jagaja.<\/p>\n<p>Teistmoodi p\u00fc\u00fcab seda probleemi lahendada paketihaldur <b>Snappy<\/b> Canonicalilt. Peamine idee: rakendus t\u00f6\u00f6tab isoleeritud ja p\u00f5his\u00fcsteemi kaitstud liivakasti keskkonnas. Kui rakendusele on vajalikud raamatukogud, siis tuuakse need koos rakendusega.<\/p>\n<p><b>Flatpak<\/b> lubab samuti rakendusi k\u00e4ivitada liivakastis, kasutades Linuxi konteinerite s\u00fcsteemi. Liivakasti ideed kasutab ka <b>AppImage<\/b>.<\/p>\n<p>Need lahendused v\u00f5imaldavad luua \u00fche paketi igasuguste distributsioonide jaoks. Juhtum ilmselgelt <b>Flatpak<\/b> rakenduse installimine ja k\u00e4ivitamine on v\u00f5imalik isegi ilma administraatori teadmata.<\/p>\n<p>Peamine probleem on see, et mitte k\u00f5ik rakendused ei saa t\u00f6\u00f6tada liivakastis. M\u00f5ned vajavad vahetut juurdep\u00e4\u00e4su platvormile. Ma ei hakka r\u00e4\u00e4gima kernelimoodulitest, mis on tugevalt s\u00f5ltuvad kernelist ja mis ei sobi \u00fcldse liivakasti kontseptsiooni. <\/p>\n<p>Teine probleem on see, et ettev\u00f5ttekeskkonnas populaarsed distributsioonid Red Hat ja SUSE ei ole Snappy ja Flatpak'i toe osas veel arendust\u00f6\u00f6d teinud. <\/p>\n<p>Seoses sellega ei ole Veeam Agent for Linux ei <noindex><a rel=\"nofollow\" href=\"https:\/\/snapcraft.io\/\">snapcraft.io<\/a><\/noindex> ega <noindex><a rel=\"nofollow\" href=\"https:\/\/flathub.org\/home\">flathub.org<\/a><\/noindex>.<\/p>\n<p>Kokkuv\u00f5tteks pakettide haldurite k\u00fcsimusest tahan m\u00e4rkida, et on v\u00f5imalus loobuda t\u00e4ielikult pakettide halduritest, \u00fchendades \u00fcheks paketiks binaarfailid ja installatsiooniskripti. <\/p>\n<p>Selline bundle v\u00f5imaldab luua \u00fche \u00fchise paketi erinevate jaotuste ja platvormide jaoks, viies l\u00e4bi interaktiivse installatsiooniprotsessi, rakendades vajalikku kohandamist. Olen selliste pakettidega Linuxi jaoks kokku puutunud vaid VMware'i kaudu.<\/p>\n<h2>Uuenduste probleem<\/h2>\n<p>\n<img decoding=\"async\" alt=\"Linux on mitme n\u00e4oga: kuidas t\u00f6\u00f6tada igas distributsioonis\" src=\"\/wp-content\/uploads\/2019\/10\/aa14b10a434c28541574421d97807de7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nIsegi kui k\u00f5ik s\u00f5ltuvusprobleemid on lahendatud, v\u00f5ib programm samas jaotuses \u00fcsna erinevalt t\u00f6\u00f6tada. Probleem on uuendustes.<\/p>\n<p>On 3 uuendamisstrateegiat:<\/p>\n<ul>\n<li>K\u00f5ige lihtsam on mitte kunagi uuendada. Seadistasin serveri ja unustasin. Miks uuendada, kui k\u00f5ik t\u00f6\u00f6tab? Probleemid algavad kohe, kui helistad tugiteenusesse. Jaotuse looja toetab ainult v\u00e4rskendatud v\u00e4ljaannet. <\/li>\n<li>Saab usaldada jaotajat ja seadistada automaatse v\u00e4rskendamise. Sel juhul on t\u00f5en\u00e4oline, et helistamine tugiteenusesse toimub kohe p\u00e4rast eba\u00f5nnestunud v\u00e4rskendust.<\/li>\n<li>Manuaalse v\u00e4rskendamise v\u00f5imalus p\u00e4rast seda, kui see on testitud katse infrastruktuuris \u2013 on k\u00f5ige usaldusv\u00e4\u00e4rsem, kuid kallis ja t\u00f6\u00f6intensiivne. Kaugelki mitte k\u00f5ik ei saa seda endale lubada.<\/li>\n<\/ul>\n<p>\nKuna erinevad kasutajad rakendavad erinevaid uuendamisstrateegiaid, tuleb toetada nii k\u00f5ige v\u00e4rskemat v\u00e4ljaannet kui ka k\u00f5iki varem v\u00e4lja antud versioone. See keerustab nii arendusprotsessi kui ka testimisprotsessi, lisades peavalu tugiteenusele.<\/p>\n<h2>Mitmekesisus riistvaraplatvormides<\/h2>\n<p>\nErinevad riistvaraplatvormid on probleem, mis on suuresti spetsiifiline just native-koodile. V\u00e4hemalt tuleb koguda binaarfaile iga toetatud platvormi jaoks.<\/p>\n<p>Veeam Agent for Linux projektis ei suuda me mingil moel toetada midagi RISC-iga seotud.<\/p>\n<p>Ei hakka sellele k\u00fcsimusele s\u00fcvitsi laskuma. Tahan vaid v\u00e4lja tuua peamised probleemid: platvormispetsiifilised t\u00fc\u00fcbid, nagu <code>size_t<\/code>, struktuuride joondamine ja byte order.<\/p>\n<h2>Statiline ja\/ v\u00f5i d\u00fcnaamiline lingimine<\/h2>\n<p>\n<img decoding=\"async\" alt=\"Linux on mitme n\u00e4oga: kuidas t\u00f6\u00f6tada igas distributsioonis\" src=\"\/wp-content\/uploads\/2019\/10\/dc473aad4ea0818940af7eafdbc641fd.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nKuid k\u00fcsimus, \"Kuidas lingida raamatukogudega - d\u00fcnaamiliselt v\u00f5i staatiliselt?\" vajab arutamist.<\/p>\n<p>Tavaliselt kasutavad C\/C++ rakendused Linuxis d\u00fcnaamilist linkimist. See t\u00f6\u00f6tab suurep\u00e4raselt, kui rakendus on spetsiaalselt koostatud konkreetse jaotise jaoks.<\/p>\n<p>Kui aga on eesm\u00e4rk haarata erinevaid jaotisi \u00fche binaarfailiga, tuleb orienteeruda k\u00f5ige vanemale toetatud jaotisele. Meie jaoks on see Red Hat 6. See sisaldab gcc 4.4, mis ei toeta isegi C++11 standardit. <noindex><a rel=\"nofollow\" href=\"https:\/\/gcc.gnu.org\/projects\/cxx-status.html\">t\u00e4ielik<\/a><\/noindex>.<\/p>\n<p>Me koostame oma projekti gcc 6.3 abil, mis toetab t\u00e4ielikult C++14. Loomulikult tuleb sellisel juhul Red Hat 6 jaoks raamatukogud libstdc++ ja boost endaga kaasa v\u00f5tta. Lihtsaim on nendega staatiliselt linkida.<\/p>\n<p>Kahjuks ei ole k\u00f5ikide raamatukogudega v\u00f5imalik staatiliselt linkida.<\/p>\n<p>Esiteks, s\u00fcsteemi raamatukogud, nagu <i>libfuse<\/i>, <i>libblkid<\/i> peavad olema d\u00fcnaamiliselt linkitud, et olla kindel, et need on \u00fchilduvad tuuma ja selle moodulitega. <\/p>\n<p>Teiseks, litsentsidega on m\u00f5ned erip\u00e4rad. <\/p>\n<p>GPL litsents lubab raamatukogusid linkida ainult avatud l\u00e4htekoodiga koodiga. MIT ja BSD lubavad staatilist linkimist ja v\u00f5imaldavad raamatukogusid projektis kasutada. LGPL seevastu ei paista olevat vastu staatilisele linkimisele, kuid n\u00f5uab, et tugifailid, mis on vajalikud linkimiseks, oleksid \u00fcldiselt kergesti k\u00e4tte saadavad. <\/p>\n<p>\u00dcldiselt kaitseb d\u00fcnaamiline linkimine vajadusest midagi esitada.<\/p>\n<h2>C\/C++ rakenduste koostamine<\/h2>\n<p>\nC\/C++ rakenduste koostamiseks erinevatele platvormidele ja jaotistele piisab sobiva versiooniga gcc leidmisest v\u00f5i koostamisest ning spetsiifiliste architektuuride jaoks ristkompilaatorite kasutamisest, samuti k\u00f5ikide raamatukogude kogumi koostamisest. See t\u00f6\u00f6 on t\u00e4iesti teostatav, kuid \u00fcsna vaevaline. Ja ei ole mingit garantiid, et valitud kompilaator ja raamatukogud tagavad t\u00f6\u00f6k\u00f5lbuliku variandi. <\/p>\n<p>Ilmselge pluss: infrastruktuur lihtsustub m\u00e4rgatavalt, kuna kogu koostamisprotsessi saab teha \u00fchel masinal. Lisaks piisab \u00fche arhitektuuri jaoks \u00fche komplekti binaarfailide kogumisest, et neid saab pakendada erinevate jaotiste pakettidesse. Just nii koostatakse veeam pakette Veeam Agent for Linux jaoks.<\/p>\n<p>Selle asemel v\u00f5ite lihtsalt ette valmistada build-farm, see t\u00e4hendab mitu masinat kogumise jaoks. Iga selline masin tagab rakenduse kompileerimise ja paketi koostamise konkreetse jaotuse ja teatud arhitektuuri jaoks. Sellisel juhul toimub kompileerimine nende vahenditega, mille on ette valmistanud jaotaja. Seega etapp kompilaatori ettevalmistamisest ja raamatukogude valimisest langeb \u00e4ra. Lisaks saab kogumisprotsessi h\u00f5lpsasti paralleelseks muuta. <\/p>\n<p>Kuid sellise l\u00e4henemise puhul on \u00fcks puudus: iga jaotuse jaoks \u00fche arhitektuuri raames tuleb koostada oma binaarfailide komplekt. Samuti on puuduseks see, et selline masinate hulk vajab hooldamist, samuti peab olema eraldatud suur hulk kettaruumi ja operatiivm\u00e4lu. <\/p>\n<p>Nii koostatakse KMOD pakette veeamsnap tuuma mooduli jaoks Red Hat jaotuste jaoks.<\/p>\n<h2>Open Build Service<\/h2>\n<p>\nKolleegid SUSE-st on proovinud ellu viia mingi kuldse kesktee spetsiaalse teenuse n\u00e4ol rakenduste kompileerimiseks ja pakettide koostamiseks \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/openbuildservice.org\/\">openbuildservice<\/a><\/noindex>.<\/p>\n<p>Sisuliselt on see h\u00fcperviisor, mis loob virtuaalse masina, installib sinna k\u00f5ik vajalikud paketid, viib l\u00e4bi rakenduse kompileerimise ja paketi koostamise selles isoleeritud keskkonnas, p\u00e4rast mida selline virtuaalne masin vabastatakse.<\/p>\n<p><img decoding=\"async\" alt=\"Linux on mitme n\u00e4oga: kuidas t\u00f6\u00f6tada igas distributsioonis\" src=\"\/wp-content\/uploads\/2019\/10\/93d2a70c589a7186ecef85a7863e59e8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOpenBuildService'i ellu viidud ajastaja m\u00e4\u00e4rab ise, kui palju virtuaalseid masinaid ta v\u00f5ib k\u00e4ivitada pakettide koostamise optimaalsete kiirusede jaoks. Sisseehitatud allkirjastamise mehhanism allkirjastab paketid ja laadib need sisseehitatud hoidlasse. Sisseehitatud versioonihalduse s\u00fcsteem salvestab muudatuste ja koostamiste ajaloo. J\u00e4\u00e4b vaid lisada sellesse s\u00fcsteemi oma allikakoodid. Isegi serverit t\u00f5statama pole tingimata vajalik, v\u00f5ib kasutada avatud lahendust.<\/p>\n<p>Siin on siiski probleem: selline kombain on raske olemasolevasse infrastruktuuri sobitada. N\u00e4iteks versioonihaldust ei ole vaja, meil on juba oma allikate jaoks olemas. Allkirjastamise mehhanism on meil erinev: kasutatakse spetsiaalset serverit. Hoidlat ka pole vaja. <\/p>\n<p>Lisaks on teiste jaotuste tugi \u2014 n\u00e4iteks Red Hat \u2014 \u00fcsna napilt teostatav, mis on t\u00e4iesti m\u00f5istetav.<\/p>\n<p>Sellise teenuse eeliseks on kiire toewus uue SUSE jaotuse versiooni jaoks. Enne ametlikku v\u00e4lja kuulutamist laaditakse koostamiseks vajalikud paketid avalikku reposse. Nimekirjas saadaolevatest jaotustest OpenBuildService'is ilmub uus. Paneme linnukese ja see lisatakse koostamisplaani. Seega toimub uue jaotuse versiooni lisamine praktiliselt \u00fche klikiga.<\/p>\n<p>Meie infrastruktuuris, kus kasutatakse OpenBuildService'i, koostatakse k\u00f5ik KMP pakettide mitmekesisus veeamsnap mooduli tuumaks SUSE jaotustele.<\/p>\n<p>Edasi soovin peatuda k\u00fcsimustel, mis on spetsiifilised just tuummoodulitele.<\/p>\n<h2>kernel ABI<\/h2>\n<p>\nLinuxi tuummoodulid on ajalooliselt jaotatud allika tekstidena. Fakt on see, et tuuma loojad ei koorma end tuumamoodulite stabiilse API toega, r\u00e4\u00e4kimata binaartasemest, kABI-st.<\/p>\n<p>Et koostada moodul virtuaalse tuuma jaoks, on h\u00e4dasti vajalik just selle tuuma p\u00e4ised, ja see t\u00f6\u00f6tab ainult sellel tuumal. <\/p>\n<p>DKMS v\u00f5imaldab automatiseerida moodulite koostamisprotsessi tuuma uuendamisel. Tulemusena kasutavad Debian'i (ja tema mitu sugulast) reposte moodulite kasoe v\u00f5i tootja repostest v\u00f5i n\u00e4iteks DKMSi abil allika tekstidest koostatud mooduleid.<\/p>\n<p>Kuid see olukord ei rahulda Enterprise-segmenti eriti. Erakoodide levitajad soovivad tooteid jaotada koostatuna binaaridena. <\/p>\n<p>Administraatorid ei taha production-serverites hoida arendust\u00f6\u00f6riistu turvalisuse kaalutlustel. Enterprise Linuxi levitajad - nagu Red Hat ja SUSE - on otsustanud, et nad saavad oma kasutajatele stabiilse kABI pakkuda. Tulemuseks on ilmnenud KMOD paketid Red Hatile ja KMP paketid SUSE-le.<\/p>\n<p>Selle lahenduse olemus on \u00fcsna lihtne. Konkreetse jaotuse versiooni jaoks API tuum k\u00fclmutatakse. Levija kuulutab v\u00e4lja, et ta kasutab just tuuma, n\u00e4iteks 3.10, ja toob sisse ainult parandused ja t\u00e4iustused, mis ei m\u00f5juta tuuma liideseid, ning esimeseks tuumaks koostatud mooduleid v\u00f5ib kasutada k\u00f5igi j\u00e4rgnevate jaoks ilma uuesti kokku panemata.<\/p>\n<p>Red Hat teatavad kABI \u00fchilduvusest oma distributsiooniga kogu eluts\u00fckli v\u00e4ltel. See t\u00e4hendab, et rhel 6.0 (novembri 2010 v\u00e4ljaanne) kokkupandud moodul peaks t\u00f6\u00f6tama ka versioonis 6.10 (juuni 2018 v\u00e4ljaanne). Ja see on peaaegu 8 aastat. Loomulikult on see \u00fcsna keeruline \u00fclesanne. <br \/>\nOleme fikseerinud mitmeid juhtumeid, kus kABI \u00fchilduvuse probleemide t\u00f5ttu lakkas moodul veeamsnap t\u00f6\u00f6tamast. <\/p>\n<p>P\u00e4rast seda, kui RHEL 7.0 jaoks kokku pandud moodul veeamsnap osutus RHEL 7.5 tuumaga \u00fchilduvaks, kuid laaditi siiski sisse ja garanteeritult kukutas serveri, loobusime kABI \u00fchilduvuse kasutamisest RHEL 7 puhul t\u00e4iesti. <\/p>\n<p>Praegu sisaldab KMOD pakett RHEL 7 iga versiooni v\u00e4ljaande ja skripti, mis tagab mooduli laadimise.<\/p>\n<p>SUSE l\u00e4henes kABI \u00fchilduvuse \u00fclesandele ettevaatlikumalt. Nad tagavad kABI \u00fchilduvuse ainult \u00fche teeninduspaketi piires. <\/p>\n<p>N\u00e4iteks ilmus SLES 12 september 2014. Ja SLES 12 SP1 juba detsembris 2015, st m\u00f6\u00f6dus veidi \u00fcle aasta. Kuigi m\u00f5lemad v\u00e4ljaanded kasutavad tuuma 3.12, on nad kABI \u00fchilduvad. On selge, et kABI \u00fchilduvuse s\u00e4ilitamine ainult aasta jooksul on oluliselt lihtsam. Aasta jooksul uuendamise ts\u00fckkel ei tohiks moodulite loojaid h\u00e4irida. <\/p>\n<p>Tulemusena sellisest poliitikast SUSE, oleme oma mooduli veeamsnap osas kABI \u00fchilduvuse probleeme fikseerinud. T\u00f5si, SUSE paketid on peaaegu kordades rohkem.<\/p>\n<h2>Patchid ja tagasitootmised<\/h2>\n<p>\nKuigi jaotajad p\u00fc\u00fcavad tagada kABI \u00fchilduvust ja tuuma stabiilsust, p\u00fc\u00fcavad nad ka parandada j\u00f5udlust ja k\u00f5rvaldada vigu selle stabiilse tuuma puhul. <\/p>\n<p>Selles osas j\u00e4lgivad enterprise linuxi tuuma arendajad oma \u00abveaotsingus\u00bb vanilje tuuma muudatusi ja kantakse need \u00fcle oma \u00abstabiilsesse\u00bb.<\/p>\n<p>M\u00f5nikord toob see kaasa uusi <noindex><a rel=\"nofollow\" href=\"https:\/\/access.redhat.com\/solutions\/3658111\">vigu<\/a><\/noindex>.<\/p>\n<p>Red Hati viimases 6. v\u00e4ljaandes oli \u00fche v\u00e4iksema uuenduse t\u00f5ttu viga. See p\u00f5hjustas seda, et moodul veeamsnap garanteeritult kukutas s\u00fcsteemi, kui snapshots vabastati. V\u00f5rdlesime tuuma l\u00e4htekoode enne ja p\u00e4rast uuendust ning selgus, et k\u00f5ik oli tingitud backportist. Sarnane parandamine tehti vanilje tuuma versioonis 4.19. Ainult et vanilje tuumas t\u00f6\u00f6tas see parandamine normaalselt, kuid selle \u00fcleviimisel \u00abstabiilsesse\u00bb 2.6.32 tekkis probleem spin-lock'iga.<\/p>\n<p>Muidugi, vigu juhtub k\u00f5igil ja alati, aga kas oli t\u00f5esti m\u00f5istlik tuua kood versioonist 4.19 versiooni 2.6.32, riskides stabiilsusega?.. Ma ei ole selles kindel...<\/p>\n<p>Halvimal juhul, kui turundus t\u00f5mbab k\u00f6it \"stabiilsus\"  \"uuendamine\". Turundusosakonnale on vajalik, et uusima loodud jaotise tuum oleks stabiilne, samal ajal aga oleks parem j\u00f5udluses ja omaks uusi funktsioone. See viib kummaliste kompromissideni. <\/p>\n<p>Kui proovisin koguda moodulit tuumal 4.4 SLES 12 SP3, avastasin \u00fcllatusega, et seal on funktsioone puhtast 4.8. Minu arvates sobib SLES 12 SP3 tuuma 4.4 plokkide sisenemine rohkem kokku tuumaga 4.8 kui eelneva stabiilse 4.4 tuumaga SLES 12 SP2. Milline oli protsent 4.8 tuumast tervikuna SLES 4.4 jaoks SP3, ma ei oska \u00f6elda, aga ma ei saa seda tuuma veel stabiilseks 4.4 nimetada. <\/p>\n<p>K\u00f5ige ebameeldivam on see, et mooduli kirjutamisel, mis t\u00f6\u00f6taks \u00fchtemoodi erinevates tuumades, ei saa enam toetuda tuuma versioonile. Tuleb arvesse v\u00f5tta ka jaotust. Hea, et m\u00f5nikord saab toetuda defineeringule, mis tuleb koos uue funktsionaalsusega, kuid selline v\u00f5imalus ei ilmne alati. <\/p>\n<p>Seet\u00f5ttu kasvab kood kummaliste tingimuslike kompileerimise direktiivide hulka.<\/p>\n<p>On ka pat\u0161e, mis muudavad dokumenteeritud tuuma API-d. <br \/>\nT\u00f6rmarinimega jaotusele <noindex><a rel=\"nofollow\" href=\"https:\/\/neon.kde.org\/\">KDE neon<\/a><\/noindex> 5.16 ja olin v\u00e4ga \u00fcllatunud, n\u00e4hes, et lookup_bdev funktsiooni sissekannete nimekiri oli selles tuumas muutunud.<\/p>\n<p>Kogumise nimel pidin makefile'i lisama skripti, mis kontrollib, kas lookup_bdev funktsioonil on maski argument.<\/p>\n<h2>Tuuma moodulite allkiri<\/h2>\n<p>\nKuid naaseme pakettide levitamise k\u00fcsimuse juurde.<\/p>\n<p>\u00dcks stabiilse kABI eeliseid on see, et tuuma mooduleid saab binaarfailina allkirjastada. Sellisel juhul v\u00f5ib arendaja olla kindel, et moodul ei ole olnud juhuslikult kahjustatud ega tahtlikult muudetud. Seda saab kontrollida k\u00e4suga modinfo. <\/p>\n<p>Red Hati ja SUSE jaotused v\u00f5imaldavad mooduli allkirja kontrollida ja laadida seda ainult siis, kui s\u00fcsteemis on registreeritud vastav sertifikaat. Sertifikaat on avalik v\u00f5tme, millega moodul allkirjastatakse. Me levitame seda eraldi paketina.<\/p>\n<p>Probleem on selles, et sertifikaadid v\u00f5ivad olla kas sisse ehitatud (neid kasutavad distributsioonid) v\u00f5i peavad olema sisestatud energia s\u00f5ltumatusse EFI m\u00e4llu utiliidi kaudu. <i>mokutil<\/i>. Utiliit <i>mokutil<\/i> sertifikaadi installimisel eeldab s\u00fcsteemi taask\u00e4ivitamist ja juba enne operatsioonis\u00fcsteemi tuvastamist palub administraatoril lubada uue sertifikaadi laadimist. <\/p>\n<p>Seega, sertifikaadi lisamine n\u00f5uab administraatori f\u00fc\u00fcsilist ligip\u00e4\u00e4su s\u00fcsteemile. Kui masin asub m\u00f5nes pilves v\u00f5i lihtsalt eemal serveris ja juurdep\u00e4\u00e4s on saadaval ainult v\u00f5rgu kaudu (n\u00e4iteks ssh), ei ole sertifikaadi lisamine v\u00f5imalik. <\/p>\n<h2>EFI virtuaalmasinates<\/h2>\n<p>\nKuigi EFI-d toetavad peaaegu k\u00f5ik emaplaatide tootjad, ei pruugi s\u00fcsteemi installimisel administraator m\u00f5elda EFI vajadusele ja see v\u00f5ib olla v\u00e4lja l\u00fclitatud. <\/p>\n<p>Kuid mitte k\u00f5ik h\u00fcperviisorid ei toeta EFI-d. VMWare vSphere toetab EFI-d alates versioonist 5. <br \/>\nMicrosoft Hyper-V on samuti saanud EFI toe alates Hyper-V for Windows Server 2012R2. <\/p>\n<p>Kuid vaikimisi on see funktsioon Linuxi masinate jaoks v\u00e4lja l\u00fclitatud, mist\u00f5ttu sertifikaati ei ole v\u00f5imalik installida. <\/p>\n<p>vSphere 6.5-s saab seadistada valiku <b>Secure Boot<\/b> ainult vanas veebiliidese versioonis, mis t\u00f6\u00f6tab Flashis. HTML-5 p\u00f5hine Web UI j\u00e4\u00e4b veel alla.<\/p>\n<h2>Eksperimentaalsed distributsioonid<\/h2>\n<p>\nJa l\u00f5puks vaatame eksperimentaalsete distributsioonide ja ametliku toeta distributsioonide k\u00fcsimust. \u00dchest k\u00fcljest ei pruugi sellised distributsioonid t\u00f5sistes organisatsioonides levinud olla. Ametlikku tuge neil distributsioonidel ei ole. Seega ei saa sellise distributsiooni toodangule tehnilist tuge tagada. <\/p>\n<p>Kuid sellised distributsioonid muutuvad mugavaks platvormiks uute eksperimentaalsete lahenduste proovimiseks. N\u00e4iteks, Fedora, OpenSUSE Tumbleweed v\u00f5i Debian Unstable versioonid. Need on \u00fcsna stabiilsed. Nendes on alati uued programmiversioonid ja alati uus kernel. Aasta p\u00e4rast v\u00f5ib see eksperimentaalne funktsionaalsus ilmneda uuendatud RHEL-is, SLES-is v\u00f5i Ubuntus. <\/p>\n<p>Nii et kui eksperimentaalses distributsioonis midagi ei t\u00f6\u00f6ta, on see p\u00f5hjus probleemiga tegeleda ja see lahendada. Peame olema valmis, et see funktsionaalsus ilmub peagi kasutajate tootmisserveritesse.<\/p>\n<p>Praegu keelatud versiooni 3.0 ametlikult toetatud distribuutide nimekirja saate uurida. <noindex><a rel=\"nofollow\" href=\"https:\/\/helpcenter.veeam.com\/docs\/agentforlinux\/userguide\/system_requirements.html?ver=30\">siin<\/a><\/noindex>. Kuid tegelik distribuutide nimekiri, millega meie toode suudab t\u00f6\u00f6tada, on palju laiem.<\/p>\n<p>Isiklikult oli mul huvi katsetada OS-i \u201eElbrus\u201d. P\u00e4rast veeam paketi t\u00e4iendamist installisime meie toote ja see t\u00f6\u00f6tas. Sellest katsest kirjutasin Habr's. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/veeam\/blog\/447960\/\">artiklis<\/a><\/noindex>. <\/p>\n<p>Uute distribuutide toetamine j\u00e4tkub. Ootame versiooni 4.0 ilmumist. Peagi peaks beetaversioon v\u00e4lja tulema, nii et j\u00e4lgige meie. <noindex><a rel=\"nofollow\" href=\"https:\/\/www.veeam.com\/whats-new-linux-agent.html\">whats-new<\/a><\/noindex>!<br \/>\n<br \/>Allikas: <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.1.1 - 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\/et\/blog\/administrirovanie\/linux-mnogolikij-kak-rabotat-na-lyubom-distributive\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\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\/et\/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 on mitmekesine: kuidas t\u00f6\u00f6tada igasuguste distribuutidega | ProHoster","description":"Loo varundusrakendus.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/linux-mnogolikij-kak-rabotat-na-lyubom-distributive","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","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\/et\/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\/et\/wp-json\/wp\/v2\/posts\/38929","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=38929"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/38929\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/29206"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=38929"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=38929"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=38929"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}