{"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\/cs\/blog\/administrirovanie\/linux-mnogolikij-kak-rabotat-na-lyubom-distributive","title":{"rendered":"Linux mnohotv\u00e1rn\u00fd: jak pracovat na jak\u00e9koli distribuci","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Linux mnohotv\u00e1rn\u00fd: jak pracovat na jak\u00e9koli distribuci\" src=\"\/wp-content\/uploads\/2019\/10\/ee1aaad566204532c974a3ce8f13b915.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVytvo\u0159it aplikaci pro z\u00e1lohov\u00e1n\u00ed, kter\u00e1 funguje na jak\u00e9koli distribuci, nen\u00ed jednoduch\u00fd \u00fakol. Aby Veeam Agent for Linux fungoval na distribuc\u00edch od Red Hat 6 a Debian 6 a\u017e po OpenSUSE 15.1 a Ubuntu 19.04, je t\u0159eba vy\u0159e\u0161it \u0159adu probl\u00e9m\u016f, zejm\u00e9na s ohledem na to, \u017ee sou\u010d\u00e1st\u00ed software je modul j\u00e1dra.<\/p>\n<p>\u010cl\u00e1nek byl vytvo\u0159en na z\u00e1klad\u011b materi\u00e1l\u016f z vystoupen\u00ed na konferenci <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 nen\u00ed jen jednou z nejpopul\u00e1rn\u011bj\u0161\u00edch opera\u010dn\u00edch syst\u00e9m\u016f. V podstat\u011b je to platforma, na jej\u00edm\u017e z\u00e1klad\u011b lze vytvo\u0159it n\u011bco unik\u00e1tn\u00edho, n\u011bco vlastn\u00edho. D\u00edky tomu existuje spousta distribuc\u00ed Linuxu, kter\u00e9 se li\u0161\u00ed sadou programov\u00fdch komponent\u016f. A zde se objevuje probl\u00e9m: aby software fungoval na jak\u00e9koli distribuci, je nutn\u00e9 br\u00e1t v \u00favahu specifika ka\u017ed\u00e9 distribuce.<\/p>\n<h2>Spr\u00e1vci bal\u00ed\u010dk\u016f. .deb vs .rpm<\/h2>\n<p>\nZa\u010dn\u011bme z\u0159ejm\u00fdm probl\u00e9mem distribuce produktu pro r\u016fzn\u00e9 distribuce.<br \/>\nNejtypi\u010dt\u011bj\u0161\u00edm zp\u016fsobem distribuce softwarov\u00fdch produkt\u016f je um\u00edstit bal\u00ed\u010dek do repozit\u00e1\u0159e, aby ho vestav\u011bn\u00fd spr\u00e1vce bal\u00ed\u010dk\u016f v syst\u00e9mu mohl odtud nainstalovat.<br \/>\nNicm\u00e9n\u011b m\u00e1me dva popul\u00e1rn\u00ed form\u00e1ty bal\u00ed\u010dk\u016f: <i>rpm<\/i> a <i>deb<\/i>. To znamen\u00e1, \u017ee je t\u0159eba podporovat ka\u017ed\u00fd.<\/p>\n<p>Ve sv\u011bt\u011b deb-bal\u00ed\u010dk\u016f je \u00farove\u0148 kompatibility pozoruhodn\u00e1. Tent\u00fd\u017e bal\u00ed\u010dek se stejn\u011b dob\u0159e instaluje a funguje jak na Debian 6, tak na Ubuntu 19.04. Standardy procesu vytv\u00e1\u0159en\u00ed bal\u00ed\u010dk\u016f a pr\u00e1ce s nimi, kter\u00e9 byly zavedeny ve star\u00fdch Debianov\u00fdch distribuc\u00edch, z\u016fst\u00e1vaj\u00ed aktu\u00e1ln\u00ed tak\u00e9 v modern\u00edch Linux Mint a elementary OS. Proto pro Veeam Agent for Linux sta\u010d\u00ed jeden deb-bal\u00ed\u010dek pro ka\u017edou hardwarovou platformu.<\/p>\n<p>Naopak ve sv\u011bt\u011b rpm-bal\u00ed\u010dk\u016f jsou rozd\u00edly zna\u010dn\u00e9. Za prv\u00e9, proto, \u017ee existuj\u00ed dva zcela nez\u00e1visl\u00e9 distributo\u0159i Red Hat a SUSE, pro kter\u00e9 nen\u00ed nutn\u00e1 kompatibilita. Za druh\u00e9, tito distributo\u0159i maj\u00ed distribuce s technickou podporou a experiment\u00e1ln\u00ed. Mezi nimi tak\u00e9 nen\u00ed pot\u0159eba kompatibility. Z\u00edskali jsme, \u017ee pro el6, el7 a el8 jsou sv\u00e9 bal\u00ed\u010dky. Samostatn\u00fd bal\u00ed\u010dek pro Fedora. Bal\u00ed\u010dky pro SLES11 a 12 a samostatn\u00fd pro openSUSE. Hlavn\u00ed probl\u00e9m tkv\u00ed v z\u00e1vislostech a n\u00e1zvech bal\u00ed\u010dk\u016f. <\/p>\n<h2>Probl\u00e9m se z\u00e1vislostmi<\/h2>\n<p>\nBohu\u017eel, stejn\u00e9 bal\u00ed\u010dky se \u010dasto objevuj\u00ed pod r\u016fzn\u00fdmi n\u00e1zvy v r\u016fzn\u00fdch distribuc\u00edch. N\u00ed\u017ee je uveden ne\u00fapln\u00fd seznam z\u00e1vislost\u00ed bal\u00ed\u010dku veeam.<\/p>\n<p>Pro EL7:<br \/>\nPro 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\u016fsledku toho je seznam z\u00e1vislost\u00ed jedine\u010dn\u00fd pro distribuci. <\/p>\n<p>Hor\u0161\u00ed je, kdy\u017e se pod star\u00fdm n\u00e1zvem bal\u00ed\u010dku za\u010dne skr\u00fdvat aktualizovan\u00e1 verze. <\/p>\n<p><b>P\u0159\u00edklad:<\/b><\/p>\n<p>Ve Fedora 24 do\u0161lo k aktualizaci bal\u00ed\u010dku <i>ncurses<\/i> z verze 5 na verzi 6. N\u00e1\u0161 produkt byl sestaven pr\u00e1v\u011b s 5. verz\u00ed, aby byla zaji\u0161t\u011bna kompatibilita se star\u0161\u00edmi distribucemi. Abychom mohli pou\u017e\u00edt starou 5. verzi knihovny ve Fedora 24, museli jsme pou\u017e\u00edt bal\u00ed\u010dek <i>ncurses-compat-libs<\/i>. <\/p>\n<p>V d\u016fsledku toho se pro Fedoru objevuj\u00ed dva bal\u00ed\u010dky s r\u016fzn\u00fdmi z\u00e1vislostmi. <\/p>\n<p>D\u00e1l je to zaj\u00edmav\u011bj\u0161\u00ed. Po dal\u0161\u00edm aktualizaci distribuce bal\u00ed\u010dek <i>ncurses-compat-libs<\/i> s 5. verz\u00ed knihovny se uk\u00e1\u017ee jako nedostupn\u00fd. Pro distributora je n\u00e1ro\u010dn\u00e9 t\u00e1hnout star\u00e9 knihovny do nov\u00e9 verze distribuce. Po n\u011bjak\u00e9 dob\u011b se probl\u00e9m zopakoval i v distribuc\u00edch SUSE.<\/p>\n<p>V d\u016fsledku toho se n\u011bkter\u00e9 distribuce musely vzd\u00e1t explicitn\u00ed z\u00e1vislosti na <i>ncurses-libs<\/i>, a produkt opravit tak, aby mohl fungovat s jakoukoli verz\u00ed knihovny.<\/p>\n<p>Mimochodem, v 8. verzi Red Hat ji\u017e nen\u00ed meta-bal\u00ed\u010dek <i>python<\/i>, kter\u00fd odkazoval na star\u00fd dobr\u00fd <i>python 2.7<\/i>. Existuje <i>python2<\/i> a <i>python<\/i>3. <\/p>\n<h2>Alternativa k bal\u00ed\u010dkov\u00fdm mana\u017eer\u016fm<\/h2>\n<p>\nProbl\u00e9m se z\u00e1vislostmi je star\u00fd a ji\u017e dlouho z\u0159ejm\u00fd. Sta\u010d\u00ed si vzpomenout na Dependency hell. <br \/>\nSjednotit r\u016fzn\u00e9 knihovny a aplikace tak, aby v\u0161echny stabiln\u011b pracovaly a nekonfliktovaly \u2014 to je \u00fakol, kter\u00fd se sna\u017e\u00ed \u0159e\u0161it ka\u017ed\u00fd distributor Linuxu.<\/p>\n<p>\u00dapln\u011b jinak se tento probl\u00e9m sna\u017e\u00ed \u0159e\u0161it bal\u00ed\u010dkov\u00fd mana\u017eer <b>Snappy<\/b> od Canonical. Hlavn\u00ed my\u0161lenka: aplikace b\u011b\u017e\u00ed ve izolovan\u00e9m a od hlavn\u00edho syst\u00e9mu chr\u00e1n\u011bn\u00e9m p\u00edsku. Pokud aplikaci pot\u0159ebn\u00e9 knihovny, jsou dod\u00e1ny spole\u010dn\u011b s aplikac\u00ed.<\/p>\n<p><b>Flatpak<\/b> rovn\u011b\u017e umo\u017e\u0148uje spou\u0161t\u011bt aplikace v p\u00edsku s vyu\u017eit\u00edm Linux Containers. My\u0161lenku p\u00edsku pou\u017e\u00edv\u00e1 i <b>AppImage<\/b>.<\/p>\n<p>Tato \u0159e\u0161en\u00ed umo\u017e\u0148uj\u00ed vytvo\u0159it jeden bal\u00ed\u010dek pro jak\u00e9koli distribuce. V p\u0159\u00edpad\u011b <b>Flatpak<\/b> je instalace a spu\u0161t\u011bn\u00ed aplikace mo\u017en\u00e9 i bez v\u011bdom\u00ed administr\u00e1tora.<\/p>\n<p>Hlavn\u00ed probl\u00e9m spo\u010d\u00edv\u00e1 v tom, \u017ee ne v\u0161echny aplikace mohou fungovat v p\u00edsku. N\u011bkter\u00e9 pot\u0159ebuj\u00ed p\u0159\u00edm\u00fd p\u0159\u00edstup k platform\u011b. O modulech j\u00e1dra, kter\u00e9 jsou pevn\u011b z\u00e1visl\u00e9 na j\u00e1d\u0159e a nikterak se nehod\u00ed do koncepce p\u00edsku, ani nemluv\u00edm. <\/p>\n<p>Druh\u00fdm probl\u00e9mem je, \u017ee popul\u00e1rn\u00ed enterprise distribuce od Red Hat a SUSE dosud nepodporuj\u00ed Snappy a Flatpak. <\/p>\n<p>V souvislosti s t\u00edm nen\u00ed Veeam Agent for Linux 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\u00e1v\u011br ot\u00e1zky o spr\u00e1vci bal\u00ed\u010dk\u016f bych r\u00e1d poznamenal, \u017ee je mo\u017en\u00e9 se zcela vzd\u00e1t spr\u00e1vc\u016f bal\u00ed\u010dk\u016f a spojit do jednoho bal\u00edku spustiteln\u00e9 soubory a skript pro jejich instalaci. <\/p>\n<p>Takov\u00fd bal\u00ed\u010dek umo\u017e\u0148uje vytvo\u0159it jeden spole\u010dn\u00fd bal\u00edk pro r\u016fzn\u00e9 distribuce a platformy a prov\u00e1d\u011bt interaktivn\u00ed proces instalace s pot\u0159ebnou p\u0159izp\u016fsoben\u00ed. S takov\u00fdmi bal\u00ed\u010dky pro Linux jsem se setk\u00e1val pouze od VMware.<\/p>\n<h2>Probl\u00e9my s aktualizacemi<\/h2>\n<p>\n<img decoding=\"async\" alt=\"Linux mnohotv\u00e1rn\u00fd: jak pracovat na jak\u00e9koli distribuci\" src=\"\/wp-content\/uploads\/2019\/10\/aa14b10a434c28541574421d97807de7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nI kdy\u017e jsou v\u0161echny probl\u00e9my se z\u00e1vislostmi vy\u0159e\u0161eny, program m\u016f\u017ee fungovat odli\u0161n\u011b na stejn\u00e9 distribuci. Probl\u00e9mem jsou aktualizace.<\/p>\n<p>Existuj\u00ed 3 strategie aktualizac\u00ed:<\/p>\n<ul>\n<li>Nejjednodu\u0161\u0161\u00ed je nikdy neaktualizovat. Server je nastaven a zapomenut. Pro\u010d aktualizace, kdy\u017e v\u0161e funguje? Probl\u00e9my za\u010d\u00ednaj\u00ed p\u0159i prvn\u00edm kontaktu se z\u00e1kaznickou podporou. Tvo\u0159itel distribuce podporuje pouze aktualizovanou verzi. <\/li>\n<li>M\u016f\u017eete se spolehnout na distributora a nastavit automatick\u00e9 aktualizace. V tomto p\u0159\u00edpad\u011b je pravd\u011bpodobn\u00e9, \u017ee se z\u00e1kaznick\u00e1 podpora kontaktuje ihned po ne\u00fasp\u011b\u0161n\u00e9 aktualizaci.<\/li>\n<li>Mo\u017enost ru\u010dn\u00ed aktualizace a\u017e po otestov\u00e1n\u00ed na testovac\u00ed infrastruktu\u0159e je nejspolehliv\u011bj\u0161\u00ed, ale n\u00e1kladn\u00e1 a pracn\u00e1. Ne ka\u017ed\u00fd si to m\u016f\u017ee dovolit.<\/li>\n<\/ul>\n<p>\nProto\u017ee r\u016fzn\u00ed u\u017eivatel\u00e9 pou\u017e\u00edvaj\u00ed r\u016fzn\u00e9 strategie aktualizac\u00ed, je t\u0159eba podporovat jak nejnov\u011bj\u0161\u00ed verzi, tak v\u0161echny p\u0159edchoz\u00ed verze. To komplikuje jak proces v\u00fdvoje, tak proces testov\u00e1n\u00ed, a p\u0159id\u00e1v\u00e1 vr\u00e1sky na \u010delo z\u00e1kaznick\u00e9 podpo\u0159e.<\/p>\n<h2>R\u016fznost hardwarov\u00fdch platforem<\/h2>\n<p>\nR\u016fzn\u00e9 hardwarov\u00e9 platformy jsou probl\u00e9mem, kter\u00fd je do zna\u010dn\u00e9 m\u00edry specifick\u00fd pr\u00e1v\u011b pro nativn\u00ed k\u00f3d. Minim\u00e1ln\u011b je nutn\u00e9 sestavovat bin\u00e1rn\u00ed soubory pro ka\u017edou podporovanou platformu.<\/p>\n<p>V projektu Veeam Agent for Linux se nem\u016f\u017eeme dostat k podpo\u0159e alespo\u0148 n\u011b\u010deho takov\u00e9ho jako je RISC.<\/p>\n<p>Podrobn\u011b se na tuto ot\u00e1zku nezastav\u00edm. Jen vyzna\u010d\u00edm hlavn\u00ed probl\u00e9my: platformn\u011b z\u00e1visl\u00e9 typy, jako nap\u0159\u00edklad <code>size_t<\/code>, zarovn\u00e1n\u00ed struktur a byte order.<\/p>\n<h2>Statick\u00e9 a\/nebo dynamick\u00e9 linkov\u00e1n\u00ed<\/h2>\n<p>\n<img decoding=\"async\" alt=\"Linux mnohotv\u00e1rn\u00fd: jak pracovat na jak\u00e9koli distribuci\" src=\"\/wp-content\/uploads\/2019\/10\/dc473aad4ea0818940af7eafdbc641fd.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nAle ot\u00e1zku \u201eJak se linkovat s knihovnami \u2013 dynamicky nebo staticky?\u201c je t\u0159eba projednat.<\/p>\n<p>Obecn\u011b plat\u00ed, \u017ee aplikace C\/C++ pod Linuxem pou\u017e\u00edvaj\u00ed dynamick\u00e9 linkov\u00e1n\u00ed. To funguje skv\u011ble, pokud je aplikace sestavena speci\u00e1ln\u011b pro konkr\u00e9tn\u00ed distribuci.<\/p>\n<p>Pokud v\u0161ak c\u00edlem je pokr\u00fdt r\u016fznorod\u00e9 distribuce jedn\u00edm bin\u00e1rn\u00edm souborem, je nutn\u00e9 se orientovat na nejstar\u0161\u00ed podporovanou distribuci. Pro n\u00e1s je to Red Hat 6. Obsahuje gcc 4.4, kter\u00fd ani standard C++11 pln\u011b nepodporuje. <noindex><a rel=\"nofollow\" href=\"https:\/\/gcc.gnu.org\/projects\/cxx-status.html\">\u00fapln\u011b<\/a><\/noindex>.<\/p>\n<p>N\u00e1\u0161 projekt sestavujeme pomoc\u00ed gcc 6.3, kter\u00fd pln\u011b podporuje C++14. Samoz\u0159ejm\u011b, v takov\u00e9m p\u0159\u00edpad\u011b mus\u00edme na Red Hat 6 p\u0159ibalit knihovny libstdc++ a boost. Nejjednodu\u0161\u0161\u00ed je na n\u011b odkazovat staticky.<\/p>\n<p>Bohu\u017eel, ne se v\u0161emi knihovnami je mo\u017en\u00e9 odkazovat staticky.<\/p>\n<p>Za prv\u00e9, syst\u00e9mov\u00e9 knihovny, jako jsou <i>libfuse<\/i>, <i>libblkid<\/i> je nutn\u00e9 linkovat dynamicky, aby byla zaji\u0161t\u011bna jejich kompatibilita s j\u00e1drem a jeho moduly. <\/p>\n<p>Za druh\u00e9, existuj\u00ed specifika t\u00fdkaj\u00edc\u00ed se licenc\u00ed. <\/p>\n<p>Licence GPL v z\u00e1sad\u011b povoluje linkov\u00e1n\u00ed knihoven pouze s opensource k\u00f3dem. MIT a BSD povoluj\u00ed statick\u00e9 linkov\u00e1n\u00ed a umo\u017e\u0148uj\u00ed zahrnut\u00ed knihoven do projektu. Zat\u00edmco LGPL jaksi nebr\u00e1n\u00ed statick\u00e9mu linkov\u00e1n\u00ed, ale vy\u017eaduje poskytnut\u00ed soubor\u016f pot\u0159ebn\u00fdch pro vazbu ve\u0159ejnosti. <\/p>\n<p>Obecn\u011b pou\u017eit\u00ed dynamick\u00e9ho linkov\u00e1n\u00ed zabezpe\u010d\u00ed, \u017ee nen\u00ed t\u0159eba nic poskytovat.<\/p>\n<h2>Sestaven\u00ed aplikac\u00ed C\/C++<\/h2>\n<p>\nPro sestaven\u00ed aplikac\u00ed C\/C++ pro r\u016fzn\u00e9 platformy a distribuce sta\u010d\u00ed vybrat nebo sestavit gcc vhodn\u00e9 verze a pou\u017e\u00edt krosov\u00e9 kompil\u00e1tory pro specifick\u00e9 architektury a sestavit cel\u00fd soubor knihoven. Tato pr\u00e1ce je zcela realizovateln\u00e1, ale velmi n\u00e1ro\u010dn\u00e1. A neexistuj\u00ed \u017e\u00e1dn\u00e9 z\u00e1ruky, \u017ee vybran\u00fd kompil\u00e1tor a knihovny zajist\u00ed funk\u010dn\u00ed variantu. <\/p>\n<p>O\u010dividnou v\u00fdhodou je v\u00fdrazn\u00e9 zjednodu\u0161en\u00ed infrastruktury, proto\u017ee cel\u00fd proces sestaven\u00ed lze prov\u00e9st na jednom stroji. Nav\u00edc sta\u010d\u00ed sestavit jeden soubor bin\u00e1rn\u00edch soubor\u016f pro jednu architekturu a lze je balit do bal\u00ed\u010dk\u016f pro r\u016fzn\u00e9 distribuce. Takto jsou sestavov\u00e1ny bal\u00ed\u010dky veeam pro Veeam Agent for Linux.<\/p>\n<p>Na rozd\u00edl od t\u00e9to mo\u017enosti je mo\u017en\u00e9 jednodu\u0161e p\u0159ipravit build farmu, tedy n\u011bkolik stroj\u016f pro sestaven\u00ed. Ka\u017ed\u00fd takov\u00fd stroj zajist\u00ed kompilaci aplikace a sestaven\u00ed bal\u00ed\u010dku pro konkr\u00e9tn\u00ed distribuci a ur\u010ditou architekturu. V takov\u00e9m p\u0159\u00edpad\u011b se kompilace prov\u00e1d\u00ed n\u00e1stroji, kter\u00e9 p\u0159ipravil distributor. To znamen\u00e1, \u017ee f\u00e1ze p\u0159\u00edpravy kompil\u00e1toru a v\u00fdb\u011bru knihoven odpad\u00e1. Krom\u011b toho lze proces sestaven\u00ed snadno paralelizovat. <\/p>\n<p>Existuje v\u0161ak i nev\u00fdhoda tohoto p\u0159\u00edstupu: pro ka\u017edou distribuci v r\u00e1mci jedn\u00e9 architektury bude nutn\u00e9 sestavit sv\u016fj vlastn\u00ed soubor bin\u00e1rn\u00edch soubor\u016f. Dal\u0161\u00ed nev\u00fdhodou je, \u017ee je t\u0159eba spravovat tolik stroj\u016f, vy\u010dlenit velk\u00e9 mno\u017estv\u00ed diskov\u00e9ho prostoru a opera\u010dn\u00ed pam\u011bti. <\/p>\n<p>T\u00edmto zp\u016fsobem se sestavuj\u00ed KMOD bal\u00ed\u010dky modulu j\u00e1dra veeamsnap pro distribuce Red Hat.<\/p>\n<h2>Open Build Service<\/h2>\n<p>\nKolegov\u00e9 z SUSE se pokusili realizovat ur\u010dit\u00fd zlat\u00fd st\u0159ed v podob\u011b speci\u00e1ln\u00edho servisn\u00edho pro kompilaci aplikac\u00ed a sestaven\u00ed bal\u00ed\u010dk\u016f \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/openbuildservice.org\/\">openbuildservice<\/a><\/noindex>.<\/p>\n<p>V podstat\u011b se jedn\u00e1 o hypervizor, kter\u00fd vytv\u00e1\u0159\u00ed virtu\u00e1ln\u00ed stroj, instaluje do n\u011bj v\u0161echny pot\u0159ebn\u00e9 bal\u00ed\u010dky, prov\u00e1d\u00ed kompilaci aplikace a sestaven\u00ed bal\u00ed\u010dku v tomto izolovan\u00e9m prost\u0159ed\u00ed, po \u010dem\u017e je tento virtu\u00e1ln\u00ed stroj uvoln\u011bn.<\/p>\n<p><img decoding=\"async\" alt=\"Linux mnohotv\u00e1rn\u00fd: jak pracovat na jak\u00e9koli distribuci\" src=\"\/wp-content\/uploads\/2019\/10\/93d2a70c589a7186ecef85a7863e59e8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNapl\u00e1nova\u010d implementovan\u00fd v OpenBuildService s\u00e1m ur\u010d\u00ed, kolik virtu\u00e1ln\u00edch stroj\u016f m\u016f\u017ee spustit pro optim\u00e1ln\u00ed rychlost sestaven\u00ed bal\u00ed\u010dk\u016f. Vestav\u011bn\u00fd mechanismus podpisu s\u00e1m podep\u00ed\u0161e bal\u00ed\u010dky a um\u00edst\u00ed je do vestav\u011bn\u00e9ho repozit\u00e1\u0159e. Vestav\u011bn\u00fd syst\u00e9m verzov\u00e1n\u00ed uchov\u00e1 historii zm\u011bn a sestaven\u00ed. Sta\u010d\u00ed jednodu\u0161e p\u0159idat do tohoto syst\u00e9mu sv\u00e9 zdrojov\u00e9 k\u00f3dy. Ani server nemus\u00edte sami z\u0159izovat, m\u016f\u017eete vyu\u017e\u00edt otev\u0159en\u00fd.<\/p>\n<p>Zde je v\u0161ak probl\u00e9m: takov\u00fd kombin\u00e1tor se obt\u00ed\u017en\u011b integruje do st\u00e1vaj\u00edc\u00ed infrastruktury. Nap\u0159\u00edklad verzov\u00e1n\u00ed nen\u00ed pot\u0159eba, ji\u017e m\u00e1me sv\u016fj pro zdrojov\u00e9 k\u00f3dy. Mechanismus podpisu se li\u0161\u00ed: pou\u017e\u00edv\u00e1me speci\u00e1ln\u00ed server. Repozit\u00e1\u0159 tak\u00e9 nen\u00ed pot\u0159eba. <\/p>\n<p>Krom\u011b toho je podpora jin\u00fdch distribuc\u00ed \u2014 nap\u0159\u00edklad Red Hat \u2014 realizov\u00e1na docela skromn\u011b, co\u017e je zcela pochopiteln\u00e9.<\/p>\n<p>V\u00fdhodou tohoto servisu je rychl\u00e1 podpora dal\u0161\u00ed verze distribuce SUSE. P\u0159ed ofici\u00e1ln\u00edm ozn\u00e1men\u00edm o vyd\u00e1n\u00ed jsou pot\u0159ebn\u00e9 bal\u00ed\u010dky pro kompilaci umis\u0165ov\u00e1ny na ve\u0159ejn\u00fd repozit\u00e1\u0159. V seznamu dostupn\u00fdch distribuc\u00ed na OpenBuildService se objevuje nov\u00e1 verze. Za\u0161krtneme ji a ta se p\u0159id\u00e1 do pl\u00e1nu kompilace. T\u00edmto zp\u016fsobem je p\u0159id\u00e1n\u00ed nov\u00e9 verze distribuce prakticky na jedno kliknut\u00ed.<\/p>\n<p>V na\u0161\u00ed infrastruktu\u0159e s vyu\u017eit\u00edm OpenBuildService se shroma\u017e\u010fuje ve\u0161ker\u00e1 rozmanitost KMP bal\u00ed\u010dk\u016f modulu j\u00e1dra veeamsnap pro distribuce SUSE.<\/p>\n<p>D\u00e1le bych se cht\u011bl zam\u011b\u0159it na ot\u00e1zky specifick\u00e9 pr\u00e1v\u011b pro moduly j\u00e1dra.<\/p>\n<h2>kernel ABI<\/h2>\n<p>\nModuly j\u00e1dra Linuxu se historicky \u0161\u00ed\u0159ily ve form\u011b zdrojov\u00fdch k\u00f3d\u016f. Je to proto, \u017ee tv\u016frci j\u00e1dra se nezat\u011b\u017euj\u00ed p\u00e9\u010d\u00ed o podporu stabiln\u00edho API pro moduly j\u00e1dra, a to u\u017e v\u016fbec ne na bin\u00e1rn\u00ed \u00farovni, d\u00e1le kABI.<\/p>\n<p>Aby bylo mo\u017en\u00e9 zkompilovat modul pro vanilkov\u00e9 j\u00e1dro, jsou nezbytn\u00e9 hlavi\u010dkov\u00e9 soubory pr\u00e1v\u011b tohoto j\u00e1dra, a pracovat bude pouze na tomto j\u00e1d\u0159e. <\/p>\n<p>DKMS umo\u017e\u0148uje automatizovat proces kompilace modul\u016f p\u0159i aktualizaci j\u00e1dra. V d\u016fsledku toho u\u017eivatel\u00e9 repozit\u00e1\u0159e Debian (a jeho mnoha p\u0159\u00edbuzn\u00fdch) pou\u017e\u00edvaj\u00ed moduly j\u00e1dra bu\u010f z repozit\u00e1\u0159e distributora, nebo kompilovan\u00e9 ze zdrojov\u00fdch k\u00f3d\u016f pomoc\u00ed DKMS.<\/p>\n<p>Tato situace v\u0161ak p\u0159\u00edli\u0161 nevyhovuje Enterprise segmentu. Distributo\u0159i propriet\u00e1rn\u00edho k\u00f3du cht\u011bj\u00ed \u0161\u00ed\u0159it produkt ve form\u011b zkompilovan\u00fdch bin\u00e1rek. <\/p>\n<p>Administr\u00e1to\u0159i necht\u011bj\u00ed m\u00edt v\u00fdvojov\u00e9 n\u00e1stroje na produk\u010dn\u00edch serverech z bezpe\u010dnostn\u00edch d\u016fvod\u016f. Distributo\u0159i Enterprise Linuxu \u2014 jako Red Hat a SUSE \u2014 se rozhodli, \u017ee pro sv\u00e9 u\u017eivatele stabiln\u00ed kABI budou schopni podpo\u0159it. V d\u016fsledku toho se objevily KMOD bal\u00ed\u010dky pro Red Hat a KMP bal\u00ed\u010dky pro SUSE.<\/p>\n<p>Podstata takov\u00e9ho \u0159e\u0161en\u00ed je docela jednoduch\u00e1. Pro konkr\u00e9tn\u00ed verzi distribuce je API j\u00e1dra zmrazeno. Distributor deklaruje, \u017ee pou\u017e\u00edv\u00e1 pr\u00e1v\u011b j\u00e1dro, nap\u0159\u00edklad 3.10, a prov\u00e1d\u00ed pouze opravy a vylep\u0161en\u00ed, kter\u00e9 nijak nezasahuj\u00ed do rozhran\u00ed j\u00e1dra, a moduly zkompilovan\u00e9 pro prvn\u00ed j\u00e1dro mohou b\u00fdt pou\u017eity pro v\u0161echna n\u00e1sleduj\u00edc\u00ed bez op\u011btovn\u00e9 kompilace.<\/p>\n<p>Red Hat uv\u00e1d\u00ed, \u017ee zaji\u0161\u0165uje kABI kompatibilitu pro distribuci po celou dobu \u017eivotn\u00edho cyklu. To znamen\u00e1, \u017ee sestaven\u00fd modul pro RHEL 6.0 (vydan\u00fd v listopadu 2010) by tak\u00e9 m\u011bl fungovat na verzi 6.10 (vydan\u00e9 v \u010dervnu 2018). A to je t\u00e9m\u011b\u0159 8 let. Samoz\u0159ejm\u011b, \u017ee \u00fakol je to pom\u011brn\u011b slo\u017eit\u00fd. <br \/>\nZaznamenali jsme n\u011bkolik p\u0159\u00edpad\u016f, kdy kv\u016fli probl\u00e9m\u016fm s kABI kompatibilitou modul veeamsnap p\u0159estal fungovat. <\/p>\n<p>Pot\u00e9, co se modul veeamsnap, sestaven\u00fd pro RHEL 7.0, uk\u00e1zal jako nekompatibiln\u00ed s j\u00e1drem z RHEL 7.5, ale p\u0159itom se na\u010d\u00edtal a zaru\u010den\u011b sni\u017eoval v\u00fdkon serveru, vzdali jsme se pou\u017e\u00edv\u00e1n\u00ed kABI kompatibility pro RHEL 7 v\u016fbec. <\/p>\n<p>V sou\u010dasn\u00e9 dob\u011b KMOD bal\u00ed\u010dek pro RHEL 7 obsahuje sestaven\u00ed pro ka\u017edou verzi vyd\u00e1n\u00ed a skript, kter\u00fd zaji\u0161\u0165uje na\u010d\u00edt\u00e1n\u00ed modulu.<\/p>\n<p>SUSE k \u00faloze kABI kompatibility p\u0159istoupili opatrn\u011bji. Zaji\u0161\u0165uj\u00ed kABI kompatibilitu pouze v r\u00e1mci jednoho service packu. <\/p>\n<p>Nap\u0159\u00edklad vyd\u00e1n\u00ed SLES 12 prob\u011bhlo v z\u00e1\u0159\u00ed 2014. A SLES 12 SP1 u\u017e v prosinci 2015, tedy uplynul necel\u00fd rok. I kdy\u017e ob\u011b vyd\u00e1n\u00ed pou\u017e\u00edvaj\u00ed j\u00e1dro 3.12, nejsou kABI kompatibiln\u00ed. Je z\u0159ejm\u00e9, \u017ee udr\u017eovat kABI kompatibilitu po pouh\u00e9m roce je v\u00fdrazn\u011b jednodu\u0161\u0161\u00ed. Ro\u010dn\u00ed cyklus aktualizace j\u00e1drov\u00e9ho modulu by nem\u011bl zp\u016fsobovat probl\u00e9my tv\u016frc\u016fm modul\u016f. <\/p>\n<p>V d\u016fsledku t\u00e9to politiky SUSE jsme nezjistili \u017e\u00e1dn\u00e9 probl\u00e9my s kABI kompatibilitou u na\u0161eho modulu veeamsnap. Pravdou je, \u017ee po\u010det bal\u00ed\u010dk\u016f pro SUSE je t\u00e9m\u011b\u0159 o \u0159\u00e1d vy\u0161\u0161\u00ed.<\/p>\n<h2>Opravy a backporty<\/h2>\n<p>\nI kdy\u017e se distributo\u0159i sna\u017e\u00ed zajistit kABI kompatibilitu a stabilitu j\u00e1dra, tak\u00e9 se sna\u017e\u00ed zlep\u0161it v\u00fdkon a odstranit vady tohoto stabiln\u00edho j\u00e1dra. <\/p>\n<p>P\u0159itom krom\u011b vlastn\u00ed 'opravy chyb' v\u00fdvoj\u00e1\u0159i j\u00e1dra enterprise linux sleduj\u00ed zm\u011bny ve vanilkov\u00e9m j\u00e1d\u0159e a p\u0159en\u00e1\u0161ej\u00ed je do sv\u00e9ho 'stabiln\u00edho'.<\/p>\n<p>N\u011bkdy to vede k nov\u00fdm <noindex><a rel=\"nofollow\" href=\"https:\/\/access.redhat.com\/solutions\/3658111\">chyb\u00e1m<\/a><\/noindex>.<\/p>\n<p>V posledn\u00edm vyd\u00e1n\u00ed Red Hat 6 v jedn\u00e9 z men\u0161\u00edch aktualizac\u00ed do\u0161lo k chyb\u011b. Ta vedla k tomu, \u017ee modul veeamsnap zaru\u010den\u011b zhroucil syst\u00e9m p\u0159i uvoln\u011bn\u00ed snapshotu. Porovn\u00e1n\u00edm zdrojov\u00fdch k\u00f3d\u016f j\u00e1dra p\u0159ed a po aktualizaci jsme zjistili, \u017ee za v\u0161\u00edm byl backport. Podobn\u00fd fix byl proveden ve vanilkov\u00e9m j\u00e1d\u0159e verze 4.19. Jen\u017ee ve vanilkov\u00e9m j\u00e1d\u0159e tento fix fungoval norm\u00e1ln\u011b, zat\u00edmco p\u0159i p\u0159enosu do 'stabiln\u00edho' 2.6.32 vznikl probl\u00e9m se spin-lockem.<\/p>\n<p>Samoz\u0159ejm\u011b, chyby se objevuj\u00ed u v\u0161ech a v\u017edy, ale st\u00e1lo za to p\u0159en\u00e9st k\u00f3d z 4.19 do 2.6.32, riskovat stabilitu?.. Nejsem si jist\u00fd...<\/p>\n<p>Nejhor\u0161\u00ed je, kdy\u017e se k p\u0159etahov\u00e1n\u00ed lanem \"stabilita\" &lt;-&gt; \"modernizace\" p\u0159id\u00e1v\u00e1 marketing. Marketingov\u00e9 odd\u011blen\u00ed pot\u0159ebuje, aby j\u00e1dro aktualizovan\u00e9ho distribuce bylo stabiln\u00ed, na jedn\u00e9 stran\u011b, a z\u00e1rove\u0148 m\u011blo lep\u0161\u00ed v\u00fdkon a novou funkcionalitu. To vede k podivn\u00fdm kompromis\u016fm. <\/p>\n<p>Kdy\u017e jsem se pokusil sestavit modul na j\u00e1d\u0159e 4.4 od SLES 12 SP3, s p\u0159ekvapen\u00edm jsem zjistil v n\u011bm funk\u010dnost z vanilkov\u00e9 4.8. Podle m\u00e9ho n\u00e1zoru implementace blokov\u00e9ho vstupu\/v\u00fdstupu j\u00e1dra 4.4 od SLES 12 SP3 v\u00edce odpov\u00edd\u00e1 j\u00e1dru 4.8 ne\u017e p\u0159edchoz\u00edmu stabiln\u00edmu vyd\u00e1n\u00ed 4.4 od SLES12 SP2. Jak\u00fd byl procentu\u00e1ln\u00ed pod\u00edl p\u0159enesen\u00e9ho k\u00f3du z j\u00e1dra 4.8 do SLES-ovsk\u00e9ho 4.4 pro SP3, si netrouf\u00e1m soudit, ale \u0159\u00edkat, \u017ee j\u00e1dro je st\u00e1le stabiln\u00ed 4.4, se mi t\u011b\u017eko \u0159\u00edk\u00e1. <\/p>\n<p>Nejp\u0159\u00edjemn\u011bj\u0161\u00ed na tom je, \u017ee p\u0159i psan\u00ed modulu, kter\u00fd by fungoval stejn\u011b dob\u0159e na r\u016fzn\u00fdch j\u00e1drech, u\u017e nelze spol\u00e9hat na verzi j\u00e1dra. Je nutn\u00e9 br\u00e1t v \u00favahu i distribuci. Je dobr\u00e9, \u017ee n\u011bkdy lze vyu\u017e\u00edt definici, kter\u00e1 se objev\u00ed s novou funkcionalitou, ale tato mo\u017enost se neobjevuje v\u017edy. <\/p>\n<p>V d\u016fsledku toho k\u00f3d nab\u00edr\u00e1 podivn\u00e9 direktivy podm\u00ednkov\u00e9ho kompilace.<\/p>\n<p>Existuj\u00ed tak\u00e9 patche, kter\u00e9 m\u011bn\u00ed zdokumentovan\u00e9 API j\u00e1dra. <br \/>\nNarazil jsem na distribuci <noindex><a rel=\"nofollow\" href=\"https:\/\/neon.kde.org\/\">KDE neon<\/a><\/noindex> 5.16 a byl jsem velmi p\u0159ekvapen, kdy\u017e jsem vid\u011bl, \u017ee vol\u00e1n\u00ed lookup_bdev v t\u00e9to verzi j\u00e1dra zm\u011bnilo seznam vstupn\u00edch parametr\u016f.<\/p>\n<p>Abych to sestavil, musel jsem do makefile p\u0159idat skript, kter\u00fd kontroluje, zda m\u00e1 funkce lookup_bdev parametr mask.<\/p>\n<h2>Podpis modul\u016f j\u00e1dra<\/h2>\n<p>\nAle vra\u0165me se k ot\u00e1zce distribuce bal\u00ed\u010dk\u016f.<\/p>\n<p>Jednou z v\u00fdhod stabiln\u00edho kABI je, \u017ee moduly j\u00e1dra ve form\u011b bin\u00e1rn\u00edho souboru mohou b\u00fdt podeps\u00e1ny. V tomto p\u0159\u00edpad\u011b si v\u00fdvoj\u00e1\u0159 m\u016f\u017ee b\u00fdt jist\u00fd, \u017ee modul nebyl n\u00e1hodn\u011b po\u0161kozen nebo \u00famysln\u011b zm\u011bn\u011bn. Ov\u011b\u0159it to lze p\u0159\u00edkazem modinfo. <\/p>\n<p>Distribuce Red Hat a SUSE umo\u017e\u0148uj\u00ed ov\u011b\u0159it podpis modulu a na\u010d\u00edst jej, pouze pokud je v syst\u00e9mu registrov\u00e1n odpov\u00eddaj\u00edc\u00ed certifik\u00e1t. Certifik\u00e1t je ve\u0159ejn\u00fd kl\u00ed\u010d, kter\u00fdm se modul podepisuje. Distribuujeme ho jako samostatn\u00fd bal\u00ed\u010dek.<\/p>\n<p>Probl\u00e9m je v tom, \u017ee certifik\u00e1ty mohou b\u00fdt bu\u010f integrovan\u00e9 v j\u00e1d\u0159e (pou\u017e\u00edvaj\u00ed je distributo\u0159i), nebo mus\u00ed b\u00fdt zaps\u00e1ny do nevolatiln\u00ed pam\u011bti EFI pomoc\u00ed utilit. <i>mokutil<\/i>. N\u00e1stroj <i>mokutil<\/i> p\u0159i instalaci certifik\u00e1tu \u017e\u00e1d\u00e1 o restartov\u00e1n\u00ed syst\u00e9mu a je\u0161t\u011b p\u0159ed spu\u0161t\u011bn\u00edm j\u00e1dra opera\u010dn\u00edho syst\u00e9mu nab\u00edz\u00ed administr\u00e1torovi povolit na\u010dten\u00ed nov\u00e9ho certifik\u00e1tu. <\/p>\n<p>Tak\u017ee p\u0159id\u00e1n\u00ed certifik\u00e1tu vy\u017eaduje fyzick\u00fd p\u0159\u00edstup administr\u00e1tora k syst\u00e9mu. Pokud je stroj um\u00edst\u011bn v cloudu nebo jen v vzd\u00e1len\u00e9m serveru a p\u0159\u00edstup je pouze p\u0159es s\u00ed\u0165 (nap\u0159\u00edklad p\u0159es ssh), bude p\u0159id\u00e1n\u00ed certifik\u00e1tu nemo\u017en\u00e9. <\/p>\n<h2>EFI na virtu\u00e1ln\u00edch stroj\u00edch<\/h2>\n<p>\nI kdy\u017e je EFI podporov\u00e1no prakticky v\u0161emi v\u00fdrobci z\u00e1kladn\u00edch desek, m\u016f\u017ee si administr\u00e1tor p\u0159i instalaci syst\u00e9mu neuv\u011bdomit pot\u0159ebu EFI, a ten m\u016f\u017ee b\u00fdt vypnut. <\/p>\n<p>Ne v\u0161ichni hypervizory podporuj\u00ed EFI. VMWare vSphere podporuje EFI od verze 5. <br \/>\nMicrosoft Hyper-V tak\u00e9 z\u00edskal podporu EFI po\u010d\u00ednaje Hyper-V pro Windows Server 2012R2. <\/p>\n<p>Ve v\u00fdchoz\u00ed konfiguraci je v\u0161ak tato funkce pro Linux stroje vypnut\u00e1, co\u017e znamen\u00e1, \u017ee certifik\u00e1t nelze nainstalovat. <\/p>\n<p>Ve vSphere 6.5 je mo\u017enost <b>Secure Boot<\/b> mo\u017eno nastavit pouze ve star\u00e9 verzi webov\u00e9ho rozhran\u00ed, kter\u00e9 funguje p\u0159es Flash. Webov\u00e9 UI na HTML-5 se zat\u00edm zna\u010dn\u011b opozdilo.<\/p>\n<h2>Experiment\u00e1ln\u00ed distribuce<\/h2>\n<p>\nA nakonec se pod\u00edv\u00e1me na ot\u00e1zku experiment\u00e1ln\u00edch distribuc\u00ed a distribuc\u00ed bez ofici\u00e1ln\u00ed podpory. Na jedn\u00e9 stran\u011b se takov\u00e9 distribuce t\u011b\u017eko nach\u00e1zej\u00ed na serverech v\u00e1\u017en\u00fdch organizac\u00ed. Tyto distribuce nemaj\u00ed ofici\u00e1ln\u00ed podporu. Proto nelze zaji\u0161\u0165ovat technickou podporu produktu na takov\u00e9 distribuci. <\/p>\n<p>Tyto distribuce v\u0161ak st\u00e1le v\u00edce slou\u017e\u00ed jako pohodln\u00e1 platforma pro vyzkou\u0161en\u00ed nov\u00fdch experiment\u00e1ln\u00edch \u0159e\u0161en\u00ed. Nap\u0159\u00edklad Fedora, OpenSUSE Tumbleweed nebo nestabiln\u00ed verze Debiana. Jsou pom\u011brn\u011b stabiln\u00ed. V\u017edy obsahuj\u00ed nov\u00e9 verze program\u016f a nov\u00e9 j\u00e1dro. Za rok se tato experiment\u00e1ln\u00ed funkce m\u016f\u017ee objevit ve vylep\u0161en\u00e9 verzi RHEL, SLES nebo Ubuntu. <\/p>\n<p>Tak\u017ee pokud n\u011bco nefunguje na experiment\u00e1ln\u00ed distribuci \u2014 je to d\u016fvod k tomu, abyste se zab\u00fdvali probl\u00e9mem a vy\u0159e\u0161ili ho. Je t\u0159eba b\u00fdt p\u0159ipraven na to, \u017ee tato funkce se brzy objev\u00ed na produk\u010dn\u00edch serverech u\u017eivatel\u016f.<\/p>\n<p>Aktu\u00e1ln\u00ed seznam ofici\u00e1ln\u011b podporovan\u00fdch distribuc\u00ed pro verzi 3.0 si m\u016f\u017eete prohl\u00e9dnout <noindex><a rel=\"nofollow\" href=\"https:\/\/helpcenter.veeam.com\/docs\/agentforlinux\/userguide\/system_requirements.html?ver=30\">zde<\/a><\/noindex>. Skute\u010dn\u00fd seznam distribuc\u00ed, na kter\u00fdch n\u00e1\u0161 produkt dok\u00e1\u017ee fungovat, je v\u0161ak mnohem \u0161ir\u0161\u00ed.<\/p>\n<p>Osobn\u011b m\u011b zaj\u00edmal experiment s OS \"Elbrus\". Po \u00faprav\u011b bal\u00ed\u010dku veeam se n\u00e1\u0161 produkt nainstaloval a za\u010dal fungovat. O tomto experimentu jsem psal na Habr v <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/veeam\/blog\/447960\/\">\u010dl\u00e1nku<\/a><\/noindex>. <\/p>\n<p>Podpora nov\u00fdch distribuc\u00ed pokra\u010duje. O\u010dek\u00e1v\u00e1me vyd\u00e1n\u00ed verze 4.0. Beta by m\u011bla b\u00fdt co nevid\u011bt, 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.3 - 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\/cs\/blog\/administrirovanie\/linux-mnogolikij-kak-rabotat-na-lyubom-distributive\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\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\/cs\/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 mnohotv\u00e1rn\u00fd: jak pracovat na jak\u00e9koli distribuci | ProHoster","description":"Vytvo\u0159it aplikaci pro z\u00e1lohov\u00e1n\u00ed.","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/linux-mnogolikij-kak-rabotat-na-lyubom-distributive","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","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\/cs\/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\/cs\/wp-json\/wp\/v2\/posts\/38929","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=38929"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/38929\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media\/29206"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=38929"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=38929"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=38929"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}