BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

Tastaturlayout nach Aktualisieren des Xorg-Servers auf 1.5.3 konfigurieren

Nach dem Aktualisieren des xorg-servers auf die Version 1.5.3 wird das in der /etc/X11/xorg.conf konfigurierte Tastaturlayout nicht mehr übernommen, da die Tastatur nicht mehr über die xorg.conf sondern über den HAL-Daemon konfiguriert wird. Dazu müssen folgende zwei Zeilen in der /etc/rc.conf eingefügt werden:

dbus_enable="YES"
hald_enable="YES"

Nun muss die Datei /usr/local/etc/hal/fdi/policy/99-x11-keyboard.fdi angelegt werden. Im folgenden Beispiel wird ein schweizerdeutsches Tastaturlayout konfiguriert:

<?xml version="1.0" encoding="ISO-8859-1"?>
<deviceinfo version="0.2">
  <device>
    <match key="info.capabilities" contains="input.keyboard">
      <merge key="input.xkb.layout" type="string">ch</merge>
    </match>
  </device>
</deviceinfo>

Danach müssen der D-Bus und der HAL-Daemon gestartet werden:

# /usr/local/etc/rc.d/dbus start
# /usr/local/etc/rc.d/hald start

Anschliessend muss der X-Server neu gestartet werden. Danach ist das gewünschte Tastaturlayout wieder konfiguriert.

Comments (2)  Permalink

Festplatte mit recoverdisk kopieren

Mit Hilfe von recoverdisk lässt sich der Inhalt einer Festplatte auf eine andere Festplatte kopieren. Kann dabei ein Block nicht gelesen werden, wird der Block übersprungen, am Schluss jedoch nochmals mit einer kleineren Blockgrösse gelesen. Im folgenden Beispiel wird die Festplatte da2 auf da3 kopiert:

# recoverdisk /dev/da2 /dev/da3
        start    size     block-len state          done     remaining    % done
  36419141632  933376        933376     0   36420075008             0 100.00000
Completed

Auch lässt sich der Inhalt einer Partition in eine Datei kopieren. Dazu muss zuerste eine entsprechende Datei angelegt werden:

# touch /usr/ad4s3e.dump
# recoverdisk /dev/ad4s3e /usr/ad4s3e.dump
        start    size     block-len state          done     remaining    % done
    101711872 1048576     435159040     0     101711872     435159040  18.94531

Ist das Kopieren abgeschlossen, kann die in eine Datei kopierte Partition z.B. nur lesend ins System gemountet werden:

# recoverdisk /dev/ad4s3e /usr/ad4s3e.dump
        start    size     block-len state          done     remaining    % done
    535822336 1048576       1048576     0     536870912             0 100.00000
Completed
# mdconfig -a -t vnode -f /usr/ad4s3e.dump -u 0
# mount -o ro /dev/md0 /mnt

Werden die kopierten Daten nicht mehr benötigt, können diese wieder aus dem System entfernt werden:

# umount /mnt
# mdconfig -d -u 0

