You are here: Home Historické dokumenty ISODE-8.0.1 a HNMS2
Document Actions

ISODE-8.0.1 a HNMS2

by Rostislav Opočenský last modified 2007-01-02 16:25

Popis instalace HNMS2 pod Linuxem z 19.8.2000

Zdají se Vám běžně dostupné NMS (Network Management Systems) poněkud slabé, když přijde řeč na monitorování stovek hostů? Trápí Vás, že je tkined pomalý? Že z HP OpenView dostanete za všechny ty peníze jen pěkná blikající okýnka a narážíte na uzavřenost Windows? Že NNM stojí dvakrát více než Vaše auto? Že instalace CiscoWorks zaměstná střelhbitého klikače, který to už podruhé stejně nenakliká? Vadí Vám, že všechny tyhle nástroje jakoby předpokládaly, že sedíte stále u monitorovacího stroje a všechen Váš síťový hardware je v jedné lokální síti?

Napadlo Vás, jaké by to bylo, kdyby byl NMS distribuovaný? Poblíž sledovaných prvků by seděly IO moduly, každý odpověný za určitou část sítě, navzájem se zálohující. Nad nimi by běžel server odpovědný za komunikaci mezi všemi moduly a za udržování informací o aktuální topologii sítě. K serveru by se mohlo připojit současně mnoho klientů, textových i grafických. Byl by ošetřen konkurenční přístup k jednotlivým SNMP agentům. Nasbíraná data by se ukládala do SQL databáze. A ke všemu by v takovém systému byl ještě modul s prvky umělé inteligence, který by vyhodnocoval provoz v síti a korigoval jej? Že byste v takovém případě postrádali už jen podporu pro trouble­ticket systém?

Pokud Vás napadlo, že je nejlepší nechat si takový systém napsat na zakázku, máte do jisté míry pravdu. Pokud ale umíte programovat a jen se Vám nechce vymýšlet už vymyšlené a implementovat otravné věci jako komunikační protokol, správu sessions, kompilátor MIB apod., možná Vás zaujme tato stránka. Níže popisuji, jak úspěšně zkompilovat ISODE (the ISO Development Environment) a HNMS2 (the NAS Hierarchical Network Management System.)

Doporučuji nejprve si přečíst související dokumenty, jelikož se zde již dále nebudu zabývat tím, co ISODE a HNMS je, nýbrž pouze jak z těch cca 430.000 řádků zkompilovat něco, co Vám pomůže implementovat NMS Vašich snů.

Podívejte se prosím na stránku ISODE pro Linux Najdete tam patch na zdrojové texty ISODE 8, které jsou umístěny na FTP serveru ISODE. Přečtěte si dokumentaci, zejména soubor isode-gen.8 (je v hlavním adresáři zdrojového stromu), který popisuje kompilaci knihovny.

Dále se poohlédněte po zdrojových textech HNMS2. Spolu s dalšími hodnotnými informacemi je naleznete na anonymním FTP serveru v oblasti pana Jude George, autora HNMS. Budete potřebovat hlavně soubor hnms2-linux.tar.gz, což jsou zdrojové texty HNMS2 upravené pro Linux panem Cristianem Vlasceanu. Podívejte se též na stránku pana Steve Stuczynskiho. Vytiskněte si dokumentaci k HNMS, několikrát si ji přečtěte a rozhodněte se, zda Vám to stojí za to.

Kompilace

Spařte si čaj. Nejlépe zelený, vícenálevový, připravte si horkou vodu na dolévání (nejlépe do termosky), zapalte vonnou tyčinku a pusťte vhodnou hudbu. Máte-li raději jiný druh čaje, nechám to na Vás. Vypněte klienta SETI@home, budete potřebovat hodně strojových cyklů.

Kompilace ISODE 8.0.1

Rozbalte zdrojové texty do adresáře, ve kterém máte alespoň 30MB volného místa:

       tar xzf .../isode-8.tar.gz

