OpenBSD vs. NetBSD – velké srovnání

Petr Topiarz 22. 8. 2016

O OpenBSD a NetBSD má běžný linuxák většinou povědomí, ale často nemá úplný přehled. Proto se možná bude hodit jedna podrobná recenze přímo z pera dlouholetého BSD uživatele.

Když si dnešní uživatel Linuxu spustí instalátor OpenBSD nebo NetBSD, vrátí ho to do devadesátých let Linuxu a vybaví se mu slovo Slackware. OpenBSD a NetBSD ale nejsou systémy, které zakrsly před dvaceti lety, jejich vývoj je trochu jiný než vývoj Linuxu. Zatímco linuxové distribuce se kromě podpory serverů v mnohém specializují na desktop a přidávají bleskový start nebo grafický instalátor, BSD systémy se soustředí daleko více na serverové použití.

Vybral jsem ze tří nejrozšířenějších BSD právě OpenBSD a NetBSD, protože je denně používám. Ačkoli se OpenBSD cca před dvaceti lety právě z NetBSD odštěpilo, postupně odbouralo mnoho z původního společného a zavedlo obrovské množství inovací a změn. Ačkoli ABI obou kernelů je stále velmi podobné, kompatibilní není dokonce ani souborový systém. Ale pojďme po pořádku hezky od píky až po úplné finesy.

Vývojářská komunita

OpenBSD a NetBSD jsou open source a jejich vývojáři jsou přes e-mail a vývojářská fóra dostupní. Pokud zápasíte s nějakou těžkostí, můžete se na ně přímo obrátit. A už tady jsem zaznamenal rozdíl. Když oslovíte NetBSD, vždycky vám rychle a slušně odpovědí a buďto to spraví časem (na opravu DBUSu jsem čekal přes rok), nebo to zařadí do úkolů, které je třeba udělat. Když oslovíte OpenBSD, buďto to vývojáře nezajímá, takže vám vůbec neodpovědí, ani si neotevřou hlášení s chybou, anebo je to zajímá, a pak to začnou řešit okamžitě (na opravu ovladačů pro svou tiskárnu se skenerem jsem čekal dva dny a během té doby jsme vyzkoušeli asi tři úpravy).

Za zmínku také stojí organizace vývojářů, NetBSD bych velmi volně připodobnil k Debianu: porozumění a demokracie především. Kdybych měl k něčemu připodobnit OpenBSD, napadá mě nejspíše Apple nebo Canonical, protože Theo de Raadt prostě rozhodne a tak to je. Jedním dechem je třeba dodat, že rozhoduje rychle a velmi často (samozřejmě ale ne vždy) správně.

Tempo a stabilita vývoje

Ačkoli nedisponuji přesnými čísly, výsledek je takový, že NetBSD spíše udržuje svou aktivitu v připojování různých absurdních architektur (Raspberry PI, Chromebooky) a co se týká zavádění novinek, celkově postupuje kupředu pomalu. OpenBSD je pravý opak. Je to takový kanadský tygr, který každý rok chrlí nové zajímavé programy a démony, které často ovlivní celý open-source svět. Asi netřeba jmenovat OpenSSH, Packet Filter firewall, nebo v posledních letech LibreSSL.

Vydání, údržba a updaty

OpenBSD vychází co půl roku ve vydáních číslovaných 5.7, 5.8, 5.9, 6.0, 6.1 atd., ovšem změny mezi jednotlivými verzemi jsou často znatelné a není rozdílu mezi upgradem z 5.8 na 5.9 nebo 5.9 na 6.0. Majoritní a minoritní verze neexistují. Bezpečnostní updaty vycházejí jen daného půl roku. Přitom přechod z jedné verze na druhou je poměrně snadný, pokud člověk čte poznámky k vydání. Dalo by se skoro říci, že se jedná o jednu verzi s nekonečným počtem updatů. Problém je, že mezi jednotlivými verzemi občas dojde k ukončení podpory nějaké technologie, jako se to stalo se starým raidem nebo s linuxovou emulací. Máte-li nějakou technologii, která na dané aplikaci nebo funkcionalitě závisí, jste v pěkné bryndě. V poslední době do toho všeho vstoupila firma M:Tier, která poskytuje podporu pro každé vydání na rok zdarma nebo dva roky placeně. Poskytuje také bezpečnostní aktualizace pro binární balíčky, což do nedávna v OpenBSD neexistovalo. Tato firma zaměstnává velkou část zásadních vývojářů OpenBSD, takže údržba je na výši.

