Portál AbcLinuxu, 5. května 2025 09:21
Další díl ze série článků, které představují OpenSolaris, popisuje základní postupy konfigurace sítí, vysvětluje systém spouštění systémových služeb a poskytuje úvod do práce s balíčky a balíčkovacím systémem IPS.
V nastavení sítě máme na výběr mezi automatikou nebo ručním nastavením. Po instalaci se o něj stará nwam, NetWork AutoMagic démon. Umí jen základy, a je určen hlavně pro pracovní stanice a přenosné počítače. Připojí drátovou linku, pokud má k dispozici funkční kabel, nebo nabídne bezdrátovou síť k výběru. Současná implementace má problémy s šifrovanými WiFi sítěmi (uživatelské rozhraní dokonce nemá v přihlašovacím formuláři možnost zadat uživatelské jméno, takže s jakoukoli sítí která ho vyžaduje neuspějete), nelze do něj zadat statickou adresu, a na pokročilosti jako ipsec nebo routování rovnou zapomeňte, nwam na to není stavěný. Implementace samozřejmě není finální, a časem by toho měl nwam umět dost, jak napovídají návrhy UI:
http://opensolaris.org/os/project/nwam/UIResearch/Sketches/ConfigPrototype/
Pomocí standardní statické konfigurace lze nastavit vše, co se dá od Unixu čekat. Jak to udělat? No, až k IPSecu, tunelům a podobným věcem zabíhat nebudeme, ale základní konfigurace za pozornost stojí, dost se totiž liší od Linuxu. První krok je zjistit, jestli se používá nwam, nebo standardní statická konfigurace. Na to jsou v systému dvě různé služby; zjistit, která je aktivní, nedá moc práce:
jakub@ferda:~$ svcs network/physical STATE STIME FMRI disabled 16:48:23 svc:/network/physical:default online 16:48:24 svc:/network/physical:nwam jakub@ferda:~$
Podle všeho se mi na stanici ferda o síť stará nwam. Přehodit systém na statickou konfiguraci lze příkazy:
pfexec svcadm disable network/physical:nwam pfexec svcadm enable network/physical:default
Zpět to jde stejně, jen povolíme nwam a zakážeme statickou konfiguraci.
Samotné nastavení IP adres probíhá tak, že napřed namapujeme adresu na jméno v souboru /etc/hosts a pak přiřadíme jméno nějakému rozhraní vytvořením souboru /etc/hostname.<rozhraní>, ve kterém bude ono jméno. IP adresu implicitní brány umístíme do souboru /etc/defaultrouter. Další kroky už asi nikoho nepřekvapí, nastavíme /etc/nsswitch.conf, nejsnáze zkopírováním některého z předpřipravených /etc/nsswitch.něco (nsswitch.dns je v našich podmínkách žhavým kandidátem), nastavíme resolv.conf a je to, můžeme se zbavit nwamu, případně restartovat službu nebo počítač, aby se změny projevily.
Co je to <rozhraní>? Jméno rozhraní, ale jak ho zjistit, už je trochu vyšší dívčí. V tom nejjednodušším případě nám ho zjistil nwam a povolil ho, pak nám o něm řekne ifconfig -a. Pokud nwam o ničem neví, je šance, že o něm bude vědět dladm (OpenSolaris je utilit jménem něcoadm plný), přesněji dladm show-phys. Dladm je nástroj poměrně užitečný, krom fyzických rozhraní se s ním také dají konfigurovat agregace linek (v okolí Linuxu známé jako port trunking nebo port bonding), VLANy, ručně scanovat bezdrátové sítě a připojovat se k nim a (v budoucí verzi, která je teď vývojová) vytvářet virtuální lokální sítě.
Pokud zatoužíte po ručním ovládání sítě, je tady ifconfig. Od linuxového se liší jen málo, hlavně tím, že umí sám používat DHCP, a tím, že pokud chcete výpis síťových rozhraní, je třeba udělat ifconfig -a, nikoli jen ifconfig.
O firewall se v OpenSolarisu stará starý dobrý ipfilter, který je k nalezení v různých BSD, ale i v komerčních unixech. Má li počítač sloužit jako směrovač, je potřeba zapnout předávání paketů. Pro IPv4 stačí pfexec svcadm enable network/ipv4-formwarding, pro IPv6 jen změnit číslo.Nejednou tu proběhlo ono tajemné svcadm, o co jde? svcadm je nástroj na správu služeb v OpenSolaris, ale napřed trochu teorie.
Staré verze Solasiru měly klasické SYSV rc skripty, které se staraly o spouštění služeb. Ve verzi 10 ale přišla novinka: Jakožto součást nových "predictive self-healing" mechanismů byl systém správy služeb zcela přepracován. Tradiční skripty, adresáře /etc/rc.d a runlevely zmizely a nahradilo je SMF, service management facility. V SMF je každá služba popsána XML souborem (říká se jim manifesty a sídlí v /var/svc/manifest), který obsahuje nejen informace o tom, jak službu nastartovat a vypnout, ale také o tom, jaké má služba závislosti nebo práva.
Ne všechny služby znamenají reálně běžícího démona, někdy jen služba nakonfiguruje nějakou část systému a při vypnutí ji vrátí do původního stavu, jako výše zmíněná network/ipv4-forwarding. Další služby obsahují jen závislosti, hlavně služby v kategorii milestone, které nahrazují původní runlevely. Pokud ale služba je skutečně běžící démon, systém se postará o to, aby se po náhodném pádu spustil znovu. Každá služba má svůj vlastní contract, takže je pro systém jednoduché poznat, kdy služba skončila, i bez toho, aby si systém musel pamatovat PID, a služba je považována za běžící, dokud běží nějaký potomek.
Služby mají několik stavů, nás budou hlavně zajímat stavy online, offline, disabled a maintenance.
Nastartování služby a její nastavení tak, aby se aktivovala po restartu, je tedy totéž, pokud si specificky neřeknu o dočasný start. Pokud se systému nepovede službu nastartovat nebo udržet v chodu, přehodí službu do stavu maintenance a počká si na administrátora, až s tím něco udělá.
Krom toho mají služby přiřazené i vlastnosti, které mohou startovací skripty služby nebo služba sama číst. Jde o informace, jak na kterých rozhraních má naslouchat sendmail, nebo kolik má být spuštěno NFS démonů. Často jsou to informace, které se musí démonům předat jako parametr v příkazovém řádku.
A teď prakticky. Výpis služeb poskytne nástroj svcs. Normálně vypíše jen aktivní služby, ale lze ho přesvědčit, aby vypsal všechno. Užitečná je kombinace -xv, která vypíše nefunkční služby a vysvětlení, proč je SMF prohlásilo za nefunkční. Druhým nástrojem je svcadm, parametry enable a disable popis snad nepotřebují, ale pokud přídáte -t, budou služby (ne)aktivní jen do restartu. Pomocí parametrů mark a clear lze službě nastavit, jestli má, nebo nemá být v maintenance stavu (a udělat svcadm clear je tedy potřeba, pokud jsme například opravili konfiguraci a chceme, aby SMF znovu zkusilo službu spustit. Nastavovat vlastnosti služeb jde utilitou svccfg, ale je to složité a spousta služeb se stejně nastavuje v tradičních konfiguračních souborech v /etc, takže vás jen odkážu na manuálovou stránku s tím, že po změně nezapomeňte udělat svcadm refresh.
Jméno služby, se kterou chci něco dělat, není potřeba psát celé - jen tak, aby SMF vědělo, se kterou službou chci pracovat. Tedy network/physical nestačí, protože můžu myslet jak veri default, tak nwam, ale ipfilter je jen jeden. Pokud přidáte nový manifest (třeba instalací něaké služby), sice se uloží na správné místo, ale se služba nijak neprojeví. Je potřeba manifest ručně naimportovat pomoci svccfg import <manifest>, nebo restartovat počítač.
A poslední téma pro dnešní den, balíčkovací systém. Krom SYSV balíčků, které podědil po Solarisu (a kterým se věnovat nebudeme), má OpenSolaris vlastní balíčkovací systém - IPS, Image Packaging System. Byl vytvořen speciálně pro OpenSolaris tak, aby napodobil pohodlnost, jakou Linuxu dává apt-get a podobné nástroje, a přitom využil další možnosti, které OpenSolaris nabízí.
Jak to funguje? Celé IPS je síťové, jediným možným zdrojem balíčků je repozitář. To je nevýhoda, protože nejde jen tak stáhnout balíček a někam ho přenést, a pokud chci vyvíjet balíčky, nezbývá mi, než používat nějaký repozitář, do kterého je budu nahrávat. Krom toho ale IPS umí všechny věci, které se od balíčkovacího systému v dnešní době očekávají, tedy automatické řešení závislostí, hromadné aktualizace, vyhledávání; a repozitářů mohu samozřejmě používat víc najednou.
Celková koncepce se od linuxové trochu liší, což je dáno vývojovým modelem OpenSolarisu. Místo aby skupinky vývojářů spravovaly každá jeden balíček, nahrávaly je do repozitářů a v jeden den jste si tak mohli stáhnout nový vim a jindy zase nový Firefox, u OpenSolarisu probíhá vývoj centrálně, a to tak, že nové balíčky se neobjevují postupně, ale jednou za čas se vydá nová verze OpenSolarisu, zvedne se číslo verze u všech balíčků a aktualizace se tedy dělá hromadně. Jednou za čas znamená dvakrát do roka u stabilní verze a zhruba jednou za dva týdny u verze vývojové. Na druhou stranu, IPS pracuje hlavně s rozdíly mezi verzemi balíčků, takže se může stát, že aktualizace balíčku na novou verzi proběhne jen zvýšením čísla verze v databázi.
Tady trochu odbočím. V minulém článku jsem mluvil o snapshotech a klonech (tedy rw snapshotech) v ZFS a o tom, jak je snadné vytvořit snapshot a klon souborového systému a nestojí to téměř žádný čas a prostor. Nebylo by zajímavé provozovat vedle sebe několik různých verzí systému tak, že si vytvořím klony kořenového adresáře? Pravděpodobně bylo a OpenSolaris na tuhle funkci nabízí nástroj. Je jím utilita beadm (boot environment adm), která se krom vytvoření klonu postará i o úpravu GRUBu tak, abych si mohl při startu systému vybrat, které BE chci spustit. Je tedy snadné vytvořit prostředí a dělat v něm nějaké pokusy, instalovat aplikace, a potom se vrátit k původní verzi systému nebo naopak pokusné BE nastavit jako implicitní a původní smazat. Vytvořený klon se ale týká jen kořenového adresáře, tradiční úložiště dat /export zůstává společné, takže není potřeba data nijak kopírovat.
Proč o tom mluvím pravě teď? Je to proto, že když požádám IPS o aktualizaci celého systému, tak přesně tohle udělá - vytvoří nové prostředí, udělá v něm aktualizaci a až se mi bude chtít, můžu systém restartovat a spustit novou verzi.
IPS jde ovládat dvěma způsoby, buďto příkazem pkg v terminálu:
Neplést s pkgadd a pkgrm, které pracují se starým formátem balíčků), nebo GUI nástrojem, který najdete na ploše po instalaci.
Jak jsem říkal, IPS stojí na repozitářích. Po instalaci bude v systému zaveden jen jeden: pkg.opensolaris.org/release. Další možností, pokud toužíte po vývojové verzi, je používat pkg.opensolaris.org/dev. Vývojáře webových technologií by mohl zajímat repozitář pkg.opensolaris.org/webstack, kde najdete třeba Django, Drupal a nginx. Existuje i pkg.sunfreeware.com (jen pozor, na portu 9000), který obsahuje software z původních companion CD. Repozitáře mají webové rozhraní, takže stejné URL, které používá balíčkovací systém, jde zadat do prohlížeče a prohlédnout si obsah repozitáře. Přidat repozitář je možné pomocí pkg (pfexec pkg set-authority -O <url> <název>) nebo v grafickém package manageru.
V dalším díle uvidíte OpenSolaris jako desktop pro vývoj a multimédia.
Nechci rozpoutat nějaký flame, spíš jen přihodit historku k dobru... Měli jsme jakýsi Solaris (ne Open) a jediný problém byl, že nešla síťovka. Driver sice byl, ale ne na tom počítači. A tahat flashku a přenášet to na ní, to taky nešlo, protože byl obdobný problém s ovladači pro USB. Takže ani USB CDROMka. Nakonec jsme to přenesli na staré dobré 3.5" disketě
Pěkný článek, jen bych se přimlouval za článek, který by popisoval řešení některých průs*rů. V OpenSolarisu jsem narazil na některé nepochopitelné chování nejrůznějších částí systému:
Jinak jsem se "Soláčem" spokojenej, ale tyhle drobnosti kazí dojem.
Máte s tím někdo zkušenosti? Řešil někdo tyhle bugy?
Díky
Delete - ekonecny souboj s nastavenim terminalu, ze by zde - http://defect.opensolaris.org/bz/show_bug.cgi?id=3090
to vypada na "globalizacni" problem, zkuste se poptat zde - http://mail.opensolaris.org/mailman/listinfo/g11n-cs-discuss
problem vimu asi nikdo neresi, neni ani zalogovan na bugs.opensolaris.org
Díky za nasměrování.
Vim jsem pořešil přes vložení :set nocp do ~/.vimrc (standardně je v kompatibilním módu s vi a to je pěkná odpornost).
Delete jsem pořešil podle toho návodu. Vzal jsem /etc/inputrc z Ubuntu a mrsknul ho na místo v OSOLu a najednou to začalo chodit.
Zbývá už jen neschopnost napsat &. Zkusím to hodit někam do diskuze. Jsem na to zvědav.
Mám té aktualizaci do nového boot enviroment rozumět tak, že při aktualizaci (instalaci?) balíčků se neprovádí žádné skripty na běžícím systému?
Jak to řeší třeba Gnome, které při každé změně potřebuje nakopnout gconf nebo přepočítat cache s shared-mime-info?
Zdravím,
Já jsem OpenSolaris zkoušel poměrně nedávno a byl jsem nepříjemně zklamán. Prostředí velmi pomalé, boot velmi pomalý, po nabootování ihned spotřeba 1GB ram bez zjevného důvodu. Instalace bez možnosti zvolit si jiný FS nebo nějaké rozšířené věci - raid, LVM. Navíc OpenSolaris neobsahuje ovladače na mou ethernet kartu, nemluvě pak o wifi.
Kvůli těmto věcem se u mě dlouho neohřál. Co bych mu zase pochválil je docela pěkné prostředí (ať už obrázek Grubu, přihlašovací obrazovka anebo theme Gnome) - působí jednoduše, ale hezky a profesionálně. Pak se mi na Solarisu líbí všechny jeho pokrokové vymoženosti typu ZFS, zóny, apod., bohužel jsem se nedostal k jejich vyzkoušení. Nakonec se mi líbí, že není pod GPL, tímpádem může obsahovat nesvobodné ovladače...je hezké nabootovat a bezprostředně po instalaci vidět logo NVidia.
Milan Jurik:
S tím filesystémem asi máte pravdu, ale stejně mi přijde, že má Solaris při instalaci málo voleb. Například to, že nudí instalovat grafické prostředí. Myslel jsem, že Solaris je primárně určen na servery, já osobně si ale nedokážu představit mít na serveru grafické prostředí. Možná jsem moc kontroverzní, ale myslím, že Unix, který se vyhýbá konzoly a naopak podporuje grafické rozhraní o 106 není pořádný Unix. Dokonce ani defaulně nemá zapnuté virtuální konzole.
Prostředí se mi zdálo pomalé samo o sobě, možná že je stejně rychlé jako normální Gnome, ale jsem hold zvyklý na ultrarychlý Openbox
tomasgn:
QNX jsem zkoušel jen na pár minut jako live systém, ale moc jsem nevěděl co s tím a taky si nejsem úplně jistý licencí a toho, jestli to nebyla jen nějaká 30-ti denní zkušební verze a jinak se musí systém zaplatit.
Nechtěl byste napsat nějaký článek, případně rovnou seriál o QNX z pohledu dlouhodobého uživatele? Mám pocit, že informací o QNX je velmi málo a rád bych se o tomto systému dozvěděl něco více a věřím, že nejsem sám.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.