Oprostěte stažený patch o DOSové konce řádků (pomocí dos2unix, hd2u nebo třeba takhle brutálně:

       perl -ne 'chop; chop; s/$/\n/; print;' \
< .../isode-8.0-linux.patch \
> oklesteny-patch

Aplikujte patch pro Linux od p. Mike Jagdise:

       patch -p0 < oklesteny-patch

Přejmenujte adresář isode-8.0 na isode-8.0-linux.

Aplikujte můj patch pro Linux (RedHat 6.0, jádro 2.2.13):

       patch -p0 < orbis-patch

Vlezte do adresáře isode-8.0-linux

Postupujte podle dokumentu isode-gen.8. Tedy zhruba:

       cd config
cp linux.make pepik.make
vi pepik.make
ln pepik.make CONFIG.make
cp linux.h pepik.h
ln pepik.h ../h/config.h
cp aliases.local ../support
cp services.local ../support
cp entities.local ../support
cp macros.local ../support
cp objects.local ../support
cd ..
./make once-only
./make >& prubeh-kompilace && echo 'Zvitezili jsme!'

Než kompilace doběhne, pusťte si v druhém okně

       tail -f .../prubeh-kompilace

Pokud potřebujete ISODE pouze pro zkompilování HNMS, dejte

       ./make install

a nezatěžujte se ostatními záležitostmi popisovanými v isode-gen. Nakonec můžete pročistit adresář ISODE pomocí

       ./make clean

Bylo to docela jednoduché, že? Poprvé mi zabraly pokusy o úspěšné zkompilování a souběžná tvorba patche celý jeden pracovní den (cca od 11:00 do 23:40). Napodruhé, vybaven zde uvedenými znalostmi a patchi tak 20 minut. Doufám, že Vám uvedené informace poslouží. Vyskytnou-li se problémy s aplikací mého patche, neváhejte mě kontaktovat.

Kompilace HNMS2

Po zkompilování a nainstalování ISODE přibyly ve Vašem systému nové knihovny a řada hlavičkových souborů. Jejich umístění jste si zvolili v souboru pepik.make. Nyní použijeme hlavičkové soubory pro kompilaci HNMS a knihovnu libisode.a (resp. její část -- PSAP) pro slinkování výsledných binárek.

Rozbalte zdrojový tarball:

       tar xzf ../hnms/hnms2-linux.tar.gz

Vlezte do adresáře hnms2. Otevřete soubor Makefile a trošku jej upravte:

Původní řádekNový řádekPozn.
CPU=i486CPU=Z80Použijte řetězec, který nejlépe odpovídá Vašemu procesoru
SRC=/usr/local/src/hnms2SRC=.../hnms2Zadejte jméno aktuálního adresáře
ISODETOP=/usr/local/isode-8.0ISODETOP=/usr/localPoužijte správnou hodnotu podle nastavení v pepik.make z ISODE
ISODEINC=$(ISODETOP)/includeISODEINC=$(ISODETOP)/include/isodedtto
POSY=#(ISODETOP)/bin/posyPOSY=$(ISODETOP)/bin/posyNe, nejsou stejné ;-)
NO_ELF=-b i486-linuxaoutNO_ELF=Cristian Vlasceanu použil předkompilovanou knihovnu ISODE ve formátu a.out. My jsme ji před chvíli zkompilovali ve formátu ELF, takže necháme tento symbol prázdný.
CFLAGS=...CFLAGS=... -OZapneme optimalizaci kódu
Nemáte-li komerční knihovnu Motif, podnikněte následující kroky a zkompiluje se pouze textový klient (hnmstool) a daemon (hnmsd).
LIBS=...vyhoďte -lXmNebudeme přilinkovávat knihovnu libXm
cd $(SRC)/ui; make; mv hnms $(BIN)zakomentujte pomocí #Nebudeme kompilovat grafického klienta (hnms)

V souboru hnmslib/stdhnms.h změňte řádek

       #include <UNIV-types.h>

na

       #include <pepy/UNIV-types.h>

Kompilujete-li grafického klienta, opravte chybu v souboru ui/objectdata.c ve funkci UpdateObjectDataObject. Na řádku ve tvaru

       for (i=0; i<d->count; d++)

má být správně

       for (i=0; i<d->count; i++)

Nakonec vytvořte v adresáři bin podadresář se jménem, které jste zadali jako CPU v Makefile. Tedy třeba:

       mkdir bin/Z80

Nakonec spusťte kompilaci pomocí

       make

Vygenerované soubory naleznete v adresáři bin/... Dále se řiďte pokyny v souborech docs/README a doc/docs.ps Pro začátek vřele doporučuji použít HNMS_DEBUG=DEBUG_ALL a sledovat, co se děje ve všech modulech v systému.

Pozn.: hláška IO Make Ipaddrs: execution error v modulu server je velice pravděpodobně způsobena tím, že funkce HNMS_process očekává od seq_func v běžícím tasku nulovou návratovou hodnotu. Task IO Make Ipaddrs (tj. funkce IO_make_ipaddrs) však vrací nedefinovanou hodnotu (neobsahuje return.)


powered by Plone