NetBSD vychází v déle udržovaných vydáních. Velké změny se dějí mezi vydáním 5.x, 6.x a 7.x, malé změny a opravy potom ve vydáních jako 7.0, 7.1, 7.2. To ale není vše, navíc ještě každá minoritní verze má svou větev „stable“, což znamená, že nemusíte ze 7.0 upgradovat na 7.1, ale můžete stále běžet na 7.0 a aplikovat bezpečnostní aktualizace vycházející formou zdrojového kódu, což je při počtu podporovaných architektur pochopitelné.

Upgrade mezi jednotlivými verzemi NetBSD i OpenBSD je možný s použitím instalačních CD, pomocí rozbalení instalačních balíků (ručně za běhu počítače), nebo pomocí aktualizace zdrojového kódu. Pro zavedení nového kernelu netřeba nic víc než starý kernel přepsat novým. Navíc OpenBSD má jednu sympatickou zvláštnost, tou je upgradovací kernel bsd.rd, který po bootu umožní upgrade jako by běžel z CD.

Vypadá to tedy tak, že NetBSD poskytuje stable verze s dlouhou podporou, zatímco OpenBSD ne. Existuje ale také opačný pohled na věc: jsou lidé, kteří tvrdí, že OpenBSD je vlastně rolling release, že každý rok probíhá malý upgrade, kterým vše rychle projde, máte pořád nasazené nejnovější verze software a neobáváte se přechodu s obrovskými změnami, jakým je například přechod z CentOS 6 na CentOS 7.

Disklabel a souborový systém

Oba systémy používají modifikovaný Unix file system známý pod zkratkou FFS, nebo také původně UFS, přičemž oba systémy používají jak FFSv1, tak FFSv2. Souborový systém FFSv2 se v OpenBSD doporučuje pouze pro disky nad 2 TB. FFSv2 v NetBSD obsahuje navíc možnost žurnálování technologií WAPBL. Tu jsem osobně vyzkoušel, a zatímco na rotačních discích exceluje, na SSD má určité problémy. Obecně při instalaci na média nad 2 TB potřebujete v obou systémech dělat určité nestandardní kroky. Například v OpenBSD musíte u disklabelu vypnout limit a v NetBSD je to ještě složitější: v podstatě musíte systém dát na menší disk, na větším disku nastavit GPT, zformátovat ho a pak větší disk připojit. Pokud to už někdo vymyslel elegantněji, dejte mi vědět, budu moc rád.

Když už mluvím o disklabelu, připomenu těm, kdo se s ním nesetkali, že disklabel je vlastně určitá popisovací tabulka disku, která spoluexistuje s MS-DOS tabulkou a určuje názvy a velikosti oddílů disku. Funguje to tak, že systém umístíte na jeden MS-DOS oddíl a pak si uděláte až 15 primárních oddílů v disklabelu. Pozor, disklabel vidí i mimo oddíl, na které je nahrán systém. Je to zkrátka trochu složité a rozhodně to není obdoba extended oddílů v Linuxu.

Ačkoli OpenBSD a NetBSD používají téměř identické nástroje, identické verze těchto nástrojů a souborové systémy, není možné navzájem připojit disky druhého systému. Člověk by skoro řekl, že si to dělají „naschvál“.

Kernel a architektury