Seit FreeBSD 7.0 findet man recoverdisk im FreeBSD -Basissystem. Mehr Informationen zu recoverdisk findet man in der Manpage recoverdisk(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

sendmail Statistiken erstellen

Mit Hilfe von mailstats können Statistiken des sendmail-Daemon erstellt werden. Dabei werden verschiedene Werte der sendmail-Mailer dargestellt. Der Wert msgsfr zählt alle vom Mailer versendeten, der Zähler msgsto die vom Mailer empfangenen Mails an. Die Werte bytes_from und bytes_to zeigen die Grösse der versendeten und empfangenen Mails in Bytes an. Die Anzahl zurückgewiesener Mails wird durch den Zähler msgsrej, die Anzahl verworfenen Mails wird durch den Zähler msgsdis angezeigt. In der Spalte T wird das Total aller Mailer angezeigt, die Spalte C zeigt die Anzahl TCP Verbindugen an:

# mailstats
Statistics from Sat Jan 17 03:01:03 2009
 M   msgsfr  bytes_from   msgsto    bytes_to  msgsrej msgsdis msgsqur  Mailer
 3        7      78364K        1          2K        0       0       0  local
 5       23      39201K       23         25K        0       0       0  esmtp
=====================================================================
 T       30     117565K       24         27K        0       0       0
 C       27                   49                    0

Möchte man die Statistiken einer gespeicherten sendmail-Statistikdatei anzeigen, so kann diese mit der -f Option an mailstats übergeben werden:

# mailstats -f /var/log/sendmail.st.3
Statistics from Sun Dec 21 22:18:17 2008
 M   msgsfr  bytes_from   msgsto    bytes_to  msgsrej msgsdis msgsqur  Mailer
 3       19         96K       17         98K        0       0       0  local
 5        2          2K        0          0K        1       0       0  esmtp
=====================================================================
 T       21         98K       17         98K        1       0       0
 C       20                    0                    1

Im FreeBSD und OpenBSD Basissystem ist mailstats bereits vorhanden. Mehr Informationen zu mailstats findet man in der Manpage mailstats(8).

 Permalink

FreeBSD mit einer GUID Partitionstabelle installieren

Ab dem FreeBSD 7.1-Release lässt sich FreeBSD mit Hilfe einer GUID Partitionstabelle anstatt des MBR starten. Damit lassen sich bis zu 128 Partitionen erstellen. Auch lassen sich Partitionen erstellen, welche grösser als 2TB sind.

Um FreeBSD mit einer GUID Partitionstabelle zu installieren, kann man zum Beispiel die FreeBSD-Installations DVD booten und dann den Fixit-Modus und das Live-Dateisystem der CDROM/DVD wählen. Im folgenden Beispiel wird die FreeBSD Installation mit einer GUID Partitionstabelle auf der Disk /dev/ad0 vorgenommen.

# ls /dev/ad0
/dev/ad0

Nun wird als erstes eine GUID Partitionstabelle auf die Disk geschrieben. Mit der -f Option wird ein allfällig vorhandenes Master Boot Record überschrieben:

# gpt create -f ad0

Danach wird das Booten von einer GUID Partitionstabelle ermöglicht. Dabei werden die Bootloader von der Installations-DVD installiert:

# gpt boot -b /dist/boot/pmbr -g /dist/boot/gptboot ad0

Jetzt können die verschiedenen Partitionen erstellt werden. Die Grösse, welche mit der -s Option angegeben wird, wird dabei in Anzahl Blocks (standardmässig 512B) angegeben. Im folgenden Beispiel wird eine 1GB grosse Root-Partition erstellt. Danach wird eine 1GB grosse Swap Partition, eine 1GB grosse Partition für /tmp und eine 2GB grosse Partition für /var erstellt. Mit dem restlichen Speicherplatz wird eine Partition erstellt, auf welcher /usr gemountet wird:

# gpt add -t ufs -s 2097152 ad0
# gpt add -t swap -s 2097152 ad0
# gpt add -t ufs -s 2097152 ad0
# gpt add -t ufs -s 4194304 ad0
# gpt add -t ufs ad0

Nun kann die Partitionstabelle mit dem show Kommando verifiziert werden:

# gpt show ad0
     start      size  index  contents
         0         1         PMBR
         1         1         Pri GPT header
         2        32         Pri GPT table
        34       128      1  GPT part - FreeBSD boot
       162   2097152      2  GPT part - FreeBSD UFS/UFS2
   2097314   2097152      3  GPT part - FreeBSD swap
   4194466   2097152      4  GPT part - FreeBSD UFS/UFS2
   6291618   4194304      5  GPT part - FreeBSD UFS/UFS2
  10485922   6291261      6  GPT part - FreeBSD UFS/UFS2
  16777183        32         Sec GPT table
  16777215         1         Sec GPT header

Einzelne Partitionen können, falls nötig, wieder entfernt werden. Dabei wird der Index der zu entfernenden Partition mit der -i Option angegeben:

# gpt remove -i 3 ad0

Die ganze Partitionstabelle kann, falls gewünscht, mit dem destroy Kommando wieder entfernt werden:

# gpt destroy ad0

Nun kann auf allen Partitionen ein Dateisystem erstellt werden:

# newfs -U /dev/ad0p2
# newfs -U /dev/ad0p4
# newfs -U /dev/ad0p5
# newfs -U /dev/ad0p6

Danach wird die Root-Partition nach /mnt gemountet. Ausserdem werden die Verzeichnisse für die restlichen Partitionen erstellt und entsprechend gemountet:

# mount /dev/ad0p2 /mnt
# mkdir /mnt/tmp
# mkdir /mnt/var
# mkdir /mnt/usr
# mount /dev/ad0p4 /mnt/tmp
# mount /dev/ad0p5 /mnt/var
# mount /dev/ad0p6 /mnt/usr

Nun wechselt man ins base Verzeichnis der Installations-DVD und setzt die DESTDIR Variable auf die gemountete Festplatte:

# cd /mnt2/7.1-RELEASE/base
# DESTDIR=/mnt
# export DESTDIR

Jetzt kann das Basissystem und der GENERIC -Kernel installiert werden:

# ./install.sh
You are about to extract the base distribution into /mnt/ -
are you SURE you want to do this over your installed system (y/n) y
# cd ../kernels
# ./install.sh GENERIC
# cd /mnt/boot
# mv GENERIC kernel

Nachdem die Installation abgeschlossen wurde, wird eine entsprechende fstab erstellt:

# cd /mnt/etc
# vi fstab
/dev/ad0p3      none    swap    sw      0       0
/dev/ad0p2      /       ufs     rw      1       1
/dev/ad0p4      /tmp    ufs     rw      2       2
/dev/ad0p6      /usr    ufs     rw      2       2
/dev/ad0p5      /var    ufs     rw      2       2

Zu guter Letzt werden die gemounteten Partitionen geunmountet und der Fixit-Modus verlassen:

# umount /mnt/usr
# umount /mnt/var
# umount /mnt/tmp
# cd && umount /mnt
# exit

Nachdem der Rechner neu gebootet wurde, startet das installierte FreeBSD und kann nun konfiguriert werden. Mehr Informationen zur GUID Partitionstabelle und zu gpt findet man in der Manpage gpt(8).

Comments (2)  Permalink

Speicherplatzverbrauch darstellen

Möchte man herausfinden, welche Dateien wieviel Speicherplatz verbrauchen, so kann dies mit Hilfe von durep übersichtlich dargestellt werden. durep findet man im FreeBSD Portbaum unter sysutlis/durep:

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

Nun kann das gewünschte Verzeichnis angegeben werden und der Speicherplatzverbrauch wird entsprechend angezeigt. Dabei werden die Verzeichnisse und Dateien anhand des gebrauchten Speicherplatzes sortiert:

# durep /tmp/test
[ /tmp/test     3.3M (0 files, 1 dirs) ]
   3.3M [##############################] 100.00% test2/
       1.9M [#################             ]  57.35% file1
       1.0M [#########                     ]  30.92% test3/
         578.9K [################              ]  55.01% file2
         473.4K [#############                 ]  44.99% file3
     399.1K [###                           ]  11.73% file4

Möchte man die Tiefe der Darstellung begrenzen, kann die -td Option verwendet werden:

# cd /usr/local
# durep -td 1
[ /usr/local   652.5M (0 files, 12 dirs) ]
 358.9M [################              ]  55.00% lib/
 152.4M [#######                       ]  23.36% share/
  62.4M [##                            ]   9.56% bin/
  57.7M [##                            ]   8.84% include/
   7.8M [                              ]   1.19% man/
   6.1M [                              ]   0.93% info/
   5.0M [                              ]   0.76% libexec/
   1.7M [                              ]   0.27% sbin/
 357.8K [                              ]   0.05% translations/
 145.2K [                              ]   0.02% etc/
  84.7K [                              ]   0.01% libdata/
  12.4K [                              ]   0.00% www/

Sollen nur Dateien angezeigt werden, welche mindestens eine bestimmte Grösse aufweisen, so kann dafür die -hs Option verwendet werden. Mit der -f Option werden nur Dateien überprüft, allfällige Subverzeichnisse werden nicht berücksichtigt:

# durep -f /home/test -hs 100m
[ /usr/home/test     2.3G (599 files, 0 dirs) ]
   1.6G [#####################         ]  71.58% test.tar.gz
 250.3M [###                           ]  10.80% test2

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

Comments (1)  Permalink

Aktuelle sendmail-Aliase anzeigen

Mit Hilfe von Aliasen lassen sich im sendmail-Daemon Mailweiterleitungen einrichten. Dabei werden die Aliase in der Datei /etc/mail/aliases konfiguriert und mit Hilfe von newaliases(1) die /etc/mail/aliases.db Datenbank erstellt, aus welcher die Aliase vom sendmail-Daemon ausgelesen werden.

# newaliases 
/etc/mail/aliases: 28 aliases, longest 35 bytes, 314 bytes total

Möchte man den Inhalt der aliases.db auslesen, falls z.B. die aliases-Datei nicht mehr vorhanden ist, kann praliases aufgerufen werden, wodurch die aktuelle Aliases-Konfiguration angezeigt wird:

# praliases 
root:admin1@example.org,admin2@example.org
beat:beat@example.org
postmaster:root
hostmaster:root
abuse:root
[...]

Im FreeBSD und OpenBSD Basissystem ist praliases bereits vorhanden. Mehr Informationen zu paraliases findet man in der Manpage praliases(8).

 Permalink

Sendmail mit SASL-Authentifizierung und SSL-Verschlüsselung

Möchte man einen Mailserver einrichten, über den Mails versenden werden können, man sich dazu aber authentifizieren muss und die Verbindung mit SSL geschützt ist, so muss zuerst der cyrus-sasl2-saslauthd Port installiert werden:

# cd /usr/ports/security/cyrus-sasl2-saslauthd/ && make install clean

Danach werden die benötigten Einträge in der rc.conf gemacht:

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

Nun kann der saslauthd gestartet werden:

# /usr/local/etc/rc.d/saslauthd start

Damit der sendmail-Daemon nun mit der SASL2 Unterstützung gebaut werden kann, müssen folgende Einträge in der /etc/make.conf gemacht werden:

# with SASLv2:
SENDMAIL_CFLAGS=-I/usr/local/include -DSASL=2
SENDMAIL_LDFLAGS=-L/usr/local/lib
SENDMAIL_LDADD=-lsasl2

Danach kann sendmail neu gebaut werden:

# cd /usr/src/lib/libsmutil
# make cleandir && make obj && make
# cd /usr/src/lib/libsm
# make cleandir && make obj && make
# cd /usr/src/usr.sbin/sendmail
# make cleandir && make obj && make && make install

Nun können die Konfigurationsdateien für den sendmail-Daemon erstellt werden:

cd /etc/mail && make

Dabei wurden zwei neue Konfigurationsdateien erstellt, welche den Hostnamen im Dateinamen haben: <hostname>.mc und <hostname>.submit.mc. In die <hostname>.mc werden nun folgende Zeilen eingefügt:

dnl SASL auth
define(`confAUTH_MECHANISMS',`PLAIN LOGIN')dnl
TRUST_AUTH_MECH(`PLAIN LOGIN')dnl

dnl SSMTP
define(`CERT_DIR', `/etc/mail/certs')dnl
define(`confCACERT_PATH', `CERT_DIR')dnl
define(`confCACERT', `CERT_DIR/mycert.pem')dnl
define(`confSERVER_CERT', `CERT_DIR/mycert.pem')dnl
define(`confSERVER_KEY', `CERT_DIR/mykey.pem')dnl
define(`confCLIENT_CERT', `CERT_DIR/mycert.pem')dnl
define(`confCLIENT_KEY', `CERT_DIR/mykey.pem')dnl
DAEMON_OPTIONS(`Port=smtps, Name=TLSMTA, M=s')dnl

Nun müssen noch, falls nicht schon vorhanden, die entsprechenden Zertifikate für den sendmail-Daemon erstellt werden:

# mkdir /etc/mail/certs
# cd /etc/mail/certs
# openssl dsaparam 1024 -out dsa1024.pem
# openssl req -x509 -nodes -newkey dsa:dsa1024.pem -out mycert.pem -keyout mykey.pem
# chmod 600 /etc/mail/certs/*

Als Letztes muss die neue Konfiguration aktiviert und sendmail neu gestartet werden:

# cd /etc/mail
# make all install restart

Danach lässt sich auf TCP -Port 465 eine SSL-verschlüsselte Verbindung aufbauen, wobei der Benutzer gegen die auf dem Server vorhanden Benutzerkonten authentifiziert wird. Zum Testen des Mailservers kann swaks aus dem FreeBSD Portbaum verwendet werden. Mehr Informationen zur SMTP Authentifikation findet man im FreeBSD Handbuch: http://www.freebsd.org/doc/en/books/handbook/smtp-auth.html.

 Permalink

FreeBSD Jails mit NAT betreiben

Möchte man auf einem FreeBSD System mehrere Jails betreiben, ohne jedoch weitere öffentlichen IP-Adressen zur Verfügung zu haben, können die Jails an das Loopback-Interface gebunden werden und mit Hilfe der pf-Firewall ein NAT für die Jails erstellt werden. Dazu muss auf dem Hostsystem in der /etc/rc.conf die pf-Firewall und das IP-Forwarding aktiviert und die Jail entsprechend konfiguriert sein. Im folgenden Beispiel wird die Jail mit der IP 127.0.0.10 an die Schnittstelle lo0 gebunden:

pf_enable="YES
gateway_enable="YES"
ifconfig_lo0_alias0="inet 127.0.0.10 netmask 255.255.255.255"
jail_enable="YES"
jail_list="test"
jail_test_rootdir="/usr/jails/test.chruetertee.ch"
jail_test_hostname="test.chruetertee.ch"
jail_test_ip="127.0.0.10"
jail_test_exec="/bin/sh /etc/rc"
jail_test_devfs_enable="YES"
jail_test_devfs_ruleset="devfsrules_jail"

Danach muss das IP-Forwarding auf dem Hostsystem aktiviert werden:

# sysctl net.inet.ip.forwarding=1
net.inet.ip.forwarding: 0 -> 1

Nun kann die pf-Konfiguration so ergänzt werden, dass gewisse UDP und/oder TCP-Ports der Jail von aussen erreichbar sind und die Jail per NAT nach aussen zugreifen kann. Im folgenden Beispiel wird der Zugriff mit UDP auf Port 53 und mit TCP auf Port 53 und 465 von aussen (Schnittstelle bge0) zugelassen:

ext_if="bge0"

testjail_tcp = "{ 53, 465 }"
testjail_udp = "{ 53 }"

testjail = 127.0.0.10

set skip on lo0

rdr pass on $ext_if proto tcp from any to $ext_if port $testjail_tcp -> $testjail
rdr pass on $ext_if proto udp from any to $ext_if port $testjail_udp -> $testjail
nat on $ext_if proto {tcp udp} from $testjail to any -> ($ext_if)

[...] (weitere pf-Konfiguration des Hostsystemes)

Danach muss die neue pf-Konfiguration geladen werden:

# pfctl -f /etc/pf.conf

Nun kann in der /etc/rc.conf der Jail als Default-Gateway die IP-Adresse (in diesem Beispiel die IP-Adresse von bge0) des Hostsystemes angegeben werden:

defaultrouter="<IP-Adresse des Hostsystemes>"

Nun lässt sich aus der Jail via NAT durch die pf-Firewall nach aussen zugreifen.

Comments (8)  Permalink

Kernelausgaben auf Multiprozessor-Rechner synchronisieren

Auf Multiprozessoren-Rechnern können manchmal Kernelausgaben mit anderen Meldungen vermischt dargestellt werden, wodurch die Ausgaben unleserlich werden. Beispielsweise kann dies beim Herunterfahren eines Systems während der Ausgabe von "syncing disks" auftreten. Soll dies verhindert werden, kann folgende Option in der Kernelkonfiguration hinzugefügt werden:

options     PRINTF_BUFR_SIZE=128

Danach muss der Kernel neu gebaut werden. Nach einem Neustart des Systems werden die Meldungen korrekt angezeigt.

 Permalink

Informationen zu einem UFS-Dateisystem anzeigen

Möchte man herausfinden, mit welchen newfs-Optionen ein UFS-Dateisystem angelegt wurde, so kann die -m Option von dumpfs verwendet werden:

# dumpfs -m /tmp
newfs command for /tmp (/dev/ad4s3e)
newfs -O 2 -U -a 8 -b 16384 -d 16384 -e 2048 -f 2048 -g 16384 -h 64 -m 8 -o time -s 262144 /dev/ad4s3e

Ruft man dumpfs ohne Optionen auf, werden ausführliche Informationen zu allen Zylindergruppen und zum Superblock angezeigt. Im FreeBSD Basissystem ist dumpfs bereits enthalten. Mehr Informationen zu dumpfs findet man in der Manpage dumpfs(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
Prev Next221-230/521