BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

make buildworld Fortschritt beobachten

Möchte man bei einem make buildworld in /usr/src nur angezeigt bekommen, bei welchem Schritt man gerade ist und welches Modul zur Zeit gebaut wird, kann dazu worldtools verwendet werden. Die worldtools findet man im FreeBSD Portsbaum unter sysutils/worldtools:

# cd /usr/ports/sysutils/worldtools && make install clean

Danach kann die Ausgabe von make buildworld mit einer Pipe an whereintheworld weitergeleitet werden. Im folgenden Beispiel wird eine tcsh verwendet und die komplette Ausgabe von make buildworld findet man in der Datei /tmp/build.log:

# cd /usr/src
# make buildworld |& tee /tmp/build.log | whereintheworld
--------------------------------------------------------------
>>> Rebuilding the temporary build tree
--------------------------------------------------------------
>>> stage 1.1: legacy release compatibility shims
--------------------------------------------------------------
>>> stage 1.2: bootstrap tools
--------------------------------------------------------------
>>> stage 2.1: cleaning up the object tree
--------------------------------------------------------------
>>> stage 2.2: rebuilding the object tree
--------------------------------------------------------------
>>> stage 2.3: build tools
--------------------------------------------------------------
>>> stage 3: cross tools
--------------------------------------------------------------
>>> stage 4.1: building includes
--------------------------------------------------------------
>>> stage 4.2: building libraries
--------------------------------------------------------------
=> kerberos5/lib/libasn1 (obj,depend,all,install)

In der untersten Zeile sieht man, was make buildworld gerade zur Zeit macht. Mehr Informationen zu whereintheworld aus den worldtools findet man in der Manpage whereintheworld(8).

Related Entries:
Gespeicherte Optionen nach OptionsNG konvertieren
Ports-Subversion-Repository spiegeln
sysinstall-Ersatz für neuere FreeBSD-Versionen
Alte FreeBSD-Port Patchdateien aufsplitten
FreeBSD-Portbaum auf Fehler überprüfen
Comments (3)  Permalink

/etc/master.passwd wiederherstellen

Wurde die /etc/master.passwd gelöscht oder beschädigt, können zum Beispiel keine neue Benutzer mehr angelegt oder die Passwörter der bestehenden Benutzer verändert werden:

# passwd
Changing local password for root
New Password:
Retype New Password:
passwd: /etc/master.passwd: No such file or directory

Mit Hilfe von pwd_unmkdb kann nun die master.passwd aus der /etc/spwd.db generiert werden. pwd_unmkdb findet man im FreeBSD Portsbaum unter sysutils/pwd_unmkdb:

# cd /usr/ports/sysutils/pwd_unmkdb && make install clean

Nun kann ins /etc Verzeichnis gewechselt werden und die master.passwd wiederhergestellt werden:

# cd /etc && pwd_unmkdb
dbopen()'ing spwd.db...  Done
fopen()'ing master.passwd...  Done
Looping through the records in spwd.db...  Done

Mehr Informationen zu pwd_unmkdb findet man in der Manpage pwd_unmkdb(8), Informationen zur master.passwd in passwd(5).

Related Entries:
Gespeicherte Optionen nach OptionsNG konvertieren
Ports-Subversion-Repository spiegeln
sysinstall-Ersatz für neuere FreeBSD-Versionen
Alte FreeBSD-Port Patchdateien aufsplitten
FreeBSD-Portbaum auf Fehler überprüfen
 Permalink

ZFS in einer FreeBSD Jail verwenden

Auf FreeBSD gibt es die Möglichkeit, innerhalb einer Jail das ZFS Dateisystem zu administrieren. Dazu muss auf dem Hostsystem ZFS aktiviert werden:

# echo 'zfs_enable="YES"' >> /etc/rc.conf 
# /etc/rc.d/zfs start

Nachdem man eine FreeBSD Jail erstellt hat, muss sichergestellt werden, dass die Jail auch auf /dev/zfs zugreifen kann. Dazu kann in der /etc/devfs.rules folgender Eintrag eingefügt werden:

[zfs=10]
add include $devfsrules_hide_all
add include $devfsrules_unhide_basic
add include $devfsrules_unhide_login
add path 'zfs' unhide

Nun müssen bei den Jail-Einträgen der /etc/rc.conf folgende Einträge hinzugefügt werden:

jail_<Jailname>_devfs_enable="YES"
jail_<Jailname>_devfs_ruleset="zfs"

Damit innerhalb der Jail ZFS Dateisysteme gemountet werden können, muss die security.jail.mount_allowed auf 1 gesetzt werden. Durch das Setzen von security.jail.enforce_statfs auf 0 werden alle gemounteten Dateisysteme des Hostsystemes in der Jail sichtbar. Das Setzen beider Werte wird für das Verwenden von ZFS innerhalb einer Jail benötigt, können jedoch die Sicherheit des Systemes heruntersetzen.

# sysctl security.jail.mount_allowed=1
# sysctl security.jail.enforce_statfs=0
# echo security.jail.mount_allowed=1 >> /etc/sysctl.conf
# echo security.jail.enforce_statfs=0 >> /etc/sysctl.conf

Danach kann ein ZFS-Pool erstellt werden. In folgendem Beispiel wird der ZFS-Pool /tank aus /dev/ad0s1e erstellt:

# zpool create tank /dev/ad0s1e
WARNING: ZFS is considered to be an experimental feature in FreeBSD.
ZFS filesystem version 6
ZFS storage pool version 6

Nun wird das ZFS-Dateisystem erstellt, welches man danach der Jail zur Verfügung stellt.

# zfs create tank/jail
# zfs set jailed=on tank/jail

Damit das ZFS-Dateisystem der Jail zugewiesen werden kann, muss die Jail-ID der Jail mit jls(8) herausgefunden werden:

# jls
JID IP Address Hostname Path
1 <IP> <Jail-Name> <Pfad zur Jail>

Nun wird tank/jail der Jail mit der ID 1 zugewiesen:

# zfs jail 1 tank/jail

Danach kann das ZFS Dateisystem innerhalb der Jail administriert werden. Im folgenden Beispiel wird innerhalb der Jail das ZFS-Dateisystem tank/jail/beat erstellt und nach /home/beat gemountet:

jail# zfs create tank/jail/beat
jail# zfs set mountpoint=/home/beat tank/jail/beat

Startet man das Hostsystem neu, wird im Moment das ZFS-Dateisystem nicht automatisch wieder der Jail zugewiesen. Dazu muss die Jail-ID der Jail wieder mit jls bestimmt werden:

# zfs jail <JID> tank/jail

Nun können die ZFS-Dateisysteme innerhalb der Jail gemountet werden.

jail# zfs mount -a

Mehr Informationen zu ZFS findet man in der Manpage zfs(8). Eine kleine Einführung in ZFS auf FreeBSD findet man hier: http://www.chruetertee.ch/blog/archive/2007/05/26/zfs-auf-freebsd.html

Related Entries:
ZFS-Statistiken anzeigen
ZFS-Installation mit Hilfe von mfsBSD
FreeBSD nur auf ZFS installieren
Alle Änderungen eines ZFS-Pools anzeigen
Automatisch ZFS Snapshots erstellen
Comments (1)  Permalink

Ports-Variablen auslesen

Möchte man die gesetzten Variablen in /usr/ports/Mk/bsd.port.mk einfach auslesen, so kann das Skript portsvar.sh unter /usr/ports/Tools/scripts/ genutzt werden. Einfach die gewünschten Variablen an portsvar.sh übergeben:

# /usr/ports/Tools/scripts/portsvar.sh PORTSDIR OSVERSION
PORTSDIR = /usr/ports
OSVERSION = 602000

Auch Regex lassen sich mit Hilfe der -e Option in portsvar.sh bei der Suche nach Variablen verwenden.