Na rozdíl od Linuxu a FreeBSD jsou kernely NetBSD a OpenBSD v podstatě monolitické. Existovaly sice LKM, ale v NetBSD už se prakticky nepoužívají (snad jen k zavedení Packet filteru) a v OpenBSD LKM v předposledním vydání vyřadili úplně. V NetBSD musíte a můžete při vyžadované změně konfigurace kernel prostě upravit a překompilovat ze zdroje. V OpenBSD se rekompilace kernelu nedoporučuje, a pokud vývojáři zjistí, že používáte vlastní kompilaci kernelu, vůbec se s vámi nebaví a na případnou zaslanou otázku nebo chybové hlášení vůbec nereagují. Zajímavostí v OpenBSD je ovšem program, nebo snad funkce, „config“, která umožňuje konfigurovat už binární zkompilovaný kernel. Můžete povolovat a zakazovat různá zařízení a funkcionality, což ústí ve funkčnost velmi podobnou nahrávání a zakazování modulů v Linuxu.

OpenBSD podporuje následující architektury: alpha, amd64, armv7, hppa, i386, landisk, loongson, luna88k, macppc, octeon, sgi, socppc, sparc, sparc64, zaurus (nedávno vyřadilo VAXy). To není špatný seznam. Ovšem NetBSD se úplně vyžívá v podpoře všeho, co se dá nazvat procesorem, a následující seznam je ohromující: TIER1: amd64, evbarm, evbmips, evbppc, hpcarm, i386, sparc64, xen. TIER2: acorn32, algor, alpha, amiga, amigappc, arc, atari, bebox, cats, cesfic, cobalt, dreamcast emips, epoc32, evbsh3, ews4800mips, hp300, hppa, hpcmips, hpcsh, ia64, ibmnws, iyonix, landisk, luna68k, mac68k, macppc, mipsco, mmeye, mvme68k, mvmeppc, netwinder, news68k, newsmips, next68k, ofppc, pmax, prep, rs6000, sandpoint, sbmips, sgimips, shark, sparc, sun2, sun3, vax, x68k, zaurus. Tier1 znamená skupinu, na kterou se NetBSD zaměřuje a aktivně podporuje, Tier2 znamená, že architektury mají podporu, ale netestuje se s takovým nasazením.

Takže pokud náhodou vlastníte třeba Raspberry Pi, hádejte, který z těchto dvou systémů na něm spustíte? OpenBSD samozřejmě vydalo vtipně prohlášení, že binární bloby nepodporuje, a Raspberry Pi buď otevře kód ovladače grafického čipu, nebo žádná svatba nebude.

Uživatelské prostředí (userland)

Na rozdíl od Linuxu rozlišují všechna BSD jednoznačně mezi základním systémem (kernel a hromada programů, které se distribuují jako vydání OpenBSD nebo NetBSD) na jedné straně, a uživatelským prostředím na straně druhé. V OpenBSD jsou to balíčky vyrobené pouze pro OpenBSD, v NetBSD je to napříč systémy používaný systém PKGSRC. Rozdíl je nejen v systému, ale i v užívání. OpenBSD porty jsou vždy vydány pro jednu konkrétní verzi OpenBSD (např. pro 5.9). Aktuální vydání PKGSRC můžete používat s NetBSD 6×, NetBSD 7× a stejně tak i s vývojářskou verzí NetBSD 8 (head). A zatímco v OpenBSD každého půl roku musíte upgradovat nejen základní systém, ale i všechny balíčky, tak v NetBSD můžete upgradovat co tři měsíce, nebo si naopak můžete držet pořád původní verzi balíčků a upgradovat pomocí cvs jen jednotlivé aplikace v PKGSRC v případě, že je to z bezpečnostních (nebo jiných závažných) důvodů třeba. Aby to nevypadalo, že NetBSD je tady samá výhoda, je také fér zmínit, že zatímco balíčky pro OpenBSD jsou z 99 % vždy v pořádku, tak v NetBSD se tak nejméně 10 % (často i více) prostě nezkompiluje a chce to trochu hackingu na jednoduché úrovni (zase se toho spoustu naučíte).

Balíčkovací systém

