Změna konfigurace modulu
Nejprve se budeme zabývat nastavením systému Linux, který je na modulu SAM9260 předinstalován. Pak si ukážeme jak změnit také nastavení zavaděče U-Boot.
V této souvislosti bych chtěl upozornit, že zde není žádné kouzelné tlačítko, jak špatně nakonfigurovaný systém uvést do původního výchozího stavu. Buď dokážete špatnou konfiguraci opravit sami (kromě neznámého hesla superuživatele root to vcelku není problém) nebo musíte přehrát kořenový souborový systém v paměti NandFlash (umístění firmware a jeho částí je probráno v jiné kapitole). Je proto potřeba postupovat s rozmyslem.
Konfigurace systému Linux je dána obsahem textových konfiguračních souborů, průběh inicializace a ukončování systému pak ve spouštěcích a ukončovacích skriptech. Tyto soubory a skripty nalezneme v adresáři /etc. Pro editaci konfiguračních souborů a skriptů je na modulu k dispozici editor vi. Jeho ovládání je popsáno v příslušné kapitole. Jen si dovolím upozornit na skutečnost, že místo standardní sady příkazů a utilit je předinstalovaný Linux postaven na bázi Busyboxu, což je ve výsledku binární soubor, který v sobě sdružuje zjednodušenou sadu příkazů a utilit. Některé konfigurační soubory proto mají mírně odlišné způsoby zápisu.
Níže uvádíme seznam základních parametrů systému Linux, které lze změnit:
- jméno počítače - anebo také hostname. Jako hostname se použije obsah souboru /etc/hostname. Výchozí hodnota je ucsimply-sam9260, která se zobrazuje jako součást přihlašovacího promptu. Změna je platná po restartu.
- úvodní obrazovka - úvodní obrazovka pro systémovou konzoli je dána obsahem souboru /etc/issue.rcs, pro telnet pak obsahem souboru /etc/issue.net. Změna je platná po restartu, resp. po otevření nového spojení přes telnet.
- prostředí po přihlášení - globální nastavení prostředí, resp. proměnných prostředí, společné pro všechny uživatele je v souboru /etc/profile. Zde se nastavují různé systémové proměnné jako proměnná PATH, délka historie příkazů (proměnná HISTSIZE), časová zóna atd. Změna nastavení je platná ihned po opětovném přihlášení.
- síťové rozhraní - IP adresa, maska podsítě a brána se nastavují pro síťové rozhraní v souboru /etc/network/interfaces. DNS servery se nastavují v souboru /etc/resolv.conf. Změnu nastavení můžeme ihned uvést v platnost vypnutím síťového rozhraní příkazem ifdown eth0 a opětovným zapnutím příkazem ifup eth0.
- uživatelé, skupiny - seznam uživatelů je v souboru /etc/password, seznam uživatelských skupin pak v souboru /etc/group. Tyto soubory lze samozřejmě editovat přímo, nicméně je doporučeno pro manipulaci s uživatelskými účty využívat příkazů adduser a deluser, stejně jako pro skupiny příkazů addgroup a delgroup. Změny jsou platné ihned, pro přihlášené uživatele ovšem až po jejich opětovném přihlášení.
- úrovně běhu, virtuální a sériové konzole - nastavení, který skript se má pouštět při inicializaci, který při ukončení systému, jak reagovat na stisk kláves Ctrl+Alt+Del, počet a vlastnosti virtuálních a sériových konzolí - to vše se nastavuje v souboru /etc/inittab. Změny jsou platné po restartu.
- seznam připojitelných zařízení - seznam blokových zařízení, na která lze ukládat data (obsahují totiž podporovaný souborový systém) a která může připojit i jiný uživatel než jen root, jsou v souboru /etc/fstab. Sazmořejmě lze připojit i bloková zařízení, která v uvedeném souboru nejsou, ale to může udělat jen a pouze superuživatel root. Standardně jsou zde uvedené různé interní zařízení pro potřeby operačního systému, dále zařízení, které obsahuje kořenový souborový systém (rozuměj systémový ”disk”), dále různá přenosná úložiště (USB flash disk) apod. Změny pro ještě nepřipojená zařízení jsou platné ihned jinak až po opětovném připojení zařízení.
- inicializační a ukončovací skripty - tyto skripty definují kroky, které se vykonávají při startu systému, resp. při jeho ukončování. Uživatel si tak může snadno přizpůsobit poslední část inicializace systému, resp. první část ukončování běhu systému. Typicky se zde připojují interní souborové systémy, startuje se služba pro záznam událostí, aktivují se síťová rozhraní a další služby. Ukončovací skript bývá obvykle opakem inicializačního skriptu.Oba skripty včetně dalších podpůrných skriptů jsou umístěny v adresáři /etc/init.d. Inicializačním skriptem je skript rcS, ukončovacím skriptem pak skript rcK. Změny v inicializačním skriptu jsou platné až po restartu, změny v ukončovacím skriptu pak ihned.
Vedle předinstalovaného systému Linux je možné měnit i konfiguraci zavaděče U-Boot, který má na starosti právě zavedení systému Linux. Z nastavení U-Bootu nás bude nejvíc zajímat:
- nastavení parametrů síťového rozhraní - parametry síťového rozhraní v U-Bootu se stejně jako ostatní parametry nastavují v proměnných prostředí U-Bootu (viz např. změna MAC adresy). Níže uvádíme příkazy pro změnu jednotlivých parametrů síťového rozhraní:
u-boot> setenv ipaddr 192.168.1.20 u-boot> setenv netmask 255.255.255.0 u-boot> setenv gatewayip 192.168.1.254
Samozřejmě pro trvalou změnu je nutné uložit proměnné prostředí do DataFlash / NandFlash příkazem saveenv. - nastavení IP adresy TFTP serveru - TFTP server slouží úložiště dat, např. aktualizací firmware, odkud může U-Bootu stáhnout do RAM paměti nový firmware, který je pak možné z U-Bootu nahrát do modulu. IP adresa TFTP serveru se změní takto:
u-boot> setenv serverip 192.168.1.2
- parametry příkazové řádky jádra - jak už je uvedeno výše, zavaděč U-Boot se stará o zavedení systému Linux, resp. jeho jádra. Mimo to umí i jádru předat parametry, kterými jádru řekneme, kde má hledat kořenový souborový systém atd. O těchto parametrech mluvíme jako o parametrech příkazového řádku jádra a slouží k tomu, abychom mohli měnit parametry bootování jádra, aniž bychom museli jádro znovu překonfigurovat a zkompilovat. Parametry příkazové řádky jádra jsou uloženy v proměnné bootargs prostředí U-Bootu. Níže uvádíme hodnotu této proměnné, získanou příkazem printenv bootargs:
bootargs=console=ttyS0,115200 ubi.mtd=0 root=ubi0:rootfs rw rootfstype=ubifs
Vše za textem bootargs= jsou už parametry příkazové řádky jádra. Pokud je chceme změnit, musíme použít odpovídající syntaxi (tedy nikoliv syntaxi U-Bootu, ale jádra). Seznam dostupných parametrů jádra naleznete např. zdehttp://www.kernel.org/doc/Documentation/kernel-parameters.txt