BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

ZFS-Installation mit Hilfe von mfsBSD

Mit Hilfe von mfsBSD lässt sich einfach ein FreeBSD 8.0 installieren, welches nur ZFS als Dateisystem verwendet. Dazu findet man auf der mfsBSD-Webseite eine "8.0-RELEASE-amd64 special edition"-ISO-Datei. Startet man einen Rechner von dieser CD, so wird allen Netzwerkschnittstellen, falls ein DHCP-Server verfügbar ist, automatisch eine IP-Adresse zugewiesen. Nun kann man sich mit dem Rechner via SSH verbinden:

# ssh root@<rechner>
Password: mfsroot
Last login: Mon Nov 30 20:23:43 2009
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
        The Regents of the University of California.  All rights reserved.

FreeBSD 8.0-RELEASE (GENERIC) #1: Thu Nov 26 00:38:45 CET 2009

Welcome to mfsBSD SE, the memory based FreeBSD distribution.
This is a special version intended for full-ZFS install of FreeBSD

To make a full-ZFS FreeBSD install from this ISO:

1. Mount the CD device 
( e.g. mount_cd9660 /dev/acd0 /cdrom )
2. Run "zfsinstall" with path to to the distribution bzip file and your drive
( e.g. zfsinstall -d /dev/ad0 -t /cdrom/8.0-amd64.tbz )

Run zfsinstall without any option for the options list.
I recommend creating a GPT swap partition (e.g. -s 2G for a 2GB swap).

Feel free to email me with any bug requests or feature suggestions.
Martin Matuska <mm(AT)FreeBSD.org>
http://mfsbsd.vx.sk/

Zuerst muss nun das CD-ROM-Laufwerk gemountet werden:

mfsbsd# mount_cd9660 /dev/acd0 /cdrom
mfsbsd# mount
/dev/md0 on / (ufs, local)
devfs on /dev (devfs, local, multilabel)
/dev/md1 on /tmp (ufs, local, soft-updates)
/dev/md2.uzip on /usr (ufs, local, read-only)
/dev/md3 on /var (ufs, local)
/dev/md4 on /usr/local (ufs, local, soft-updates)
/dev/acd0 on /cdrom (cd9660, local, read-only)

Nun kann mit Hilfe von zfsinstall die Installation vorgenommen werden. Mit der -d Option wird die Festplatte festgelegt, auf welcher die Installation vorgenommen werden soll. Alle auf der Festplatte liegenden Dateien werden dabei gelöscht. Mit der -p Option kann falls gewünscht einen alternativen Pool-Namen gesetzt werden. Mit der -s Option kann die Grösse des Swap-Bereiches festgelegt werden:

mfsbsd# zfsinstall -d /dev/da0 -t /cdrom/8.0-amd64.tbz -p rpool -s 2G
Creating GUID partitions on /dev/da0 ... done
Configuring ZFS bootcode on /dev/da0 ... done
=>      34  16777149  da0  GPT  (8.0G)
        34       128    1  freebsd-boot  (64K)
       162   4194304    2  freebsd-swap  (2.0G)
   4194466  12582717    3  freebsd-zfs  (6.0G)

Creating ZFS pool rpool on /dev/da0p3 ... done
Creating rpool partitions: root usr var tmp ... done
Setting bootfs for rpool to rpool/root ... done
NAME         USED  AVAIL  REFER  MOUNTPOINT
rpool        218K  5.88G    18K  none
rpool/root    18K  5.88G    18K  legacy
rpool/tmp     18K  5.88G    18K  legacy
rpool/usr     18K  5.88G    18K  legacy
rpool/var     18K  5.88G    18K  legacy
Mounting rpool on /mnt ... done
Extracting FreeBSD distribution ... done
Writing /boot/loader.conf... done
Writing /etc/fstab... done
Copying /boot/zfs/zpool.cache ... done

Installation complete.
The system will boot from ZFS with clean install on next reboot

