

			Installserver HOWTO



0. Inhalt
---------

1. Übersicht 
	1.1 Allgemeines
	1.2 Installserver Document Root und Package Root
	1.3 config files, startup scripts
	1.4 Weitere Config Parameter
	1.5 Voraussetzungen

2. 
	2.1 Boot- und Installablauf


4. Nützliche Kommandos 
	4.1 Installserver einrichten
	4.2 Installserver verwalten
	4.3 Target installieren und verwalten
	4.4 Weieters zur Software-Verwaltung	

9. Dokumente




1. Übersicht
------------

1.1 Allgemeines

Der Installserver dient zur manuellen Installation über das Netzwerk oder zur
automatischen Installation und Konfiguration mit AutoYaST. Die automatische
Installation kann z.B. per atftpd oder aus ZLM heraus initiiert werden.

Der Installserver besteht im wesentlichen aus einem SLES mit Apache und
Zugriff auf alle benötigten Installmedien. Die Medien liegen üblicherweise
als ISO-Images auf dem Installserver vor, können aber auch über Netz
importiert werden.

Der Installserver wird überwiegend an der Kommadozeile verwaltet.


1.2 Installserver Document Root und Package Root

/srv/www/htdocs/inst/xml/autoinst.xml -> sles9base.xml
oder
/srv/www/htdocs/inst/xml/123456789000 -> sles9base.xml

/srv/www/htdocs/inst/isos -> /srv/inst/isos
/srv/www/htdocs/inst/mediasets -> /srv/inst/mediasets

/srv/www/htdocs/inst/streams/sles9/
/srv/www/htdocs/inst/streams/oes9/
/srv/www/htdocs/inst/streams/nld9/

Die Streams sind gemäß Manpage installserver.7 aufgebaut.
Bei Bedarf können nebeneinander verschiedene Produkte, Service Packs,
kundenspez. Software-Stacks, Hardware-Architekturen usw. vorgehalten werden.
Die Origibalmedien werden dabei unverändert genutzt.
Für Loopback-Mounts sind ggf. hinreichend loopback-devices anzulegen,
und der Kernelparamter max_loop zu setzen, s.u.


1.3 config files, startup scripts 

- /etc/apache2/vhost.d/instserv.conf

Diese Datei beschreibt den virtuelle Apache-Server, der die
Umgebungen (Streams) für autom. Installation bereitstellt.


- /etc/fstab

Beschreibt Pfade zu ISO-Images der Installmedien und des Package Roots.
Beschreibt ggf. automatischen Import des SMB-shares vom GSX-host.
Siehe sles9-inst.sitar.html .


- /etc/init.d/inst-srv-mnt

Dies Skript mounted beim Booten die Loopback-Devices, nachdem
das SMB-share mit ISO-Images per vom GSX-host gemounted wurde.
Es ist LSB-konform und kann entsprechend behandelt werden.


- /boot/grub/menu.lst

Enthält Kernelparameter max_loop für SLES9.


- /etc/modprobe.conf.local

Enthält Kernelparameter max_loop für SLES10.


- /var/lib/support/files.include

Beschreibt, welche Dateien zusätzlich von sitar dokumentiert werden.
Format entspricht perl-includes, z.B.:

@files= (
"/etc/hosts",
"/etc/resolv.conf",
"/etc/ntp.conf",
"/etc/nsswitch.conf",
"/etc/ldap.conf",
"/etc/openldap/ldap.conf",
"/etc/security/pam_unix2.conf",
"/etc/security/pam_mount.conf",
"/etc/pam.d/xdm",
"/etc/nam.conf",
"/etc/profile",
"/etc/ld.so.conf",
"/etc/X11/XF86Config",
"/etc/apache2/vhost.d/instserv.conf",
"/etc/init.d/inst-srv-mnt",
"/etc/modprobe.conf.local.conf",
"/boot/grub/menu.lst",
"/var/lib/support/files.include",
"/var/adm/autoinstall/cache/installedSystem.xml"
);


1.4 Weitere Config Parameter

Weitere Parameter, wie Paketauswahl, Partitionierung und Netzwerksetup sind in
der Datei sles9-inst.sitar.html enthalten.


1.5 Voraussetzungen

- Hardware Ausstattung

        RAM     min. 256MB
        CPU     min. 700MHz
        HD      min. 20GB
        Eth     e1000, bcm, tg3, e100, ...