Začnu historicky. Všechna BSD, když jsem je začal v počítačovém pravěku používat, používala systém pkg_add (a to včetně FreeBSD). To ale bylo v dobách, kdy dokonce i Mat Dillon, který dnes vynalézá Hammer v DragonflyBSD, tou dobou ještě byl loajálním FreeBSD vývojářem. Dnes už zůstal systém pkg_add pouze na OpenBSD, které jen vylepšilo jeho funkcionalitu.

FreeBSD používá nové pkg a NetBSD používá pkgin. Všechny tyto nástroje jsou srovnatelné, vydalo by to na celý článek, takže jen uvedu, že po přidání repozitáře do konfiguračního souboru můžete dělat obdobné věci jako pomocí apt nebo yumu. Například lze vyhledávat, instalovat a odebírat se závislostmi poměrně pohodlně a velmi spolehlivě. Tyto nástroje (na rozdíl od pravěkého pkg_add) napřed balíčky stáhnou a zkontrolují a teprve následně je nainstalují, pokud žádná závislost nechybí. Oproti Linuxu téměř žádný rozdíl.

Porty a PKGSRC – něco jako portage

Člověku by se chtělo říci, že na všech BSD je to jako na Gentoo. Ale to je jako bychom říkali, že Grimm psal stejné pohádky, jaké dneska točí Disney. Gentoo se systémem portů z BSD inspirovalo. Kromě balíčků je zkrátka k disposici systém adresářů s informacemi o všech dostupných balíčcích ve zdrojové formě. V adresáři vybraného programu (např. mplayeru) napíšete prostě „make install“ a systém vyhledá závislosti, stáhne zdrojové soubory, z nich zkompiluje závislosti a nakonec i mplayer. Přichází logická otázka, k čemu to celé vlastně je, když existují balíčky a ty jsou rychlejší. Odpověď je skrytá v několika oblastech. Některé programy se nesmí distribuovat binárně nebo je jejich licence v rozporu s BSD, a skrze porty je nainstalovat můžete. Ale především jde o volby, se kterými se programy kompilují, před kompilací si volby prohlédnete a následně si vyberete, s jakými se program má zkompilovat.

Například pokud chcete mít v Postfixu podporu pro Dovecot, MySQL, a zároveň Cyrus, nebo naopak chcete mutt bez všech osmi kompilačních voleb pouze v ořezaném formátu, pak si v portech (nebo PKGSRC, jak se se systém portů jmenuje v NetBSD) prostě nastavíte požadovanou volbu a nainstalujete si přesně to, co potřebujete. Také se může stát, že balíček se nezkompiloval při výchozím nastavení portů/PKGSRC, a tím pádem není k dispozici v repozitáři, ale když změníte kompilační hodnoty jiných programů, už to jde a balíček je k disposici. Má to ještě další speciální výhody, ale to už bychom zacházeli příliš do podrobností. Snad tu jen přísluší říci, že zatímco v OpenBSD se porty používají spíše okrajově, v NetBSD je to stále velmi používaný zdroj programů třetích stran.

Ovládání démonů

Správa služeb vykazuje jeden velký rozdíl proti Linuxu nebo Solarisu. BSD systémy nepoužívají úrovně běhu, není tam nic ve stylu „init 3“ nebo „init 5“. Startují se vždy stejné skripty (no dobře, existuje single user boot, ale to je něco jiného). Všechny služby, které mají startovat jsou zapsány v jednom souboru. Původně to byl soubor /etc/rc.local, kam se vypisovaly celé startovací skripty. Dnes nahrajete připravené startovací skripty do adresáře /etc/rc.d a název služby se zapíše s parametrem určujícím, zda služba má startovat do souboru /etc/rc.conf.local v OpenBSD, zatímco v NetBSD je to /etc/rc.conf. V OpenBSD /etc/rc.conf také existuje, ale obsahuje výchozí hodnoty a při upgradu se přepíše a nedoporučuje se editovat. Použít pravěký startovací soubor /etc/rc.local je ovšem možné stále.