You may type "chroot /mnt" and make any adjustments you need.
For example, change the root password or edit/create /etc/rc.conf for
for system services. 

Die Partitionstabelle, der ZFS-Pool und die ZFS-Dateisysteme wurden dabei automatisch angelegt:

mfsbsd# gpart show
=>      34  16777149  da0  GPT  (8.0G)
        34       128    1  freebsd-boot  (64K)
       162   4194304    2  freebsd-swap  (2.0G)
   4194466  12582717    3  freebsd-zfs  (6.0G)
mfsbsd# zpool list
NAME    SIZE   USED  AVAIL    CAP  HEALTH  ALTROOT
rpool  5.97G   317M  5.66G     5%  ONLINE  -
mfsbsd# zfs list
NAME         USED  AVAIL  REFER  MOUNTPOINT
rpool        317M  5.57G    18K  none
rpool/root  66.4M  5.57G  66.4M  legacy
rpool/tmp     18K  5.57G    18K  legacy
rpool/usr    250M  5.57G   250M  legacy
rpool/var    121K  5.57G   121K  legacy

Nun kann mit Hilfe von chroot in das neu installierte System gewechselt werden. Dort kann das System konfiguriert, Benutzer angelegt, sowie das root-Passwort gesetzt werden:

mfsbsd# chroot /mnt

Startet man den Rechner, nachdem man die CD-ROM entfernt hat, neu wird das installierte System, welches nur ZFS als Dateisystem verwendet, gestartet.

Related Entries:
ZFS-Statistiken anzeigen
FreeBSD nur auf ZFS installieren
Alle Änderungen eines ZFS-Pools anzeigen
Automatisch ZFS Snapshots erstellen
ZFS Dateisystemoptionen verwenden
Comments (18)  Permalink

portmaster das Löschen von altem Quellcode untersagen

Aktualisiert man Ports mit Hilfe von portmaster, so wird nach jedem aktualisierten Port nach nicht mehr gebrauchtem Quellcode in /usr/ports/distfile gesucht:

# portmaster libtool
[...]
install-info --quiet /usr/local/info/libtool.info /usr/local/info/dir
===>   Registering installation for libtool-2.2.6b

===>  Cleaning for libtool-2.2.6b

===>>> Delete libtool-2.2.6a.tar.gz? [n] 
===>>> Upgrade of libtool-2.2.6a_1 to libtool-2.2.6b complete

Das kann, vor allem wenn man viele Ports aktualisiert, zu häufigen Verzögerungen führen. Mit der -D Option von portmaster kann dieser Schritt übersprungen werden:

# portmaster -D libtool
[...]
install-info --quiet /usr/local/info/libtool.info /usr/local/info/dir
===>   Registering installation for libtool-2.2.6b

===>  Cleaning for libtool-2.2.6b

===>>> Upgrade of libtool-2.2.6a_1 to libtool-2.2.6b complete

Nicht mehr gebrauchter Quellcode aller Ports kann danach nachträglich mit portmaster gelöscht werden. Mehr Informationen zu portmaster findet man in der Manpage portmaster(8).

 Permalink

Identische Dateien löschen

Mit Hilfe von samesame lassen sich Identische Dateien aufspüren und falls gewünscht löschen. Im FreeBSD-Portbaum findet man samesame unter sysutils/samesame:

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

Im folgenden Beispiel werden mit Hilfe von samefile identische Dateien gefunden und mit Hilfe von samerm jeweils alle bis auf eine der identischen Dateien gelöscht.

# ls -l
total 6
-rw-r--r--  1 test  wheel  8 28 Nov 13:59 a
-rw-r--r--  1 test  wheel  4 28 Nov 13:56 b
-rw-r--r--  1 test  wheel  4 28 Nov 13:58 c
# find . | samefile -i | samerm
# ls -l
total 4
-rw-r--r--  1 test  wheel  8 28 Nov 13:59 a
-rw-r--r--  1 test  wheel  4 28 Nov 13:56 b