- Verwendete Software

        SLES9 SP3, SLES10
        xntpd
        apache2
	apache2-prefork
	instserv
 
        zus. für Bootserver
	named
        dhcpd
        atftpd
        xinetd

	zus. für YOU-Mirror
	youmirror  

Informationen zur Verzeichnisstruktur sind in Abschnitt 2.4 enthalten.


- Verwendete Protokolle

        DHCP
        TFTP
        HTTP
        DNS
        NTP




2.
------------------

2.1 Boot- und Installablauf CDROM/HTTP 

 1.1 BIOS lädt von CDROM isolinux
 2.1 An Kommandozeile wird eingegeben
        YaST Install Sourcen (Produkt-CDs)
		z.B. install=http://192.168.1.1/streams/sles9/
        AutoYaST Control File
		z.B. autoyast=http://192.168.1.1/yast/sles9ase.xml
     weiter bei 4.1


2.2 Boot- und Installablauf PXE/HTTP

 1.1 Target bootet PXE-ROM und sendet DHCP Request
 1.2 DHCP-Server liefert u.a.:
        -> TFTP Server, Pfad zu PXE-Datei

 2.1 Target sendet TFTP Request
 2.2 TFTP-Server liefert
        -> PXE-Datei
                enthaelt URL fuer:
                        YaST Install Sourcen (Produkt-CDs)
                        AutoYaST Control File

 3.1 Target sendet TFTP Request
 3.2 TFTP-Server liefert
        -> Kernel (2MB), RAM-Disk (6MB), ggf. Driverupdate (2MB),
           Root-FS (SLES9: 56MB, SLES10: 83MB)

 4.1 Target lädt Kernel und RAM-Disk und startet AutoYast
 4.2 Target sendet HTTP Request
 4.3 HTTP-Server liefert  
        -> AutoYaST Control File (20kB)

 5.1 Target für ggf. Preinstall-Skripte aus
     und partitioniert 
 5.2 Target installiert RPM-Pakete von HTTP-Server
     (NLD9 default 2500MB, SLES9 minimal+X 400MB, SLES10 minimal+X 1100MB)
     Hierbei koennen bereits alle Anwendungen installiert werden,
         die als RPM-Paket vorliegen (i.d.R. sollten nur RPM-Pakete
         installiert werden, auch Patch- und Release-Management
         basieren i.d.R. darauf).
 5.3 Target fuert ggf. Postinstall-Skripte aus
     Hier koennen weitgehend alle Parameter konfiguriert werden
     (i.d.R. wird in groesseren Umgebungen ein zusaetzliches
       Config-Management eingesetzt).






4. Nuetzliche Kommandos
-----------------------

4.1 Installserver einrichten

- Installserver Basispaket installieren

# rpm -iv instserv-0.00-2.noarch.rpm 


- Apache virtual host anpassen

# vi /etc/apache2/vhosts.d/instserv.conf
...

# rcapache reload


- Beispielverzeichnisse auspacken

# tar -C / -zvxf /usr/share/doc/packages/instserv/samples/instserv-links.tgz

- Installationsmedien importieren

# ...


- Loopback Devices 8-63 einrichten

# make_loopdevs 8 63 

Auf SLES9:
# vi /boot/grub/menu.lst

title Linux 
    root (hd0,0)
    kernel /boot/vmlinuz ... max_loop=63 ...
    initrd /boot/initrd
Auf SLES10:
# vi /etc/modprobe.conf.local
	options max_loop=63

# reboot; exit


- Systemsetup dokumentieren

Mit sitar kann die Systemkonfiguration dokumentiert werden. Mittels der
Datei /var/lib/support/files.include koennen beliebige Files beruecksichtigt
werden, s.o.

# sitar --check-consistency --format=html --outfile=/root/$(hostname).sitar.html



4.2 Installserver verwalten

- Source- und Installations-Pakete auf Installserver finden

# find /srv/mediasets/ -name "<xxx>*"

/srv/mediasets/SUSE-SLES/9/i386/CD1/suse/src/<xxx>.src.rpm
/srv/mediasets/SUSE-SLES/9/i386/CD1/suse/i586/<xxx>.i586.rpm

