BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

FreeBSD Dokumentation über die Ports installieren

Die FreeBSD Dokumentation kann seit einiger Zeit auch über die Ports installiert werden:

# cd /usr/ports/misc/freebsd-doc-en/ && make install clean

Nun können die Formate ausgewählt werden, welche installiert werden sollen:

[ ] HTML        Single HTML file per document
[X] HTML_SPLIT  The default HTML format used on www.FreeBSD.org 
[X] PDF         PDF format
[ ] PS          PostScript format
[ ] TXT         Plain text

Danach ist die Dokumentation unter /usr/local/share/doc/freebsd/en_US.ISO8859-1 verfügbar. Möchte man lieber die deutsche Übersetzung installieren, kann dies über den Port misc/freebsd-doc-de gemacht werden. Alternativ kann die Dokumentation auch mit Hilfe von CVSup erstellt werden: http://www.chruetertee.ch/blog/archive/2008/10/07/lokale-kopie-der-freebsd-dokumentation.html

 Permalink

Minimale CPU Taktfrequenz im Batteriemodus festlegen

Verwendet man auf einem Laptop powerd und legt fest, dass die kleinste verfügbare CPU-Taktfrequenz im Batteriebetrieb verwendet werden soll, so kann das unter Umständen zu langsam sein:

# sysctl dev.cpu.0.freq
dev.cpu.0.freq: 500

Mit der sysctl-Variable debug.cpufreq.lowest kann deshalb die kleinste verfügbare Taktrate festgelegt werden:

# sysctl debug.cpufreq.lowest
debug.cpufreq.lowest: 500

Dazu müssen zuerst die verfügbaren Taktraten ausgelesen werden:

# sysctl dev.cpu.0.freq_levels
dev.cpu.0.freq_levels: 2500/35000 2187/30625 2000/27000 1750/23625 1600/21000 1400/18375 1200/16000 1050/14000 900/12000 800/14000 700/12250 600/10500 500/8750

Danach kann die minimale Frequenz festgelegt werden:

# sysctl debug.cpufreq.lowest=1200
debug.cpufreq.lowest: 500 -> 1200

Möchte man diese Einstellung dauerhaft speichern, so kann dazu ein Eintrag in /etc/sysctl.conf gemacht werden:

debug.cpufreq.lowest=1200
Comments (1)  Permalink

FreeBSD nur auf ZFS installieren

Möchte man FreeBSD auf einem System nur mit ZFS installieren, so kann man dazu von einer FreeBSD LiveFS CD -ROM oder DVD booten und den Fixit -> CDROM/DVD Modus wählen. Nun kann eine GUID-Partitionstabelle auf der Platte erstellt werden, auf der man FreeBSD mit ZFS installieren kann. Im folgenden Beispiel wird die ganze Festplatte für FreeBSD verwendet, wobei diese noch keine Daten enthält:

Fixit# gpart create -s GPT ad0
ad0 created

Zuerst wird eine Boot-Partition erstellt:

Fixit# gpart add -b 34 -s 128 -t freebsd-boot ad0
ad0p1 added

Mit dem restlichen Speicherplatz wird eine Partition für das ZFS erstellt:

Fixit# gpart show ad0
=>       34  156301421  ad0  GPT  (75G)
         34        128    1  freebsd-boot  (64K)
        162  156301293       - free -   (75G)
Fixit# gpart add -b 162 -s 156301293 -t freebsd-zfs ad0
ad0p2 added

Danach kann der Bootstrap-Code in der Bootpartition installiert werden:

Fixit# gpart bootcode -b /mnt2/boot/pmbr -p /mnt2/boot/gptzfsboot -i 1 ad0
ad0 has bootcode

Das erstellte Partitionsschema kann mit gpart show kontrolliert werden:

Fixit# gpart show ad0
=>       34  156301421  ad0  GPT  (75G)
         34        128    1  freebsd-boot  (64K)
        162  156301293    2  freebsd-zfs  (75G)

Als nächstes werden die für eine ZFS-Installation benötigten Kernelmodule geladen:

Fixit# kldload /mnt2/boot/kernel/opensolaris.ko
Fixit# kldload /mnt2/boot/kernel/zfs.ko

Danach wird auf der freien Partition ein ZFS-Pool namens rpool erstellt, von dem das System später gebootet wird:

