BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

Arbeitsspeicher auf Fehler überprüfen

Möchte man seinen Arbeitsspeicher auf Fehler überprüfen, so kann man dies mit memtest(8) tun. memtest findet man in den FreeBSD-Ports unter /usr/ports/sysutils/memtest:

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

An memtest können zwei Argumente übergeben werden. Wieviel Arbeitsspeicher in MB alloziert und getestet werden soll und wieviele Testdurchgänge durchgeführt werden sollen:

# memtest <Zu prüfender Speicher in MB> <Anzahl Durchgänge>

Wird die Anzahl Durchgänge nicht angegeben, so wird der Test solange durchgeführt, bis der Benutzer diesen abbricht.

In folgendem Beispiel werden 100MB Arbeitsspeicher in einem Durchgang geprüft. Während dieses Durchgangs traten keine Fehler auf:

# memtest 100 1
memtester version 4.0.6 (32-bit)
Copyright (C) 2006 Charles Cazabon.
Licensed under the GNU General Public License version 2 (only).

pagesize is 4096
pagesizemask is 0xfffffffffffff000
want 100MB (104857600 bytes)
got 100MB (104857600 bytes), trying mlock ...locked.
Loop 1/1:
Stuck Address : ok
Random Value : ok
Compare XOR : ok
Compare SUB : ok
Compare MUL : ok
Compare DIV : ok
Compare OR : ok
Compare AND : ok
Sequential Increment: ok
Solid Bits : ok
Block Sequential : ok
Checkerboard : ok
Bit Spread : ok
Bit Flip : ok
Walking Ones : ok
Walking Zeroes : ok

Done.

Sollten während des Tests Fehler auftreten, so sollte man seine Hardware überprüfen, da auch überhitzte Prozessoren oder überlastete Netzteile Fehler verursachen können.

 Permalink

Zeilenlänge von Texten limitieren

fmt(1) formatiert Textdateien so, dass standardmässig eine Zeile aus 65, maximal jedoch aus 75 Zeichen besteht.

# more freebsd
FreeBSD® is an advanced operating system for x86 compatible (including Pentium® and Athlon), amd64 compatible (including Opteron, Athlon64, and EM64T), UltraSPARC®, IA-64, PC-98 and ARM architectur
es. It is derived from BSD, the version of UNIX® developed at the University of California, Berkeley. It is developed and maintained by a large team of individuals. Additional platforms are in vari
ous stages of development.
# fmt freebsd
FreeBSD® is an advanced operating system for x86 compatible (including
Pentium® and Athlon), amd64 compatible (including Opteron, Athlon64,
and EM64T), UltraSPARC®, IA-64, PC-98 and ARM architectures. It is
derived from BSD, the version of UNIX® developed at the University
of California, Berkeley. It is developed and maintained by a large
team of individuals. Additional platforms are in various stages of
development.

Die Anzahl Zeichen pro Zeile kann auch selber bestimmt werden:

# fmt <Optimale Anzahl Zeichen> <Maximale Anzahl Zeichen> <Textdatei>

Es kann auch nur eine maximale Anzahl Zeichen angegeben werden:

# fmt -w <Maximale Anzahl Zeichen> <Textdatei>

So kann man zum Beispiel eine pkg-descr auf 80 Zeichen pro Zeile beschränken:

# fmt -w 80 pkg-descr.raw > pkg-descr
 Permalink

Zufällige Nummern generieren

Möchte man zum Beispiel in einem Bourne-Shellskript eine zufällige Nummer generieren, so kann man jot(1) zur Hilfe nehmen.

# jot -r <Anzahl zu generierende Nummern> <Untere Grenze> <Obere Grenze>

Um eine Zahl zwischen 10000 und 99999 zu generieren, verwendet man jot wie folgt:

# jot -r 1 10000 99999

jot ist auf FreeBSD und OpenBSD bereits im Basissystem vorhanden. Was jot noch alles kann, findet man in der Manpage jot(1).

 Permalink

/tmp und /var in einer RAM-Disk erstellen

Möchte man /tmp in einer RAM-Disk erstellen, so muss folgender Eintrag in der /etc/rc.conf eingetragen werden:

tmpmfs="YES"

Nach dem nächsten Neustart wird standardmässig eine 20 MB grosse RAM-Disk erstellt und nach /tmp gemountet. Ein Eintrag in der /etc/fstab für /tmp wird nicht benötigt. Möchte man eine grössere RAM-Disk, zum Beispiel 128 MB, so kann dies mit folgendem zusätzlichen Eintrag gemacht werden:

