NetBSD: k čemu slouží rc skripty

5. 6. 2014
Doba čtení: 4 minuty

Sdílet

Linux je v současnosti nejznámější unixový systém, ale zdaleka ne jediný. Co takhle si třeba zkusit NetBSD? V dnešním díle si společně rozebereme rc skripty. Tedy co to je a jak to funguje. Pokusím se také ukázat jejich použití v praxi, například při nastavování síťových rozhraní v NetBSD.

INIT

Init je program, který se spouští v poslední fázi bootování. Nabízí několik módů (states), konkrétně jich je 7. Pro nás jsou nejdůležitější první dva. První je jednouživatelský režim, kdy se nestartují některé daemony, rc skripty, jádro je přepnuto do „insecure“, tedy nezabezpečeného režimu a pracujete přímo pod rootem. Je to tedy vlastně nouzový mód, ve kterém má administrátor možnost opravit, co je potřeba (například když jste něco špatně nastavili v rc skriptech).

Pozor na to, že v jednouživatelském režimu jsou automaticky se připojující diskové oddíly připojeny jen pro čtení. Abyste mohli cokoli změnit, musíte systémové oddíly na disku připojit pro čtení i zápis ( mount -w /dev/...) Druhý je víceuživatelský režim, kdy se startuje navíc především /etc/rc. Pro více informací tu jsou k dispozici manuály; man init.

RC SKRIPTY

rc

rc je řídicí skript, který řídí spouštění různých služeb a je vyvolán programem init. Samotný rc vyvolává další rc skripty: rc.shutdown; rc.conf; rc.local; rc.subr; a dále skripty v adresářích */rc.d; */defaults; */rc.conf.d Všechny tyto soubory a adresáře jsou umístěny v  /etc.

Než se začnu zabývat jednotlivými skripty, chtěl bych vás upozornit na to, že neuváženým zásahem do některého z rc skriptů si můžete poškodit svůj systém NetBSD.

/etc/rc.shutdown:

Jde o příkazový skript, který je volán programem shutdown. /etc/rc.shutdown se tedy podílí na procesu vypínání systému. Samotný skript zajišťuje vypnutí pouze některých služeb.

/etc/rc.local:

Tento soubor je poslední volaný rc skript při bootování. Slouží ke spouštění místních daemonů, které nezapadají do systému  rc.d

/etc/rc.subr:

Obsahuje funkce, které běžně používá program rc a také funkce, které používají skripty v adresáři  /etc/rc.d

/etc/defaults

V tomto adresáři se nachází mj. i soubor rc.conf. Ten v žádném případě needitujte! K editaci totiž slouží soubor /etc/rc.conf. V /etc/defaults/rc.conf  jsou výchozí systémová nastavení, která můžete měnit právě v /etc/rc.conf. Pokud něco v souboru /etc/rc.conf opravdu rozbijete a ani nevíte co, je nejjednodušší cestou nahradit /etc/rc.conf souborem rc.confdefaults.

/etc/rc.d

Jde o adresář, ve kterém jsou umístěny sh skripty. Ty jsou při startu, vypínání nebo přímo při běhu systému volány řídícím skriptem rc. Nastavení pro volání těchto skriptů majoritním skriptem rc jsou uložena v /etc/defaults/rc.conf; respektive v /etc/rc.conf. Jednotlivé skripty se dají samozřejmě spustit také při běhu systému. Příklad uvedu na  xdm:

# /etc/rc.d/xdm onestart

Po zadání tohoto příkazu se spustí xdm, vy se přihlásíte a dostanete se tak do výchozího grafického prostředí. V NetBSD je jako výchozí nastaven správce oken  twm.

Kromě argumentu onestart lze použít ještě další. Popíšu všechny základní:

  • start – zkontroluje se, zda je příslušná služba (program) spuštěná, pokud ne, spustí se Pozn.: Spustí se pouze program povolený v rc.conf  nebo povolený ve výchozím stavu!
  • stop – zastaví spuštěný program
  • onestart – spustí program jednorázově, přestože není povolen v  rc.conf
  • restart – funguje, jako byste zadali stop a poté start
  • status – zobrazí stav zvolené služby

Poslední uvedený argument ukážu na příkladu:

# /etc/rc.d/xdm status

$xdm is not enabled - see rc.conf(5).
Use the following if you wish to perform the operation:
  /etc/rc.d/xdm onestatus

Z výpisu je vidět, že start xdm není povolen (v rc.conf  je tedy položka xdm=NO). Pro zobrazení stavu tedy musím zadat následující příkaz:

# /etc/rc.d/xdm onestatus
xdm is not running.

Základní skripty v /etc/rc.d, které zajišťují běh dalších služeb:

  • NETWORKING
  • SERVERS
  • LOGIN
  • DAEMON

Nyní se konečně dostáváme k již tolikrát zmíněnému  /etc/rc.conf.

/etc/rc.conf

Je to systémový konfigurační soubor, který specifikuje, jaké služby se mají spouštět při startu systému.

Službu lze povolit více způsoby, jsou to tyto:

YES; ON; TRUE; 1

Zakázat se pak dá takto:

NO; OFF; FALSE; 0

Do rc.conf tedy můžete zapsat například xdm=YES, stejně jako xdm=ON  atd.

Aby systém vůbec začal bootovat do víceuživatelského režimu a začaly se spouštět postupně rc skripty, je nutné mít v rc.conf  tuto položku:

rc_configured=YES

Kompletní seznam toho, co můžete povolit či zakázat, najdete na manuálových stránkách.

Nyní pojďme na konfiguraci sítě, u které využijeme i rc skripty.

Konfigurace sítě

Základní konfigurace sítě pro připojení k internetu se dá provést už při samotné instalaci NetBSD. Pro konfiguraci sítě vašeho systému pomocí DHCP do /etc/rc.conf vložte dhclient=YES. Před tímto krokem musíte nicméně povolit DHCP (taky v  rc.conf).:

ifconfig_*=dhcp

Za * dosadíte rozhraní vašeho připojení (např. lo0). Ten poznáte z výpisu  ifconfig.

Dále byste měli zadat svůj hostname, a to opět do  /etc/rc.conf.

hostname=váš_hostname

Výchozí routu přidáte opět pomocí jednoho řádku do  /etc/rc.conf:

defaulroute=IP_adresa

Do /etc/resolv.conf přidejte IP adresu nameserveru. K práci se sítí určitě využijete program ifconfig. Další konfigurace se dají provést v  /etc/hosts.

ict ve školství 24

Se sítí by podle mých zkušeností neměly být větší problémy. Snad jen, že pokud nemáte definovaný hostname, tak systému při snažení se připojit k internetu trvá, než najde správnou IP adresu. Otravné je to zejména při instalaci softwaru pomocí pkgin (binární balíky), ale i přes pkgsrc. Proto byste měli svůj hostname definovat.

V příštím díle rozeberu možnosti instalace softwaru na NetBSD, kterých je opravdu mnoho.