# /usr/ports/Tools/scripts/portsvar.sh -e "PKG[M,D].*"
PKGDEINSTALL = ${PKGDIR}/pkg-deinstall
PKGDIR = ${MASTERDIR}
PKGMESSAGE = ${PKGDIR}/pkg-message

Standardmässig wird nur in bsd.port.mk nach Variablen gesucht. Möchte man ein anderes Makefile unter /usr/ports/Mk/ in die Suche mit aufnehmen, kann dies mit der -w Option gemacht werden. In den folgenden Beispielen wird die Standardversion vom Apache, PHP und PostgeSQL aus dem jeweiligen Makefile ausgelesen:

# /usr/ports/Tools/scripts/portsvar.sh -w apache -e "APACHE_[P,S].*"
APACHE_PORT = www/apache13
APACHE_SUPPORTED_VERSION = 13 20 21 22
# /usr/ports/Tools/scripts/portsvar.sh -w php -e "PHP_VER.*"
PHP_VER = 5
PHP_VERSION = 5.2.5
# /usr/ports/Tools/scripts/portsvar.sh -w database -e "DEFAULT_PGSQL.*"
DEFAULT_PGSQL_VER = 81

Alle Optionen von portsvar.sh erhält man mit der -h Option.

Related Entries:
Gespeicherte Optionen nach OptionsNG konvertieren
Ports-Subversion-Repository spiegeln
sysinstall-Ersatz für neuere FreeBSD-Versionen
Alte FreeBSD-Port Patchdateien aufsplitten
FreeBSD-Portbaum auf Fehler überprüfen
Comments (1)  Permalink

Smart Array RAID Controller Status auslesen

Auf einem Server mit einem Smart Array RAID Controller werden Änderungen am Status eines Logical Drives von FreeBSD nach /var/log/messages geschrieben. Folgendes Beispiel zeigt die Ausgabe in /var/log/messages bei einem Diskwechsel:

kernel: ciss0: *** Hot-plug drive removed: SCSI port 1 ID 0
kernel: ciss0: *** Physical drive failure: SCSI port 1 ID 0
kernel: ciss0: *** State change, logical drive 0
kernel: ciss0: logical drive 0 (pass0) changed status OK->interim recovery, spare status 0x0
...
kernel: ciss0: *** Hot-plug drive inserted: SCSI port 1 ID 0
kernel: ciss0: *** State change, logical drive 0
kernel: ciss0: logical drive 0 (pass0) changed status interim recovery->ready for recovery, spare status 0x0
kernel: ciss0: *** State change, logical drive 0
kernel: ciss0: logical drive 0 (pass0) changed status ready for recovery->recovering, spare status 0x0
...
kernel: ciss0: *** State change, logical drive 0
kernel: ciss0: logical drive 0 (pass0) changed status recovering->OK, spare status 0x0

Möchte man sich den aktuellen Status anzeigen lassen, ohne /var/log/messages auf die letzte Änderung durchsuchen zu müssen, kann man den Port sysutils/cciss_vol_status installieren. Damit cciss_vol_status kompiliert werden kann, müssen die Kernel-Sourcen auf dem System vorhanden sein:

# cd /usr/ports/sysutils/cciss_vol_status && make install clean

Nun kann der Status des Smart Array Controllers abgefragt werden:

# cciss_vol_status /dev/ciss0
/dev/ciss0: (Smart Array 5i) RAID 1 Volume 0 status: OK.

Mehr Informationen zu cciss_vol_status und eine Beschreibung aller möglichen Status findet man in der Manpage cciss_vol_status(8).

Related Entries:
Gespeicherte Optionen nach OptionsNG konvertieren
Ports-Subversion-Repository spiegeln
sysinstall-Ersatz für neuere FreeBSD-Versionen
Alte FreeBSD-Port Patchdateien aufsplitten
FreeBSD-Portbaum auf Fehler überprüfen
 Permalink

FreeBSD Jail ohne kompilieren erstellen