Möchte man die Dateien nicht löschen, so kann mit sameln die Datei durch einen Hardlink ersetzt werden:

# ls -1i
16468 a
16469 b
16453 c
# find . | samefile -i | sameln
# ls -1i
16468 a
16469 b
16469 c

Mehr Informationen zu samesame findet man in den Manpages samesame(1), samefile(1) und sameln(1).

Comments (2)  Permalink

Programm mit which finden

Möchte man herausfinden ob sich ein Programm innerhalb eines Verzeichnisses befindet, welches in der PATH-Variable gesetzt ist, so kann dazu which verwendet werden:

# which portmaster
/usr/local/sbin/portmaster
# which bla
bla: Command not found.

Benutzer der csh verwenden dabei eine in der Shell eingebaute Version von which. Verwendet man eine Shell welche which nicht beinhaltet, so kann /usr/bin/which aus dem FreeBSD-Basissystem verwendet werden:

# which which
which: shell built-in command.
# /usr/bin/which which
/usr/bin/which

Zusätzlich zu which kann in der csh auch where verwendet werden, welches den Shell-eigenen und den im Dateisystem gefundenen Befehl anzeigt, sollten beide vorhanden sein:

# where which
which is a shell built-in
/usr/bin/which

Mehr Informationen zu which and where findet man in der Manpage tcsh(1) und which(1).

Related Entries:
Piepston der tcsh deaktivieren
Gespeicherte Optionen nach OptionsNG konvertieren
Ports-Subversion-Repository spiegeln
sysinstall-Ersatz für neuere FreeBSD-Versionen
Alte FreeBSD-Port Patchdateien aufsplitten
 Permalink

Dateien mit Hilfe eines Editors umbenennen

Mit Hilfe von vils lassen sich Dateien mit Hilfe des Standard-Editors umbenennen. Im FreeBSD-Portbaum findet man vils unter sysutils/vils:

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

Zuerst wechselt man in das Verzeichnis in dem die Dateien umbenannt werden sollen und ruft danach vils auf:

# ls -1
datei1
datei2
datei3
datei4
# vils

Im Standard-Editor wird danach eine Liste mit allen Dateien des Verzeichnis angezeigt:

0001 datei1
0002 datei2
0003 datei3
0004 datei4

Diese Liste kann nun angepasst werden:

0001 datei1neu
0002 datei2
0003 datei3test
0004 datei 

Speichert man das Ergebnis und verlässt den Editor werden die Dateien umbenannt:

# ls -1
datei
datei1neu
datei2
datei3test

Mehr Informationen zu vils findet man im Skript selber:

# more /usr/local/bin/vils
 Permalink

Webseiten auf Änderungen überprüfen

Mit Hilfe von netstiff lassen sich Webseiten auf Änderungen überprüfen. Im FreeBSD-Portbaum findet man netstiff unter www/netstiff:

# cd /usr/ports/www/netstiff && make install clean

Mit der -c Option kann nun das Konfigurationsmenu aufgerufen werden. Darin werden die URLs hinzugefügt, welche überwacht werden sollen:

# netstiff -c
netstiff 20080331      Copyright (C) 2004, 2007-2008  Stephan Beyer, GNU GPL

This is the netstiff 20080331 interactive configuration tool.
netstiff uses a simple human-readable configuration file
        /home/beat/.netstiff/config
