List's home page
Actions (czech only)
   
voda 2001
voda 2005
Projects
   
LangLear
Ninvent
ltrain
weba
ttweb
cdbackup.pl
FAI (czech only)
About me ...
   

Úvod

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.

Stručný popis funkce systému FAI

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.

Akce prováděné skriptem rcS

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.

Inicializace proměnných:

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)

Definice funkcí a proměnných:

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.

Provedení defaultních tasků pro všechny akce:

čí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.

FAI server

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.14. 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ý mirror5 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.

Perex BOOT ROM

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

Problémy s infrastrukturou a jejich řešení

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

Popis definovaných tříd a proměnných

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.

Soubory v adresáři /usr/local/share/fai/class

FAI při vytváření tříd prochází v tomto adresáři skripty S00*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
#

Soubory s definicemi tříd

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

Soubory s příponou .var:

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

Soubory v adresáři /usr/local/share/fai/scripts

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 adresáři /usr/local/share/fai/hooks

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.

Soubory v adresáři /usr/local/share/fai/disk_config

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

Soubory v adresáři /usr/local/share/fai/package_config

V tomto adresáři jsou soubory které obsahují seznam debianovských balíčku15, 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.

Novinkou pro verzi 2.4

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.

Další novinkou verze 2.4

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.

Soubory v adresáři /usr/local/share/fai/files/packages

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

Jak vytvořit FAI konfiguraci pro nový HW

Při přidávání nové konfigurace do /usr/local/share/fai doporučuji postupovat následujícím způsobem:

  1. 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.

  2. 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

  3. 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.

  4. 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"
    
  5. 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.

  6. 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.

Dodatky

Vytvoření balíku pine_4.44-3_i386.deb

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 adresáři /tmp (případně jiném vhodném adresáři) umístíme zdrojovou distribuci pine. Jedná se o soubory:
    pine_4.44.orig.tar.gz, pine_4.44-3.diff.gz a pine_4.44-3.dsc.

  • V adresáři /tmp spustíme příkaz:
    dpkg-source -x pine_4.44-3.dsc
    Dojde k rozbalení zrojové distribuce a aplikaci patche ze souboru
    pine_4.44-3.diff.gz.
    Dále vznikne adresář pine_4.44.

  • Přidání podpory Kerberos 5 do výsledné binárky zajistíme tak, že v adresáři /tmp/piner_4.44 vytvoříme symbolický link ln -s /usr krb5 (podrobněji viz. soubor README)

  • Pro přidání podpory ssl je třeba upravit soubor debian/rules v adresáři pine_4.44. Úprava spočívá v nahrazení 5. řádky :
    export SSL="'SSLTYPE=unix'"
    
    řádkou
    export SSL="'SSLTYPE=unix SSLDIR=/usr/local/ssl \
    SSLCERTS=/etc/ssl/certs \
    SSLINCLUDE=/usr/include/openssl \
    SSLLIB=/usr/lib'"
    

  • Binární package pine, pico, pilot vygererujeme příkazem
    dpkg-buildpackage -b

Vytvoření vlastního kernel package.

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