Möchte man eine FreeBSD Jail erstellen, aber nicht wie normalerweise die Jail mit einem make world in /usr/src kompilieren, so kann eine Jail auch mit dem Base-Distributions-Set der FreeBSD Installations CD erstellt werden. Falls für das CD-ROM Laufwerk einen entsprechender Eintrag in der /etc/fstab besteht, kann die Installations CD wie folgt gemountet werden:

# mount /cdrom

Danach kann ins Verzeichnis mit dem Base-Distribution-Set gewechselt werden. In diesem Beispiel wird die FreeBSD 7.0-BETA4 Installations CD verwendet:

# cd /cdrom/7.0-BEAT4/base

Jetzt kann mit der DESTDIR Variable der Pfad gesetzt werden, wo die Jail installiert werden soll. Zum Beispiel in der (t)csh:

# setenv DESTDIR /usr/jail/

Nun wird die Installation gestartet. Dazu muss die Kontrollfrage mit y beantwortet werden:

# ./install.sh
You are about to extract the base distribution into /usr/jail/ -
are you SURE you want to do this over your installed system (y/n) y

Nun kann die Jail ganz normal fertig konfiguriert werden. Dazu muss zuerst das devfs in die Jail gemoutet werden:

# mount -t devfs devfs /usr/jail/dev

Als Nächstes muss man ein Alias mit der Jail-IP Adresse konfigurieren:

# ifconfig <Netzwerkkarte> alias <Jail IP>/32

Danach kann die Jail das erste Mal gestartet werden:

# jail /usr/jail <Jail Hostnamen> <Jail IP> /bin/sh

Jetzt müssen noch einige Konfigurationen in der Jail vorgenommen werden:

# touch /etc/fstab
# echo 'rpcbind_enable="NO"' >> /etc/rc.conf
# echo 'network_interfaces=""' >> /etc/rc.conf
# echo 'sshd_enable="YES"' >> /etc/rc.conf
# echo 'nameserver <DNS Server IP>' >> /etc/resolv.conf
# newaliases

Danach kann noch das root-Passwort, die Zeitzone konfiguriert und Benutzer und Gruppen angelegt werden. Hat man die Jail fertig konfiguriert, verlässt man die Jail:

# exit

Als Letztes wird die Jail vollständig gestartet:

# jail /usr/jail <Jail Hostnamen> <Jail IP> /bin/sh /etc/rc

Soll die Jail bei einem Neustart automatisch gestartet werden, müssen noch die entsprechenden Einträge in der /etc/rc.conf gemacht werden. Mehr Informationen zu den Jails findet man in der Manpage jail(8).

Related Entries:
Gespeicherte Optionen nach OptionsNG konvertieren
Ports-Subversion-Repository spiegeln
sysinstall-Ersatz für neuere FreeBSD-Versionen
Alte FreeBSD-Port Patchdateien aufsplitten
FreeBSD-Portbaum auf Fehler überprüfen
 Permalink

FreeBSD auf ZFS installieren

Möchte man FreeBSD auf ZFS installieren, so ist das noch nicht über die Installationsroutine möglich. Unter http://www.ish.com.au/solutions/articles/freebsdzfs findet man ein Anleitung wie man FreeBSD trotzdem auf ZFS installieren kann. Hier eine kleine Zusammenfassung: Um FreeBSD auf ZFS zu installieren, muss man mindestens FreeBSD 7 einsetzen. Man erstellt zuerst mit sysinstall einen Slice über die ganze Festplatte und anschliessend ein Label so, dass die Partition a 512 MB gross ist, und als / gemountet wird. Auch die Swappartition wird bereits erstellt. Im Rest des Slices wird eine Partition gelabelt, welche nicht formatiert und gemountet wird. In / wird dann ein minimal FreeBSD installiert.

Danach wird das installierte System im Single User Mode gestartet und die / Partition schreibend gemountet:

# mount -w / 
Nun kann auf dem freien Speicherplatz ein ZFS-Pool erstellt werden:

# zpool create tank /dev/ad0s1d
WARNING: ZFS is considered to be an experimental feature in FreeBSD.
ZFS filesystem version 6
ZFS storage pool version 6

