Linux a Windows Mýty o Linuxu, nebo mýty o Windows? V říjnu minulého roku se na webových stránkách Microsoftu (viz Infotipy) objevil materiál nazvaný "Linux Myths", a za čas se na síti objevila i jeho česká verze. Jeden z našich autorů, který má praktické zkušenosti s produkty Microsoftu i s Linuxem, nám poslal článek, který nás velmi zaujal jako zdravá protiváha masivní marketingové mašinerie, "válcující" veřejné mínění. Proč vlastně píšu tento článek? Osobně zastávám názor, že každý je svobodný, a proto si může i svobodně zvolit systém, s nímž bude pracovat. Microsoft (dále jen MS) má ovšem jiný názor a neštítí se ničeho, čím může vytlačit konkurenční systémy. Linux jsem poprvé viděl před půl rokem – do té doby jsem přes pět let administroval a programoval Windows 95 a Windows NT (dále jen W95 a NT). Když jsem si však přečetl microsoftský článek "Linux Myths", nevěděl jsem, zda se mám smát, nebo brečet. Nechci polemizovat, zda je ten či onen systém lepší, ale rád bych se podělil o své zkušenosti. Text je koncipován jako komentář k těmto "mýtům" (jsou sázeny kurzivou). Pokud se potřebujete opravdu správně rozhodnout, který systém a na co použít, přečtěte si webovou stránku http://www.penguin.cz/~had/unix-nt/. Je tam jedno z nejlepších a nejfundovanějších srovnání, jaké jsem našel. A každý, kdo chce porozumět chování softwarových firem, by si měl povinně přečíst dnes již legendární dílo Erica S. Raymonda "Katedrála a tržiště". Tento a mnoho dalších překladů najdete na http://zvon.vscht.cz/ZvonHTML/Zvon/zvonTranslations_cs.html. (Z úvodu) ... je třeba se podívat pravdě do očí... Linux je v podstatě založen na 30 let staré technologii a architektuře operačního systému. Linux nebyl od základů stavěn na to, aby podporoval symetrický multiprocesing (SMP), grafické uživatelské rozhraní (GUI), asynchronní I/O operace, jemně strukturovaný bezpečnostní model a mnoho jiných důležitých charakteristik moderního operačního systému... » To je velice zajímavá úvaha. Pravděpodobně bychom měli také přestat používat žárovku, protože její technologie je stará přes 120 let. Jinými slovy: To, že je něco staré, rozhodně neznamená, že je to špatné. Naopak bych řekl, že pokud operační systém přežije 30 let a je stále aktivně používán, je to známka kvalitního návrhu. K SMP architektuře se blíže vyjádřím v dalším bodu. Grafická rozhraní (GUI) jsou pod Unixem velmi dobrá. Samozřejmostí je zde možnost nastavení vzhledu okének a jejich chování (např. zda se mají aktivovat klepnutím myší, nebo jen jejím přesunem). Samozřejmostí je i možnost pracovat na vzdáleném Linuxu, jako byste seděli u něj, a to včetně grafického rozhraní. Tedy něco, co umí až Terminal server v NT5. Paradoxně tato flexibilita Unixu některé uživatele i odrazuje, neboť tentýž systém může pokaždé vypadat naprosto jinak. Asynchronní I/O je podporován (zde chtěl MS patrně poukázat na to, že Linux nepodporuje tzv. completion ports, o jejichž užitečnosti se však stále polemizuje). MS o Linuxu tvrdí, že je zastaralý, a přitom do Windows doplňuje spoustu funkcí, které jsou v Unixech již dávno implementovány. Jsou to například Terminal server (v Unixu mu odpovídá standardní X Server), reparse points v NTFS5 ("mountování" souborového systému v Unixu) či Kerberos v nových Windows 2000. K poslednímu malou poznámku: MS tvrdí, že Windows 2000 podporují standardní autentizaci Kerberos, bohužel MS si onen standard poněkud upravil, takže už tak standardní zase není (http://dailynews.yahoo.com/h/zd/20000228/tc/20000228169.html). Mimochodem, MS si libuje v objevování objeveného. Nedávno se na webu MS objevila zpráva o novém objevu (http://www.MS.com/presspass/features/2000/02-28w2k.asp). Poněkud zaspali dobu, nevšimli si asi, že tato vlastnost (symbolické odkazy) se v Unixu používá snad od samého počátku. Mýtus: Linux je výkonnější než Windows NT. Realita: Výkonem při zatížení běžném u zákazníků Windows NT 4.0 překonávají Linux. V dalším textu se poukazuje na testy PC Week Labs, PC Magazine a ostatní, které spolehlivě prokázaly, že NT jsou výkonnější než Linux co se týče webových, souborových, tiskových či databázových serverů apod. » V tomto "mýtu" má MS patrně na mysli testy porovnávající výkon webových serverů na platformách Windows NT a Linux, v nichž byly NT při velké zátěži asi třikrát rychlejší (při běžné zátěži nebyl rozdíl tak markantní). Důvod tohoto rozdílu byl již lokalizován jako chyba v kernelu Linuxu a tato chyba je opravena v jeho verzi 2.3. Chyba se týkala SMP, neboť linuxová podpora SMP není ještě doladěna na maximální výkon (s nebývalým zájmem velkých výrobců o Linux v poslední době se však v této oblasti dá mnoho a brzy očekávat). Aby uvedené srovnání mělo nějaký smysl, bylo by dobré srovnávat výkon i na jednoprocesorovém stroji. Zde by Linux pravděpodobně NT předčil. Nicméně je zde jeden podstatný rozdíl. Programátoři IIS pro Windows NT použili multithreadové řešení, které je výkonnější, ale obvykle méně stabilní. Server Apache na Linuxu threading nepoužívá právě z důvodu stability. Za určitých podmínek budou asi rychlejší NT, jindy zase Linux. Dnes se klade větší důraz na spolehlivost a na snadnou správu systému. V jedné firmě spravuji server s Windows NT, na němž běží Exchange, IIS, souborový a tiskový server. Server má 128 MB RAM a procesor Pentium II. Přesto je subjektivně velmi pomalý a přibližně jednou za měsíc je třeba ho rebootovat. Pokud si projdete diskusní skupiny na internetu, zjistíte, že to není zdaleka ojedinělý případ. Podle mé zkušenosti splňuje podobný systém implementovaný na Linuxu pomocí IMAP serveru stejné požadavky s vyšším výkonem a spolehlivostí. Mýtus: Linux je spolehlivější než NT. Realita: Linux potřebuje opravdové důkazy, a ne jen vtipné průpovídky. Linuxová společnost ráda mluví o Linuxu jako o stabilním a spolehlivém systému, ale nemá žádné skutečné důkazy ani testy a je velmi málo svědectví zákazníků na podporu těchto tvrzení. » Říká se, že dobré zboží se chválí samo. Tak je to i v případě Linuxu. Stabilita je jednou z hlavních deviz unixových systémů a existuje minimálně stejné množství důkazů o stabilitě Unixu jako o stabilitě NT. Doporučuji k pročtení news konference na internetu. Tam najdete obrovské množství problémů, které uživatelé Windows řeší, informace o záhadných pádech NT serverů a o podivném chování různých API pod Windows. Předpokládejme, že máte nainstalovaný IIS a v něm napsanou ASP aplikaci, která využívá standardní systémové funkce pro tisk a dekódování dat. Aby vše fungovalo, je třeba nastavit kódovou stránku celých NT na anglický jazyk. Vše funguje, jak má, dokud se do systému nepřihlásí uživatel s jinou nastavenou kódovou stránkou. Potom se přepne i systémová stránka a zůstane tak, dokud se uživatel neodhlásí. Jinými slovy, aby server fungoval, nesmí se na něj nikdo přihlašovat. Popis chyby jsem poslal do konference MS a ani po půl roce není, pokud vím, vyřešena. Mýtus: Linux je zadarmo. Realita: Operační systém zadarmo neznamená nulovou cenu za vlastnictví. Linuxová komunita stále hovoří o tom, že Linux je "free" nebo nenákladný. Je důležité si uvědomit, že náklady na licenci jen z malé části ovlivňují rozhodování zákazníků. Cena operačního systému je jen malé procento celkových nákladů za vlastnictví a používání softwaru (TCO). Všeobecně bylo potvrzeno, že Windows NT vyžadují nižší celkové náklady než Unix. Provedené studie prokázaly, že Windows NT vykazují o 37 % nižší TCO než Unix. Není žádný důvod si myslet, že u Linuxu je to výrazně jiné... » Aha, o 37 %. A devět z deseti zubařů doporučuje Windows. Administrovat Linux je obvykle snazší, než udržet v běhu funkční Windows. Windows mají konfigurační informace uloženy v oddílu Registry. Zde je část pro soukromá nastavení přihlášeného uživatele a část určená pro všechny uživatele. MS doporučuje programátorům používat Registry pro všechna konfigurační data (a sám to porušuje, např. u IIS4). Takže v Registry jsou často desítky megabajtů souborů. Pokud se něco pokazí, jsou dvě možnosti: přeinstalovat celý systém, nebo prohledávat Registry. Podle zkušeností je reinstalace rychlejší, přestože její časté opakování stojí čas – a peníze. Stejný zmatek je u Windows s tím, kam se standardně ukládají soukromé soubory uživatelů. Některé microsoftské programy ukládají do \My Documents (Office 95), jiné do \Windows\Profiles\\Personal (Visual Studio 6), další do \Program Files\DevStudio\MyProjects (Visual Studio 5), a takový MS Outlook si je zase dá do \Program Files\Outlook\\Mail. Pokud používáte domovský adresář na serveru, pak je vše ještě komplikovanější. Oproti tomu v Unixu (a tedy i v Linuxu) jsou všechny konfigurace v textových souborech v adresáři /etc. A těch, které se opravdu vůbec někdy mění, je méně než 100 kB. Každý uživatel má svůj domovský adresář (na svém počítači nebo na serveru) a v něm jsou všechny jeho soukromé konfigurační i datové soubory (maily, bookmarky apod.). Takže administrátor, který zvládne udržet rok v běhu NT síť, je víc než dostatečně kvalifikovaný pro správu Linuxu. MS IIS disponuje ovládací konzolou, prostřednictvím které můžete web spravovat vzdáleně pomocí Internet Exploreru (IE). Když jsem tuto funkci potřeboval využít, systém ohlásil chybu 80000004 a IE spadl. Nebylo mi jasné, proč, když den předtím vše fungovalo, jak mělo, a na serveru jsem od té doby nic neměnil. Jsem sice zvyklý na podobné patálie, ale tentokrát nepomohl ani restart. To mě poněkud dožralo a začal jsem studovat, co se vlastně stalo. Asi po osmi hodinách práce s debuggerem jsem identifikoval, že chyba je někde v DCOM, konkrétně v autentizační části. Nastudoval jsem proto CryptoAPI a po další hodině jsem odhalil chybu kdesi hluboko v Registry. CryptoAPI si tam zapomnělo smazat šifrovací klíč z minulé session a snažilo se ho i nadále používat. Takováto chyba je u robustního systému naprosto neakceptovatelná a ještě horší je, že na konferenci, kde jsem řešení problému hledal, se nikdo ani příliš nedivil. Toto je velmi důležitý poznatek! V otevřených systémech si hodně chyb můžete opravit sami a nebýt závislí na dodavateli softwaru. Teď se budete právem ptát, jak to, že na to MS nepřišel také. Nemyslete si, MS to ví. Doporučuji vám přečíst si tzv. Haloween dokumenty (http://www.opensource.org/halloween), což je interní studie MS na téma otevřených systémů. V této studii autor (zaměstnanec MS) doporučuje vedení zrevidovat přístup k šíření zdrojových kódů a poukazuje na to, že oprava chyb a vývoj jako takový je v otevřených systémech mnohem rychlejší a kvalitnější (konkrétně je to demonstrováno na rychlosti, jakou byla odstraněna bezpečnostní chyba s fragmentací TCP paketu). Mýtus: Linux je bezpečnější než NT. Realita: Bezpečnostní model Linuxu je slabý. Všechny operační systémy jsou z hlediska bezpečnosti zranitelné, ale je nutno uvést, že Linux je postaven na stejném bezpečnostním modelu jako originální unixové implementace – tedy model, který nebyl od základu stavěn s důrazem na bezpečnost. » Linux klade velký důraz na bezpečnost. W95 nemají bezpečnost vcelku žádnou, zato v NT lze u souboru (nejen) nastavit jeho vlastníka, seznam uživatelů a skupin, které mohou se souborem provádět různé operace (číst, zapisovat, mazat...), a seznam uživatelů, jejichž přístup k souboru bude logován. V Unixu může být soubor vlastněn jedním vlastníkem a zároveň jednou skupinou. Definují se práva čtení, zápisu a spuštění pro vlastníka, skupinu a pro ostatní. Znamená to, že chybí možnost logování přístupu (auditu), ale jsou možnosti, jak ji doinstalovat. Ale nelze například dát Pepovi přístup ke čtení mého dokumentu. Nicméně i zde je možnost doinstalovat podporu ACL. Vzhledem k již zabudovanému ACL a hlavně k lepší strategii sdílení souborů po síti jsou zde tedy body navíc pro NT. Při praktickém používání se však projeví zejména problém delegace administrátorských úloh. Prakticky to znamená, že budeme například chtít, aby administrátor DNS serveru neměl všechna práva k ostatním částem systému. Ačkoliv to tak standardně nastaveno není, jak jsem si vyzkoušel, lze to v Unixu velice elegantně přestavit. NT z principu poskytují způsob, jak toto zajistit. Bohužel, implementace je natolik nepovedená, že ani po měsíci experimentů a dotazování se v konferencích se mi to nepodařilo. Útokem zkušeného hackera se dá prolomit bezpečnost v Unixu i v NT. Naprostá většina útoků je založena buď na fundamentálně špatném návrhu nějaké služby (např. známý útok na IIS pomocí $DATA textu připojeného na konec URL), nebo na tzv. buffer overflow. Posledně zmíněný útok spočívá v přepsání špatně dimenzovaného pole v paměti programu a donucení procesoru ke skoku na podstrčený kód (více např. www.insecure.org). Chyby tohoto druhu se vyskytují v mnoha programech (nedávno byla objevena podobná chyba v IIS i s SP5). Obvykle není pro středně zkušeného programátora problém podobnou chybu najít a odstranit, musí však mít k dispozici zdrojové kódy. V nedávné době se pro Linux objevil tzv. StackGuard, což je rozšíření běžného kompilátoru na Unixu, který pak do výsledného kódu doplní kontrolní mechanismy, schopné zabránit jednomu (nejčastějšímu) druhu útoku typu buffer overflow. Na podobném principu funguje i tzv. non executable stack (www.openwall.com/Linux). Bylo by příjemné, kdyby i MS udělal nějaké podobné kroky. Ze zkušenosti mnoha administrátorů vyplývá následující: Linux (a jakýkoli další kvalitní otevřený systém) je tak spolehlivý a bezpečný, jak dobrého a důsledného má správce. OS Windows (a jiný uzavřený systém) je jen tak spolehlivý a bezpečný, jak umožní jeho autor. Protože u Windows nemáte k dispozici zdrojové kódy, nemáte žádnou možnost zjistit, jaké chyby v programech jsou, a už vůbec ne je opravit. Jste vydáni na milost a nemilost dodavateli programu. A věřte, že dodavatel chybu nenajde, dokud mu ji někdo neohlásí, což se obvykle stane až po jejím zneužití. Mýtus: Linux může nahradit Windows v desktopech. Realita: Linux nemá pro desktop žádný význam. Linux jako desktopový operační systém je nesmysl. Uživatel by tak získal systém, který má méně aplikací, složitěji se ovládá a užívá a je méně intuitivní. Linux nepodporuje široký sortiment hardwaru, který je v současnosti užíván. Windows NT 4.0 dnes podporují více než 39 000 různých zařízení z Hardware Compatibility List... Průzkum prokázal, že v současnosti 93 % profesionálních vývojářů vyvíjí aplikace pro Windows NT, a pro Linux pouze 13 %. » No, nepravda to rozhodně není. Spíše ale řekněme, že pro Windows je víc aplikací jednoduše proto, že jsou rozšířenější – to proto, že pro laika jsou jednodušší na instalaci. Pokud jde o Linux, například na instalačním CD Red Hat Linuxu najdete většinu toho, co kdy budete potřebovat: grafický editor srovnatelný s Photoshopem (ale zdarma), několik textových editorů, TeX pro tvorbu složitých (např. matematických) dokumentů, Ghostscript pro emulaci postscriptových tiskáren a tvorbu PDF dokumentů, Netscape jako browser a mailový program (ale je i spousta jiných), nádherný přehrávač MP3 (mimo jiné, v Linuxu lze zadat příkaz, který zpomalí čtení z rychlých CD jednotek, aby méně hlučely) a další. Balík StarOffice (samozřejmě také zdarma) obsahuje textový editor, tabulkový procesor, plánovač a další kancelářské aplikace, a dokonce umí importovat dokumenty DOC a XLS z MS Office. A složitost ovládání? Stejná jako ve Windows... Nemluvě o tom, že systém Wine umožňuje spouštět mnoho windowsových aplikací na Linuxu, DOSEMU umí totéž pro aplikace DOS. 39 000 zařízení! To je slušné. Já jsem po NT chtěl jen to, aby mi chodila zvuková karta a aby se mi po určité době vypínal monitor. Ke kartě jsem nějaký kompatibilní ovladač sehnal (i když stále nějak "padá") a s vypínáním monitoru jsem měl prostě smůlu. Rozchození NT na pevné lince mi zabralo pár dní a nutnost napsání vlastního INF souboru... Linux má podstatně méně ovladačů než Windows. Ale jeden ovladač často obslouží stovky zařízení od různých výrobců, pokud používají standardní způsob komunikace. Shrnutí. Operační systém Linux není vhodný jako hlavní nástroj pro profesionální ani domácí použití. S dnešními Windows NT 4.0 si uživatelé mohou být jisti, že mohou vytvářet aplikace, které jsou škálovatelné, bezpečné a spolehlivé, a přitom cenově nenáročné při pořizování i spravování. Linux zcela jistě nebude moci ještě dlouho konkurovat Windows NT 4.0. S vydáním Windows 2000 Microsoft rozšiřuje technickou suverenitu své platformy a ještě dokonaleji zaručuje svým zákazníkům možnost vytvářet aplikace nové generace, pomáhající k dosažení jejich profesionálních cílů. » To mi silně připomíná reklamu na prací prášek. Já se pokusím shrnout pár poznatků, které by se vám mohly hodit: Dejte si pozor na tzv. Winprintery a Winmodemy. Tato zařízení bývají často relativně levná, ovšem jejich výrobci často odmítají dát k dispozici specifikace nutné k psaní ovladačů. Takže podobné zařízení použijete pouze s Windows, a nikde jinde. Pokud se někdy rozhodnete přejít na jiný systém (a věřte, že to nastane), je lepší používat zařízení držící se osvědčených standardů. Nesnažte se srovnávat Linux a Windows, pokud si oba systémy sami řádně nevyzkoušíte! Budete-li ve vaší síti používat standardní protokoly, nebudete mít problém s mícháním Windows a Linuxu ani s kompletním přechodem na Linux. Používejte DNS a vyhněte se WINS, volte SMTP/POP3/IMAP pro poštu (IMAP server je možno ve většině případů bez problémů nasadit místo MS Exchange). Sdílení disků zajistí na Linuxu Samba. Pozor na proprietární MS protokoly! MS má spoustu protokolů, které obvykle nepotřebujete. Téměř veškeré distribuované aplikace vyvinete pomocí TCP/IP, elektronické pošty, LDAP a CORBA. Podle MS je dobré používat COM, DCOM, COM+, MSMQ, AD, ActiveX a nevím kolik ještě protokolů a rozhraní. Naučil jsem se programovat všechna výše uvedená a zjistil jsem, že většinu času trávím studiem dokumentace a obcházením chyb v implementaci. Totéž platí pro Win32. Toto rozhraní zdánlivě nabízí k jednomu problému spoustu řešení, jen si vybrat. Prakticky však má každé rozhraní své chyby a spíše hledáte, pomocí kterého to vůbec půjde napsat. Na to jsem narazil při snaze použít IE jako control v MFC aplikaci. Po 14 dnech pokusů jsem zjistil, že prostě není cesta, jak IE renderer donutit, aby negeneroval žádná chybová dialogová okna v silent režimu. Tím ovšem nechci nijak snižovat kvalitu MS rozhraní, jako je Win32 či COM. Jen jsem chtěl poukázat na to, že nabízejí hodně možností, ale i hodně chyb. Osobně dávám přednost spolehlivým rozhraním, i když s méně funkcemi. V objektovém distribuovaném programování je dobrou volbou CORBA. Na rozdíl od MS DCOM je CORBA ORB k dispozici od mnoha dodavatelů a funguje na mnoha platformách. CORBA dokonce definuje pravidla spolupráce COM s DCOM, DCOM pochopitelně nikoli. Pokud programujete aplikace s grafickým rozhraním, doporučuji vaší pozornosti velmi kvalitní knihovnu wxWindows (www.wxwindows.org). Závěr Nakonec ještě k tomu, co český Microsoft předvedl na ohlášení Windows 2000 (trapnou show "linuxových" tučňáků). Bylo to poněkud nedůstojné a já bych článek zakončil jedním citátem, který jsem našel na internetu: "One World, one Web, one Program" (MS Promotional Ad, 1998). Nepřipomíná vám to trochu tragická třicátá léta ("Ein Volk, ein Reich, ein Führer")? Martin Devera 4/00: 445-Lin_Win (Au.Martin Devera - 11.28 n.str., 4514.88 Kč) Strana: 4 Chyba! Neznámý argument přepínače./1