tmpsize="128m"

Auch die /var Partition kann durch folgenden Eintrag in der /etc/rc.conf in eine RAM-Disk ausgelagert werden:

varmfs="YES"

Standardmässig wird die RAM-Disk für /var mit einer Grösse von 32 MB angelegt. Auch diese Grösse kann durch einen Eintrag in der /etc/rc.conf geändert werden:

varsize="<Grösse>"

Auch hier wird danach kein /etc/fstab Eintrag für /var benötigt.

Bei einem Neustart sind natürlich die Daten auf den Partitionen verloren, besitzt man allerdings eine CF-Karte als Disk, die nur eine begrenzte Anzahl Schreibvorgänge erlaubt, so können mit dieser Methode trotzdem Log- und temporäre Daten bis zum nächsten Neustart geschrieben werden.

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

Systemmeldungen anzeigen

Auf FreeBSD können die Kernelmeldungen, die während des Aufstartens und des Betriebs erzeugt werden, mit dmesg(8) angesehen werden:

# dmesg
Copyright (c) 1992-2006 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
FreeBSD 6.2-RC1 #0: Sun Nov 19 19:23:21 CET 2006
beat@daedalus.network.local:/usr/obj/usr/src/sys/BEASTIE
...

Sollen zusätzlich zu den Kernelmeldungen noch die Ausgaben von syslog und /dev/console angezeigt werden, so dass alle Systemmeldungen des Aufstartens sichtbar sind, so kann die -a Option von dmesg verwendet werden:

# dmesg -a

Soll die Ausgabe von /dev/console in eine Datei geschrieben werden, so kann die Raute vor folgenden Eintrag in der /etc/syslog.conf entfernt werden:

console.info                                    /var/log/console.log

Danach muss die Datei /var/log/console.log als root angelegt und die Rechte angepasst werden:

# touch /var/log/console.log && chmod 600 /var/log/console.log

Sollen alle syslog Meldungen in einer Datei gesammelt werden, so kann die Raute vor folgender Zeile in der /etc/syslog.conf entfernt werden:

*.*                                             /var/log/all.log

Danach muss die Datei /var/log/all.log erstellt, die Rechte angepasst und syslog neu gestartet werden:

#  touch /var/log/all.log && chmod 600 /var/log/all.log && /etc/rc.d/syslogd restart


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

Dateityp bestimmen

Hat man eine Datei von welcher man allerdings nicht weiss, von welchem Dateityp sie ist, so hilft einem file(1) weiter.

# file testbild 
testbild: PNG image data, 1398 x 1019, 8-bit/color RGB, non-interlaced

Es lässt sich auch der Typ von mehreren Dateien gleichzeitig bestimmen:

# file powerd.patch FreeSBIE.iso me.asc pf.pdf
powerd.patch: 'diff' output text
FreeSBIE.iso: ISO 9660 CD-ROM filesystem data 'FreeSBIE' (bootable)
plan9.iso.gz: gzip compressed data, was "plan9.iso", from Unix
me.asc: PGP armored data public key block
pf.pdf: PDF document, version 1.4

Mit file können auch Wildcards benutzt werden:

# file /home/beat*
/home/beat/FreeBSD.pdf: PDF document, version 1.4
/home/beat/FreeBSD.pps: Microsoft Office Document
/home/beat/MVI_2885.AVI: RIFF (little-endian) data, AVI, 640 x 480, 30.00 fps, video: Motion JPEG, audio: uncompressed PCM (mono, 11024 Hz)
/home/beat/tinderbox: ASCII text
/home/beat/shtest: Bourne shell script text executable
/home/beat/bsdtalk052.mp3: MP3 file with ID3 version 2.3.0 tag

Mehr Informationen zu file findet man in der Mapage file(1).

 Permalink

Kernelkonfiguration wiederherstellen

Damit die Kernelkonfiguration aus dem Kernel zu einem späteren Zeitpunkt wiederhergestellt werden kann, muss dieser schon mit folgender Option gebaut werden:

options         INCLUDE_CONFIG_FILE

Hat man die Kernelkonfiguration irgendwann einmal verloren, überschrieben oder zerstört, so lässt sich mit folgendem Befehl die ursprüngliche Konfiguration wiederherstellen:

# strings -n 3 /boot/kernel/kernel | sed -n 's/^___//p' > MYKERNEL

Update 05.01.2008:

Ab FreeBSD 7.0 muss zum Wiederherstellen der Kernelkonfiguration folgender Befehl verwendet werden:

# config -x /boot/kernel/kernel > MYKERNEL
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