Danach können die Dateisysteme für /usr, /var und /tmp erstellt werden:

# zfs create tank/usr
# zfs create tank/var
# zfs create tank/tmp

Mit folgendem Eintrag in der /etc/rc.conf wird das ZFS Kernelmodul beim Booten geladen:

# echo 'zfs_enable="YES"' >> /etc/rc.conf

Nun kann der Inhalt der root-Partition auf das ZFS-Dateisystem verschoben werden:

# find -x / | cpio -pmd /tank
471416 blocks

Da FreeBSD noch nicht von ZFS booten kann, muss die bestehende UFS-Partition als boot-Partition verwendet werden:

# rm -rf /tank/boot
# mkdir /tank/bootdir
# cd /tank
# ln -s bootdir/boot boot

In der /tank/etc/fstab muss nun der Eintrag für die UFS boot-Partition geändert werden:

/dev/ad4s1a  /bootdir        ufs     rw      1       1 

Nun muss in der /boot/loader.conf eingetragen werden, dass das ZFS root-Dateisystem beim Booten geladen werden soll:

# echo 'zfs_load="YES"' >>  /boot/loader.conf
# echo 'vfs.root.mountfrom="zfs:tank"' >> /boot/loader.conf

Zum Schluss müssen noch die ZFS-Mountpoints für /usr, /var und /tmp konfiguriert werden und dabei sichergestellt werden, dass /tank nicht gemountet wird, da dies nun das root-Dateisystem ist:

# zfs set mountpoint=/tmp tank/tmp
# zfs set mountpoint=/usr tank/usr
# zfs set mountpoint=/var tank/var
# zfs set mountpoint=legacy tank

Jetzt sind alle Einstellungen gemacht und FreeBSD kann neu gestartet werden:

# shutdown -r now

Falls man möchte, können nun nicht gebrauchte Dateien aus der UFS boot-Partition gelöscht werden:

# cd /bootdir
# chflags noschg var/empty
# rm -rf usr var tmp COPYRIGHT home compat media mnt proc bin cdrom dev dist etc lib libexec root sbin sys

Mehr Informationen dazu findet man im FreeBSD wiki: http://wiki.freebsd.org/ZFSOnRoot

Eine kleine Einführung in ZFS auf FreeBSD findet man hier: http://www.chruetertee.ch/blog/archive/2007/05/26/zfs-auf-freebsd.html

Related Entries:
ZFS-Statistiken anzeigen
ZFS-Installation mit Hilfe von mfsBSD
FreeBSD nur auf ZFS installieren
Alle Änderungen eines ZFS-Pools anzeigen
Automatisch ZFS Snapshots erstellen
Comments (5)  Permalink

Ports testen und Pakete erstellen mit einer Tinderbox

Mit einer Tinderbox können FreeBSD Ports getestet und Pakete aus den Ports erstellt werden. Möchte man Ports für FreeBSD-7.0 oder FreeBSD 8-CURRENT testen, muss man auch eine solche Version installiert haben, da sich Aufgrund von ABI Änderungen, diese Versionen nicht mit FreeBSD-5.x oder FreeBSD-6.x testen lassen (vielen Dank an miwi für diesen Hinweis!). Die Tinderbox findet man in den FreeBSD Ports unter ports-mgmt/tinderbox:

# cd /usr/ports/ports-mgmt/tinderbox/ && make install clean

Im Konfigurationsmenü kann danach ausgewählt werden, was für eine Datenbank und was für ein Webserver verwendet wird und ob cvsup oder csup zum Aktualisieren der Quelldateien verwendet werden soll. Im folgenden Beispiel wird mySQL als Datenbank und ein Apache Webserver verwendet.

 [ ] PGSQL     With pgsql
 [X] MYSQL     With mysql
 [X] CSUP      Use csup for updates
 [ ] CVSUP     Use cvsup for updates
 [ ] WEB       Install web interface
 [X] WEB_EXP   Install the new web interface
 [X] APACHE    Use Apache for web interface
 [ ] LIGHTTPD  Use LightHTTPD for web interface

