10 Let před Googlem
V dávných dobách jsme neměli Google, ba ani Alta Vistu. Seznam FTP serverů byl udržován v tzv. Anonymním FTP listu, kde byl uveden kromě jména serveru i jednořádkový popis jeho obsahu. Seznam byl dost dlouhý a pořád přibýval. Na konci svých nejlepších let byl rozdělen na více než 20 částí (pamatuju si ho již od jeho trojdílné verze). Tento seznam byl měsíčně posílán do mailing listů a newsgroups vyhrazených pro tento účel. Autentický seznam z roku 1995 najdete např. zde. Tento seznam sloužil občas i jako distribuovaný denial of service nástroj. Co se asi stalo, když jste tam uvedli cizí FTP server s popisem ,erotica'?
FSP? To bude překlep…
Postupně se v tomto seznamu začaly objevovat adresy nadepsané ne FTP, ale FSP. Dlouhou dobu jsem tomu nevěnoval pozornost, neboť jsem to považoval za překlep. Jelikož těchto položek ovšem přibývalo čím dál více, pojal jsem podezření, že to bude mít pravděpodobně cosi do činění s přenosem souborů.
To číslo uvedené za adresou jsem správně považoval za číslo portu. Jelikož jsem hrál MUDy, věděl jsem, že se dá na každý port napojit telnetem. K mému překvapení se však na druhém konci nikdo neozýval, a to ani když jsem pečlivě prozkoušel několik adres, které byly podle všeho funkční – pingovat na ně šlo bez problémů. Problém s výzkumem FSP jsem tak odložil na neurčito, jelikož výzkum přesahoval mé možnosti.
KA9Q
FTPčkovat z MS-DOSu byla otrava, jelikož to byl single user/tasking OS. Neustále se hlásit telnetem na Unix připojený přes modem byla otrava taky, nebylo to totiž přes SLIP moc rychlé. Kromě toho mohlo s Internetem pracovat jen jedno počítadlo. Naštěstí jsme používali velice hezký open source program KA9Q, a nikoliv ty příšernosti od NSCA nad packet driverem pro SLIP, a tak naše duševní zdraví tolik netrpělo. KA9Q totiž umělo více sessions najednou, něco podobného, jako jsou dnešní virtuální console. Jediným problematickým místem v KA9Q byl DOS shell, který byl občas potřeba. Zhruba v 30 % návratů do KA9Q systém vytuhl, což znamenalo nejen reset, ale i ztrátu tak těžce získaných TCP spojení.
Musíme mít taky ten UNIX
A tak jsme zatoužili po pořádném OS, který si bude s Internetem dobře rozumět. Chtěli jsme mít prostě svůj opravdový operační systém, ano, byl to UNIX. V té době byly pro i386 dvě volby, pokud nepočítám komeční Unixy, které byly na hraní dost drahé. Dodo (dodělej doma) Linux, nebo plnohodnotný Unix BSD/386. Nevím, kdy vyšla první verze Slackwaru, ale pokud již vyšla, tak jsme o ní tehdy nevěděli.
Instalace BSD/386 znamenala stažení značného množství zdrojáků. Pokud po přečtení první části čekáte líčení stahovacích hororů, musím vás zklamat – zdrojáky jsme našli již stažené v Čechách, a tak to svištělo 1K/sec. Zdrojáky bylo nutné na nějakém i386 Unixu přeložit cross-kompilátorem, což jsme my začátečníci nezvládli. Našli jsme ale bootovací rescue diskety s BSD/386, takže jsme byli schopni vytvořit na disku partition s UFS filesystémem a udělat ji bootovací.
Velké hledání binárek
BSD/386 bylo souzeno se zrodit z velké kompilace. K tomu je třeba mít nainstalováno trochu více software, než bylo na bootovačce. Například kompilátor, hlavičkové soubory, make, awk, sed a pár dalších utilit. Ty jsme neměli a ani nevěděli, odkud je získat. Začali jsme se připojovat na různé FTP servery a zkoumali jsme, na jakých mašinách vlastně běží. Posléze jsme lokalizovali několik FTP serverů běžících na BSD/386. Anonymní FTP servery bohužel běžely v chroot prostředí, které kýžené binárky v /bin nainstalované nemělo. Potřebovali jsme uživatelský přístup k některému ze strojů. Po několika dnech se nám podařilo nějak získat funkční username/password, už si nevzpomínám jak. Nyní jsme si tolik potřebné binárky konečně zluxovali a akce mohla začít.
Velká kompilace
proběhla na naší mid class mašině – 486/25SX 8 MB RAM za méně než 10 pracovních dnů a nocí. Kompilaci bylo nutné několikrát přerušovat, jelikož se nedostávalo diskového prostoru, a tak jsme přesouvali a mazali soubory, jak jen to šlo. Se source code distribucí si to ostatně můžete vyzkoušet i dnes. Pro emulaci tehdejších podmínek si vemte starý 120MB disk a 9600 modem. Naše úsilí bylo korunováno úspěchem. Po dvou měsících jsme konečně měli UNIX! Co je lepší než nainstalovaný UNIX? Nakonfigurovaný Unix!
Unix Guru
Po nějaké době se nám poštěstilo sehnat opravdového Unixu znalého gurua. Guru rád odpovídal na dotazy týkající se konfigurace našeho unixového systému. Potřebné konfigurační změny i následně prováděl za neustálého proklínání BSD systémů, jelikož patřil do System V učednické posloupnosti. Moc jsme toho od něj nepochytili, jelikož i takto hendikepován pracoval na náš vkus příliš rychle. Systém byl nakonec odborně nakonfigurován a vydržel nám funkční několik dalších let, než jsme jej přeinstalovali Slackwarem, jelikož měl X-Window System a hlavně se nemusel kompilovat.
Když měl Gurudéva přestávku, ve které se snažil vyřešit pohyb pomocí kurzorových kláves ve vi, napadlo mě, že bych se ho mohl zeptat na to FSP. Vyrazil jsem nabývat poznání.
FSP je zlej program
rk: Co je to FSP, jak se píše v FTP listu, to je překlep?
g: Cože? FSP? To je zlej program!
rk: To je něco na přenášení souborů, píšou tam i číslo portu!
g: FSP je zlej program!
rk: Co je na něm zlého?
g: FSP je zlej program!
Gurudév se zacyklil, a tak jsem ho nechal být. Už mě dál nezajímal – ostatně nezůstal zacyklený ani do druhého dne. Po nějaké době ho zresetoval nějaký high priority event (jídlo, zima, sex, spánek, … kdoví)
Potřebuju nutně FSP
Lepší doporučení FSP dostat ani nemohlo. Kdo by koneckonců odolal pokušení mít nějaký zlý program? Já ne. Zatím jsem měl pouze samé hodné programy, pokud nepočítám viry. Dobový citát: „Na Unixu se všechno překládá. Pokud dostaneš virus, tak i ten si musíš nejdřív přeložit.“ FSP tak vzbudilo můj zájem a pozornost. Tak on to je nějaký program? Začal jsem hledat program se jménem FSP…
Archie
Programy uložené na FTP serverech se vyhledávaly s pomocí služby archie, byl to takový Google fungující přes telnet s vlastní příkazovou sadou. Na světě bylo zhruba dvacet mašin, na které se šlo přihlásit telnetem jako archie, a následně vyhledávat požadovaný řetězec v databázi serveru. Některé z těchto strojů dokonce poskytovaly po stisknutém CTRL-Z v taktickém okamžiku (pager) takzvané „rozšířené služby“.
Archie se opravdu činil, nalezl desítky instalačních tarballů fsp-2.4, které vyšlo v březnu 1992. (Pokud by někdo věděl, kde se dá dnes stáhnout archie server, nechť to napíše do diskuse.)
Ach ty překlady
Stáhnout FSP nedělalo problémy, jednalo se o relativně malý soubor. S překladem to bylo už horší. V té době se vyskytovalo mnohem větší množství různých Unixových odrůd, než je tomu dnes, které si se vzájemnou kompatibilitou hlavu nelámaly. POSIX? Ten snad tehdy nebyl ani na papíře. Pod pojmem „přeložit program“ se skrývala akce, kterou bychom dnes nazvali „přeportování“.
V před GNU-Configure dobách se porting na jednotlivé platformy řešil obvykle tak, že v Makefile byly různé sekce s doporučeným nastavením pro různé druhy Unixů. Pokud měl člověk trochu štěstí, některá ze sekcí zabrala a program se přeložil. Mně nejčastěji zabíraly sekce pro System V, a tak jsem velmi často pochyboval, zda mám vůbec BSDčko. Pokud nic nezabralo, chtělo to zkoušet různé jejich kombinace.
Dalším problémem byly různé chybějící funkce v libc. Většinu chybějících funkcí jsem měl již připravených z dřívějška a stačilo je k výslednému programu přilinkovat. Častým problémem byla zcela neznámá funkce. V tomto případě jsem se snažil analýzou zdrojáků zjistit, co by asi tak mohla dělat, a potom jsem ji od oka napsal. Pokud jsem to nezjistil, nahradil jsem ji prázdnou funkcí a bylo. Ačkoliv to zní divně, i tímto způsobem šlo rozběhnout, až na pár detailů, většinu softwarových produktů.
Vzhledem k problematickým překladům nedělali Unix admini upgrady zrovna moc rádi. Binárky se téměř nepoužívaly, jelikož škemrat o binárky pro svůj stroj v konferencích bylo považováno za projev naprosté administrátorovy neschopnosti. Tehdy byla administrace opravdu vysoce kvalifikovaná práce, dneska to s apt-get zvládne s trochou štěstí i cron.
Časem se začaly objevovat programy s podporou ./configure. Tato vítaná novinka sice zvyšovala procento úspěšných překladů, ale ne moc výrazně, jelikož provedení ./configure je jedna věc a následný úspěšný make věc druhá.
Po přečtení těchto odstavců jistě pochopíte, jakou mně udělalo fsp radost, neboť se přeložilo hned napoprvé bez chyb. To se stávalo opravdu velice zřídka a od zlého programu bych to rozhodně nečekal. Asi bych měl ještě poznamenat, že to bylo způsobeno zejména tím, že autor jel na BSDčku taky.
Příště
Příště si přečteme něco z mých zápisků o softwarovém designu. Tento seriál je sice o FSP a nikoliv o softwarovém designu, ale jednu jejich část tvoří případová studie FTP/FSP, a právě ta nás bude zajímat.