Anm.: Das Programm  find  durchsucht bei jedem Aufruf das gesamte Dateisystem
      unterhalb des gegebenen Verzeichnisses. Alternativ könnte das Programm
      locate  zusammen mit  updatedb  genutzt werden. Dabei wird von  updatedb
      regelmäßig, z.B. nächtlich, mittels  find  ein Index erzeugt, der von
      locate  genutzt wird.


- Paket in Installserver integrieren

linux:/usr/src/packages/SRPMS # scp <xxx>.src.rpm
   devsupp@tmx065:/srv/mediasets/SUSE-SLES/9/CD1/i386/suse/src/

linux:/srv/mediasets/SUSE-SLES/9/i386/CD1/suse/ #
         create_package_description -x ./setup/descr/

Achtung! Durch Aufbau der Paketbeschreibungen können laufenden Installationen
oder Updates gestört werden. Paketbeschreibungen drfen nur aufgebaut werden,
wenn keine Installationen oder Updates laufen. Nach Änderung der
Paketbeschreibung sind u.U. die Caches auf den Target veraltet.
Als Workaround kann das betroffene Produkt aus der Liste entfernt und erneut
eingetragen werden.


- Selection Lists eines Produktes zeigen

 # ls /inst/mediasets/Novell-Linux-Desktop/9/i386/CD1/suse/setup/descr/*.sel


- Packages einer Selection List zeigen

 # grep Pkg /inst/mediasets/Novell-Linux-Desktop/9/i386/CD1/suse/setup/descr/Min
imal.sel

/opt/gnome/bin/gnomevfs-cat
/opt/gnome/bin/gnomevfs-copy
/opt/gnome/bin/gnomevfs-info
/opt/gnome/bin/gnomevfs-ls
/opt/gnome/bin/gnomevfs-mkdir


4.8 Produkt anlegen

root@linux:/install/i386/SuSE-SLES/8/i386/CD1/ # vi content
    PRODUCT UnitedLinux 1.0 Service-Pack post-SP3
    VERSION 3
    DISTPRODUCT UnitedLinux-i386
    DISTVERSION 1.0-0
    BASEPRODUCT UnitedLinux
    BASEVERSION 1.0
    YOUTYPE business
    YOUPATH i386/update/UnitedLinux-1.0-Service-Pack/3
    YOUURL http://www.suse.de/cgi-bin/suseservers.cgi
    VENDOR UnitedLinux LLC
    ARCH.i686 i686 i586 i486 i386 noarch
    ARCH.i586 i586 i486 i386 noarch
    ARCH.i486 i486 i386 noarch
    ARCH.i386 i386 noarch
    DEFAULTBASE i386
    REQUIRES distribution-release
    LINGUAS de en
    LABEL UnitedLinux 1.0 Service-Pack Version post-3
    LABEL.de UnitedLinux 1.0 Service-Pack in der Version post-3
    DESCRDIR UnitedLinux/setup/descr
    DATADIR UnitedLinux
    LANGUAGE en_US
    TIMEZONE America/Los_Angeles

root@linux:/install/i386/SuSE-SLES/8/i386/CD1/media.1/ # vi patches
    / Service-Pack UnitedLinux 1.0-post-3 (i386)

root@linux:/install/i386/SuSE-SLES/8/i386/CD1/media.1/ # vi media

    SuSE Linux AG
    20040602140547
    1

Dabei bedeuten:
1. Zeile    Hersteller
2. Zeile    Zeitstempel (YYYYMMDDhhmmss)
3. Zeile    Anzahl Medien

root@linux:/install/i386/SuSE-SLES/8/i386/CD1/media.1/ # vi products
    / UnitedLinux-i386 post-3

root@linux:/install/i386/SuSE-SLES/8/i386/CD1/suse/ # /usr/lib/YaST2/bin/create_package_descr

Achtung! Durch Aufbau der Paketbeschreibungen k�nen laufenden Installationen
oder Updates gest�t werden. Paketbeschreibungen drfen nur aufgebaut werden,
wenn keine Installationen oder Updates laufen. Nach �derung der
Paketbeschreibung sind u.U. die Caches auf den Target veraltet.
Als Workaround kann das betroffene Produkt aus der Liste entfernt und erneut
eingetragen werden.


4.9 SLES8, SLES9, NLD9, OES1: Produkt auf Server hinzufügen