Ist noch kein Datenbank-Server installiert, muss dieser auch noch installiert werden:

# cd /usr/ports/databases/mysql50-server && make install clean

Nun kann die Webserverkonfiguration den eigenen Wünschen angepasst werden:

# vi /usr/local/etc/apache/httpd.conf

Sollen die Datenbank und der Webserver bei einem Systemstart automatisch gestartet werden, müssen die benötigten Einträge in /etc/rc.conf gemacht werden:

mysql_enable="YES"
apache_enable="YES"

Nun können mySQL und der Apache gestartet werden:

# /usr/local/etc/rc.d/apache.sh start
# /usr/local/etc/rc.d/mysql-server start

Danach kann mit der Konfiguration der Tinderbox begonnen werden:

# /usr/local/tinderbox/scripts/setup.sh

Dabei müssen verschieden Angaben gemacht werden:

Enter database driver (mysql pgsql): mysql
 
Does this host have access to connect to the Tinderbox database as a database administrator? (y/n)y
 
Enter database admin user [root]:<Benutzer>
Enter database host [localhost]:<DB Server>
Enter database name [tinderbox]:<Datenbankname>
Are these settings corrrect:
    Database Administrative User : root
    Database Host                : localhost
    Database Name                : tinderbox
(y/n)y
 
INFO: Checking to see if database tinderbox already exists on localhost ...
INFO: The next prompt will be for the root's password on the database server
localhost.
Enter password:<Passwort>
INFO: Database tinderbox does not exist.  Creating database tinderbox on localhost ...
INFO: The next prompt will be for root's password on the database server localhost.
Enter password:<Passwort>
DONE. INFO: Loading Tinderbox schema into tinderbox ... The next prompt will be for root's password to the tinderbox database. Enter password:<Passwort>
DONE. Enter the desired username for the Tinderbox database : <Benutzername> Enter the desired password for tinderbox : <Passwort> Are these the settings you want: Database username : tinderbox Database user password : **** (y/n)y INFO: Adding permissions to tinderbox for tinderbox ... INFO: The next prompt will be for root's password on the database server localhost. Enter password: <Passwort> DONE. INFO: Database configuration complete.

Nun müssen noch einige Dateien kopiert und angepasst werden:

# cp /usr/local/tinderbox/scripts/tinderbox.ph.dist /usr/local/tinderbox/scripts/tinderbox.ph

In der Datei /usr/local/tinderbox/scripts/tinderbox.ph müssen noch einige Variablen ausgefüllt werden. Verwendet man die neue Weboberfläche, müssen die Variablen für www auskommentiert und jene für www-exp einkommentiert werden:

$BUILD_ROOT      = '/usr/local/tinderbox';
$SUBJECT         = '<Betreff einer Tinderbox Mail>';
$SENDER          = '<Senderadresse>';
$SMTP_HOST       = '<Mailserver>';
$SERVER_HOST     = '<Tinderbox Server>'; 
 
$TINDERBOX_URI           = '/tb';
 
# for www:
#$SHOWBUILD_URI           = $TINDERBOX_URI . '/showbuild.php?name=';
#$SHOWPORT_URI            = $TINDERBOX_URI . '/showport.php?id=';
 
# for www-exp:
$SHOWBUILD_URI           = $TINDERBOX_URI . '/index.php?action=list_buildports&build=';
$SHOWPORT_URI            = $TINDERBOX_URI . '/index.php?action=describe_port&id=';

Danach müssen noch zwei PHP Scripts kopiert und angepasst werden:

# cp /usr/local/tinderbox/scripts/www-exp/inc_ds.php.dist /usr/local/tinderbox/scripts/www-exp/inc_ds.php
# cp /usr/local/tinderbox/scripts/www-exp/inc_tinderbox.php.dist /usr/local/tinderbox/scripts/www-exp/inc_tinderbox.php

Einträge in der /usr/local/tinderbox/scripts/www-exp/inc_ds.php:

$DB_HOST = '<DB Server>';
$DB_USER = '<DB User>';
$DB_PASS = '<DB Passwort>';