OpenBSD zavedlo ovládání démonů pomocí programu rcctl, které je podobné ovládání programu systemctl ze systemd. Takže existují příkazy jako: rcctl enable messagebuss a potom rcctl start messagebus. NetBSD má od verze 7.0 program service  podobně jako je tomu ve FreeBSD nebo v Linuxu, kde je init, takže klasicky lze spustit třeba service dbus start. V obou BSD je běžné editovat konfigurační soubor služeb ručně. V obou systémech také lze alternativně „postaru“ restartovat nebo zapínat démony přímo pomocí skriptů v /etc/rc.d  takže třeba dbus v OpenBSD příkazem  /etc/rc.d/messagebus start.

Do výše zmíněných konfiguračních souborů lze mimo jiné zapsat i start síťových zařízení, ale systémově lepší je pro každé zařízení použít jeden konfigurační soubor. Tak např. pro síťovou kartu od Intelu to bude v OpenBSD /etc/hostname.em0 a v NetBSD to bude  /etc/ifconfig.wm0.

Desktop

Ačkoli se nejedná o nejběžnější použití, oba systémy běží i na desktopech v podstatě dost pohodlně. Podpora ACPI je velmi dobrá, uspávání funguje na všech mých noteboocích (úmyslně nejmenuji značky, ale mám takové ty mainstreamové, starší kusy těch vyšších řad). OpenBSD má podporu HW podle mých zkušeností lepší, obzvláště slabě je na tom NetBSD v podpoře různých USB sběrnic, ale i nezvyklých USB zařízení, která na OpenBSD jedou bez problémů. Na obou systémech velmi svižně běží Xfce (toho času 4.12) a funguje automount. Ten na NetBSD zabezpečuje HAL spolu s gnome-mount (starší systém) a na OpenBSD je to démon Toad s Hotplug démonem (poměrně nový systém). Kromě Xfce na NetBSD běží komfortně i MATE a KDE 4. Oproti tomu na OpenBSD zase protežují Gnome 3.

Co se týká oblíbeného spyware a děr do systému, milovníci Skype si na obou vybraných BSD systémech zapláčou. Přátelé Flashe a Adobe Readeru si přijdou na své pouze na NetBSD (pomocí emulace linuxové vrstvy). Pro běžný provoz ale nechybí žádná aplikace. Nainstalovat můžete různé webové prohlížeče, Gimp, XSane, LibreOffice 5, VLC, mplayer a podobné. Zkrátka jako na Linuxu.

Osobně jsem na desktopu zaznamenal pouze jednu nepříjemnost u OpenBSD, kterou je pomalé brouzdání webu (prohlížeče jsou zpomalené při načítání dost viditelně). Oproti tomu má OpenBSD extrémně dobrou podporu pro 3D grafiky Intelu a Radeonu. U obou BSD je trochu nekomfortní připojování disků s NTFS, takže já to například řeším tak, že všechny velké disky mám s EXT2 – je možno je připojovat i do Windows a macOS po doinstalování nějakých těch utilit. Rozmazleným uživatelům by mohl nadále chybět Network Manager, ale to je tak všechno, co mne napadá jako komplikace. Naopak velkou výhodou je vysoká bezpečnost, čistý design systému a excelentní management RAM, kdy oproti Linuxu vám na stejnou práci stačí tak dvě třetiny paměti.

Virtualizační podpora

Ačkoli OpenBSD se virtualizaci jednu dobu bránilo, dnes spustíte OpenBSD v XENu jako PVHVM hosta (domU), čili potřebujete HW podporu virtualizace, ale potom si systém sáhne pro vlastní ovladače a oproti HVM výrazně zrychlí, takže běží podobně rychle jako při čisté paravirtualizaci. Režim hostitel (dom0) zatím OpenBSD XEN neposkytuje. Navíc OpenBSD vyvinulo v minulém roce vlastní virtualizační stroj, který sice ještě není v produkční verzi, ale už si ho můžete vyzkoušet: viz můj článek z prosince 2015. OpenBSD tam běží jako hostitel i host. Plánuje se podpora pro NetBSD (podobné ABI), potom Linux a nakonec plně virtualizování ve stylu XEN HVM, KVM nebo VirtualBox. V obou BSD funguje také neakcelerované QEMU, které je ale ukrutně pomalé, takže jsem ho nejmenoval.

