{"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\/sk\/blog\/administrirovanie\/linux-mnogolikij-kak-rabotat-na-lyubom-distributive","title":{"rendered":"Linux m\u00e1 mnoho tv\u00e1r\u00ed: ako pracova\u0165 na akomko\u013evek distrib\u00facii","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Linux m\u00e1 mnoho tv\u00e1r\u00ed: ako pracova\u0165 na akomko\u013evek distrib\u00facii\" src=\"\/wp-content\/uploads\/2019\/10\/ee1aaad566204532c974a3ce8f13b915.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVytvorenie aplik\u00e1cie na z\u00e1lohovanie, ktor\u00e1 funguje na akomko\u013evek distribu\u010dnom syst\u00e9me, nie je jednoduch\u00e1 \u00faloha. Na zabezpe\u010denie funkcie Veeam Agent for Linux na distrib\u00faci\u00e1ch od Red Hat 6 a Debian 6 a\u017e po OpenSUSE 15.1 a Ubuntu 19.04 je potrebn\u00e9 vyrie\u0161i\u0165 mno\u017estvo probl\u00e9mov, najm\u00e4 ak vezmeme do \u00favahy, \u017ee produkt obsahuje modul jadra.<\/p>\n<p>\u010cl\u00e1nok bol vytvoren\u00fd na z\u00e1klade materi\u00e1lov z prezent\u00e1cie na konferencii <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 nie je len jedna z najpopul\u00e1rnej\u0161\u00edch opera\u010dn\u00fdch syst\u00e9mov. V podstate ide o platformu, na ktorej m\u00f4\u017eete vytvori\u0165 nie\u010do jedine\u010dn\u00e9, nie\u010do vlastn\u00e9. V\u010faka tomu existuje mno\u017estvo distrib\u00faci\u00ed Linuxu, ktor\u00e9 sa l\u00ed\u0161ia sadou programov\u00fdch komponentov. A tu vznik\u00e1 probl\u00e9m: aby produkt fungoval na akejko\u013evek distrib\u00facii, je potrebn\u00e9 zoh\u013eadni\u0165 \u0161pecifik\u00e1 ka\u017edej.<\/p>\n<h2>Spr\u00e1vca bal\u00edkov: .deb vs .rpm<\/h2>\n<p>\nZa\u010dneme s jasn\u00fdm probl\u00e9mom distrib\u00facie produktu pre r\u00f4zne distrib\u00facie.<br \/>\nNajtypickej\u0161\u00ed sp\u00f4sob distrib\u00facie softv\u00e9rov\u00fdch produktov je ulo\u017eenie bal\u00edka do repozit\u00e1ra, aby ho mohol integrovan\u00fd spr\u00e1vca bal\u00edkov syst\u00e9mu odtia\u013e nain\u0161talova\u0165.<br \/>\nExistuj\u00fa v\u0161ak dva popul\u00e1rne form\u00e1ty bal\u00edkov: <i>rpm<\/i> a <i>deb<\/i>. Znamen\u00e1 to, \u017ee budeme musie\u0165 podporova\u0165 ka\u017ed\u00fd.<\/p>\n<p>Vo svete deb-balen\u00ed je \u00farove\u0148 kompatibility ohromuj\u00faca. Ten ist\u00fd bal\u00edk sa rovnako dobre in\u0161taluje a funguje ako na Debian 6, tak aj na Ubuntu 19.04. Normy procesu vytv\u00e1rania bal\u00edkov a pr\u00e1ce s nimi, zaveden\u00e9 v star\u0161\u00edch Debian distrib\u00faci\u00e1ch, zost\u00e1vaj\u00fa relevantn\u00e9 aj v modern\u00fdch Linux Mint a elementary OS. Preto v pr\u00edpade Veeam Agent for Linux sta\u010d\u00ed jeden deb-balik pre ka\u017ed\u00fa hardv\u00e9rov\u00fa platformu.<\/p>\n<p>V oblasti rpm-balen\u00ed s\u00fa rozdiely zna\u010dn\u00e9. Po prv\u00e9, preto\u017ee existuj\u00fa dvaja \u00faplne nez\u00e1visl\u00ed distrib\u00fatori Red Hat a SUSE, medzi ktor\u00fdmi nie je potrebn\u00e1 \u017eiadna kompatibilita. Po druh\u00e9, obaja maj\u00fa distrib\u00facie s technickou podporou a experiment\u00e1lne. Medzi nimi tie\u017e nie je potrebn\u00e1 kompatibilita. M\u00e1me teda bal\u00edky pre el6, el7 a el8. Samostatne bal\u00edk pre Fedoru. Bal\u00edky pre SLES11 a 12 a samostatn\u00fd bal\u00edk pre openSUSE. Hlavn\u00fdm probl\u00e9mom s\u00fa z\u00e1vislosti a n\u00e1zvy bal\u00edkov. <\/p>\n<h2>Probl\u00e9m so z\u00e1vislos\u0165ami<\/h2>\n<p>\nBohu\u017eia\u013e, tie ist\u00e9 bal\u00edky sa \u010dasto nach\u00e1dzaj\u00fa pod r\u00f4znymi n\u00e1zvami v r\u00f4znych distrib\u00faci\u00e1ch. Ni\u017e\u0161ie je ne\u00fapln\u00fd zoznam z\u00e1vislost\u00ed bal\u00edka veeam.<\/p>\n<p>Pre EL7:<br \/>\nPre 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>\nV d\u00f4sledku toho je zoznam z\u00e1vislost\u00ed jedine\u010dn\u00fd pre distrib\u00faciu. <\/p>\n<p>Hor\u0161ie je, ke\u010f sa pod star\u00fdm menom bal\u00edka za\u010dne skr\u00fdva\u0165 aktualizovan\u00e1 verzia. <\/p>\n<p><b>Pr\u00edklad:<\/b><\/p>\n<p>Vo Fedore 24 sa aktualizoval bal\u00edk <i>ncurses<\/i> z verzie 5 na verziu 6. N\u00e1\u0161 produkt bol zostaven\u00fd presne s verziou 5, aby sa zabezpe\u010dila kompatibilita so star\u00fdmi distrib\u00faciami. Aby bolo mo\u017en\u00e9 vyu\u017ei\u0165 star\u00fa verziu 5 kni\u017enice na Fedoru 24, bolo potrebn\u00e9 pou\u017ei\u0165 bal\u00edk <i>ncurses-compat-libs<\/i>. <\/p>\n<p>V d\u00f4sledku toho pre Fedoru vznikaj\u00fa dva bal\u00edky s r\u00f4znymi z\u00e1vislos\u0165ami. <\/p>\n<p>\u010ealej je to zauj\u00edmavej\u0161ie. Po \u010fal\u0161ej aktualiz\u00e1cii distrib\u00facie je bal\u00edk <i>ncurses-compat-libs<\/i> s verziou 5 kni\u017enice nedostupn\u00fd. Pre distrib\u00fatora je n\u00e1kladn\u00e9 pren\u00e1\u0161a\u0165 star\u00e9 kni\u017enice do novej verzie distrib\u00facie. Po \u010dase sa probl\u00e9m op\u00e4\u0165 objavil aj v distrib\u00faci\u00e1ch SUSE.<\/p>\n<p>V d\u00f4sledku toho sa niektor\u00e9 distrib\u00facie museli vzda\u0165 explicitnej z\u00e1vislosti od <i>ncurses-libs<\/i>, a produkt bolo potrebn\u00e9 opravi\u0165 tak, aby mohol fungova\u0165 s akouko\u013evek verziou kni\u017enice.<\/p>\n<p>Mimochodom, v 8. verzii Red Hat u\u017e nie je meta-bal\u00edk <i>python<\/i>, ktor\u00fd odkazoval na star\u00fd dobr\u00fd <i>python 2.7<\/i>. Existuje <i>python2<\/i> a <i>python<\/i>3. <\/p>\n<h2>Alternat\u00edva k bal\u00edkov\u00fdm mana\u017e\u00e9rom<\/h2>\n<p>\nProbl\u00e9m so z\u00e1vislos\u0165ami je star\u00fd a d\u00e1vno o\u010dividn\u00fd. Spome\u0148me si len na Dependency hell. <br \/>\nSpoji\u0165 r\u00f4zne kni\u017enice a aplik\u00e1cie tak, aby v\u0161etky stabilne fungovali a nekolidovali \u2013 to je \u00faloha, ktor\u00fa sa sna\u017e\u00ed rie\u0161i\u0165 ka\u017ed\u00fd distrib\u00fator Linuxu.<\/p>\n<p>\u00daplne inak sa sna\u017e\u00ed tento probl\u00e9m rie\u0161i\u0165 bal\u00edkov\u00fd mana\u017e\u00e9r <b>Snappy<\/b> od Canonical. Hlavn\u00e1 my\u0161lienka: aplik\u00e1cia sa vykon\u00e1va v izolovanej a chr\u00e1nenej pieskovici od hlavn\u00e9ho syst\u00e9mu. Ak aplik\u00e1cii potrebn\u00e9 kni\u017enice, dod\u00e1vaj\u00fa sa spolu s aplik\u00e1ciou.<\/p>\n<p><b>Flatpak<\/b> tie\u017e umo\u017e\u0148uje sp\u00fa\u0161\u0165a\u0165 aplik\u00e1cie v pieskovici, pomocou Linux Containers. My\u0161lienku pieskovice vyu\u017e\u00edva aj <b>AppImage<\/b>.<\/p>\n<p>Tieto rie\u0161enia umo\u017e\u0148uj\u00fa vytv\u00e1ra\u0165 jeden bal\u00edk pre ak\u00e9ko\u013evek distrib\u00facie. V pr\u00edpade s <b>Flatpak<\/b> in\u0161tal\u00e1cia a spustenie aplik\u00e1cie je mo\u017en\u00e9 aj bez vedomia administr\u00e1tora.<\/p>\n<p>Hlavn\u00fd probl\u00e9m spo\u010d\u00edva v tom, \u017ee nie v\u0161etky aplik\u00e1cie m\u00f4\u017eu fungova\u0165 v pieskovici. Niektor\u00fdm je potrebn\u00fd priamy pr\u00edstup k platforme. O modulov jadra, ktor\u00e9 pevne z\u00e1visia od jadra a nijako sa nehodia do konceptu pieskovice, ani nehovor\u00edm. <\/p>\n<p>Druh\u00fd probl\u00e9m \u2013 popul\u00e1rne distrib\u00facie v enterprise prostred\u00ed od Red Hat a SUSE e\u0161te nepodporuj\u00fa Snappy a Flatpak. <\/p>\n<p>S oh\u013eadom na to, Veeam Agent for Linux nie je ani na <noindex><a rel=\"nofollow\" href=\"https:\/\/snapcraft.io\/\">snapcraft.io<\/a><\/noindex> ani na <noindex><a rel=\"nofollow\" href=\"https:\/\/flathub.org\/home\">flathub.org<\/a><\/noindex>.<\/p>\n<p>Na z\u00e1ver ot\u00e1zky o bal\u00edkov\u00fdch mana\u017e\u00e9roch poznam, \u017ee existuje mo\u017enos\u0165 vzda\u0165 sa bal\u00edkov\u00fdch mana\u017e\u00e9rov a zl\u00fa\u010di\u0165 do jedn\u00e9ho bal\u00edka bin\u00e1rne s\u00fabory a skript na ich in\u0161tal\u00e1ciu. <\/p>\n<p>Tak\u00fd bundle umo\u017e\u0148uje vytvori\u0165 jeden spolo\u010dn\u00fd bal\u00edk pre r\u00f4zne distrib\u00facie a platformy, vykon\u00e1va\u0165 interakt\u00edvny proces in\u0161tal\u00e1cie a zabezpe\u010di\u0165 potrebn\u00fa prisp\u00f4sobenie. S tak\u00fdmi bal\u00edkmi pre Linux som sa stretol len od VMware.<\/p>\n<h2>Probl\u00e9m s aktualiz\u00e1ciami<\/h2>\n<p>\n<img decoding=\"async\" alt=\"Linux m\u00e1 mnoho tv\u00e1r\u00ed: ako pracova\u0165 na akomko\u013evek distrib\u00facii\" src=\"\/wp-content\/uploads\/2019\/10\/aa14b10a434c28541574421d97807de7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nAj ke\u010f s\u00fa v\u0161etky probl\u00e9my so z\u00e1vislos\u0165ami vyrie\u0161en\u00e9, program m\u00f4\u017ee fungova\u0165 r\u00f4zne na tej istej distrib\u00facii. Ide o aktualiz\u00e1cie.<\/p>\n<p>Existuj\u00fa 3 strat\u00e9gie aktualiz\u00e1cie:<\/p>\n<ul>\n<li>Najjednoduch\u0161ie je nikdy neaktualizova\u0165. Nastavil si server a zabudol. Pre\u010do aktualiz\u00e1cie, ak v\u0161etko funguje? Probl\u00e9my za\u010d\u00ednaj\u00fa s prv\u00fdm telefon\u00e1tom na technick\u00fa podporu. V\u00fdrobca distrib\u00facie podporuje len aktualizovan\u00fa verziu. <\/li>\n<li>M\u00f4\u017ee\u0161 d\u00f4verova\u0165 distrib\u00fatorovi a nastavi\u0165 automatick\u00e9 aktualiz\u00e1cie. V tomto pr\u00edpade je pravdepodobn\u00e9, \u017ee zavol\u00e1\u0161 na technick\u00fa podporu hne\u010f po ne\u00faspe\u0161nej aktualiz\u00e1cii.<\/li>\n<li>Mo\u017enos\u0165 manu\u00e1lnej aktualiz\u00e1cie len po jej otestovan\u00ed na testovacej infra\u0161trukt\u00fare je najistej\u0161ia, ale aj najn\u00e1kladnej\u0161ia a najpr\u00e1cnej\u0161ia. Nielen\u017ee to nie ka\u017ed\u00fd zvl\u00e1dne, ale aj nie ka\u017ed\u00fd si to m\u00f4\u017ee dovoli\u0165.<\/li>\n<\/ul>\n<p>\nKe\u010f\u017ee r\u00f4zni pou\u017e\u00edvatelia pou\u017e\u00edvaj\u00fa r\u00f4zne strat\u00e9gie aktualiz\u00e1cie, je potrebn\u00e9 podporova\u0165 najnov\u0161ie vydanie aj v\u0161etky predch\u00e1dzaj\u00face. To komplikuje proces v\u00fdvoja aj testovania a prid\u00e1va starosti technickej podpore.<\/p>\n<h2>R\u00f4znorodos\u0165 hardv\u00e9rov\u00fdch platforiem<\/h2>\n<p>\nR\u00f4zne hardv\u00e9rov\u00e9 platformy s\u00fa probl\u00e9m, ktor\u00fd je do ve\u013ekej miery \u0161pecifick\u00fd pre nat\u00edvny k\u00f3d. Minim\u00e1lne je potrebn\u00e9 zostavi\u0165 bin\u00e1rne s\u00fabory pre ka\u017ed\u00fa podporovan\u00fa platformu.<\/p>\n<p>V projekte Veeam Agent for Linux sa st\u00e1le nedok\u00e1\u017eeme podpori\u0165 aspo\u0148 nie\u010do RISC-ov\u00e9.<\/p>\n<p>Podrobne sa tejto ot\u00e1zke nezastav\u00edm. Ozna\u010d\u00edm len hlavn\u00e9 probl\u00e9my: platformovo z\u00e1visl\u00e9 typy ako <code>size_t<\/code>, zarovnanie \u0161trukt\u00far a byte order.<\/p>\n<h2>Statick\u00e1 a\/alebo dynamick\u00e1 linkovanie<\/h2>\n<p>\n<img decoding=\"async\" alt=\"Linux m\u00e1 mnoho tv\u00e1r\u00ed: ako pracova\u0165 na akomko\u013evek distrib\u00facii\" src=\"\/wp-content\/uploads\/2019\/10\/dc473aad4ea0818940af7eafdbc641fd.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nOt\u00e1zka \u201eAko sa linkova\u0165 s kni\u017enicami \u2014 dynamicky alebo staticky?\u201c si zasl\u00fa\u017ei diskusiu.<\/p>\n<p>Zvy\u010dajne aplik\u00e1cie C\/C++ pod Linuxom pou\u017e\u00edvaj\u00fa dynamick\u00e9 prepojenie. To skvele funguje, ak je aplik\u00e1cia zostaven\u00e1 \u0161peci\u00e1lne pre konkr\u00e9tny distrib\u00faciu.<\/p>\n<p>Ak je v\u0161ak cie\u013eom pokry\u0165 r\u00f4zne distrib\u00facie jedn\u00fdm bin\u00e1rnym s\u00faborom, je potrebn\u00e9 orientova\u0165 sa na najstar\u0161iu podporovan\u00fa distrib\u00faciu. Pre n\u00e1s je to Red Hat 6. Obsahuje gcc 4.4, ktor\u00fd dokonca nepodporuje \u0161tandard C++11. <noindex><a rel=\"nofollow\" href=\"https:\/\/gcc.gnu.org\/projects\/cxx-status.html\">\u00faplne<\/a><\/noindex>.<\/p>\n<p>N\u00e1\u0161 projekt zostavujeme pomocou gcc 6.3, ktor\u00fd plne podporuje C++14. Pri takom pr\u00edpade mus\u00edme samozrejme so sebou vzia\u0165 kni\u017enice libstdc++ a boost. Najjednoduch\u0161ie je prepojova\u0165 sa s nimi staticky.<\/p>\n<p>Bohu\u017eia\u013e, nie so v\u0161etk\u00fdmi kni\u017enicami je mo\u017en\u00e9 prepojova\u0165 sa staticky.<\/p>\n<p>Po prv\u00e9, syst\u00e9mov\u00e9 kni\u017enice, ako s\u00fa <i>libfuse<\/i>, <i>libblkid<\/i> je potrebn\u00e9 prepojova\u0165 dynamicky, aby sme mali istotu, \u017ee bud\u00fa kompatibiln\u00e9 s jadrom a jeho modulmi. <\/p>\n<p>Po druh\u00e9, existuje nuance s licenciami. <\/p>\n<p>Licencia GPL v z\u00e1sade povo\u013euje prepojenie kni\u017en\u00edc len s opensource k\u00f3dom. MIT a BSD povo\u013euj\u00fa statick\u00e9 prepojenie a umo\u017e\u0148uj\u00fa zahrn\u00fa\u0165 kni\u017enice do projektu. A LGPL sa zdanlivo neprotire\u010d\u00ed statick\u00e9mu prepojeniu, ale vy\u017eaduje, aby boli spr\u00edstupnen\u00e9 s\u00fabory potrebn\u00e9 na prepojenie. <\/p>\n<p>V\u0161eobecne povedan\u00e9, pou\u017e\u00edvanie dynamick\u00e9ho prepojenia ochr\u00e1ni pred nutnos\u0165ou nie\u010do poskytova\u0165.<\/p>\n<h2>Zostavenie aplik\u00e1ci\u00ed C\/C++<\/h2>\n<p>\nNa zostavenie aplik\u00e1ci\u00ed C\/C++ pre r\u00f4zne platformy a distrib\u00facie sta\u010d\u00ed vybra\u0165 alebo zostavi\u0165 gcc vhodnej verzie a vyu\u017ei\u0165 kr\u00ed\u017eov\u00e9 kompil\u00e1tory pre \u0161pecifick\u00e9 architekt\u00fary, zostavi\u0165 cel\u00fd s\u00fabor kni\u017en\u00edc. Pr\u00e1ca je to realizovate\u013en\u00e1, ale dos\u0165 n\u00e1ro\u010dn\u00e1. A nie s\u00fa \u017eiadne z\u00e1ruky, \u017ee zvolen\u00fd kompil\u00e1tor a kni\u017enice zabezpe\u010dia funk\u010dn\u00fd variant. <\/p>\n<p>Zrejmou v\u00fdhodou je: zna\u010dne sa zjednodu\u0161uje infra\u0161trukt\u00fara, preto\u017ee cel\u00fd proces zostavenia je mo\u017en\u00e9 vykona\u0165 na jednom stroji. Okrem toho sta\u010d\u00ed zostavi\u0165 jeden s\u00fabor bin\u00e1rnych s\u00faborov pre jednu architekt\u00faru a m\u00f4\u017eeme ich zabali\u0165 do bal\u00edkov pre r\u00f4zne distrib\u00facie. Presne tak sa zbieraj\u00fa bal\u00edky veeam pre Veeam Agent for Linux.<\/p>\n<p>Na rozdiel od tohto pr\u00edstupu je mo\u017en\u00e9 jednoducho pripravi\u0165 build farmu, teda nieko\u013eko strojov na zostavovanie. Ka\u017ed\u00fd tak\u00fdto stroj zabezpe\u010d\u00ed kompil\u00e1ciu aplik\u00e1cie a zostavenie bal\u00edka pre konkr\u00e9tny distribu\u010dn\u00fd syst\u00e9m a ur\u010dit\u00fa architekt\u00faru. V takom pr\u00edpade prebieha kompil\u00e1cia prostredn\u00edctvom n\u00e1strojov, ktor\u00e9 pripravil distrib\u00fator. T\u00fdm sa vynech\u00e1 etapa pr\u00edpravy kompil\u00e1tora a v\u00fdber kni\u017en\u00edc. Okrem toho je proces zostavovania mo\u017en\u00e9 \u013eahko paralelizova\u0165. <\/p>\n<p>Existuje v\u0161ak aj nev\u00fdhoda tohto pr\u00edstupu: pre ka\u017ed\u00fd distribu\u010dn\u00fd syst\u00e9m v r\u00e1mci jednej architekt\u00fary bude potrebn\u00e9 zostavi\u0165 vlastn\u00fd s\u00fabor bin\u00e1rnych s\u00faborov. \u010eal\u0161ou nev\u00fdhodou je, \u017ee tak\u00fd po\u010det strojov je potrebn\u00e9 spravova\u0165, vy\u017eaduje to ve\u013ek\u00e9 mno\u017estvo diskov\u00e9ho priestoru a opera\u010dnej pam\u00e4te. <\/p>\n<p>Takto sa zostavuj\u00fa KMOD bal\u00edky modulu jadra veeamsnap pre distribu\u010dn\u00e9 syst\u00e9my Red Hat.<\/p>\n<h2>Open Build Service<\/h2>\n<p>\nKolegovia zo SUSE sa pok\u00fasili implementova\u0165 ak\u00fdsi zlat\u00fd stred v podobe \u0161peci\u00e1lnej slu\u017eby na kompil\u00e1ciu aplik\u00e1ci\u00ed a zostavovanie bal\u00edkov \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/openbuildservice.org\/\">openbuildservice<\/a><\/noindex>.<\/p>\n<p>V podstate ide o hyperv\u00edzor, ktor\u00fd vytv\u00e1ra virtu\u00e1lny stroj, in\u0161taluje do\u0148 v\u0161etky potrebn\u00e9 bal\u00edky, vykon\u00e1va kompil\u00e1ciu aplik\u00e1cie a zostavuje bal\u00edk v tomto izolovanom prostred\u00ed, po \u010dom je tak\u00fdto virtu\u00e1lny stroj uvo\u013enen\u00fd.<\/p>\n<p><img decoding=\"async\" alt=\"Linux m\u00e1 mnoho tv\u00e1r\u00ed: ako pracova\u0165 na akomko\u013evek distrib\u00facii\" src=\"\/wp-content\/uploads\/2019\/10\/93d2a70c589a7186ecef85a7863e59e8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPl\u00e1nova\u010d implementovan\u00fd v OpenBuildService s\u00e1m ur\u010d\u00ed, ko\u013eko virtu\u00e1lnych strojov m\u00f4\u017ee spusti\u0165 pre optim\u00e1lnu r\u00fdchlos\u0165 zostavovania bal\u00edkov. Vstavan\u00fd mechanizmus podpisovania s\u00e1m podp\u00ed\u0161e bal\u00edky a umiestni ich na vstavan\u00fd repozit\u00e1r. Vstavan\u00fd syst\u00e9m verziovania zachov\u00e1 hist\u00f3riu zmien a zostavenia. Zost\u00e1va len prida\u0165 do tohto syst\u00e9mu svoje zdrojov\u00e9 k\u00f3dy. Dokonca nemus\u00edte sami zria\u010fova\u0165 server, m\u00f4\u017eete vyu\u017ei\u0165 otvoren\u00fd.<\/p>\n<p>Tu v\u0161ak existuje probl\u00e9m: tak\u00fdto kombajn sa \u0165a\u017eko integruje do existuj\u00facej infra\u0161trukt\u00fary. Napr\u00edklad verzionovanie nie je potrebn\u00e9, u\u017e m\u00e1me vlastn\u00fd pre zdrojov\u00e9 k\u00f3dy. Mechanizmus podpisovania sa odli\u0161uje: pou\u017e\u00edva sa \u0161peci\u00e1lny server. Repozit\u00e1r tie\u017e nie je potrebn\u00fd. <\/p>\n<p>Okrem toho je podpora in\u00fdch distribu\u010dn\u00fdch syst\u00e9mov \u2014 napr\u00edklad Red Hat \u2014 realizovan\u00e1 dos\u0165 chabo, \u010do je \u00faplne pochopite\u013en\u00e9.<\/p>\n<p>V\u00fdhodou tejto slu\u017eby je r\u00fdchla podpora novej verzie distrib\u00facie SUSE. Pred ofici\u00e1lnym ozn\u00e1men\u00edm o vydan\u00ed s\u00fa potrebn\u00e9 bal\u00ed\u010dky na zostavenie zverejnen\u00e9 na verejnom repozit\u00e1ri. V zozname dostupn\u00fdch distrib\u00faci\u00ed na OpenBuildService sa objav\u00ed nov\u00fd. Za\u0161krtneme pol\u00ed\u010dko a ten sa prid\u00e1 do pl\u00e1nu zostavenia. Takto je pridanie novej verzie distrib\u00facie vykonan\u00e9 takmer jedn\u00fdm kliknut\u00edm.<\/p>\n<p>V na\u0161ej infra\u0161trukt\u00fare sa pomocou OpenBuildService zostavuje v\u0161etka rozmanitos\u0165 KMP bal\u00edkov modulu jadra veeamsnap pre distrib\u00facie SUSE.<\/p>\n<p>\u010ealej by som sa chcel zamera\u0165 na ot\u00e1zky, ktor\u00e9 s\u00fa \u0161pecifick\u00e9 pr\u00e1ve pre moduly jadra.<\/p>\n<h2>kernel ABI<\/h2>\n<p>\nModuly jadra Linuxu sa historicky distribuovali vo forme zdrojov\u00fdch k\u00f3dov. Ide o to, \u017ee tvorcovia jadra sa nezam\u00fd\u0161\u013eaj\u00fa nad podporou stabiln\u00e9ho API pre moduly jadra, nieto e\u0161te na bin\u00e1rnej \u00farovni, \u010falej kABI.<\/p>\n<p>Na zostavenie modulu pre vanilkov\u00fd jadro s\u00fa nevyhnutn\u00e9 hlavi\u010dkov\u00e9 s\u00fabory pr\u00e1ve tohto jadra a bude fungova\u0165 iba na tomto jadre. <\/p>\n<p>DKMS umo\u017e\u0148uje automatizova\u0165 proces zostavovania modulov pri aktualiz\u00e1cii jadra. V d\u00f4sledku toho pou\u017e\u00edvatelia repozit\u00e1ra Debian (a jeho po\u010detn\u00fdch pr\u00edbuzn\u00fdch) pou\u017e\u00edvaj\u00fa moduly jadra bu\u010f z repozit\u00e1rov distrib\u00fatora, alebo zostaven\u00e9 zo zdrojov pomocou DKMS.<\/p>\n<p>Av\u0161ak tak\u00e1to situ\u00e1cia nie je ve\u013emi uspokojiv\u00e1 pre segment Enterprise. Distrib\u00fatori propriet\u00e1rneho k\u00f3du chc\u00fa distribuova\u0165 produkt vo forme zostaven\u00fdch bin\u00e1rnych s\u00faborov. <\/p>\n<p>Spr\u00e1vcovia nechc\u00fa dr\u017ea\u0165 v\u00fdvojov\u00e9 n\u00e1stroje na produk\u010dn\u00fdch serveroch z bezpe\u010dnostn\u00fdch d\u00f4vodov. Distrib\u00fatori Enterprise Linuxu \u2013 ako Red Hat a SUSE \u2013 sa rozhodli, \u017ee pre svojich pou\u017e\u00edvate\u013eov bud\u00fa schopn\u00ed podporova\u0165 stabiln\u00e9 kABI. V d\u00f4sledku toho sa objavili bal\u00edky KMOD pre Red Hat a KMP bal\u00edky pre SUSE.<\/p>\n<p>Podstata tohto rie\u0161enia je ve\u013emi jednoduch\u00e1. Pre konkr\u00e9tnu verziu distrib\u00facie sa API jadra zmrazuje. Distrib\u00fator vyhlasuje, \u017ee pou\u017e\u00edva pr\u00e1ve jadro, napr\u00edklad 3.10, a vykon\u00e1va iba opravy a vylep\u0161enia, ktor\u00e9 nijako neovplyv\u0148uj\u00fa rozhrania jadra, a moduly zostaven\u00e9 pre najstar\u0161ie jadro m\u00f4\u017eu by\u0165 pou\u017eit\u00e9 pre v\u0161etky nasleduj\u00face bez potreby recompil\u00e1cie.<\/p>\n<p>Red Hat uv\u00e1dzaj\u00fa, \u017ee kABI kompatibilita pre distrib\u00faciu zost\u00e1va zachovan\u00e1 po\u010das cel\u00e9ho \u017eivotn\u00e9ho cyklu. To znamen\u00e1, \u017ee zostaven\u00fd modul pre RHEL 6.0 (vydanie v novembri 2010) by mal fungova\u0165 aj vo verzii 6.10 (vydanie v j\u00fani 2018). A to je takmer 8 rokov. Samozrejme, \u00faloha je dos\u0165 zlo\u017eit\u00e1. <br \/>\nZaznamenali sme nieko\u013eko pr\u00edpadov, ke\u010f kv\u00f4li probl\u00e9mom s kABI kompatibilitou modul veeamsnap prestal fungova\u0165. <\/p>\n<p>Po tom, \u010do sa modul veeamsnap, zostaven\u00fd pre RHEL 7.0, uk\u00e1zal ako nekompatibiln\u00fd s jadrom z RHEL 7.5, ale pritom sa na\u010d\u00edtaval a zaru\u010dene sp\u00f4soboval p\u00e1d servera, sme \u00faplne upustili od pou\u017e\u00edvania kABI kompatibility pre RHEL 7. <\/p>\n<p>V s\u00fa\u010dasnosti KMOD bal\u00edk pre RHEL 7 obsahuje zostavovanie pre ka\u017ed\u00fa verziu vydania a skript, ktor\u00fd zabezpe\u010duje na\u010d\u00edtanie modulu.<\/p>\n<p>SUSE k \u00falohe kABI kompatibility pristupovali opatrnej\u0161ie. Zabezpe\u010duj\u00fa kABI kompatibilitu len v r\u00e1mci jedn\u00e9ho service pack. <\/p>\n<p>Napr\u00edklad vydanie SLES 12 sa uskuto\u010dnilo v septembri 2014. A SLES 12 SP1 u\u017e v decembri 2015, \u010di\u017ee uplynulo len o nie\u010do viac ako rok. Napriek tomu, \u017ee obidve vydania pou\u017e\u00edvaj\u00fa jadro 3.12, s\u00fa kABI nekompatibiln\u00e9. Je zrejm\u00e9, \u017ee udr\u017eiava\u0165 kABI kompatibilitu po dobu len jedn\u00e9ho roka je v\u00fdrazne jednoduch\u0161ie. Ro\u010dn\u00fd cyklus aktualiz\u00e1cie modulu jadra by nemal sp\u00f4sobova\u0165 probl\u00e9my tvorcom modulov. <\/p>\n<p>V d\u00f4sledku takejto politiky SUSE sme nezaznamenali \u017eiadny probl\u00e9m s kABI kompatibilitou n\u00e1\u0161ho modulu veeamsnap. Pravda, aj po\u010det bal\u00edkov pre SUSE je takmer o poriadok v\u00e4\u010d\u0161\u00ed.<\/p>\n<h2>Opravy a b backporty<\/h2>\n<p>\nNapriek tomu, \u017ee distrib\u00fatori sa sna\u017eia zabezpe\u010di\u0165 kABI kompatibilitu a stabilitu jadra, sna\u017eia sa aj zlep\u0161i\u0165 v\u00fdkon a odstr\u00e1ni\u0165 nedostatky tohto stabiln\u00e9ho jadra. <\/p>\n<p>Pritom okrem vlastnej \u201epr\u00e1ce na chyb\u00e1ch\u201c v\u00fdvoj\u00e1ri jadra enterprise linux sleduj\u00fa zmeny vo vanilkovom jadre a pren\u00e1\u0161aj\u00fa ich do svojho \u201estabiln\u00e9ho\u201c.<\/p>\n<p>Niekedy to vedie k nov\u00fdm <noindex><a rel=\"nofollow\" href=\"https:\/\/access.redhat.com\/solutions\/3658111\">chyb\u00e1m<\/a><\/noindex>.<\/p>\n<p>V poslednom vydan\u00ed Red Hat 6 v jednom z drobn\u00fdch aktualiz\u00e1ci\u00ed do\u0161lo k chybe. Viedla k tomu, \u017ee modul veeamsnap zaru\u010dene sp\u00f4soboval p\u00e1d syst\u00e9mu pri uvo\u013enen\u00ed sn\u00edmky. Porovnan\u00edm zdrojov\u00fdch textov jadra pred a po aktualiz\u00e1cii sme zistili, \u017ee za v\u0161etk\u00fdm bol backport. Podobn\u00e1 oprava bola vykonan\u00e1 vo vanilkovom jadre verzie 4.19. Len\u017ee v vanilkovom jadre t\u00e1to oprava fungovala norm\u00e1lne, zatia\u013e \u010do pri prenose do \u201estabiln\u00e9ho\u201c 2.6.32 vznikol probl\u00e9m so spin-locking.<\/p>\n<p>Samozrejme, chyby sa vyskytuj\u00fa u v\u0161etk\u00fdch a v\u017edy, ale st\u00e1lo za to pren\u00e1\u0161a\u0165 k\u00f3d z 4.19 do 2.6.32, riskuj\u00fac stabilitu?.. Nie som si ist\u00fd...<\/p>\n<p>Najhor\u0161ie je, ke\u010f sa k \u0165ahaniu lanom \u201estabilita\u201c\u201emoderniz\u00e1cia\u201c prid\u00e1va marketing. Oddelenie marketingu potrebuje, aby jadro aktualizovan\u00e9ho distribu\u010dn\u00e9ho bal\u00edka bolo stabiln\u00e9, na jednej strane, a z\u00e1rove\u0148 aby bolo lep\u0161ie z h\u013eadiska v\u00fdkonu a malo nov\u00e9 funkcie. To vedie k zvl\u00e1\u0161tnym kompromisom. <\/p>\n<p>Ke\u010f som sa pok\u00fasil zostavi\u0165 modul na jadre 4.4 od SLES 12 SP3, prekvapene som zistil, \u017ee obsahuje funk\u010dnos\u0165 z vanilkov\u00e9ho 4.8. Pod\u013ea m\u00f4jho n\u00e1zoru realiz\u00e1cia blokov\u00e9ho vstupu\/v\u00fdstupu jadra 4.4 od SLES 12 SP3 sa viac podob\u00e1 na jadro 4.8 ne\u017e na predch\u00e1dzaj\u00face vydanie stabiln\u00e9ho 4.4 jadra od SLES12 SP2. Ko\u013eko percent k\u00f3du bolo prenesen\u00fdch z jadra 4.8 do SLES-ovsk\u00e9ho 4.4 pre SP3, to pos\u00fadi\u0165 neberiem, ale nazva\u0165 jadro op\u00e4\u0165 stabiln\u00fdm 4.4 sa mi naozaj nep\u00e1\u010di. <\/p>\n<p>Najnepr\u00edjemnej\u0161ie na tom je, \u017ee pri p\u00edsan\u00ed modulu, ktor\u00fd by fungoval rovnako dobre na r\u00f4znych jadr\u00e1ch, sa u\u017e ned\u00e1 spo\u013eahn\u00fa\u0165 na verziu jadra. Mus\u00ed sa tie\u017e zoh\u013eadni\u0165 distrib\u00facia. Dobre, \u017ee niekedy m\u00f4\u017ee\u0161 sa spoji\u0165 s define, ktor\u00fd sa objav\u00ed spolu s novou funk\u010dnos\u0165ou, ale t\u00e1to mo\u017enos\u0165 sa neobjavuje v\u017edy. <\/p>\n<p>V d\u00f4sledku toho k\u00f3d z\u00edska \u010dudn\u00e9 direkt\u00edvy podmiene\u010dnej kompil\u00e1cie.<\/p>\n<p>Vyskytuj\u00fa sa aj patche, ktor\u00e9 menia zdokumentovan\u00e9 API jadra. <br \/>\nNarazil som na distrib\u00faciu <noindex><a rel=\"nofollow\" href=\"https:\/\/neon.kde.org\/\">KDE neon<\/a><\/noindex> 5.16 a bol som ve\u013emi prekvapen\u00fd, ke\u010f som videl, \u017ee volanie lookup_bdev v tejto verzii jadra zmenilo poradie vstupn\u00fdch parametrov.<\/p>\n<p>Aby sa to mohlo zostavi\u0165, musel som do makefile prida\u0165 skript, ktor\u00fd kontroluje, \u010di je parameter mask pri funkcii lookup_bdev.<\/p>\n<h2>Podpis modulov jadra<\/h2>\n<p>\nAle vr\u00e1\u0165me sa k ot\u00e1zke distrib\u00facie bal\u00edkov.<\/p>\n<p>Jednou z v\u00fdhod stabiln\u00e9ho kABI je to, \u017ee moduly jadra vo forme bin\u00e1rneho s\u00faboru m\u00f4\u017eu by\u0165 podp\u00edsan\u00e9. V tomto pr\u00edpade si m\u00f4\u017ee by\u0165 v\u00fdvoj\u00e1r ist\u00fd, \u017ee modul nebol n\u00e1hodne po\u0161koden\u00fd alebo \u00famyselne zmenen\u00fd. M\u00f4\u017ee\u0161 to skontrolova\u0165 pr\u00edkazom modinfo. <\/p>\n<p>Distrib\u00facie Red Hat a SUSE umo\u017e\u0148uj\u00fa kontrolova\u0165 podpis modulu a na\u010d\u00edta\u0165 ho iba vtedy, ak je v syst\u00e9me registrovan\u00fd pr\u00edslu\u0161n\u00fd certifik\u00e1t. Certifik\u00e1t je verejn\u00fd k\u013e\u00fa\u010d, ktor\u00fdm sa modul podpisuje. \u0160\u00edri sa vo forme samostatn\u00e9ho bal\u00edka.<\/p>\n<p>Probl\u00e9m je v tom, \u017ee certifik\u00e1ty m\u00f4\u017eu by\u0165 bu\u010f zabudovan\u00e9 v jadre (pou\u017e\u00edvaj\u00fa ich distrib\u00fatori), alebo musia by\u0165 zap\u00edsan\u00e9 do nevolatilnej pam\u00e4te EFI pomocou util\u00edt. <i>mokutil<\/i>. N\u00e1stroj <i>mokutil<\/i> pri in\u0161tal\u00e1cii certifik\u00e1tu vy\u017eaduje re\u0161tart syst\u00e9mu a e\u0161te pred na\u010d\u00edtan\u00edm jadra opera\u010dn\u00e9ho syst\u00e9mu pon\u00faka spr\u00e1vcovi povoli\u0165 na\u010d\u00edtanie nov\u00e9ho certifik\u00e1tu. <\/p>\n<p>T\u00fdm p\u00e1dom pridanie certifik\u00e1tu vy\u017eaduje fyzick\u00fd pr\u00edstup spr\u00e1vcu k syst\u00e9mu. Ak je stroj umiestnen\u00fd niekde v cloude alebo len na vzdialenom serveri a pr\u00edstup je iba cez sie\u0165 (napr\u00edklad cez ssh), nebude mo\u017en\u00e9 prida\u0165 certifik\u00e1t. <\/p>\n<h2>EFI na virtu\u00e1lnych strojoch<\/h2>\n<p>\nNapriek tomu, \u017ee u\u017e d\u00e1vno EFI podporuje takmer v\u0161etci v\u00fdrobcovia z\u00e1kladn\u00fdch dosiek, pri in\u0161tal\u00e1cii syst\u00e9mu si spr\u00e1vca nemus\u00ed uvedomi\u0165 potrebu EFI a m\u00f4\u017ee by\u0165 vypnut\u00e9. <\/p>\n<p>Nie v\u0161etky hyperv\u00edzory podporuj\u00fa EFI. VMWare vSphere podporuje EFI od verzie 5. <br \/>\nMicrosoft Hyper-V tie\u017e z\u00edskal podporu EFI, po\u010dn\u00fac Hyper-V pre Windows Server 2012R2. <\/p>\n<p>Av\u0161ak v predvolenej konfigur\u00e1cii je t\u00e1to funkcia pre Linux stroje vypnut\u00e1, a preto certifik\u00e1t nie je mo\u017en\u00e9 nain\u0161talova\u0165. <\/p>\n<p>Vo vSphere 6.5 je mo\u017en\u00e9 nastavi\u0165 mo\u017enos\u0165 <b>Secure Boot<\/b> iba v star\u0161ej verzii webov\u00e9ho rozhrania, ktor\u00e9 funguje cez Flash. Webov\u00e9 rozhranie na HTML-5 zatia\u013e zaost\u00e1va.<\/p>\n<h2>Experiment\u00e1lne distrib\u00facie<\/h2>\n<p>\nA nakoniec sa pozrime na ot\u00e1zku experiment\u00e1lnych distrib\u00faci\u00ed a distrib\u00faci\u00ed bez ofici\u00e1lnej podpory. Na jednej strane tak\u00e9to distrib\u00facie sotva naraz\u00edte na serveroch v\u00e1\u017enych organiz\u00e1ci\u00ed. Ofici\u00e1lnu podporu tak\u00e9to distrib\u00facie nemaj\u00fa. Preto tie\u017e nie je mo\u017en\u00e9 poskytova\u0165 technick\u00fa podporu produktu na tak\u00fdchto distrib\u00faci\u00e1ch. <\/p>\n<p>Av\u0161ak tak\u00e9to distrib\u00facie sa st\u00e1vaj\u00fa pohodlnou platformou na vysk\u00fa\u0161anie nov\u00fdch experiment\u00e1lnych rie\u0161en\u00ed. Napr\u00edklad Fedora, OpenSUSE Tumbleweed alebo Unstable verzie Debiana. S\u00fa pomerne stabiln\u00e9. V\u017edy obsahuj\u00fa nov\u00e9 verzie programov a v\u017edy nov\u00e9 jadro. O rok m\u00f4\u017ee by\u0165 t\u00e1to experiment\u00e1lna funkcia zahrnut\u00e1 v aktualizovanom RHEL, SLES alebo Ubuntu. <\/p>\n<p>Tak\u017ee ak nie\u010do nefunguje na experiment\u00e1lnej distrib\u00facii \u2014 je to d\u00f4vod na presk\u00famanie probl\u00e9mu a jeho rie\u0161enie. Je potrebn\u00e9 by\u0165 pripraven\u00fd na to, \u017ee t\u00e1to funkcia sa \u010doskoro objav\u00ed na production serveroch pou\u017e\u00edvate\u013eov.<\/p>\n<p>Aktu\u00e1lny zoznam ofici\u00e1lne podporovan\u00fdch distrib\u00faci\u00ed pre verziu 3.0 si m\u00f4\u017eete prezrie\u0165 <noindex><a rel=\"nofollow\" href=\"https:\/\/helpcenter.veeam.com\/docs\/agentforlinux\/userguide\/system_requirements.html?ver=30\">tu<\/a><\/noindex>. Av\u0161ak skuto\u010dn\u00fd zoznam distrib\u00faci\u00ed, na ktor\u00fdch n\u00e1\u0161 produkt dok\u00e1\u017ee fungova\u0165, je ove\u013ea \u0161ir\u0161\u00ed.<\/p>\n<p>Osobne ma zauj\u00edmal experiment s OS \u00abElbrus\u00bb. Po \u00faprave bal\u00edka Veeam sa n\u00e1\u0161 produkt nain\u0161taloval a fungoval. O tomto experimente som p\u00edsal na Habre v <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/veeam\/blog\/447960\/\">\u010dl\u00e1nku<\/a><\/noindex>. <\/p>\n<p>Podpora nov\u00fdch distrib\u00faci\u00ed pokra\u010duje. O\u010dak\u00e1vame pr\u00edchod verzie 4.0. Beta verzia by sa mala \u010doskoro objavi\u0165, tak sledujte <noindex><a rel=\"nofollow\" href=\"https:\/\/www.veeam.com\/whats-new-linux-agent.html\">whats-new<\/a><\/noindex>!<br \/>\n<br \/>Zdroj: <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\/sk\/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=\"sk_SK\" \/>\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\/sk\/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 m\u00e1 mnoho pod\u00f4b: ako pracova\u0165 na akejko\u013evek distrib\u00facii | ProHoster","description":"Vytvori\u0165 aplik\u00e1ciu na z\u00e1lohovanie.","canonical_url":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/linux-mnogolikij-kak-rabotat-na-lyubom-distributive","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sk_SK","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\/sk\/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\/sk\/wp-json\/wp\/v2\/posts\/38929","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/comments?post=38929"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/38929\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media\/29206"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media?parent=38929"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/categories?post=38929"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/tags?post=38929"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}