Einträge in der /usr/local/tinderbox/scripts/www-exp/inc_tinderbox.php:

 
$rootdir = '/usr/local/tinderbox';
$wwwrooturi  = '/tb';
$tinderbox_name  = '<Tinderbox Name>';
$tinderbox_title = '<Tinderbox Titel>';

Jetzt kann die Tinderbox initialisiert werden:

# cd /usr/local/tinderbox/scripts && ./tc init

Möchte man die Tinderbox über das Web-GUI steuern, muss noch der tinderd Dienst aktiviert werden:

# cp /usr/local/tinderbox/scripts/etc/rc.d/tinderd.sh /usr/local/etc/rc.d/
# chmod +x /usr/local/etc/rc.d/tinderd.sh
# echo 'tinderd_enable="YES"' >> /etc/rc.conf
# echo 'tinderd_directory="/usr/local/tinderbox/scripts"' >> /etc/rc.conf
# echo 'tinderd_flags="-nullfs"' >> /etc/rc.conf

Nun muss noch ein Benutzer für das Web-GUI erstellt werden:

# cd /usr/local/tinderbox/scripts && ./tc addHost
# ./tc addUser -u <Benutzername> -e <E-Mailadresse> -p <Passwort> -w
# ./tc setWwwAdmin -u <Benutzername>

Nun müssen noch die Einträge in der /usr/local/etc/apache/httpd.conf gemacht werden:

 Alias /tb/logs/ "/usr/local/tinderbox/logs/"
 Alias /tb/packages/ "/usr/local/tinderbox/packages/"
 Alias /tb/errors/ "/usr/local/tinderbox/errors/"
 Alias /tb/ "/usr/local/tinderbox/scripts/www-exp/"
 <Directory "/usr/local/tinderbox/">
         Order allow,deny
         Allow from all
 </Directory>

Danach kann der Apache neu gestartet werden:

# /usr/local/etc/rc.d/apache.sh restart

Als erstes wird ein Portbaum mit der Bezeichnung FreeBSD erstellt:

# cd /usr/local/tinderbox/scripts
# ./create PortsTree -p FreeBSD -d "FreeBSD ports tree" -w http://www.freebsd.org/cgi/cvsweb.cgi/ports/

Mit einer Tinderbox können Packet für verschieden FreeBSD Versionen erstellt werden. Folgender Befehl erstellt eine Tinderbox-Jail für FreeBSD 6.2:

# ./create Jail -j 6.2 -d "FreeBSD 6.2" -t RELENG_6_2

Nun wird der Tinderbox-Jail dem Portbaum zugewiesen:

# ./create Build -b 6.2-FreeBSD -j 6.2 -p FreeBSD -d "6.2-RELEASE with FreeBSD ports tree"

Es können nun auch weiter Tinderbox-Jails mit anderen FreeBSD Versionen und unterschiedliche Portbäume erstellt werden.

Danach können schon Ports, in diesem Beispiel www/fluxcms, getestet und Pakete dafür erstellt werden:

# ./tc addPort -b 6.2-FreeBSD -d www/fluxcms -r
# ./tinderbuild -nullfs -b 6.2-FreeBSD www/fluxcms

Die Logdateien und die Pakete können ganz einfach über das Web-GUI gefunden werden. Dieses ist über http://tinderboxserver/tb/ erreichbar.

Auch lassen sich bestehende Portbaume aktualisieren. Folgender Befehl aktualisiert den Portbaum welcher FreeBSD benannt wurde:

# ./tc updatePortsTree -p FreeBSD

Mehr Informationen zur Tinderbox findet man auf der Homepage http://tinderbox.marcuscom.com/.

Related Entries:
Tinderbox aufräumen
Wartezeit von tinderd ändern
Quellcode in der Tinderbox speichern
Tinderbox-Jail ohne Kompilieren erstellen
RSS-Feed der zuletzt gebauten Ports einer Tinderbox
Comments (4)  Permalink

pkg-message eines Ports nachträglich anzeigen