NetBSD bylo svého času průkopníkem XENu a stále je platformou, která nabízí paravirtualizovaného hosta (čili rychlost téměř jako na holém železe) a stabilního hostitele, který může hostit jak PV, PVHVM, tak i HVM (čili všechny typy virtuálních hostů). XEN je dnes velmi stabilní s větví 6.x, v 7× jsou problémy s akcelerátorem videa, takže to chce patch, pak už problém není (ano, toto se u NetBSD stává). Jsou také chabé pokusy rozjet na NetBSD VirtualBox, ale zatím bezúspěšné (na rozdíl od FreeBSD, kde už se to povedlo).

Bezpečnost

Všude se dočtete, jak je OpenBSD bezpečné, dokonce proaktivně. A ono skutečně je. Jako možná jediný systém, co existuje, kombinuje velké množství prvků ochrany, které má ve výchozím stavu zapnuté. Už při kompilaci zdrojových souborů je například zapnut systém ProPolice, který kontroluje aktivity kompilátoru a při nekorektnostech ho zastaví, takže nekvalitní kód se vůbec nesestaví.

Při běhu systému je aktivní ochrana paměti W^X (write xor execute). A jako nejzajímavější vidím opatření nazvané Pledge, které zná příkazy, které smí každý nainstalovaný program provádět, a v případě, že začne dělat něco nechtěného ať už omylem (chybou), nebo úmyslně (malware), tak provádění prostě zastaví a program sestřelí. NetBSD i OpenBSD používají společně také úrovně zabezpečení běhu systému (securelevels), což jsou stavy, kdy na bázi kernelu lze nebo nelze provádět různé administrativní činnosti. V nejvyšší úrovni máte systém doslova zalitý do betonu a až do restartu například nezměníte nastavení firewallu. NetBSD také používá W^X (minimálně pro amd64 a i386), a navíc v NetBSD stojí za zmínku systém veriexec, který se dá přirovnat dejme tomu k SELinuxu.

Závěrečná volba

Po deseti letech používání NetBSD i OpenBSD musím říci, že při použití s hardwarem velkých výrobců se chová OpenBSD i NetBSD velmi stabilně a že start po velkých výpadcích nebo selháních zdroje nikdy nezpůsobil ztrátu ani jednoho bajtu. Který z nich je tedy lepší? Když to hodně zjednoduším, platí zhruba toto:

Pokud chcete dynamický systém se stále aktuálním software, který bude sloužit jako dedikovaný server na běžném Intelu nebo Sparcu, myslím tím jednoúčelovou záležitost, jako firewall (ten obzvláště), nebo NAS (samba+appletalk), či DNS server, a nemít s tím moc práce, tak OpenBSD je určitě správná volba. Podpora hardware je lepší, balíčky jsou vždy zkompilovány stoprocentně a není problém zkontrolovat v logu změn, jestli nové vydání podporuje nadále naši jednu aplikaci, případně ji nahradit verzí z balíčků.

Ovšem, pokud máte neobvyklý procesor, nebo chcete v produkci virtualizovat, nebo pokud máte mailserver poskytující webmail, imap, pop3, kontrolu spamu, kontrolu virů atd, potom je pohodlnější nainstalovat kapku pracněji NetBSD a vždy jen aplikovat bezpečnostní aktualizace a po mnoho let a mít stabilní systém ve stejné verzi, s bezpečnostními záplatami, podobně, jako to znáte z některých linuxových distribucí oblíbených v enterprise prostředí. Vyhnete se tím problémům, které občas v OpenBSD nastávají, jako například, že v další verzi verzi vymění typ raidu (raidframe→softraid), výchozí webserver (apache1→nginx→httpd), nebo výchozí mailserver (postfix→smtpd).

Dokumentace a důležité odkazy

Dokumentace je nejen na stránkách OpenBSD a NetBSD ve velmi dobré formě a není problém najít průvodce instalací a různé komplexní návody. Také oba systémy mají živé blogy, které není špatné sledovat, aby člověk měl představu, co se děje a co se chystá.