Fixit# zpool create rpool /dev/ad0p2
Fixit# zpool set bootfs=rpool rpool

Darin werden nun die gewünschten ZFS-Dateisysteme erstellt:

Fixit# zfs create rpool/tmp
Fixit# zfs create rpool/usr
Fixit# zfs create rpool/var

Im ZFS-Pool wird danach ein Swap-Bereich erstellt, welcher im folgenden Beispiel 2GB gross ist:

Fixit# zfs create -V 2gb rpool/swap
Fixit# zfs set org.freebsd:swap=on rpool/swap
Fixit# zfs set checksum=off rpool/swap

Nun werden das Basissystem und der Kernel installiert:

Fixit# cd /dist/8.0-BETA2/base
Fixit# export DESTDIR=/rpool
Fixit# ./install.sh
You are about to extract the base distribution into /rpool - are you SURE
you want to do this over your installed system (y/n)? y
Fixit# cd ../kernels
Fixit# ./install.sh generic
Fixit# cd /rpool/boot
Fixit# cp -Rp GENERIC/* kernel/

Desweiteren müssen noch die FreeBSD-Quelldateien sowie die Manpages installiert werden:

Fixit# cd /dist/8.0-BETA2/src
Fixit# ./install.sh all
Extracting sources into /usr/src...
  Extracting source component: base
  Extracting source component: bin
  Extracting source component: cddl
  Extracting source component: contrib
  Extracting source component: crypto
  Extracting source component: etc
  Extracting source component: games
  Extracting source component: gnu
  Extracting source component: include
  Extracting source component: krb5
  Extracting source component: lib
  Extracting source component: libexec
  Extracting source component: release
  Extracting source component: rescue
  Extracting source component: sbin
  Extracting source component: secure
  Extracting source component: share
  Extracting source component: sys
  Extracting source component: tools
  Extracting source component: ubin
  Extracting source component: usbin
Done extracting sources.
Done extracting sources.
Fixit# cd ../manpages
Fixit# ./install.sh

Danach müssen die entsprechenden Einträge in rc.conf(5) sowie loader.conf(5) gemacht werden, so dass von einem ZFS-Dateisystem gebootet werden kann. Ausserdem muss der ZFS Support für den Bootloader in src.conf(5) gesetzt werden:

Fixit# echo 'zfs_enable="YES"' > /rpool/etc/rc.conf
Fixit# echo 'LOADER_ZFS_SUPPORT="YES"' > /rpool/etc/src.conf
Fixit# echo 'zfs_load="YES"' > /rpool/boot/loader.conf
Fixit# echo 'vfs.root.mountfrom="zfs:rpool"' >> /rpool/boot/loader.conf

Anschliessend kann die zpool.cache-Datei erstellt werden, indem der ZFS-Pool exportiert und wieder importiert wird:

Fixit# mkdir /boot/zfs
Fixit# zpool export rpool && zpool import rpool
Fixit# cp /boot/zfs/zpool.cache /rpool/boot/zfs/

Nun wird im neu installierten System der Bootloader mit ZFS-Support gebaut und installiert. Ausserdem wird eine leere fstab(5) erstellt, damit beim Booten keine Fehlermeldungen angezeigt werden:

Fixit# chroot /rpool
Fixit# mount -t devfs devfs /dev
Fixit# unset DESTDIR
Fixit# cd /usr/src/sys/boot/
Fixit# make obj
Fixit# make depend
Fixit# make
Fixit# cd i386/loader
Fixit# make install
Fixit# umount /dev
Fixit# touch /etc/fstab
Fixit# exit

Zuletzt wird noch festgelegt, wo die ZFS-Dateisysteme gemountet werden sollen. Damit die dynamisch gelinkten Programme danach noch funktionieren, muss zuerst die LD_LIBRARY_PATH -Umgebungsvariable richtig gesetzt werden:

Fixit# export LD_LIBRARY_PATH=/mnt2/lib
Fixit# zfs set mountpoint=legacy rpool
Fixit# zfs set mountpoint=/tmp rpool/tmp
Fixit# zfs set mountpoint=/var rpool/var
Fixit# zfs set mountpoint=/usr rpool/usr