root@linux:/streams/sles9/yast # vi order
    /yast/<xxx> /media/<xxx>/CD1
    /yast/t-mobile  /media/t-mobile/CD1
    /yast/unitedlinux-1.0postsp3    /media/unitedlinux-1.0postsp3/CD1
    /yast/unitedlinux-1.0sp3        /media/unitedlinux-1.0sp3/CD1
    /yast/sles-8.0  /media/sles-8.0/CD1
    /yast/unitedlinux-1.0   /media/unitedlinux-1.0/CD1

root@linux:/streams/sles9/yast # ln -s order instorder  


4.10 SLES10, SLED10: Produkt auf Server hinzufügen

root@linux:/streams/sles10 # vi add_on_products
http://192.168.1.1/mediasets/NLD-Pilot/10.1/i386/CD1   
http://192.168.1.1/mediasets/eDirectory/8.8/i386/CD1   



4.2.1 Config Management

- Control Files nach Configfiles und Scripts durchsuchen

repository # grep "filename" /srv/www/htdocs/inst/yast/sles9base.xml
Ausgabe:  
   <filename>post01.sh</filename>
   <filename>post02.sh</filename>


- Control File auf richtige Syntax prüfen

repository # xmllint /srv/www/htdocs/inst/yast/sles9base.xml

- Einzelnes Control File auf Install Server für Test ändern

repository # vi /var/opt/httpd2/share/inst/yast.cfg/nld9-ide-ati-i386.xml

Änderungen speichern: ESC->wq! (control-Files sind schreibgeschtzt)



4.3 Target installieren und verwalten

- Maschine per Installserver manuell über das Netz installieren

Maschine mit entsprechendem Boot-Medium booten, z.B. CD-Image vom GSX-Host
als virtuelles CD-Laufwerk.

F4
	Deutsch
F2
	text mode

Manual Installation
	Boot Options: install=http://192.168.1.1/streams/sles9/


- Maschine per Installserver automatisch über das Netz installieren

Maschine mit entsprechendem Boot-Medium booten, z.B. CD-Image vom GSX-Host
als virtuelles CD-Laufwerk. Voraussetzung ist ein gültiges Controlfile auf
dem Installserver, z.B. "default".

F4
	Deutsch
F2
	text mode

Installation
	Boot Options: install=http://192.168.1.1/streams/sles9/ \
		autoyast=http://192.168.1.1/yast/default


- Konfiguration als HTML-Seite sichern

# sitar --check-consistency --format=html --outfile=/tmp/$(hostname -f)_sitar.ht
ml


- Konfiguration als AutoYaST Control File sichern

# yast

        Verschiedenes
                Automatische Installation

        Werkzeuge
                Referenz-Profil erzeugen

        Referenz-Startdatei erzeugen
                Weitere Ressourcen wählen
                        Netzwerkkarte
                        Mail Transfer Agent
                        NTP-Client
                        Runlevel-Editor
                        Einstellungen zur Sicherheit
                        Benutzer bearbeiten und anlegen
       Erzeugen

        Gültigkeit des Profils überprüfen

                XML wird ohne DTD-Validierung überprüft...
                OK
                XML wird mit DTD-Validierung überprüft...
                Fehler
                ...

        Beenden

        Speichern unter
                Dateiname
                /var/lib/autoinstall/repository/test.xml
                OK
 
        Datei
                Verlassen

        Verlassen


Anm.: Bei SLES9 (SP1, SP2) und NLD9 (SP1) werden die
Basisressourcen Partitionierung, Bootloader und Software nur
dann erfaßt, wenn die entsprechenden Punkte _nicht_ ausgewählt
werden.


- Show a list of all installation media entrys

# installation_sources -s
...
# y2pmsh source -s
...


- Installierte Pakete auf Target anzeigen

alle Pakete
# rpm -qa

ein Paket
# rpm -qa | grep -i <xxx>


- Info, Abhaengigkeiten und Inhalt eines installierten Paketes
  auf Target anzeigen

# rpm -qiRl <xxx> | less


- Veränderte Dateien zu einem installiertem Paket auf Target finden

# rpm -V <xxx>


- Innerhalb der letzten 10 Minuten geaenderte Dateien finden

# find $HOME -mmin -10
...


- Installiertes Paket zu einer Datei auf Target finden

# rpm -qf /sbin/conf.d/SuSEconfig.kde.TMD


