S nástupem počítačů s mikroprocesory třídy i386 začala vznikat spousta operačních systémů pro ty, kterým už nestačí jen 640KB základní paměti nebo pouze kooperativní multitasking a jednouživatelské prostředí. Většina těchto operačních systémů je postavena na principu AT&T UNIXu. S rozvojem sítě Internet, volně šiřitelného softwaru a především pak projektu GNU1 začaly vznikat i volně šiřitelné operační systémy. Nejznámější z nich jsou 386BSD (NetBSD, FreeBSD) a Linux, na nějž se chci zaměřit v tomto článku. Linux sám používám a považuji jej za výborný operační systém. Proto předesílám, že tento článek nebude (a ani nechce být) nestranný.
Autorem Linuxu je finský student Linus Torvalds (E-mail torvalds@helsinkifi), který napsal tento systém jako náhradu za operační systém minix, který až do té doby používal. Za zmínku stojí, že Linux vznikal na počítači 386DX/25 s diskem o velikosti 40 MB. Po zveřejnění se Linux velmi rychle rozšířil po Internetu a řada programátorů se pustila do jeho vylepšování a do vývoje softwaru. Linus Torvalds se v současné době stará výhradně o vývoj jádra.
Jádro je distribuováno z Finska ve verzích (patchlevels). Nová oficiální verze jádra je vydána do oběhu přibližně jednou za čtyři měsíce, v současné době je to verze 0.99pl15. Kromě toho jsou průběžně zveřejňovány alfa-verze jádra, které nezaručují bezchybnost a jsou uvolněny vždy hned poté, co autor udělá v jádru nějakou změnu - přibližně každý týden. Alfa-verze se indexují malým písmenem na konci - například 0.99pl15f.
Z hlediska programátora je Linux unixový systém kompatibilní s normou Posix. Přesněji, píše se to v dokumentaci. Jinak poskytuje systémové služby známé z BSD Unixu, jako jsou sockety a symbolické linky, a také mnoho prostředků z Unixu System V - IPCs (semafory, sdílené paměti, fronty zpráv), pojmenované roury, SysV-like init, terminfo.
Pod Linuxem existuje mnoho prostředků pro vývoj programů - samozřejmě klasická kombinace vi + gcc (verze 2.5.7 a 2.4.5), dále pak gnat (ADA), flex, bison (yacc), translátory p2c a f2c, gmake, smalltalk, clisp (Common Lisp), Tcl/Tk, GNU debugger a jeho verze pro X, systém údržby zdrojových textů rcs, editor emacs a mnoho dalších.
Linux jako takový je šířen jednak ve formě jádra a jednotlivých samostatných programů, jednak ve formě tzv. distribucí, což jsou ucelené balíky, zhruba odpovídající distribucím komerčních systémů. Takovéto distribuce obsahují přeložené programy, zdrojové texty jádra, dokumentaci a prostředky pro instalaci a údržbu systému. Pokud se distribuce prodává (například na CD-ROM), obsahuje často i zdrojové texty ode všech programů, které poskytuje.
Většina distribucí poskytuje programy používající sdílené knihovny, čímž se velmi podstatně sníží nároky systému na paměť a diskový prostor počítače (nevýhodou je pomalejší start dynamicky linkovaných programů). Další místo, kde můžete ušetřit na disku, je swapovací prostor. Linux totiž nevyžaduje větší swap, než je velikost operační paměti. Máte-li tedy 4M RAM a 6M swapu, je celková velikost virtuální paměti 10M a nikoli 6M, jak tomu bylo u starších UNIXů. Kromě toho je možno swapovat i do souboru na disku (ano, i do souboru na DOSovském systému souborů).
Z distribucí na disketách je asi nejpoužívanější Slackware 1.1.1 a také SLS 1.03/1.04. Já osobně používám již dosti zastaralou SLS 1.03. Na počítač 386DX/40 se 4M RAM, 6M swap partition a 67M Linux partition se mi vejde (jen těsně) systém s vývojovým prostředím, zdrojovými texty jádra a XFree86 bez TeXu, ghostscriptu, emacsu a síťové podpory. Dokud systém nezačne swapovat, je rychlejší než DOS (protože je 32-bitový). XFree86 sice nejsou nijak závratně rychlé, ale dají se používat. Viděl jsem je běhat na počítači s osmi MB paměti a byly velmi rychlé. Systém je poměrně velmi robustní, bootovat musím jen ve dvou případech: Potřebuji-li spustit DOSovský program, který nefunguje pod emulátorem DOSu, nebo pokud mi emulátor DOSu zablokuje konzolu (nemaje jiný terminál, musím přebootovat).
Zájemcům o Linux doporučuji nainstalovat distribuci Slackware, která je novější než rozšířená SLS a také má dobře dořešenou instalaci sítě TCP/IP. Druhá možnost je vzít si libovolnou distribuci, nainstalovat základní systém a zbytek si přenést z Internetu a překompilovat. Tuto možnost doporučuji pouze znalcům UNIXu. Má jednu výhodu - víte přesně, co a kde máte na počítači nainstalováno.
Výroba instalačních disket vypadá asi takto: První (systémová) disketa se dodává v binárním formátu jako 1.2M nebo 1.44M dlouhý soubor. Tento soubor zapíšete UNIXovským programem dd nebo dosovským rawrite.exe na disketu. Další diskety jsou na ftp serverech ve formě adresářů. Obsah každého adresáře překopírujete na běžnou disketu ve formátu MS-DOS. Pak si přečtete návod k příslušné distribuci a instalace může začít.
K instalaci je nutné mít příslušné volné místo na pevném disku (volné znamená nepřidělené do žádné partition) a minimálně jeden volný záznam v partition tabulce MS-DOSu. Pokud nepotřebujete mít zároveň na svém disku MS-DOS, OS/2 nebo jiný operační systém, jste těchto problémů ušetřeni.
Pod Linuxem je v současnosti na Internetu dostupné značné množství softwaru - jak v binární, tak ve zdrojové podobě. Mezi jiným jsou to například programy z projektu GNU, TeX verze 3.1415, XFree86 2.0 (volně šiřitelná implementace X Window System), XView/OpenLook, dosemu (emulátor DOSu - alfa verze), TCP/IP, uucp, kompletní vývojové prostředí a další.
Co se týče národního prostředí, existuje čeština pro editor emacs pod X Windows. Momentálně pracuji na počeštění linuxové konzoly ve znakovém režimu. Tento projekt je už v dosti pokročilém stadiu a pravděpodobně bude v době, kdy tento článek vyjde, dokončen. Hodlám distribuovat ucelenější balík národního prostředí, který bude obsahovat jednak češtinu pro znakovou konzolu, dále češtinu pro X, různé konverzní programy a možná již zmíněnou lokalizaci emacsu.
Ve světě Linuxu existují tři hlavní ftp-servery, ze kterých lze získávat nejnovější linuxový software. Co se týče nejkritičtějších komponent systému - jádro, síť a gcc/g++ - je každý z těchto serverů synchronizován podle zbývajících dvou (se zpožděním nejvíce týden). Ostatní ftp-servery ve světě, pokud poskytují Linux, zrcadlí jednoho z těchto tří "velkých bratrů":
ftp.funet.fi:/pub/OS/Linux sunsite.unc.edu:/pub/Linux tsx-11.mit.edu:/pub/linux |
ftp.funet.fi poskytuje nejnovější verzi jádra (adresář Linux/PEOPLE/Linus), sunsite zase uchovává příspěvky nového softwaru od uživatelů (Linux/Incoming).
Upozornění: Náš ftp-server ftp.muni.cz zrcadlí Linux ze sunsite. Adresáře zde jsou podle sunsite aktualizovány každých 24 hodin, nemá tedy smysl hledat software ve světě a zatěžovat síť. Z blízkých serverů je Linux ještě na pub.vse.cz. Výjimku tvoří alfa-verze jádra, které jsou jen na ftp.funet.fi. Ty ale potřebují jen lidé, kteří pracují na vývoji jádra.
Kromě toho každý software specifický pro Linux má svůj "domovský" ftp-server, na kterém se objevují jeho nejnovější verze. Například pro distribuci Slackware je to ftp.cdrom.com.
O nejrůznější manuály a příručky se v Linuxu stará volné sdružení Linux documentation project (LDP). Jeho produkty lze najít na ftp-serverech v adresáři LDP. Mezi produkty poskytované LDP patří:
Dále pak je možné najít na ftp-serverech nejrůznější FAQs (Frequently asked questions, tedy často kladené dotazy), které mají pomoci odstranit drobné problémy v dané oblasti. Obecné otázky z oblasti Linuxu zodpovídají META-FAQ.
Posledním typem dokumentace jsou tzv. HOWTOs (z anglického "how to do ...", což znamená "jak udělat ..."). Tyto texty mají uživateli Linuxu pomoci nainstalovat, zprovoznit a/nebo používat určitý prostředek (síť TCP/IP, XFree86, TeX a další). O tom, jak nejlépe začít s Linuxem, se lze dovědět ze souboru LINUX-HOWTO.
Jednou z výhod Linuxu (a vůbec všech volně šiřitelných systémů) je, že uživatel (systémový administrátor) má k dispozici zdrojové texty ode všeho, co v systému je, včetně jádra. Na tomto místě se zastavím u toho, co jádro poskytuje programátorům. Podotýkám, že srovnání s ostatními systémy bude poněkud mlhavé, neboť kromě Linuxu jsem měl možnost zkoumat texty jádra jenom od systémů NetBSD/386BSD. Upozorňuji, že tato kapitola je určena jen znalcům UNIXu. Pokud se problematikou UNIXu nezabýváte podrobně, pravděpodobně vám následující řádky mnoho neřeknou.
Jedním z charakteristických rysů jádra je, že je psáno kompletně celé od základu pro procesor i386. To na jedné straně poněkud zhoršuje přenositelnost jádra (i když Linux už existuje i pro Macintosh, Amigu, Sparc a i860), ale na druhé straně takto máme jádro, které se podstatně zmenšilo. Kromě toho jádro nepřebírá rysy AT&T UNIXu v7, které má většina systémů (statická tabulka zařízení bdevsw, cdevsw, statická tabulka systémových volání). Další výhoda je v tom, že se velmi zprůhlednilo programování komponent jádra (ovladače, systémová volání, systémy souborů). Rozhraní mezi jádrem a ovladačem je velmi přesně definováno a také prostředky, které ovladač může využívat, jsou přesně specifikovány. Patří mezi ně jednak triviální funkce out() a in(), ale například také prostředky pro vzájemné vyloučení procesů uvnitř kritické části driveru, dynamická alokace hardwarových přerušení, ovládání diskové cache atd.
Nejnovější jádra (od verze 0.99pl14d) podporují dynamické přidávání modulů do jádra. Modul je soubor typu *.o, vytvořený normální kompilací, který obsahuje povinně rutinu pro svou instalaci a deinstalaci. Tento modul je pak možné za běhu přidat do jádra a zase jej z jádra odstranit. Protože Linux poskytuje prostředky pro dynamickou alokaci a uvolnění čísel systémových volání a hlavních čísel (major) zařízení, je nyní možné přidávat za běhu do jádra nová zařízení a systémová volání.
Je to jednoduché: Svůj stroj zálohujete například jednou za týden. Proč tedy mít v paměti ovladač páskové mechaniky po celou dobu - stačí jej před zálohováním nainstalovat a po něm zase odinstalovat z jádra... Nebo vám někdo přinese disketu v nějakém exotickém formátu, který vaše současné jádro nepodporuje - například OS/2 HPFS. Načtete tedy do jádra modul s HPFS, přimontujete příslušnou disketu, přečtete ji, a pak zase modul odinstalujete. Myslím, že tohle běžné UNIXové systémy neumožňují.
Jádro rovněž podporuje velké množství souborových systémů - od původního minix, přes "domovský" ext2 filesystem, msdos, hpfs, ISO-CDROM, SysV, proc až po NFS. Jako kuriozitu uvádím systém umsdos, což je rozšíření DOSovského systému souborů, které podporuje linky, symbolické linky, pojmenované roury a sockety, speciální soubory. Za pomoci umsdosu může Linux pomalu stravovat vaši DOSovskou partition...
Pod Linuxem můžete také spouštět programy ve formátu jiných systémů - binární soubory typu ELF (UNIX V release 4) a nejnověji také soubory formátu COFF (System V release 3).
Pokud má uzivatel nějaké potíže se systémem, hledá nějaký software pro Linux nebo se chce podílet na vývoji Linuxu, má několik cest, jak se v těchto věcech spojit se světem:
První možností je použití usenet news. V podstromu comp.os.linux se nachází několik skupin, určených pro administrátory, vývojáře nebo jen pro dotazy ohledně systému. Vytížení comp.os.linux je přibližně padesát až sto článků celkově ve všech podskupinách za den.
Dále existuje po světě několik E-mailových diskusních skupin zaměřených na Linux. Kromě národních linuxových skupin existují i celosvětové, z nichž hlavní a asi nejužívanější jsou skupiny na mailserveru niksula.hut.fi. Tento počítač rozesílá několik skupin - základní je NORMAL, což je nemoderovaná všeobecná diskuse. Dále pak ANNOUNCE informuje o nových programech, KERNEL je pro vývojáře pracující na jádru, X11 pro uživatele X Windows, NET o problematice linuxových sítí a několik dalších. Diskusní skupiny je také možné libovolně vytvářet příkazem pro mailserver.
Informace o tomto mailserveru a o poskytovaných službách je možné získat zasláním E-mailu s obsahem nebo subjectem "HELP" na adresu
linux-activists-request@niksulahutfi |
Články do diskusních skupin se posílají na adresu
linux-activists@niksulahutfi |
Vytížení těchto skupin je přibližně tři až deset článků denně, je rozesíláno vždy několik článků v jednom E-mailu.
Už nyní lze například provozovat WordPerfect v binárním formátu COFF pod Linuxem. Některé firmy poskytují své produkty v binárním linuxovém formátu coby shareware. Linus Torvalds se nedávno vyjádřil, že verze 0.99pl15 bude poslední "neostrou" verzí jádra a že (pokud to dobře půjde) bude začátkem dubna k dispozici Linux verze 1.0. Potom už nic nebude bránit vývoji komerčních aplikací pod Linuxem, a tím i rozšíření Linuxu coby plnohodnotného operačního systému. Vývoj půjde samozřejmě dále, jde jen o to, aby se do verze 1.0 dostaly jen ty prostředky, které jsou vyzkoušené a stabilní.
Nedávno jsem testoval, jak je na tom Linux ve srovnání s ostatními systémy, co se týče rychlosti. Předesílám, že jsem srovnával nesrovnatelné, totiž volně šiřitelné systémy, na nichž pracuje téměř nepřetržitě řada programátorů, a běžné komerční systémy. Ani hardware nebyl ekvivalentní (zkuste sehnat pět stejných počítačů s pěti různými systémy...). Nicméně musím říci, že Linux si v těchto testech vedl skvěle.
Myslím si, že Linux je systém, který (spolu s dalšími volně šiřitelnými operačními systémy) stojí za povšimnutí nejenom jako jeden z mnoha UNIXů, ale i jako možný trend ve vývoji operačních systémů vycházejících z AT&T UNIXu.
Jakékoli dotazy ohledně Linuxu se budu snažit v rámci svých možností zodpovědět - použijte E-mail na adresu kas@ereboricsmunicz.
1 | viz článek Programové vybavení Unixu Luďka Matysky
ve Zpravodaji IV/1
... zpět do textu |