Nun kann das System neu gestartet werden, welches danach von ZFS bootet. Ist das System gebootet, kann man sich als root ohne Passwort anmelden. Jetzt kann das System in der /etc/rc.conf konfiguriert werden sowie Benutzerkonten angelegt und das root-Passwort gesetzt werden.

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

Dieser Artikel wurde auf der Basis des FreeBSD Wiki Artikels ZFSOnRootWithZFSboot erstellt.

Related Entries:
ZFS-Statistiken anzeigen
ZFS-Installation mit Hilfe von mfsBSD
Alle Änderungen eines ZFS-Pools anzeigen
Automatisch ZFS Snapshots erstellen
ZFS Dateisystemoptionen verwenden
Comments (6)  Permalink

RFC-Dokumente suchen und anzeigen

Sucht man nach einem RFC-Dokument oder möchte man etwas darin nachlesen, so kann dies mit RFC Util vereinfacht werden. Im FreeBSD Portbaum findet man RFC Util unter misc/rfc:

# cd /usr/ports/misc/rfc && make install clean

Vor dem ersten Gebraucht muss mit der -i Option ein Index der verfügbaren RFC-Dokumente erstellt werden:

# rfc -i
Modem users one moment, it's about 400k (doesn't need to be updated often)
original lines  = 0     /usr/local/etc/rfc-index
new lines       = 21196 /usr/loca/etc/rfc-index

Mit der -k Option können die RFC-Dokumente nach einem Wort durchsucht werden:

# rfc -k smtp
The Result:
0876 Survey of SMTP implementations. D. Smallberg. September 1983.
     (Format: TXT=37775 bytes) (Status: UNKNOWN)
1047 Duplicate messages and SMTP. C. Partridge. February 1988.
     (Format: TXT=5888 bytes) (Status: UNKNOWN)
1090 SMTP on X.25. R. Ullmann. February 1989. (Format: TXT=6141 bytes)
     (Status: UNKNOWN)

[...]

Gibt man direkt eine RFC-Nummer an, werden Informationen zu diesem RFC angezeigt:

# rfc 5321
The Result:
5321 Simple Mail Transfer Protocol. J. Klensin. October 2008. (Format:
     TXT=225929 bytes) (Obsoletes RFC2821) (Updates RFC1123) (Status:
     DRAFT STANDARD)

Mit der -l Option wird das angegebene RFC-Dokument angezeigt:

# rfc -l 5321

Möchte man das RFC-Dokument in einer Textdatei speichern, kann dies mit der -d Option gemacht werden. Zusätzlich muss noch ein Verzeichnis angegeben werden, in welchem das Dokument erstellt werden soll:

# rfc -d 5321 /tmp/
Making... /tmp/rfc5321.txt
lines = 5323 .. Done.

Mehr Informationen zu RFC Util findet man in der Manpage rfc(1).

 Permalink

Befehl auf mehreren Rechnern gleichzeitig ausführen

Möchte man Befehle via SSH auf mehreren Servern ausführen, so kann dies mit clusterssh vereinfacht werden. Im FreeBSD Portbaum findet man clusterssh unter security/clusterssh:

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

Beim Aufruf von clusterssh müssen alle Rechner angegeben werden, zu denen eine SSH Verbindung aufgebaut werden soll.

# cssh <benutzer>@<rechner> [<benutzer>@<rechner>] [...]

Clusterssh öffnet für jede SSH Verbindung einen xterm und ein clusterssh-Kontrollfenster. In jedem dieser Terminals kann nun wie gewohnt gearbeitet werden. Möchte man jedoch einen Befehl auf allen Rechnern absetzen, gibt man ihn in das Textfeld im clusterssh-Kontrollfenster ein, wodurch dieser zu allen Rechnern gesendet wird:

clusterssh

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

Comments (1)  Permalink

Festplattenstatistiken anzeigen

Mit Hilfe von devstat lassen sich Statistiken zu den vorhandenen Festplatten anzeigen. Im FreeBSD Portbaum findet man devstat unter sysutils/devstat:

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

Nun lassen sich unter anderem die Anzahl gelesener und geschriebener Bytes, die Anzahl Schreib- und Leseoperationen sowie die Blockgrösse anzeigen:

# devstat da0
da0:
        1040333796616 bytes read
        7252471400448 bytes written
        0 bytes freed
        247638123 reads
        451008032 writes
        0 frees
        0 other
        duration:
                821293 11997012304437948040/2^64 sec reads
                14473429 7941757553516418738/2^64 sec writes
                0 0/2^64 sec frees
        895818 12812851478818415562/2^64 sec busy time
        5 18242368001486082/2^64 sec creation time
        512 block size
        tags sent:
                698646155 simple
                0 ordered
                0 head of queue
        supported statistics measurements flags: 0
        device type: 0
        devstat list insert priority: 4095

Alle angezeigten Werte sind in der Manpage devstat(9) beschrieben. Mehr Informationen zu devstat findet man in der Manpage devstat(8).

 Permalink

Portbaum mit virtuellen Kategorien erstellen

Im FreeBSD Portbaum werden die Port-Kategorien durch Verzeichnisse dargestellt. Daneben werden bestimmte Ports auch in virtuelle Kategorien eingeteilt. So werden zum Beispiel alle Ports welche ein Kernelmodul installieren, in die virtuelle Kategorie kld eingeteilt. Für virtuelle Kategorien ist im Portbaum kein Verzeichnis vorhanden. Mit Hilfe von symports kann ein Portbaum erstellt werden, in welchem auch virtuelle Kategorien durch Verzeichnisse dargestellt werden:

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

Führt man symports aus, wird im aktuellen Verzeichnis der neue Portbaum erstellt:

# symports
accessibility/accerciser:
accessibility/at-poke:
accessibility/at-spi:
[...]
x11-wm/xfce4-session:
x11-wm/xfce4-wm:
x11-wm/xmonad:
x11-wm/xmonad-contrib:

Darin sind nun alle Kategorien verfügbar:

# ls
accessibility/ elisp/         java/          parallel/      tcl/
afterstep/     emulators/     kde/           pear/          textproc/
arabic/        finance/       kld/           perl5/         tk/
archivers/     french/        korean/        plan9/         ukrainian/
astro/         ftp/           lang/          polish/        vietnamese/
audio/         games/         linux/         ports-mgmt/    windowmaker/
benchmarks/    geography/     lisp/          portuguese/    www/
biology/       german/        mail/          print/         x11/
cad/           gnome/         math/          python/        x11-clocks/
chinese/       gnustep/       mbone/         ruby/          x11-drivers/
comms/         graphics/      misc/          rubygems/      x11-fm/
converters/    hamradio/      multimedia/    russian/       x11-fonts/
databases/     haskell/       net/           scheme/        x11-servers/
deskutils/     hebrew/        net-im/        science/       x11-themes/
devel/         hungarian/     net-mgmt/      security/      x11-toolkits/
dns/           ipv6/          net-p2p/       shells/        x11-wm/
docs/          irc/           news/          spanish/       xfce/
editors/       japanese/      palm/          sysutils/      zope/

In den jeweiligen Verzichnis sind nun alle Ports dieser Kategorie mit einem symbolischen Link auf den Port im Portbaum dargestellt:

# cd kld
# ls -l
total 0
lrwxr-xr-x  1 root  wheel  21 25 Jun 23:38 acx100-net@ -> /usr/ports/net/acx100
lrwxr-xr-x  1 root  wheel  28 25 Jun 23:26 aureal-kmod-audio@ -> /usr/ports/audio/aureal-kmod
lrwxr-xr-x  1 root  wheel  28 25 Jun 23:42 biosfont-sysutils@ -> /usr/ports/sysutils/biosfont
lrwxr-xr-x  1 root  wheel  31 25 Jun 23:27 bluez-firmware-comms@ -> /usr/ports/comms/bluez-firmware
lrwxr-xr-x  1 root  wheel  32 25 Jun 23:38 bwi-firmware-kmod-net@ -> /usr/ports/net/bwi-firmware-kmod
lrwxr-xr-x  1 root  wheel  26 25 Jun 23:38 cx88-multimedia@ -> /usr/ports/multimedia/cx88
lrwxr-xr-x  1 root  wheel  26 25 Jun 23:42 devcpu-sysutils@ -> /usr/ports/sysutils/devcpu
lrwxr-xr-x  1 root  wheel  24 25 Jun 23:26 emu10kx-audio@ -> /usr/ports/audio/emu10kx
lrwxr-xr-x  1 root  wheel  23 25 Jun 23:42 est-sysutils@ -> /usr/ports/sysutils/est
[...]

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

 Permalink
1-7/7