but you can always use this tool by executing `/usr/local/bin/netstiff -c' 
on the command line.


  [0]   Global settings
  [1]   http://www.chruetertee.ch/test.html settings
  [2]   http://tinderbox.chruetertee.ch/tb/ settings
  [3]   http://zaphod.chruetertee.ch/tb/ settings
  [n]   Add new URI

  [f]   Finished (exit & save)
  [x]   Exit without saving

  Your choice [n/f/x/0/1/2/3]: 1

  [u]   URI: http://www.chruetertee.ch/test.html
  [m]   Test method: diff
  [x]   Menu title: [not set]

  [a]   User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.9.1.4) Gecko/20091028 Firefox/3.5.4 [global]
  [r]   Referer: [not set]
  [l]   Accept-Language: [not set]
  [b]   Range: [not set]
  [t]   Timeout: [not set]
  [p]   Proxy: [not set]
  [ ]   Command HTML dumper: [only available w/ html]
  [s]   Start regexp: /header/
  [e]   End regexp: [not set]

  [d]   Delete URI from list.
  [f]   I have finished.

  Your choice [u/m/x/a/r/l/b/t/p/s/e/d/f]:

Beim ersten Aufruf von netstiff werden die angegebenen URLs heruntergeladen. Beim nächsten Aufruf von netstiff wird die aktuelle Version der Webseite mit der gespeicherten Version verglichen. Werden Unterschiede festgestellt so werden diese angezeigt:

# netstiff 
diff --netstiff diff http://www.chruetertee.ch/test.html
--- http://www.chruetertee.ch/test.html
+++ http://www.chruetertee.ch/test.html
@@ -1,3 +1,8 @@
-<html><head><title>Object moved</title></head><body>
-<h2>Object moved to <a href="http://www.chruetertee.ch">here</a>.</h2>
-</body></html>
+<html>
+<head>
+<meta http-equiv="refresh" content="0; url=http://www.chruetertee.ch">
+</head>
+<body>
+
+</body>
+</html>

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

 Permalink

Reduzierte Ausgabe von make search im Portbaum

Mit Hilfe von make search kann im FreeBSD-Portbaum nach Ports gesucht werden:

# cd /usr/ports
# make search name=fluxbox
Port:   fluxbox-sid-pack-20031226_3
Path:   /usr/ports/x11-themes/fluxbox-sid-pack
Info:   Sid themes pack for fluxbox
Maint:  novel@FreeBSD.org
B-deps: 
R-deps: expat-2.0.1 fluxbox-1.1.1 fontconfig-2.6.0,1 freetype2-2.3.9_1 imlib2-1.4.1.000_2,2 jbigkit-1.6 jpeg-7 kbproto-1.0.3 libICE-1.0.4_1,1 libSM-1.1.0_1,1 libX11-1.2.1_1,1 libXau-1.0.4 libXaw-1.0.5_1,1 libXdmcp-1.0.2_1 libXext-1.0.5,1 libXft-2.1.13 libXmu-1.0.4,1 libXp-1.0.0,1 libXpm-3.5.7 libXrandr-1.3.0 libXrender-0.9.4_1 libXt-1.0.5_1 libiconv-1.13.1 libid3tag-0.15.1b libpthread-stubs-0.1 libungif-4.1.4_5 libxcb-1.4 pkg-config-0.23_1 png-1.2.40 printproto-1.0.4 python26-2.6.2_3 randrproto-1.3.0 renderproto-0.9.3 tiff-3.9.1_1 xcb-proto-1.5 xextproto-7.0.5 xmessage-1.0.2_1 xproto-7.0.15
WWW:    http://fluxbox.org/themes.php

Port:   fluxbox-tenr-styles-pack-20071215_1
Path:   /usr/ports/x11-themes/fluxbox-tenr-styles-pack
Info:   Tenner themes pack for fluxbox
Maint:  miwi@FreeBSD.org
B-deps: kbproto-1.0.3 libX11-1.2.1_1,1 libXau-1.0.4 libXdmcp-1.0.2_1 libpthread-stubs-0.1 libxcb-1.4 pkg-config-0.23_1 python26-2.6.2_3 xcb-proto-1.5 xproto-7.0.15
R-deps: expat-2.0.1 fluxbox-1.1.1 fontconfig-2.6.0,1 freetype2-2.3.9_1 imlib2-1.4.1.000_2,2 jbigkit-1.6 jpeg-7 kbproto-1.0.3 libICE-1.0.4_1,1 libSM-1.1.0_1,1 libX11-1.2.1_1,1 libXau-1.0.4 libXaw-1.0.5_1,1 libXdmcp-1.0.2_1 libXext-1.0.5,1 libXft-2.1.13 libXmu-1.0.4,1 libXp-1.0.0,1 libXpm-3.5.7 libXrandr-1.3.0 libXrender-0.9.4_1 libXt-1.0.5_1 libiconv-1.13.1 libid3tag-0.15.1b libpthread-stubs-0.1 libungif-4.1.4_5 libxcb-1.4 pkg-config-0.23_1 png-1.2.40 printproto-1.0.4 python26-2.6.2_3 randrproto-1.3.0 renderproto-0.9.3 tiff-3.9.1_1 xcb-proto-1.5 xextproto-7.0.5 xmessage-1.0.2_1 xproto-7.0.15
WWW:    http://tenr.de/styles/styles013.php?a=styles

Port:   fluxbox-1.1.1
Path:   /usr/ports/x11-wm/fluxbox
Info:   A small and fast window manager based on BlackBox
Maint:  beat@FreeBSD.org
B-deps: expat-2.0.1 fontconfig-2.6.0,1 freetype2-2.3.9_1 gettext-0.17_1 gmake-3.81_3 imlib2-1.4.1.000_2,2 jbigkit-1.6 jpeg-7 kbproto-1.0.3 libICE-1.0.4_1,1 libSM-1.1.0_1,1 libX11-1.2.1_1,1 libXau-1.0.4 libXdmcp-1.0.2_1 libXext-1.0.5,1 libXft-2.1.13 libXpm-3.5.7 libXrandr-1.3.0 libXrender-0.9.4_1 libXt-1.0.5_1 libiconv-1.13.1 libid3tag-0.15.1b libpthread-stubs-0.1 libungif-4.1.4_5 libxcb-1.4 pkg-config-0.23_1 png-1.2.40 python26-2.6.2_3 randrproto-1.3.0 renderproto-0.9.3 tiff-3.9.1_1 xcb-proto-1.5 xextproto-7.0.5 xproto-7.0.15
R-deps: expat-2.0.1 fontconfig-2.6.0,1 freetype2-2.3.9_1 imlib2-1.4.1.000_2,2 jbigkit-1.6 jpeg-7 kbproto-1.0.3 libICE-1.0.4_1,1 libSM-1.1.0_1,1 libX11-1.2.1_1,1 libXau-1.0.4 libXaw-1.0.5_1,1 libXdmcp-1.0.2_1 libXext-1.0.5,1 libXft-2.1.13 libXmu-1.0.4,1 libXp-1.0.0,1 libXpm-3.5.7 libXrandr-1.3.0 libXrender-0.9.4_1 libXt-1.0.5_1 libiconv-1.13.1 libid3tag-0.15.1b libpthread-stubs-0.1 libungif-4.1.4_5 libxcb-1.4 pkg-config-0.23_1 png-1.2.40 printproto-1.0.4 python26-2.6.2_3 randrproto-1.3.0 renderproto-0.9.3 tiff-3.9.1_1 xcb-proto-1.5 xextproto-7.0.5 xmessage-1.0.2_1 xproto-7.0.15
WWW:    http://fluxbox.org/

Port:   x11-themes/fluxbox-fluxmod
Moved:  
Date:   2005-10-07
Reason: Project has gone

Port:   x11-wm/fluxbox-devel
Moved:  x11-wm/fluxbox
Date:   2007-03-19
Reason: Merged into x11-wm/fluxbox

Möchte man nun nicht alle Informationen, wie zum Beispiel alle Abhängigkeiten, anzeigen lassen, so kann dazu make quicksearch verwendet werden:

# cd /usr/ports
# make quicksearch name=fluxbox
Port:   fluxbox-sid-pack-20031226_3
Path:   /usr/ports/x11-themes/fluxbox-sid-pack
Info:   Sid themes pack for fluxbox

Port:   fluxbox-tenr-styles-pack-20071215_1
Path:   /usr/ports/x11-themes/fluxbox-tenr-styles-pack
Info:   Tenner themes pack for fluxbox

Port:   fluxbox-1.1.1
Path:   /usr/ports/x11-wm/fluxbox
Info:   A small and fast window manager based on BlackBox

Port:   x11-themes/fluxbox-fluxmod
Moved:  
Date:   2005-10-07
Reason: Project has gone

Port:   x11-wm/fluxbox-devel
Moved:  x11-wm/fluxbox
Date:   2007-03-19
Reason: Merged into x11-wm/fluxbox

Mehr Informationen findet man in der Manpage ports(7). Vielen Dank an Lars für den Tipp und das Erstellen von make quicksearch.

 Permalink

RCS Schlüsselwörter einer Datei anzeigen

Verwaltet man Dateien zum Beispiel mit CVS so können verschiedene RCS-Schlüsselwörter in der Datei gespeichert werden. Damit kann zum Beispiel angezeigt werden, welche Version der Datei verwendet wird. Möchte man diese Informationen auslesen, so kann dazu ident verwendet werden:

# cd /usr/ports/www/firefox35
# ident Makefile
Makefile:
     $FreeBSD: ports/www/firefox35/Makefile,v 1.182 2009/10/28 15:40:12 beat Exp $

Auf FreeBSD ist ident standardmässig im Basissystem vorhanden. Mehr Informationen zu ident findet man in der Manpage ident(1).

 Permalink

mySQL-Aktivität beobachten

Mit Hilfe vom mtop können die zurzeit ausgeführten SQL-Kommandos einer mySQL-Datenbank ähnlich wie Prozesse in top(1) angezeigt werden. Im FreeBSD -Portbaum findet man mytop unter databases/mtop:

# cd /usr/ports/databases/mtop && make install clean

Startet man mtop, so wird man zuerst nach dem Benutzernamen und dem Passwort gefragt mit dem man sich an der Datenbank anmelden möchte. Danach werden die ausgeführten SQL-Kommandos angezeigt. Mit Hilfe der Leertaste kann die Ansicht manuell neu geladen werden:

# mtop
Unable to connect to  as mysqltop, enter another user user: root
Password: ****************
load averages: 0.05, 0.08, 0.06 mysqld 5.0.75-log up 16 day(s),  5:52 hrs
12 threads: 2 running, 1 cached. Queries/slow: 911/0 Cache Hit: 99.53%
Opened tables: 0  RRN: 100.4K  TLW: 0  SFJ: 0  SMP: 0  QPS: 0

ID       USER     HOST             DB           TIME   COMMAND STATE        INFO
47663    root     localhost        mail_queue   2      Query   Writing to n SELECT ... FROM `mail_queue`
47665    root     localhost        tinderbox    1      Query                CHECK TABLE `port_fail_reasons` EXTENDED
47666    root     localhost        tinderbox2   23     Query   copy to tmp  OPTIMIZE TABLE `port_dependencies`
47658    root     localhost                            Query                show full processlist

Mit Hilfe der q-Taste kann mtop wieder verlassen werden. Mehr Informationen zu mtop findet man in der Manpage mtop(1).

 Permalink

Relevante Dateien einer Kernel-Panic sichern

Mit Hilfe von bsdcrashtar können alle relevanten Dateien einer Kernelpanic gesichert werden. Diese können dann zum Beispiel auf einem anderen Rechner analysiert, einem Entwickler zur Verfügung gestellt oder archiviert werden. Im FreeBSD Portbaum findet man bsdcrashtar unter sysutils/bsdcrashtar:

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

Führt man bsdcrashtar aus, werden alle relevanten Dateien (die core-Datei, der Kernel, alle geladenen Kernelmodule und alle im Backtrace erwähnten Quellcode-Dateien) der neusten Kernelpanic gesichert:

# bsdcrashtar
Archiving the crash to /var/crash/crash.15.tar.gz.

Mehr Informationen zu bsdcrashtar findet man in der Manpage bsdcrashtar(8).

 Permalink
Prev Next151-160/521