BSD Statistiken

Auf der Webseite http://bsdstats.org findet man Statistiken darüber, welche BSDs in welcher Version eingesetzt werden, in welchen Ländern und welche Hardware verwendet wird. Möchte man seine eigenen Rechner zur Statistik hinzufügen, so kann man auf FreeBSD den sysutils/bsdstats Port installieren.

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

Während der Installation wird man gefragt, ob man das Skript automatisch in die /etc/periodic.conf eintragen möchte und ob die verwendete Hardware auch raportiert werden soll. Wird der Eintrag in die /etc/periodic.conf gemacht, so wird das Skript automatisch am ersten jedes Monats ausgeführt.

Auf OpenBSD lädt man das Skript von http://bsdstats.org/downloads/300.statistics herunter und trägt danach folgende Zeile in die /etc/monthly.local ein:

sh /usr/local/sbin/300.statistics

Danach müssen noch folgende Variablen in der /etc/rc.conf.local gesetzt werden:

monthly_statistics_enable="YES" 
monthly_statistics_report_devices="YES"

Nun werden die Daten jeweils anfangs des Monats übermittelt.

 Permalink

SSH nur mit Public Key Authentifizierung erlauben

Aus Sicherheitsgründen kann man das Einloggen per SSH nur noch mit Public-Key Authentifizierung erlauben. Dazu muss zuerst ein Schlüsselpaar erzeugt werden:

# ssh-keygen -t rsa

Es empfiehlt sich eine Passphrase für den Schlüssel zu setzen. Danach kann der Public-Key auf den Rechner geladen werden:

# cd ~/.ssh && cat id_rsa.pub | ssh <Benutzer>@<Rechner> "cat >> .ssh/authorized_keys"

Nun muss die sshd.conf angepasst werden. Diese befindet sich sowohl auf FreeBSD, als auch auf OpenBSD unter /etc/ssh/sshd_config.

# echo "PubkeyAuthentication yes" >> /etc/ssh/sshd_config
# echo "PasswordAuthentication no" >> /etc/ssh/sshd_config

Nun muss der SSH-Daemon neu gestartet werden. Auf FreeBSD wird dies wie folgt gemacht:

# /etc/rc.d/sshd restart

Auf OpenBSD kann dies so gemacht werden:

# kill -HUP `ps -ax | grep sbin/sshd | grep -v grep | awk '{print $1}'`

Nun kann man sich nur noch mit der Public-Key Authentifizierung anmelden. Sollte man allerdings seinen Private-Key verlieren, so hat man sich per SSH aus dem Rechner ausgesperrt. Es lohnt sich also eine Sicherheitskopie von seinem Private-Key (~/.ssh/id_rsa) an einem sicheren Ort aufzubewahren.

Comments (3)  Permalink

ISO-Image erstellen

Möchte man Daten auf eine CD brennen, so muss zuerst ein ISO-Image erstellt werden. Ein ISO-Image kann mit mkisofs(8) erstellt werden. mkisofs befindet sich im sysutils/cdrtools Port. Zuerst müssen alle Daten, die später im Image vorhanden sein sollen, in ein Verzeichnis kopiert werden. Danach kann aus diesem Verzeichnis ein Image erstellt werden:

# mkisofs -o <Name des Images> <Pfad zu Verzeichnis mit Daten>

Wird die CD später mit einem unixoiden Betriebssystem verwendet, so empfiehlt es sich noch die -r Option zu verwenden, damit die Rock Ridge Erweiterung aktiviert wird, und die Dateirechte und der Besitzer auf vernünftige Werte gesetzt werden.

Soll die CD mit Windows verwendet werden, so sollte die Joliet Erweiterung mit der -J Option aktiviert werden. Werden Dateinamen die länger als 64 Zeichern sind verwendet, so kann die -joliet-long Option zusätzlich verwendet werden.

Im folgenden Beispiel wird der Inhalt von /var/backups in ein Image namens backup.iso gepackt und die Rock Ridge Erweiterung wird aktiviert:

# mkisofs -r -o backup.iso /var/backups

Möchte man danach den Inhalt des Images nochmals ansehen, so kann das Image wie folgt gemountet werden:

# mdconfig -a -t vnode -f <Pfad zu Image> -u 0
# mount -t cd9660 /dev/md0 /mnt/

Nun ist der Inhalt unter /mnt sichtbar. Das Image kann nun wie folgt wieder geunmountet werden:

# umount /mnt/
# mdconfig -d -u 0

Jetzt kann das ISO-Image mit burncd(8) gebrannt werden.

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 Next261-270/325