Pro NetBSD: blog.netbsd.org
Pro OpenBSD: undeadly.org

Tady přidávám několik odkazů, které uživatelům i administrátorům výrazně pomůžou v instalaci, případně administraci OpenBSD a NetBSD.

widgety

NetBSD Administrace: NetBSD system Manager's Manual
NetBSD XEN: Install XEN
NetBSD PKGSRC: Howto PKGSRC
NetBSD balíčkovací systém: pkgin
OpenBSD Administrace: OpenBSD FAQ
OpenBSD výborné komplexní návody: kernel-panic.it
OpenBSD aktualizace: M:Tier

Dodatek autora

Protože jsem se snažil pokrýt co nejširší oblast, nemohl jsem jít do hloubky. Je tedy jasné, že jsem se dopustil mnoha zjednodušení, případně jsem opomenul některé zajímavosti, které chtějí hlubší vysvětlení.

A ještě drobnost: já osobně se starám o mailservery jak na OpenBSD tak i na NetBSD. Čili znovu opakuji: co jsem napsal je míněno jako určité zvýraznění hlavních rozdílů. Moje osobní doporučení je: nainstalujte si jakékoli BSD a zkuste ho zapojit do akce. Spoustu se toho naučíte a zjistíte, že po počátečním zděšeném výkřiku: „Kde je systemd?!“ s úlevou vydechnete: „Je pryč.“

Našli jste v článku chybu?
Lupa.cz: Jak udělat formulář, aby ho vyplnil i negramotný?

Jak udělat formulář, aby ho vyplnil i negramotný?

Podnikatel.cz: Rohlik.cz testoval roboty pro rozvážku

Rohlik.cz testoval roboty pro rozvážku

Podnikatel.cz: Babišovi se nedá věřit, stěžovali si hospodští

Babišovi se nedá věřit, stěžovali si hospodští

DigiZone.cz: RRTV: frekvence pro Country Radio

RRTV: frekvence pro Country Radio

Vitalia.cz: Voda z Vltavy před a po úpravě na pitnou

Voda z Vltavy před a po úpravě na pitnou

Lupa.cz: Blíží se konec Wi-Fi sítí bez hesla?

Blíží se konec Wi-Fi sítí bez hesla?

Vitalia.cz: Výživový poradce: Tyhle fešáky jedu celoročně

Výživový poradce: Tyhle fešáky jedu celoročně

DigiZone.cz: Regionální tele­vize CZ vysílá "Mapu úspěchu"

Regionální tele­vize CZ vysílá "Mapu úspěchu"

Lupa.cz: Jak levné procesory změnily svět?

Jak levné procesory změnily svět?

DigiZone.cz: Sat novinky: NASA Ultra HD (4K)

Sat novinky: NASA Ultra HD (4K)

Root.cz: Hořící telefon Samsung Note 7 zapálil auto

Hořící telefon Samsung Note 7 zapálil auto

Root.cz: Podívejte se na shořelé Samsung Note 7

Podívejte se na shořelé Samsung Note 7

Vitalia.cz: Tohle všechno se dá usušit

Tohle všechno se dá usušit

Lupa.cz: Adblock Plus začal prodávat reklamy

Adblock Plus začal prodávat reklamy

Vitalia.cz: Jak Ondra o astma přišel

Jak Ondra o astma přišel

Vitalia.cz: Nová vakcína proti chřipce se aplikuje nosem

Nová vakcína proti chřipce se aplikuje nosem

120na80.cz: Co je padesátkrát sladší než cukr?

Co je padesátkrát sladší než cukr?

Podnikatel.cz: Tyto pojmy k #EET byste měli znát

Tyto pojmy k #EET byste měli znát

Lupa.cz: Patička e-mailu závazná jako vlastnoruční podpis?

Patička e-mailu závazná jako vlastnoruční podpis?

Vitalia.cz: Muž, který miluje příliš. Ženám neimponuje

Muž, který miluje příliš. Ženám neimponuje