[ FreeBSD ]
by Beat
@ 31.08.2007 18:47 UTC
Möchte man auf FreeBSD herausfinden, welcher Prozess wieviel I/O-Last verursacht, kann man top im I/O Modus starten:
# top -mio
last pid: 1688; load averages: 0.90, 0.59, 0.40 up 0+03:14:51 21:27:52
51 processes: 3 running, 48 sleeping
CPU states: 28.8% user, 0.0% nice, 55.6% system, 1.2% interrupt, 14.4% idle
Mem: 175M Active, 616M Inact, 167M Wired, 16M Cache, 111M Buf, 21M Free
Swap: 1024M Total, 16K Used, 1024M Free
PID USERNAME VCSW IVCSW READ WRITE FAULT TOTAL PERCENT COMMAND
1688 beat 17 643 0 174 0 174 29.15% dd
1004 root 130 8 0 0 0 0 0.00% Xorg
1033 beat 47 10 0 0 0 0 0.00% gkrellm
1676 beat 2595 712 81 60 0 141 23.62% thunderbird-bin
836 root 4 8 0 0 0 0 0.00% powerd
...
In diesem Modus werden nicht nur die Anzahl Lese- und Schreibvorgänge, sondern auch die Anzahl von Voluntary Context Switches (VCSW) und Involuntary Context Switches (IVSW) angezeigt. Ein Voluntary Context Switch wird ausgeführt, wenn ein Thread eine Ressource benötigt, welche zur Zeit nicht vorhanden ist, bei einem Involuntary Context Switch hat ein Thread seine Zeit in der CPU aufgebraucht oder ein höher priorisierter Thread soll ausgeführt werden. Mehr Informationen zu top findet man in der Manpage top(1).
[ FreeBSD ]
by Beat
@ 28.08.2007 18:54 UTC
Wollte man bis anhin auf FreeBSD zum Beispiel die /tmp Partition in einer RAM-Disk anlegen, so musste man eine RAM-Disk mit fixer Grösse erstellen.
Seit einiger Zeit ist in FreeBSD 7-CURRENT eine Portierung der NetBSD tmpfs Implementation vorhanden. Somit können Partitionen im Arbeitsspeicher erstellt werden, ohne dass eine feste Grösse vorgegeben werden muss und auch nur der auf der Partition verwendete Platz im Arbeitsspeicher verwendet wird.
Eine RAM-Disk kann wie folgt erstellt werden:
# mount -t tmpfs tmpfs <Mountpunkt>
Möchte man /tmp fest in den Arbeitspeicher auslagern, fügt man folgende Zeile in der /etc/fstab ein:
tmpfs /tmp tmpfs rw,mode=1777 0 0
Wird nun das System neu gestartet oder man mountet /tmp neu, ist /tmp als RAM-Disk vorhanden:
# mount
/dev/ad0s3a on / (ufs, local)
devfs on /dev (devfs, local)
tmpfs on /tmp (tmpfs, local)
/dev/ad0s3f on /usr (ufs, local, soft-updates)
/dev/ad0s3e on /var (ufs, local, soft-updates)
Mit Hilfe von shell-fm kann man das Programm von last.fm auch auf der Kommandozeile empfangen. shell-fm kann über die FreeBSD Ports installiert werden:
# cd /usr/ports/multimedia/shell-fm && make install clean
Nun kann bereits der gewünschte Sender von last.fm gestartet werden:
# shell-fm "lastfm://artist/Metallica/similarartists"
Danach wird man nach seinem last.fm Benutzernamen und Passwort gefragt. Der Benutzername, das Passwort und der Standardsender können auch in der Konfigurationsdatei ~/.shell-fm/shell-fm.rc gespeichert werden:
username = Benutzername
password = Passwort
default-radio = lastfm://artist/Ramones/similarartists
shell-fm kann durch verschiedene Tastaturbefehle gesteuert werden. Mit n wird zum nächsten Lied gewechselt, durch r kann ein neuer Sender gewählt werden und mit einem grossen Q verlässt man shell-fm.
Alle Tastenkürzel und mehr Informationen zu shell-fm findet man in der Manpage shell-fm(1).
Benutzt man die tcsh, so kann man mit der Variable autologout festlegen, nach wievielen Minuten eine Shell automatisch beendet wird, wenn man auf der Shell keine Eingabe tätigt. Gibt man folgende Zeile in der tcsh ein, so wird die Shell automatisch nach 60 Minuten Inaktivität beendet:
# set autologout = 60
Durch das Setzen eines zweiten Wertes kann die Anzahl Minuten angegeben werden, nach der eine Shell bei Inaktivität gesperrt werden soll. Folgendes Beispiel sperrt die Shell nach 30 Minuten und beendet die Shell nach 60 Minuten:
# set autologout = (60 30)
Um die Werte dauerhaft für einen Benutzer zu setzen, kann die Zeile in der ~/.cshrc eingefügt werden. Soll die Variable für alle tcsh Benutzer gesetzt werden, fügt man die Zeile in die /etc/csh.cshrc ein.
Arbeitet man auf der Konsole oder im Single User Mode und das Tastaturlayout stimmt nicht mit der vorhandenen Tastatur überein, so kann das Layout ganz einfach mit kbdcontrol angepasst werden. Voraussetzung im Single User Mode ist aber, dass /usr gemountet ist. Soll ein Tastaturlayout, zum Beispiel das schweizerdeutsche, geladen werden, verwendet man kdbcontrol mit der -l Option:
# kbdcontrol -l /usr/share/syscons/keymaps/swissgerman.iso.kbd
Wenn sich die Layoutdatei unter /usr/share/syscons/keymaps befindet, kann auf die vollständige Pfadangabe auch verzichtet werden:
# kbdcontrol -l swissgerman.iso
Um ein Layout automatisch zu laden, fügt man folgende Zeile in die /etc/rc.conf ein:
keymap="swissgerman.iso"
kbdcontrol befindet sich bereits im Basissystem vom FreeBSD. Mehr Informationen zu kbdcontrol findet man in der Manpage kbdcontrol(1).
[ FreeBSD ]
by Beat
@ 05.08.2007 10:08 UTC
Benutzer von portmaster sollten nach dem Aktualisieren des Portbaums unbedingt portmaster deinstallieren und neu installieren. Ältere Versionen von portmaster haben mit den Änderungen in ports/Mk/bsd.port.mk durch die gestern eingeführte neue DESTDIR Implementation Probleme:
# portmaster portmaster
"/usr/ports/Mk/bsd.port.mk", line 1092: Could not find /Mk/bsd.commands.mk
-p: not found
"/usr/ports/Mk/bsd.port.mk", line 1139: warning: " -p" returned non-zero status
-s: not found
"/usr/ports/Mk/bsd.port.mk", line 1147: warning: " -s" returned non-zero status
-r: not found
-e: not found
"/usr/ports/Mk/bsd.port.mk", line 1152: warning: " -r | -e 's/[-(].*//'" returned non-zero status
/^#define __FreeBSD_version/ {print $3}: not found
"/usr/ports/Mk/bsd.port.mk", line 1158: warning: " '/^#define __FreeBSD_version/ {print $3}' < /usr/include/sys/param.h" returned non-zero status
/var/db/ports//options: not found
"/usr/ports/Mk/bsd.port.mk", line 1217: warning: " "/var/db/ports//options"" returned non-zero status
make: fatal errors encountered -- cannot continue
"/usr/ports/Mk/bsd.port.mk", line 1092: Could not find /Mk/bsd.commands.mk
-p: not found
"/usr/ports/Mk/bsd.port.mk", line 1139: warning: " -p" returned non-zero status
-s: not found
"/usr/ports/Mk/bsd.port.mk", line 1147: warning: " -s" returned non-zero status
-r: not found
-e: not found
"/usr/ports/Mk/bsd.port.mk", line 1152: warning: " -r | -e 's/[-(].*//'" returned non-zero status
/^#define __FreeBSD_version/ {print $3}: not found
"/usr/ports/Mk/bsd.port.mk", line 1158: warning: " '/^#define __FreeBSD_version/ {print $3}' < /usr/include/sys/param.h" returned non-zero status
/var/db/ports//options: not found
"/usr/ports/Mk/bsd.port.mk", line 1217: warning: " "/var/db/ports//options"" returned non-zero status
-u: not found
"/usr/ports/Mk/bsd.port.mk", line 2245: warning: " -u" returned non-zero status
-e: not found
"/usr/ports/Mk/bsd.port.mk", line 2341: warning: "/usr/local/sbin/pkg_info -P 2>/dev/null | -e 's/.*: //'" returned non-zero status
make: fatal errors encountered -- cannot continue
usage: mkdir [-pv] [-m mode] directory_name ...
===>>> Update portmaster-1.18? [n] n
Aus diesem Grund sollte man zuerst portmaster wie folgt aktualisieren:
# pkg_delete portmaster\* && cd /usr/ports/ports-mgmt/portmaster && make install clean
Mehr Informationen findet man in der Mail von Doug Barton auf ports@.
Möchte man auf FreeBSD nach vorhandenen drahtlosen Netzwerken suchen, so muss zuerst die Netzwerkschnittstelle, falls noch nicht geschehen, hochgefahren werden:
# ifconfig <WLAN Karte> up
Danach kann nach drahtlosen Netzwerken gesucht werden. Dies kann einige Zeit dauern:
# ifconfig <WLAN Karte> scan
SSID BSSID CHAN RATE S:N INT CAPS
Netz1 00:13:49:11:22:33 1 54M 16:0 100 EPSB WPA
Netz2 00:09:5b:44:55:66 1 54M 5:0 100 EPS WPA
Netz3 00:13:49:77:88:99 6 54M 18:0 200 EPS
Netz4 00:14:c1:00:aa:bb 6 54M 15:0 100 EP
Netz5 00:00:c5:cc:dd:ee 7 11M 20:0 100 E
Netz6 00:ff:cc:ff:00:01 13 54M 70:0 100 EPSB WPA
Das E in der Spalte CAPS zeigt an, dass es sich um einen Access Point und nicht um ein Ad-Hoc Netzwerk handelt. Ein P symbolisiert ein verschlüsseltes Netzwerk. Diese Liste kann danach jederzeit bis zu einem neuen Scan wiedergegeben werden:
# ifconfig <WLAN Karte> list scan
Nun kann man sich zum Beispiel mit einem unverschlüsselten Netzwerk verbinden:
# ifconfig <WLAN Karte> inet <IP-Adresse> netmask <Netzmaske> ssid <SSID>
Mit einem WEP-verschlüsselten Netz kann man sich wie folgt verbinden:
# ifconfig <WLAN Karte> inet <IP-Adresse> netmask <Netzmaske> wepkey 1:<WEP-Schlüssel> wepmode on weptxkey 1 ssid <SSID>
Eine ausführliche Anleitung zu drahtlosen Netzwerken findet man im FreeBSD Handbuch: http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/network-wireless.html