====== Fully Automatic Installation (Vollautomatische Installation): fai ====== Nachfolgend soll die Installation eines DEBIAN-Rechners mit FAI (Fully Automatic Installation) beschrieben werden. \\ ===== FAI-Server ===== Für die Installation eines Rechners über FAI wird ein entsprechender Server benötigt. Dieser muss mit einer minimalen Installation ausgestattet sein, wie zum Beispiel [[debian-linux:minimalinstallation|hier]] beschrieben wird. Weiterhin ist der Zugriff auf ein DEBIAN-Repository notwendig. \\ ==== Installation ==== Im ersten Schritt werden die notwendigen Pakete installiert: ~# apt-get install fai-server fai-doc \\ Wichtige Abhängigkeiten, die ebenfalls installiert werden: * ''isc-dhcp-server'' (DHCP-Server) * ''tftpd-hpa'' (TFTP-Server) * ''nfs-kernel-server'' (NFS-Server) \\ ==== DHCP === Ist in dem Netzwerk, in welchem der FAI-Server laufen soll, bereits ein DHCP-Server vorhanden, sind an diesem Punkt keine weiteren Einstellungen notwendig. Dem DHCP-Server muss später nur die Adresse des TFTP-Server mitgeteilt werden. Existiert kein DHCP-Server, muss dieser konfiguriert werden. \\ Es wird für die nächsten Schritte von folgender Konstellation ausgegangen (andere Netzkonfigurationen müssen entsprechend angepasst werden): * Subnetz: ''192.168.1.0'' * Netzmaske: ''255.255.255.0'' * Gateway: ''192.168.1.1'' * Adresse des FAI-Server: ''192.168.1.101'' * Erste Adresse eines DHCP-Clients: ''192.168.1.102'' \\ Die Konfigurationsdatei "''/etc/dhcp/dhcpd.conf''" erhält folgende Anpassungen: ddns-update-style none; option domain-name "test.org"; option domain-name-servers ntp.test.org; default-lease-time 600; max-lease-time 7200; server-name "faiserver"; log-facility local7; subnet 192.168.1.0 netmask 255.255.255.0 { option routers 192.168.1.1; option domain-name "test.org"; option domain-name-servers 192.168.1.1; option time-servers ntp.test.org; option ntp-servers ntp.test.org; server-name ; next-server 192.168.1.101; filename "fai/pxelinux.0"; range 192.168.1.102 192.168.1.150; option subnet-mask 255.255.255.0; option broadcast-address 192.168.1.255; } \\ Jeder Client, der über FAI installiert werden soll, wird in der Datei "''/etc/dhcp/dhcpd.conf''" eingetragen: host faiclient { hardware ethernet 0e:0e:00:01:01:02; fixed-address 192.168.1.102; } //Die Werte müssen entsprechend den eigenen Gegebenheiten angepasst werden.// \\ Der DHCP-Server kann jetzt gestartet werden: ~# /etc/init.d/isc-dhcp-server start \\ Wird ein Client im gleichen Subnetz auf DHCP umgestellt und eine DHCP-Anfrage gestellt, erhält er die erste freie Adresse des Servers (normalerweise ''192.168.1.102''). \\ ==== FAI-Repository ==== Soll ein anderes Paket-Repository verwendet werden, muss dieses in die Datei "''/etc/fai/apt/sources.list''" eingetragen werden. Das Gleiche gilt für den DEBBOOTSTRAP, hierfür wird die Datei "''/etc/fai/nfsroot.conf''" angepasst. Unter Umständen (zum Beispiel in einem geschlossenen Netz ohne DNS) müssen statt der FQDN-Rechnernamen die IP-Adressen eingetragen werden, andernfalls schlägt bereits das FAI-Setup fehl. \\ ==== FAI-Setup ==== Das Erstellen des FAI-NFS wird mit folgendem Befehl ausgeführt: fai-setup -fv \\ Nach Erstellung des FAI-NFS müssen der ebenfalls erstellte FAI-Kernel und die zuehörige RAM-Disk verlinkt werden: ~# cd /srv/tftp/fai ~# ln -f initrd.img-$(uname -r) initrd.img ~# ln -f vmlinuz-$(uname -r) vmlinuz \\ ==== FAI-Konfiguration ==== Ist das FAI-Setup ordnungsgemäß durchgelaufen, kann die FAI-Konfiguration im ersten Schritt aus dem Dokumentenverzeichnis von FAI kopiert werden: ~# cp -a /usr/share/doc/fai-doc/examples/simple/* /srv/fai/config/ \\ ==== TFTP ==== Der TFTP-Dienst wird bereits bei Installation gestartet. Es fehlen noch die PXE-Boot-Informationen. \\ * Erstellen der Datei "''/srv/tftp/fai/pxelinux.cfg/default''": DEFAULT fai DISPLAY message PROMPT 0 TIMEOUT 10 LABEL fai KERNEL vmlinuz APPEND initrd=initrd.img ip=dhcp root=/dev/nfs nfsroot=192.168.1.101:/srv/fai/nfsroot aufs boot=live \ FAI_CONFIG_SRC=nfs://192.168.1.101/srv/fai/config FAI_FLAGS=verbose,sshd,createvt FAI_ACTION=install LABEL sysinfo KERNEL vmlinuz APPEND initrd=initrd.img ip=dhcp root=/dev/nfs nfsroot=192.168.1.101:/srv/fai/nfsroot aufs boot=live \ FAI_CONFIG_SRC=nfs://192.168.1.101/srv/fai/config FAI_FLAGS=verbose,sshd,createvt FAI_ACTION=sysinfo \\ ==== NFS ==== * Für den NFS-Dienst muss die Datei "''/etc/exports''" angepasst werden: /srv/fai/nfsroot 192.168.1.0/24(async,ro,no_subtree_check,no_root_squash) /srv/fai/config 192.168.1.0/24(async,ro,no_subtree_check) /srv/nfs4 *(ro,sync,fsid=0,crossmnt,no_subtree_check) Der letzte Eintrag ist derzeit für DEBIAN Wheezy notwendig. \\ * Die Verzeichnis "''/srv/nfs4''" muss noch erstellt werden: ~# mkdir -p /srv/nfs4 \\ * Der Dienst muss jetzt neu gestartet werden, damit die Änderungen wirksam werden: ~# service nfs-kernel-server restart \\ Jetzt kann der FAI-Client mit PXE gestartet werden und erhält eine Neuinstallation. \\ \\ \\ \\ ====== FAI-Konfiguration ====== Nachfolgend werden Anpassungen an der FAI-Konfiguration beschrieben. Diese Konfiguration, die im Normalfall unter **''/srv/fai/config/''** zu finden ist und aus dem Paket "''fai-doc''" stammt, befindet sich nach der Paketinstallation in einem Grundzustand. Sinnvolle Ergänzungen und Erweiterungen sind Bestandteil des Dokuments. \\ ===== Abschnitte ===== Der Blick in das Verzeichnis "''/srv/fai/config/''" zeigt folgende Verzeichnisse: * ''basefiles'': FAI-Basisdateien * ''class'': FAI-Klassen (Rechnerklassen) * ''debconf'': Lokalisation und Tastaturlayout * ''disk_config'': Festplattenkonfiguration * ''files'': Dateien für den FAI-Client * ''hooks'': Einsprungskripte * ''package_config'': Paketlisten * ''scripts'': Skripte * ''tests'': FAI-Test \\ ==== class ==== In diesem Verzeichnis erfolgt die Klassifizierung durch den Rechnernamen. Je nach Rechnername werden eine oder mehrere Klassen identifiziert und nachfolgend ausgeführt. \\ * Anpassen der Datei "**''50-host-classes''**": case $HOSTNAME in *client*) echo "BASIS DEBDEU" ;; *) echo "BASIS" ;; esac ifclass -o I386 AMD64 && echo GRUB_PC exit 0 \\ * Erstellen der Datei "**''BASIS.var''**": # Erlaube die Installation von Paketen aus unsignierten Quellen FAI_ALLOW_UNSIGNED=1 # Zeitzone UTC=yes TIMEZONE=Europe/Berlin # Administratorkennwort (Standard: 'fai') # Neues Kennwort generieren mit 'makepasswd': # ~# echo "" > /tmp/kennwort && makepasswd --crypt-md5 --clearfrom /tmp/kennwort && rm -f /tmp/kennwort; ROOTPW='$1$kBnWcO.E$djxB128U7dMkrltJHPf6d1' # Installationsstop ab diesem Fehlerwert STOP_ON_ERROR=700 \\ * Anpassen der Datei "**''DEBDEU.var''**": # Konsolenfont CONSOLEFONT= # Tastaturlayout KEYMAP=de-latin1-nodeadkeys # Der Parameter 'MODULESLIST' beinhaltet alle Module, die auf einem # neuen System waehrend der Installation geladen werden. # Weitere Module koennen zur Variablen '$kernelmodules' in der Datei # 20-hwdetect.source eingetragne werden MODULESLIST="usbkbd ehci-hcd ohci-hcd uhci-hcd usbhid psmouse" \\ ==== debconf ==== Hier befinden sich alle Konfigurationsdateien, die für DEBIAN spezifisch sind. \\ * Erstellen der Datei "**''BASIS''**: exim4-config exim4/dc_eximconfig_configtype select local delivery only; not on a network locales locales/default_environment_locale select en_US.UTF-8 locales locales/locales_to_be_generated multiselect en_US.UTF-8 UTF-8 keyboard-configuration keyboard-configuration/modelcode string pc105 keyboard-configuration keyboard-configuration/xkb-keymap select us keyboard-configuration keyboard-configuration/variant select USA keyboard-configuration keyboard-configuration/model select Generic 105-key (Intl) PC keyboard-configuration keyboard-configuration/layoutcode string us keyboard-configuration keyboard-configuration/optionscode string ctrl:nocaps,terminate:ctrl_alt_bksp \\ * Erstellen der Datei "**''DEBDEU''**": locales locales/default_environment_locale select de_DE.UTF-8 locales locales/locales_to_be_generated multiselect de_DE.UTF-8 UTF-8 xserver-xorg xserver-xorg/config/inputdevice/keyboard/layout string de xserver-xorg xserver-xorg/config/inputdevice/keyboard/model string pc105 xserver-xorg xserver-xorg/config/inputdevice/keyboard/options string lv3:ralt_switch xserver-xorg xserver-xorg/autodetect_monitor boolean false xserver-xorg xserver-xorg/autodetect_keyboard boolean true xserver-xorg xserver-xorg/autodetect_mouse boolean true xserver-xorg xserver-xorg/autodetect_video_card boolean true console-setup console-setup/variant select Germany console-setup console-setup/charmap select UTF-8 console-setup console-setup/layoutcode string de console-setup console-setup/compose select No compose key console-setup console-setup/fontsize-text select 16 console-setup console-setup/optionscode string lv3:ralt_switch console-setup console-setup/layout select Germany console-setup console-setup/detected note console-setup console-setup/variantcode string console-setup console-setup/codesetcode string Lat15 console-setup console-setup/modelcode string pc105 console-setup console-setup/ask_detect boolean false console-setup console-setup/altgr select Right Alt console-setup console-setup/ttys string /dev/tty[1-6] console-setup console-setup/model select Generic 105-key (Intl) PC console-setup console-setup/fontsize-fb select 16 console-setup console-setup/switch select No temporary switch console-setup console-setup/codeset select # Latin1 and Latin5 - western Europe and Turkic languages console-setup console-setup/toggle select No toggling console-setup console-setup/fontface select VGA console-setup console-setup/fontsize string 16 \\ ==== disk_config ==== Hier wird die Festplattenkonfiguration festgelegt. \\ * Erstellen der Datei "**''BASIS''**" (ausgelegt für eine Festplatte mit mindestens 15 GB): disk_config disk1 disklabel:msdos bootable:1 fstabkey:uuid primary /boot 500 ext2 rw logical swap 2G swap sw logical /var/log 4G ext4 rw,noatime,nodev primary / 8G- ext4 rw,noatime,errors=remount-ro \\ * Erstellen der Datei "**''LVM''**" (ausgelegt für eine Festplatte mit mindestens 15 GB): disk_config disk1 disklabel:msdos bootable:1 fstabkey:uuid primary /boot 256M ext3 defaults,rw createopts="-L boot" tuneopts="-c 180 -i 180d" primary - 1G- - - disk_config lvm vg vg001 disk1.2 vg001-swap swap 2G swap sw createopts="-L swap" vg001-var_log /var/log 4G ext4 defaults,rw createopts="-L var_log" tuneopts="-c 180 -i 180d" vg001-root / 8G ext4 defaults,rw,errors=remount-ro createopts="-L root" tuneopts="-c 180 -i 180d" Sollte die Festplatte größer als 15 GB sein, kann der freier Speicher als logische Volumes verwendet werden. \\ ==== files ==== Hier befinden sich alle Dateien, die während der Installationsphase auf den Zielrechner kopiert werden. Jede Dateiname wird dabei als Verzeichnis erstellt, um darin die eigentliche Datei als Klassenname abzulegen. \\ * Erstellen der Datei "**''etc/default/console-setup/DEBDEU''**": # Aktivieren der TTY-Konsolen ACTIVE_CONSOLES="/dev/tty[1-6]" # Zeichentabelle # Weitere bekannte Werte: UTF-8 ARMSCII-8 CP1251 # CP1255 CP1256 GEORGIAN-ACADEMY GEORGIAN-PS IBM1133 ISIRI-3342 # ISO-8859-1 ISO-8859-2 ISO-8859-3 ISO-8859-4 ISO-8859-5 ISO-8859-6 # ISO-8859-7 ISO-8859-8 ISO-8859-9 ISO-8859-10 ISO-8859-11 ISO-8859-13 # ISO-8859-14 ISO-8859-15 ISO-8859-16 KOI8-R KOI8-U TIS-620 VISCII CHARMAP="UTF-8" # Symboltabelle # Weitere bekannte Symboltabellen: Arabic Armenian CyrAsia CyrKoi # CyrSlav Ethiopian Georgian Greek Hebrew Lao Lat15 Lat2 Lat38 Lat7 # Thai Uni1 Uni2 Uni3 Vietnamese CODESET="Lat15" # Schriftartenname und -groesse # Weitere bekannte Werte sind: VGA (sizes 8, 14 and 16), Terminus # (sizes 12x6, 14, 16, 20x10, 24x12, 28x14 and 32x16), TerminusBold # (sizes 14, 16, 20x10, 24x12, 28x14 and 32x16), TerminusBoldVGA # (sizes 14 and 16), Fixed (sizes 13, 14, 15, 16 and 18), Goha # (sizes 12, 14 and 16), GohaClassic (sizes 12, 14 and 16) FONTFACE="VGA" FONTSIZE="16" # Tastaturmodell und -layout XKBMODEL="pc105" XKBLAYOUT="de" XKBVARIANT="nodeadkeys" XKBOPTIONS="terminate:ctrl_alt_bksp" \\ * Erstellen der Datei "**''etc/default/locale/DEBDEU''**": LANG="de_DE.UTF-8" \\ ==== hooks ==== Hier werden die Skripte abgelegt, die während der Installation aufgerufen werden. \\ * Erstellen der Datei "**''updatebase.DEBDEU''**": #! /bin/bash # Kopieren der Dateien fuer 'console-setup' fcopy -v /etc/default/console-setup \\ * die Datei muss noch ausführbar gemacht werden: ~# chmod +x updatebase.DEBDEU \\ ==== package_config ==== Hier werden alle Pakete eingetragen, die zusätzlich zur Basisinstallation auf das System gebracht werden sollen. \\ * Erstellen der Datei "**''BASIS''**": PACKAGES aptitude AMD64 linux-image-amd64 initramfs-tools memtest86+ PACKAGES aptitude DHCPC isc-dhcp-client PACKAGES aptitude GRUB_PC grub-pc grub-legacy- lilo- PACKAGES aptitude fai-client cron debconf-utils file hdparm less linuxlogo nfs-common rdate rsync openssh-client openssh-server strace time procinfo eject locales console-setup kbd pciutils usbutils lvm2 \\ ==== scripts ==== In diesem Verzeichnis liegen die Skripte, die nach der Installation aufgerufen werden. Es werden zwei neue Verzeichnisse "**''BASIS''**" und "**''DEBDEU''**" erstellt. \\ * Kopieren der Datei "**''FAIBASE/10-misc''**" nach "**''BASIS/''**": #! /bin/bash # (c) Thomas Lange, 2001-2012, lange@debian.org error=0; trap 'error=$(($?>$error?$?:$error))' ERR # save maximum error code echo $TIMEZONE > $target/etc/timezone cp -f /usr/share/zoneinfo/${TIMEZONE} $target/etc/localtime if [ -n "$IPADDR" ]; then ifclass DHCPC || ainsl -s /etc/hosts "$IPADDR $HOSTNAME.$DOMAIN $HOSTNAME" else ifclass DHCPC && ainsl -s /etc/hosts "127.0.0.1 $HOSTNAME" fi fcopy -iM /etc/hosts /etc/motd # make /root accessible only by root chmod -c 0700 $target/root chown -c root:root $target/root # copy default dotfiles for root account fcopy -ir /root chmod -c 1777 ${target}/tmp chown -c 0:0 ${target}/tmp exit $error \\ * Kopieren der Datei "**''FAIBASE/20-removable_media''**" nach "**''BASIS/''**": #! /bin/bash # (c) Thomas Lange, 2006,2009, lange@debian.org # create entries for removable media in fstab and directories in /media [ -b $target/dev/fd0 ] && ainsl /etc/fstab "/dev/fd0 /media/floppy auto users,noauto 0 0" cdromlist() { [ -f /proc/sys/dev/cdrom/info ] || return devs=$(grep 'drive name:' /proc/sys/dev/cdrom/info | cut -d ":" -f 2) for d in $devs; do echo $d done } fstabline () { line=$(printf "%-15s %-15s %-7s %-15s %-7s %s\n" "$1" "$2" "$3" "$4" "$5" "$6") ainsl /etc/fstab "$line" } i=0 for cdrom in $(cdromlist | tac); do [ $i -eq 0 ] && ln -s cdrom0 $target/media/cdrom mkdir -p $target/media/cdrom$i fstabline /dev/$cdrom /media/cdrom$i udf,iso9660 ro,user,noauto 0 0 i=$(($i + 1)) done \\ * Kopieren der Datei "**''DEBIAN/10-rootpw''**" nach "**''DEBDEU/''**": #! /bin/bash error=0; trap 'error=$(($?>$error?$?:$error))' ERR # save maximum error code # set root password $ROOTCMD usermod -p $ROOTPW root exit $error \\ * Kopieren der Datei "**''DEBIAN/30-interface''**" nach "**''DEBDEU/''**": #! /bin/bash error=0; trap 'error=$(($?>$error?$?:$error))' ERR # save maximum error code if ifclass DHCPC && [ $FAI_ACTION != "softupdate" ] then cat > $target/etc/network/interfaces <<-EOF # generated by FAI auto lo eth0 iface lo inet loopback iface eth0 inet dhcp EOF elif [ $FAI_ACTION != "softupdate" ] then [ -n "$IPADDR" ] && cat > $target/etc/network/interfaces <<-EOF # generated by FAI auto lo eth0 iface lo inet loopback iface eth0 inet static address $IPADDR netmask $NETMASK broadcast $BROADCAST gateway $GATEWAYS EOF [ -n "$NETWORK" ] && echo "localnet $NETWORK" > $target/etc/networks [ -L $target/etc/resolv.conf ] || cp -p /etc/resolv.conf $target/etc fi # here fcopy is mostly used, when installing a client for running in a # different subnet than during the installation fcopy -iM /etc/resolv.conf fcopy -iM /etc/network/interfaces /etc/networks exit $error \\ * Kopieren der Datei "**''DEBIAN/40-misc''**" nach "**''DEBDEU/''**": #! /bin/bash # (c) Thomas Lange, 2001-2011, lange@debian.org # (c) Michael Goetze, 2010-2011, mgoetze@mgoetze.net error=0; trap 'error=$(($?>$error?$?:$error))' ERR # save maximum error code # a list of modules which are loaded at boot time for module in $MODULESLIST; do ainsl -a /etc/modules "^$module$" done fcopy -Mv /etc/hostname || echo $HOSTNAME > $target/etc/hostname ainsl -av /etc/mailname ${HOSTNAME} sed -i -e "s/^UTC.*/UTC=${UTC}/" $target/etc/default/rcS sed -i -e 's#/sbin/getty 38400#/sbin/getty -f /etc/issue.linuxlogo 38400#' ${target}/etc/inittab [ $FAI_ACTION = "softupdate" ] || cp /etc/fai/fai.conf $target/etc/fai/fai.conf ainsl -av /etc/fai/fai.conf "FAI_CONFIG_SRC=$FAI_CONFIG_SRC" fcopy -Miv /etc/fai/fai.conf exit $error \\ ===== Softwareaktualisierung ===== FAI beherrscht neben der Installation eines Rechners auch die Softwareaktualisierung. Dabei werden alle Pakete, die laut der FAI-Konfiguration fehlen, auf dem Client nachinstalliert. \\ * Auslösen der Softwareaktualisierung auf dem FAI-Client: ~# fai -N softupdate \\ ==== Erweiterung der Softwareaktualisierung ==== Der Mechanismus der Softwareaktualisierung beherrscht das nachträgliche Installieren von deinstallierten Paketen, aber nicht das Deinstallieren von zusätzlich installierten Paketen. Somit kann für einen FAI-Client kein bestimmter Softwarestand per FAI definiert werden. Dieser Mechanismus wurde in minimaler Form nachträglich hinzugefügt. \\ * Erstellen der Datei "**''scripts/DEBDEU/90-package-list''**": #! /bin/bash error=0; trap 'error=$(($?>$error?$?:$error))' ERR # save maximum error code if [ $FAI_ACTION != "softupdate" ] then # Sicherung der Paketliste mkdir -p $target/usr/local/share/fai $ROOTCMD dpkg --get-selections | awk '{ print $1 }' | sort | uniq > $target/usr/local/share/fai/paketliste.txt md5sum $target/usr/local/share/fai/paketliste.txt > $target/usr/local/share/fai/paketliste.md5 fi exit $error //Das Skript ermittelt am Ende der Installation alle installierten Pakete und speichert sie in einer Datei im Verzeichnis ''/root/'' ab.// \\ * die Datei muss noch ausführbar gemacht werden: ~# chmod +x scripts/DEBDEU/90-package-list \\ * Erstellen der Datei "**''scripts/DEBDEU/95-package-check''**": #! /bin/bash error=0; trap 'error=$(($?>$error?$?:$error))' ERR # save maximum error code if [ $FAI_ACTION == "softupdate" ] then if [ -s "$target/usr/local/share/fai/paketliste.txt" ]; then Var_ListeSoll="$target/usr/local/share/fai/paketliste.txt"; else echo "Keine Soll-Paketliste gefunden. Softwareüberprüfung wird übersprungen."; exit 0; fi; $ROOTCMD dpkg --get-selections | awk '{ print $1 }' | sort | uniq > /tmp/pakete.txt Var_ListeIst="/tmp/pakete.txt"; Var_PaketeLoeschen=$(cat "${Var_ListeSoll}" "${Var_ListeIst}" | sort | uniq -u | tr "\n" " "); if [ ${#Var_PaketeLoeschen} -ne 0 ]; then $ROOTCMD apt-get purge -qy --force-yes ${Var_PaketeLoeschen}; error=$? else echo "Keine Pakete installiert, die wieder deinstalliert werden müssen. Softwareüberprüfung erfolgreich."; error=0 fi; rm -f "/tmp/pakete.txt"; fi exit $error //Dieses Skript wird ausschließlich während der Softwareaktualisierung ausgeführt und ermittelt die Pakete, die nach der Installation zusätzlich installiert wurden (über den Vergleich der beiden Paketlisten). Alle zusätzlichen Pakete werden deinstalliert.// \\ * die Datei muss noch ausführbar gemacht werden: ~# chmod +x scripts/DEBDEU/95-package-check \\ \\ \\ ====== Desktoprechner installieren ====== Nachfolgend werden mehrere Anpassungen eines FAI-Server beschrieben, damit am Ende der Installation ein Desktoprechner mit grafischer Oberfläche zur Verfügung steht. \\ ===== Voraussetzung ===== Es wird vorausgesetzt, dass ein FAI-Server vorhanden ist, wie er zum Beispiel [[software:fai|hier]] beschrieben wird. Desweiteren sind alle Anpassungen vorgenommen wurde, wie sie [[software:fai-konfiguration|hier]] beschrieben sind. \\ ===== Abschnitte ===== Bei der Installation über FAI wird mit Klassen gearbeitet. Jeder Rechner kann dabei einer oder mehreren Klassen zugeordnet werden. Je feiner die Untergliederung bei der Installation wird, desto mehr Klassen müssen erstellt werden. Nachfolgend werden für die Installation des Rechners folgende Klassen gebildet: * Programme (nicht-grafisch) * Dienste: **''PC_NGDIENSTE''** * Werkzeuge: **''PC_NGWERKZEUGE''** * Desktop (X11, Login-Manager, Desktopsystem): **''PC_DESKTOP''** * Programme (grafisch) * Systemprogramme (Drucken, Scannen und Antivirus): **''PC_SYSTEM''** * Kommunikation (Mail und Internet): **''PC_KOMMUNIKATION''** * Büro (Office-Suite und PDF): **''PC_OFFICE''** * Multimedia (Grafik, Audio und Video): **''PC_MULTIMEDIA''** * Entwicklung: **''PC_ENTWICKLUNG''** * Werkzeuge: **''PC_WERKZEUGE''** \\ \\ --- //[[steffen.bornemann@gmx.de|Steffen Bornemann]] 08.11.2018// \\ \\ \\ \\ {{tag>DEBIAN FAI DHCP TFTP NFS debconf desktop}}