- Paket auf Target installieren bzw. updaten, lokal

# scp ...
# rpm -U <xxx>
# /sbin/conf.d/SuSEconfig.<xxx>

Paket-Abh�gigkeiten sollten erfllt sein. Falls ein Paket installiert
werden soll, dessen Abh�gigkeiten nicht erfllt sind, ist zus�zlich
die Option  --nodeps  erforderlich.

Evtl. sind SuSEconfig-Skripte aufzurufen.


- Paket auf Target installieren bzw. updaten, remote

# yast -i <xxx>

Paketabhaegigkeiten werden, soweit m�lich, autom. aufgeloest.
Pakete werden von den voreingestellten Orten bezogen, i.d.R. ist dies
der Installserver mit den bei der Erstinstallation gewaehlten Pfaden.

SuSEconfig-Skripte werden autom. aufgerufen.

Nach Aenderung der Paketbeschreibung auf dem Installserver sind u.U.
u.U. die Caches auf den Target veraltet. Als Workaround kann das betroffene
Produkt aus der Liste entfernt und erneut eingetragen werden.


- OS Version, Architecture, Service Pack anzeigen

nld02:~ # cat /etc/SuSE-release
SuSE SLES-8 (AMD64)
VERSION = 8.1

nld02:~ # cat /etc/UnitedLinux-release
UnitedLinux 1.0 (AMD64)
VERSION = 1.0
PATCHLEVEL = 3

Service Pack (Patch Level) nur in UnitedLinux-release


- Per DHCP uebergebene Parameter zeigen

nld02:~ # dhcpcd-test eth0
...


- Datum, Zeit anzeigen

nld02:~ # date
Wed Jun 16 15:15:41 CEST 2004


- Reboots anzeigen

nld02:~ # last | grep "boot"
reboot   system boot  2.4.19-4GB       Wed Jun 16 13:39          (01:36)
...


- Laufendes OS (Kernel) zeigen

nld02:~ # uname -a
Linux dbnu300 2.4.19-4GB #1 Mon Aug 4 23:23:04 UTC 2003 i686 unknown

nld02:~ # cat /proc/version
Linux version 2.4.19-4GB (root@Pentium.suse.de) (gcc version 3.2.2) #1 Mon Aug 4

nld02:~ # cat /proc/cmdline
root=/dev/hda3   vga=794



4.4 Weitere Tasks zur Software-Verwaltung 

- Source-Paket auf Admin-Workstation auspacken

root@linux:/usr/src/packages/SRPMS> rpm -U <xxx>.src.rpm
root@linux:/usr/src/packages/SOURCES> tar zxf <xxx>.tar.gz <xxx>


- Installations- und Source-Paket auf Admin-Workstation bauen

root@linux:

/usr/src/packages/
    BUILD/<xxx>
    RPMS/i386/<xxx>.x86_64.rpm
    SOURCES/<xxx>
        <xxx>.tar.gz
    SPECS/<xxx>.spec
    SRPMS/<xxx>.src.rpm

root@linux:/usr/src/packages/SOURCES> tar zcf <xxx>.tar.gz <xxx>
root@linux:/usr/src/packages/SOURCES> cd ../SPECS/
root@linux:/usr/src/packages/SPECS> rpm -ba <xxx>.spec

Mit "--target noarch" können die Architektur-unabhängigen Pakete gebaut
werden.


- Veränderung durch Installation auf Testsystem feststellen

mit Tripwire:

/etc/tw.config
/etc/tw/tw.db_x34503

# mkdir /etc/tw /root/databases
# tripwire -initialise
# mv /root/database/tw.db_x34503 /etc/tw/

# tripwire -q > newfiles.txt

mit find s.o.




9. Dokumente
------------

AutoYaST:
	http://www.suse.de/~nashif
	http://www.suse.de/~fabian
        http://yast.suse.com/autoinstall/
        http://en.opensuse.org/Installation_Sources
	http://www.suse.com/~ug/AutoYaST_FAQ.html		
                                
Man Pages:
        installserver.7
        dhcpd.conf.5
        dhcpd.8
        named.8
        atftpd.8
        pxelnk.1
	xmllnk.1
	sitar.1

Install Server:
         dirs-fils.pdf
         dirs-fils-boot.pdf
         autoyast.pdf
	 manual.pdf von SLES CD1

#
