Pro projekt automatické instalace Linux ve výpočetním prostředí Západočeské
univerzity byl vybrán systém FAI (Fully Automatic Installation)
1.
Tento systém umožňuje vysokou míru konfigurovatelnosti a přes několik
nedostatků je použitelný pro tak různorodé prostředí jako je na univerzitní
půdě.
Tento materiál shrnuje poznatky získané v průběhu používání systému FAI.
Jsou zde uvedeny postupy potřebné k nahrazení problematických služeb Orionu.
FAI (Fully Automatic Instalation) je neinteraktivní systém
pro instalaci Debian GNU/Linuxu na jednotlivý počítač nebo celý cluster.
FAI používá pro instalační proces Debian GNU/Linux s kolekcí shell a
perl skriptů. Změny v konfiguračních souborech instalovaného systému mohou
být prováaděny pomocí cfengine, shell, perl a expect skriptů.
Počítač na který má být instalován operační systém pomocí FAI může
bootovat z běžných bootovacích médií (disketa, disk, síť). Je však nutné
pro nabootování použít speciálně zkompilované jádro (s podporou
ramdisku, nfs a nfsrootu, dhcp/bootp clientem) a předat jádru
při bootování parametry, díky nimž dokáže správně instalaci inicializovat.
Typická instalace probíhá z diskety, kdy jádro při startu získá pomocí
BOOTP nebo DHCP svoji IP adresu.
Jádro následně namountuje svůj kořenový souborový systém umístěný na
FAI serveru protokolem NFS, tzv. nfsroot.
Z /etc/inittab instalovaného stroje je pak, stejným mechanismem,
jakým se za normálních okolností spouštějí rc soubory, spuštěn instalační
skript rcS.
Skript rcS provádí na základě obsahu konfiguračních
souborů na instalačním serveru rozdělení disku, vytvoření souborových
systémů, instalaci a konfiguraci software. Podrobný popis funkce systému
FAI je uveden v originální dokumentaci.
Instalaci stanice zahajuje a řídí skript
rcS. V následujícím
popoisu činnosti skriptu je umístění všech souborů vztaženo ke koření
instalovaného stroje, na FAI serveru jsou tedy tyto soubory buď
v adresáři
/usr/lib/fai/nfsroot nebo
/usr/local/share/fai.
Po startu instalačního jádra se prohlíží soubor /etc/inittab v němž
podle definice řádky
si::sysinit:/etc/init.d/rcS
spouští skript /etc/init.d/rcS2.
definuje proměnné shellu pro základní chod instalace, např.:
timeout=30 bootpc timeout
FAI_VERSION="FAI 2.2.3, 16 november, 2001" verze
classes="DEFAULT $HOSTNAME LAST" default třídy
rcslog=/tmp/rcS.log logový soubor
stamp=/tmp/FAI_INSTALLATION_IN_PROGRESS
romountopt="-o ro,rsize=8192" options pro mount (read only)
Definuje funkce
fai_init a
task_install, které
následně spouští.
Funkce
fai_init nadefinuje funkce shellu ze souboru
/usr/share/fai/subroutines:
call_hook task
create_ramdisk task_action
die task_backup
diskandsize task_confdir
disk_info task_configure
eval_cmdline task_defclass
fstab_mount task_defvar
get_bootp_info task_extrbase
get_dhcp_info task_faiend
ifclass task_finish
list_disk task_chboot
load_keymap_consolechars task_instsoft
mkdivert task_mirror
mount_local_disks task_mountdisks
netdevice_info task_partition
prepare_apt task_savelog
rmdivert task_setup
rwmount task_sysinfo
save_dmesg task_updatebase
save_log_local umount_local_disks
save_log_remote wait_for_jobs
skiptask
Následně definuje proměnné
uložené v konfiguračním souboru
/etc/fai.conf.
Tyto funkce a proměnné využívá skript
rcS
pro svůj další běh.
Dále je nastavena proměnná
FAI_FILES3, která
definuje kořen (root) konfiguračního adresáře pro utilitu
fcopy.
V dalším kroku se nastaví proměnná
PATH a připojí se souborové systémy
root@root,
proc a
devpts.
Funkcí create_ramdisk
je vytvořen a namountován ramdisk.
Na závěr uloží funkce save_dmesg
zprávy vypisované kernelem během bootování do souboru
/tmp/rcS.log.
čímž se rozumí akce
sysinfo,
install nebo
backup,
tedy hodnota bootp parametru
T171.
Defaultní tasky jsou prováděny v pořadí:
- task confdir
- Z uživatelského hlediska je nejdůležitější akcí této
procedury vložení hook funkcíhook funkce umístěných
v /fai/hook/subroutines.
- task setup
- Nastavuje systémový čas, FAI_FLAGS, otvírá
terminály, vytváří seznam disků.
- task defclass
- Spouští skripty S[0-9]* v adresáři /fai/class
a z jejich výstupu vytváří definované třídy.
- task defvar
- Spouští shell skripty definovaná_třída.var
které by měly obsahovat inicializaci pomocných proměnných
pro danou třídu.
- task action
- Procedura task_action se řídí nastavením proměnné
FAI_ACTION, která je inicializována na hodnotu bootp
parametru T171 a může nabývat hodnot sysinfo,
install a backup, což odpovídá jménu akce.
Akce sysinfo slouží ke zjištění HW konfigurace stanice
a zjištění podkladů pro přípravu instalace. Akce backup
není v současné době implementován. Instalaci stanice provádí akce
install, která spuští jednotlivé úlohy instalačního
procesu a pomocné funkce. Tasky pro akci install jsou
prováděny v tomto pořadí:
- load_keymap_consolechars
- načte mapu klávesnice
- task partition
- rozdělí disk
- task mountdisks
- namountuje souborové systémy
- task extrbase
- rozbalí base systém
- task mirror
- připojí NFS lokálního mirroru debianu (pokud je)
- task updatebase
- update base systému
- task instsoft
- instalace balíčků
- task configure
- konfigurační akce, provádí se /fai/scripts/CLASS,
kde CLASS je definovaná třída
- task finish
- úklid
- task savelog
- uložení logů na FAI server
- wait_for_jobs
- čeká na dokončení hook funkcí běžících na pozadí
- task faiend
- ukončení instalace, odmountování disků, reboot.
Funkci FAI serveru plní stroj
fais.zcu.cz, který byl nainstalován
pomocí FAI a je schopen vytvářet své klony. Je použit balík FAI verze
2.3.1
4. Vzhledem ke specifickým
požadavkům prostředí
Orion se funkce FAI serveru poněkud liší od
manuálu. Server poskytuje pouze
NFS služby. BOOTP a TFTP zajišťují
servery
Orionu. FAI server je tedy do značné míry integrován do systému
Orion. Konfigurační adresář (viz parametr
T170 bootp)
a zmrazený mirror
5 distribuce Debian jsou
umístěny na AFS.
6
FAI server provádí reexport konfiguračního adresáře a mirroru přes NFS.
Pro tento účel je nutné použít user-space NFS server.
Další zvláštností celé instalace je připojení AFS kořene do adresáře
/usr/lib/share/fai/nfsroot/afs, čímž se reexportuje AFS přes NFS
do kořene instalované stanice. K dispozici je tedy celý AFS strom již při
instalaci a lze na něj přistupovat7.
V dřívějších verzích systému FAI se vyskytovaly chyby, které bránily
použití v prostředí Orion, v současných verzích a zvláště pak v nové
řadě 2.48 by měly být již opraveny.
Stanice na učebnách jsou vybaveny Perex BOOT ROM. Software, se kterým tato BOOT
ROM spolupracuje umožňuje vytvářet tzv. boot menu. Toto menu slouží k výběru
zdroje ze kterého má být zaveden operační systém. Zdrojem může být image
dostupný TFTP protokolem, ale také partition lokálního disku.
Více informací a pravděpodobně novější dokumentací o této službě lze nalézt
na
http://sluzby.civ.zcu.cz/.
9
Někteří DHCP klienti mají problém porozumět odpovědi od BOOTP serveru,
zvláště se jedná o rozšiřující parametry, které jsou nutné předat klientovi.
Tento nedostatek lze naštěstí snadno vyřešit předáním potřebných parametrů
jako parametrů pro jádro, skript
rcS z těchto parametrů po svém
spuštění vytvoří regulérní parametry shellu.
Následující příklad demonstruje použití výše zmíněného mechanismu v makru
label, které slouží k zobrazení řádky bootmenu.
1 label {
2 name "Instalace (FAI) stanice"
3 linux("/linux2/vmlinuz-fai")
4 append "root=/usr/lib/fai/nfsroot/dev/boot255
5 nfsroot=147.228.110.10:/usr/lib/fai/nfsroot
6 T170=147.228.110.10:/usr/local/share/fai T171=install
7 T172=reboot"
8 }
| řádek |
popis |
| 1 |
začátek makra label |
| 2 |
text v uvozovkách se zobrazí v menu |
| 3 |
parametr linux udává umístění souboru s instalačním kernelem
na TFTP serveru. Je možné použít jádro z balíku fai-kernels,
případně si vyrobit vlastní. |
| 4 |
umístění NFS root filesystému, normálně se bere z BOOTP,
při nastavení tohoto parametru do centrálního BOOTP serveru přestanou
BOOTP odpověď akceptovat OrioNT. |
| 5 |
předání prarametru nfsroot jádru. Za normálních okolností tento
parametr zíká jádro jako součást BOOTP/DHCP odpovědi.
při nastavení tohoto parametru do centrálního BOOTP přestanou BOOTP
odpovědi rozumět OrioNT. |
| 6,7 |
Nastavení proměnných T170, T171, T172.
Za normálních okolností nastavuje
FAI tuto proměnnou na základě BOOTP/DHCP odpovědi, zde je nouzově
nastavena jako falešný parametr jádra. Využívá se zda mechanismu
Scriptu rcS_fai, který vytváří ze všech parametrů jádra
proměnné. Podrobnonosti o významu proměnných Txxx jsou
uvedeny v dokumentaci FAI. |
Pro stroje které nemají instalovanou Perex BOOT ROM je možné pomocí příkazu
make-fai-bootfloppy vytvořit speciální bootovací disketu. I v tomto
případě je třeba obejít nepřítomnost klíčových parametrů v BOOTP odpovědi. Na
disketě je třeba upravit soubor /floppy/etc/lilo.conf resp.
/boot/grub/menu.lst a chybějící parametry předat jako parametry jádra.
Příklad pro LILO10:
boot=/dev/fd0
root=/usr/lib/fai/nfsroot/dev/boot255
install=/floppy/boot/boot.b
map=/floppy/boot/map
append="nfsroot=147.228.110.10:/usr/lib/fai/nfsroot
T170=147.228.110.10:/usr/local/share/fai
T171=install
T172=createvt"
delay=10
compact
image=/floppy/vmlinuz
label=FAI-BOOTP
read-only
Bootovací disketu je možné s výhodou využít i pro stroje které z nějakého
důvodu nejsou v BOOTP, jedná se hlavně o servery. V tom případě musíme
předávat jádru informace o konfiguraci sítě parametrem ip ve formatu:
ip=<ip_stanice>:<ip_serveru>:<ip_gateway>:<netmask>:<interface>:<detekce_ip>
První čtyři položky není problém vyplnit. Položka
interface se nastavuje
rozhraní, které má být použito, nejčastěji
eth0. Do posledního pole
lze zadat, jakou metodu použít pro zjištění síťového nastavení, na výběr je z
položek
bootp,
dhcp nebo
both, která vyzkouší
obě metody (bootp i dhcp) nebo metoda
off, která vypne zjišťování
nastavení sítě po síti.
Příklad pro LILO:
boot=/dev/fd0
root=/usr/lib/fai/nfsroot/dev/boot255
install=/floppy/boot/boot.b
map=/floppy/boot/map
append="ip=147.228.51.53:147.228.53.153: \
147.228.51.1:255.255.255.0:kili:eth0:off
nfsroot=147.228.53.153:/usr/lib/fai/nfsroot
FAI_LOCATION=147.228.53.153:/usr/local/share/fai
FAI_ACTION=install FAI_FLAGS=createvt"
delay=10
compact
image=/floppy/vmlinuz
label=FAI-BOOTP
read-only
Systém FAI se při instalaci řídí definovanými třídami a proměnnými. Podrobné
vysvětlení tohoto pojmu naleznete v originální dokumentaci. Instalace
stanic na učebnách se řídí třídami s prefixem
ZCU,
instalace jiných strojů třídami s prefixem
LPS.
11 Třídy a skripty dodávané jako součást distribuce nejsou
až na některé výjimky použity.
Aktuální popis a vývojářské informace o třídách jsou v souboru
README.class v adresáři /usr/local/share/fai12.
FAI při vytváření tříd prochází v tomto adresáři skripty
S00* až
S99* a na jejich vystupu očekava názvy tříd. Definované skripty jsou:
- S00zcu_hw_arch.sh
- Definuje třídu popisující architekturu
instalované stanice.
- S01zcu_labs.sh
- Definice tříd pro jednotlivé laboratoře
- S02zcu_lps_personal.sh
- Definice tříd pro osobní počítače LPS
- S03zcu_fai_clone.sh
- Definice tříd pro účely klonování FAI serverů
- S04zcu_servers.sh
- Definice tříd pro účely instalace db serverů
- S07disk.pl
- Soubor z distribuce, slouží pro definici tříd
které řídí rozdělení disků.
- S10zcu_disk_conf.sh
- Definice tříd pro koexistenci s OrionNT
Následujícím postupem lze vytvářet tzv. clustery, ( skupiny
strojů se stejnou konfigurací ). Takto například vypadá soubor
S01zcu_labs.sh:
#! /bin/sh
#
# S01zcu_labs.sh
#
# Definice trid pro jednotlive laboratore,
# seznam trid je uveden v~souborech zcu_<laborator>_pc
#
# -------------------- Laborator UI201 --------------
case $HOSTNAME in
ui201p0?-lps|ui201p10) cat zcu_ui201_dtk_pc ;;
ui201p1?-lps|ui201p20) cat zcu_ui201_dell_pc ;;
esac
#
# -------------------- Laborator UI202 --------------
#
case $HOSTNAME in
ui202p??-lps) cat zcu_ui202_pc ;;
esac
#
# -------------------- Laborator UI202 --------------
#
case $HOSTNAME in
ui203p??-lps) cat zcu_ui203_pc ;;
esac
#
jsou soubory obsahujici vycet tříd,
které používají skripty. Soubory nemají příponu, například:
zcu_ui201_dell_pc
zcu_ui201_dtk_pc
zcu_ui202_pc
zcu_ui203_pc
zcu_db_server
zcu_fai_server_clone
Pro ukázku obsah souboru
zcu_db_server:
#
# Seznam trid pro zcu_db_server
#
ZCU_PC_DELL_PE6450
ZCU_BASE
ZCU_BASE_CFG EXT3
ZCU_BOOT
ZCU_NET
ZCU_NET_CFG
ZCU_KRB5_AND_OPENAFS
ZCU_SRV_NTP
obsahují definice proměnných
pro příslušné třídy. Tyto proměnné používají FAI skripty. Lze jimi také
předefinovat defaultní hodnoty ze souboru
/etc/fai/fai.conf.
Tyto soubory jsou zpracovány jako shellovský skript, je tedy možné
do něj zapisovat testy nebo větvení, není to však doporučováno. Příklad
pro soubor
ZCU_DELL_PTIOPLEX_G1.var:
#
# ZCU_DELL_OPTIPLEX_G1.var
#
# Definice pomocných promennych pro tridu ZCU_DELL_OPTIPLEX_G1
# Hardwarove zavisle konfigurace pro stanice DELL OPTIPLEX G1
#
# Tyto promenne pouzivaji skripty v adresari scripts
# Hodnoty zde uvedene prekryji definice z DEFAULTS.var
#
# Verze instalovaneho jadra
kernelversion=2.4.17
# Nazev package s jadrem
kernelimage=kernel-image-${kernelversion}_1.00.Custom_i386.deb
# verze instalovanych afs modulu
openafs_version=1.2.3final2-1+1.00.Custom_i386
openafs_modules_package=\
openafs-modules-${kernelversion}_${openafs_version}.deb
V tomto adresáři jsou uloženy skripty, které se spouštějí pro jednotlivé
definované třídy v závěru instalace. Jméno scriptu odpovídá jménu příslušné
třídy. Skripty mohou být psány v shellu, perlu nebo je možné použít cfengine.
V souvislosti se skripty stojí za zmínku příkaz fcopy, který se
používá většinou pro instalaci konfiguračních souborů. Příkaz pracuje tak že
v adresářové struktuře umístěné v adresáři
/usr/local/share/fai/files
vyhledá na
základě definovaných tříd příslušný konfigurační soubor a zkopíruje jej na
patřičné místo na instalované stanici. Například pokud je definována třída
ZCU_UI201
příkaz fcopy etc/passwd
zkopíruje soubor /usr/local/share/fai/files/etc/passwd/ZCU_UI201
do /etc/passwd
na instalované stanici. Více viz
man fcopy.
Obdobně funguje příkaz
ftar. Pro testování exitence třídy uvnitř
scriptu je k dispozici příkaz
ifclass.
Soubory v tomto adresáři plní obdobnou funkci jako skripty, ale spouštějí se
před provedením standardních tasků. Například hook
instsoft.ZCU_BASE
se provede před spuštěním tasku instsoft pokud je definována třída
ZCU_BASE. Typické použití hooku je instalace konfiguračních souborů
před instalací samotného package. Tento postup je použit například u TeXu, kde
se na základě předinstalovaného konfiguračního souboru vygenerují formáty
s podporou češtiny. Více o hook souborech v originální dokumentaci.
Informační popis hook skriptů je v souboru README.hooks
v adresáři /usr/local/share/fai13.
V tomto adresáři jsou umístěny soubory definující rozdělení disku pro
jednotlivé třídy. Tyto soubory jsou zpracovávány perlovským skriptem
setup_harddisk. Podrobnosti o konfiguraci jsou uvedeny v souboru
/usr/doc/fai/README.disk_config.gz
Konfigurační soubor pro učebny HJ3XX vypadá následovně14:
#
# Ucebna HJ301, 302, 305, 310
#
# Konfigurace pro 20GB IDE disk, ext3 filesystem + WinNT
#
# <type> <mountpoint> <size in mb> [mount options] [;extra options]
disk_config hda
primary - 1536 ; dosfat16
primary - 1024 ; dosfat16
primary / 100 rw,errors=remount-ro ; boot -j ext2
logical swap 128 rw
logical /var 2048 rw ; -j -m 5 ext2
logical /usr 10240 rw ; -j -m 1 ext2
logical /tmp 100- rw,nosuid ; -j -m 1 ext2
V tomto adresáři jsou soubory které obsahují seznam debianovských
balíčku
15, které mají být instalovány pro jednotlivé třídy. Soubory mohou
obsahovat dva seznamy, seznam uvozený příkazem
PACKAGES install
obsahuje packages které mají být instalovány, seznam uvozený
PACKAGES remove obsahuje packages které mají být odstraněny.
jsou příkazy pro:
- hold
- jenž zablokuje daný balík proti upgradům.
- taskinst
- kdy se pro výběr balíků použije program tasksel.
- dselect-upgrade
- kde jsou uvedeny balíky pro program dselect a
obsah je ve formátu příkazu dselect -get-selections.
je možnost definovat podmíněnost nějaké třídě. Například řádek
PACKAGES install GNOME v souboru
XSERVER
říká, že balíky pod tímto příkazem se mají nainstalovat pouze v případě, že
je definovaná třída
XSERVER (jinak by se tímto souborem FAI vůbec nezpracovával)
a zároveň musí být definována třída
GNOME.
V tomto adresáři jsou umístěny nestandardní (nejsou v distribuci) balíčky.
Jedná se zejména o jádra a moduly vlastní výroby.
Je vhodné do tohoto adresáře vytvořit soubor Packages.gz díky němuž
bude možné instalovat dané balíky příkazem apt-get, pokud do
souboru etc/apt/source.files16
přídáme záznam:
deb file:/fai/files/packages ./
Soubor
Packages.gz vytvoříme příkazy:
cd /usr/local/share/fai/files
dpkg-scanpackages packages /dev/null | gzip -9 > packages/Packages.gz
Při přidávání nové konfigurace do
/usr/local/share/fai doporučuji
postupovat následujícím způsobem:
- Na FAI serveru vyrobíme příkazem make-fai-bootfloppy
bootovací disketu. Důležité je, aby kernel použitý pro disketu
uměl připojit NFS jako kořen (nfsroot), a také uměl RAMDISK, vhodná
je volba DHCP/BOOTP pro konfiguraci IP a loopback podporu. Vše přímo
v jádře. Ve verzi 2.4 umí skript make-fai-bootfloppy
vytvořit disketu pro GRUB, kterou doporučuji před typem LILO.
- Pokud je stanice v BOOTP upravíme na disketě soubor
/etc/lilo.conf takto:
append "root=/usr/lib/fai/nfsroot/dev/boot255\
nfsroot=147.228.110.10:/usr/lib/fai/nfsroot\
T170=147.228.110.10:/usr/local/share/fai T171=sysinfo\
T172=createvt"
Pokud stanice není v BOOTP upravíme /etc/lilo.conf takto:
append="ip=<ip_stanice>:147.228.53.153:\
<gateway>:<netmask>:<hostname>:eth0:off\
nfsroot=147.228.53.153:/usr/lib/fai/nfsroot\
FAI_LOCATION=147.228.53.153:/usr/local/share/fai\
FAI_ACTION=sysinfo\
FAI_FLAGS=createvt"
Po úpravě lilo.conf spustíme lilo -C /floppy/etc/lilo.conf
- Připojíme novou stanici k síti a pokusíme se z diskety nabootovat.
Stanice by měla nabootovat, připojit si nfsroot z FAI serveru a provést
FAI_ACTION sysinfo. Tím získáme informace o HW stanice.
V případě, že instalační kernel nenajde některý HW stanice musíme před vlastní
instalací nejprve vyrobit kernel vlastní.
Pokud se stanici nepodaří připojit k FAI serveru zkontrolujeme
funkčnost NFS a nastavení tcp wrapperu.
- Pokud se podaří nabootovat stanici v režimu sysinfo, vytvoříme
na FAI
serveru pro stanici soubor, který definuje třídy. Pro první přiblížení je
obvykle nejlepší využít již existující konfiguraci. Konfiguraci je třeba
budovat postupně, nejprve základ systému a síť, následně Xwindows atd.
Pozor. Konfigurační soubory jsou primárně na AFS, a FAI server je
reexportuje z read-only kopie volumu. Po každé úpravě konfigurace tedy
musíme provést release afs volume public.linux-fai. Obvyklý způsob jak toho
docílit je :
afsadm -h ody -c "vos release public.linux-fai -v"
- Bootovací disketu zkopírujeme a v /etc/lilo.conf změníme
sysinfo na install17.
Zkusíme nabootovat z takto
upravené diskety a sledujeme proces
instalace (log soubory v /tmp/fai). Pokud se objeví chyba
upravíme konfiguraci a postup opakujeme.
- V případě že instalace stanice probíhá bez závad, necháme si vyrobit image
pro Perex BOOT ROM. Makro label vypadá takto:
label {
name "Instalace FAI"
linux("/linux2/vmlinuz-fai")
append "root=/usr/lib/fai/nfsroot/dev/boot255
nfsroot=147.228.53.153:/usr/lib/fai/nfsroot
T170=147.228.53.153:/usr/local/share/fai T171=install
T172=reboot"
Pokud stanice dosud nebyla v BOOTP, je třeba ji v tomto zároveň nechat
zaregistrovat. Stanice by nyní měla být připravena pro automatickou
instalaci.
Tento balík obsahuje poštovního klienta pine s podporou krb5 a ssl.
Licence programu pine umožňuje šířit pouze neupravený zdrojový kód, proto
je nutné si binárky vytvořit samostatně.
Použité zdrojové texty:
pine_4.44.orig.tar.gz
pine_4.44-3.diff.gz
pine_4.44-3.dsc
Pro překlad pine s podporou ssl, kerberos5 a LDAPu musi být nainstalovány
minimálně následující balíky :
package verze popis
------------ -------- ---------------------------------
libkrb5-dev 1.2.2-6 Headers and development libraries
for MIT Kerberos
libkrb53 1.2.2-6 MIT Kerberos runtime libraries
libssl-dev 0.9.6c-1 SSL development libraries
libssl0.9.6 0.9.6c-1 SSL shared libraries
libldap2 2.0.23-3 OpenLDAP libraries.
libldap2-dev 2.0.23-3 OpenLDAP development libraries.
Přesná čísla verzí není nejspíš nezbytně nutné dodržet. S uvedenými verzemi
je kompilace bez problémů.
Postup
Binární package pine vytváříme jako root na stroji, na kterém je nainstalován
Debian Linux distribuce Woody + vývojové prostředí (překladač, make atd.) a
výše uvedené softwarové balíky.
V případě že z nějakého důvodu potřebujeme na stanici instalované systémem FAI
použít vlastní verzi jádra, například pokud jádro z distribuce nepodporuje náš
HW, vytvoříme si vlastni kernel package. Programy potřebné pro vytváření
kernel packages jsou v balíku kernel-package.
Postup:
Nainstalujeme zdrojový kód potřebné verze jádra. Například:
# apt-get install kernel-source-2.4.18
V adresáři /usr/src rozbalíme archiv
kernel-source-2.4.18.tar.bz2
# cd /usr/src
# tar xvjf kernel-source-2.4.18.tar.bz2
Vznikne adresář /usr/src/kernel-source-2.4.18.
Vytvoříme symbolický link
# ln -s kernel-source-2.4.18 linux
Pokud používáme modulární kernel, musíme nainstalovat také zdrojové kódy
potřebných modulů (alsa, afs a pod.). Například :
# apt-get install openafs-modules-source
# apt-get alsa-source
Spustíme konfiguraci jádra, například takto:
# cd linux
# make menuconfig
Po ukončení konfigurace vytvoříme kernel package.
# make-kpkg clean
# make-kpkg --uc --us --append-to-version oznaceni_stanice kernel_image
Kde za označení_stanice dosadíme vhodné krátké a výstižné označení
stanice pro kterou je kernel určen. Výsledný balík s vlastní konfigurací jádra
nalezneme v adresáři /usr/src. Balík s moduly vytvoříme příkazem :
# make-kpkg --uc --us --append-to-version oznaceni_stanice modules_image
Footnotes
- ... Installation)1
- http://www.informatik.uni-koeln.de/fai/
- .../etc/init.d/rcS2
- Ve skutečnosti se pouští
program /sbin/rcS_fai na nějž ukazuje link /etc/init.d/rcS.
- ...FAI_FILES3
- Hodnota
je standardně nastavená na /fai/files.
- ...
2.3.14
- Planuje se přechod na řadu 2.4.
- ... mirror5
- V současnosti se nepoužívá.
- ... AFS.6
- Jedná se o volumy public.linux-fai
a public.linux-fai.mirro, které jsou připojeny v adresářích
/afs/zcu.cz/public/linux-fai a /afs/zcu.cz/public/linux-fai/mirror.
- ... přistupovat7
- Kořenový souborový systém
tzv. nfsroot je připojen pouze pro čtení (read only) čímž je také
AFS pouze pro čtení.
- ...2.48
- Současná používaná verze je 2.3.1 s tím že
se plánuje brzký přechod na řadu 2.4.
- ...http://sluzby.civ.zcu.cz/.9
- Puvodní dokumentace byla na http://home.zcu.cz/lps-privat/kucharky/perex/netboot.html.
- ... LILO10
- Po upravách je nutné spustit program lilo -C /floppy/etc/lilo.conf
- ...LPS.11
- Vzhledem
k častým duplicitám je snaha třídy sjednotit a ponechat rozdily pouze tam, kde
je to nevyhnutelné.
- .../usr/local/share/fai12
- Vzhledem
k tomu, že toto je odkaz do AFS stromu, tak jej lze nálézt v /afs/zcu.cz/public/linux-fai/fai.
- .../usr/local/share/fai13
- Tento adresář ukazuje do AFS
na adresář /afs/zcu.cz/public/linux-fai/fai/, kde soubor
README.hooks lze také nalézt.
- ... následovně14
- Jedná
se o třídu ZCU_HJ3XX_WITH_NT, která byla definována skriptem
tříd S10zcu_disk_conf.sh.
- ...
balíčku15
- Soubory s příponout .deb obsahující jak daný
program, tak sadu skriptů pro instalaci, odinstalaci a konfiguraci daného
programu.
- ...etc/apt/source.files16
- Tento soubor se nachází
v /usr/lib/fai/nfsroot/ a je generován skriptem fai-setup
na základě proměnné FAI_SOURCES_LIST v souboru fai.conf.
- ...install17
- Vhodnější způsob je
vytvořit v bootmanageru dva různé bootovací záznamy, jeden pro install
a druhý pro sysinfo. Při bootování pak ten potřebný vybrat.
2003-06-05