Bei der Installation von Ports werden manchmal zusätzliche Informationen zur Installation angezeigt. Diese pkg-message wird automatisch unter /var/db/pkg/<Port>/+DISPLAY gespeichert. Mit der -D Option von pkg_info(1) kann man sich diese Meldung zu einem späteren Zeitpunkt anzeigen lassen:

# pkg_info -D fluxcms-1.6.0_4

Möchte man nicht die vollständige Versionsnummer angeben, so kann man mit einer Wildcard arbeiten:

# pkg_info -D fluxcms-\*

pkg_info ist auf FreeBSD bereits im Basissystem vorhanden.

Related Entries:
Gespeicherte Optionen nach OptionsNG konvertieren
Ports-Subversion-Repository spiegeln
sysinstall-Ersatz für neuere FreeBSD-Versionen
Alte FreeBSD-Port Patchdateien aufsplitten
FreeBSD-Portbaum auf Fehler überprüfen
 Permalink

ipfw Logdatei auswerten

In einer ipfw Regel kann zusätzlich ein log-Schlüsselwort angegeben werden:

/sbin/ipfw -q add deny log ip from any to any

Nun werden alle Pakete, auf die diese Regel zutrifft, von syslog protokolliert. In /etc/syslog.conf findet man heraus, in welche Logdatei diese Meldungen geschrieben werden:

security.*                   /var/log/security

Mit Hilfe von ipfwcount kann nun diese Datei ausgewertet werden. ipfwcount findet man im FreeBSD Portbaum unter security/ipfwcount:

# cd /usr/ports/security/ipfwcount && make install clean

Möchte man nun herausfinden, welchen Destination-Port die meisten geblockten Pakete haben, kann man folgenden Befehl verwenden:

# ipfwcount -dink dport -t 5 /var/log/security
Destination port (denied, incoming, 5 of 21)
------------------------------------------------
http 124
netbios-ssn 47
1026 44
microsoft-ds 26
loc-srv 22

Mit der -d Option werden geloggte Pakete einer deny Regel und mit -i werden eingehende Pakete gezählt. Mit -n werden die Portnummern durch den Portnamen ersetzt und mit -k dport wird angegeben, dass nach den Destination-Ports sortiert werden soll und durch -t 5 werden nur die Top 5 Ports angezeigt.

Soll nun gleichzeitig angezeigt werden, welche Rechner am meisten auf diese Ports zugegriffen haben, so kann folgender Befehl verwendet werden:

# ipfwcount -dink dport,shost -t 2 /var/log/security
Destination port (denied, incoming, 2 of 21)
------------------------------------------------
http 124
Source host (2 of 11)
------------------------------------------------
xyz.dclient.hispeedy.hc 71
xyz.dsl.cest1wll.ten 21

netbios-ssn 47
Source host (2 of 8)
------------------------------------------------
217.150.xyz.xyz 18
xyz.aci.mehs.da.pj 8

Nun sieht man für die zwei meist geblockten Destination-Ports je die beiden Rechner, die am meisten versucht haben auf diese Ports zuzugreifen.

Möchte man automatisch mit den periodic daily Mails eine Auswertung der ipfw Logdatei erhalten, so kann man einen Symlink in /usr/local/etc/portiodic/security erstellen:

# cd /usr/local/etc/periodic/security/ && ln -s /usr/local/share/examples/ipfwcount/100.ipfwcount

Danach muss ipfwcount in der /etc/periodic.conf aktiviert werden:

echo 'daily_status_security_ipfwcount_enable="YES"' >> /etc/periodic.conf

Mehr Informationen zu ipfwcount findet man in der Manpage ipfwcount(1).

Related Entries:
Gespeicherte Optionen nach OptionsNG konvertieren
Ports-Subversion-Repository spiegeln
sysinstall-Ersatz für neuere FreeBSD-Versionen
Alte FreeBSD-Port Patchdateien aufsplitten
FreeBSD-Portbaum auf Fehler überprüfen
 Permalink
Prev Next51-60/125