Schlagwort ‘Anleitung‘

FreeBSD: Optimierung

Nicht Rennstreifen sind das Ziel oder Aussagen a la «30% schneller», sondern schlicht Verbesserungen des Gesamtverhaltens. Natürlich ist ein derartiges Optimieren der Konfiguration vom jeweiligen Kontext abhängig, was den einen Nutzen bringt, verpufft u.U. bei anderen oder wirkt sich gar kontraproduktiv aus.

FreeBSD bietet grundsätzlich keine Optimierung, wie sie bei vielen Linux-Distributionen usus ist. Das Betriebssystem bildet die Basis und liefert vielerlei Werkzeuge, es geht dem Anwender aber in der Regel aus dem Weg, hält ihn nicht an der Hand. Der eine mag dies als Nachteil sehen, der andere als Vorteil. Your mileage may vary.

Beginnen wir mit dem Datenträger. Es existieren eine Menge Möglichkeiten diesem auf die Sprünge zu helfen. Die simpelste Variante wäre der Kauf einer SSD, die zweite Möglichkeit wäre der Einsatz eines anderen Filesystems wie ZFS. Bringt viele Vorteile mit sich, aber auch einen Sack voller Nachteile, insbesondere in puncto Ressourcenverbrauch. Dabei geht es aber auch mit UFS und ohne den Kauf neuer Hardware.

echo 'ahci_load="YES"' >> /boot/loader.conf
echo 'geom_sched_load="YES"' >> /boot/loader.conf
echo 'gsched_rr_load="YES"' >> /boot/loader.conf 

echo 'kern.maxfiles=16384' >> /boot/loader.conf
echo 'kern.maxfilesperproc=8192' >> /boot/loader.conf

echo 'vfs.ufs.dirhash_maxmem=67108864' >> /etc/sysctl.conf
echo 'vfs.read_max=32' >> /etc/sysctl.conf

 

Ahci lädt den neuen Treiber für SATA-Geräte, man gewinnt etwas an Geschwindigkeit, eine bessere Unterstützung diverser Fähigkeiten der einzelnen Geräte und die Gerätenamen ändern sich. Bei mir änderte sich beispielsweise die Bezeichnung der Festplatte von ad4 zu ada0, also Obacht! Ansonsten wird ein Disk-IO-Scheduler geladen, sowie ein paar allzu konservativ gehaltene System-Variablen angepaßt. Bei letzteren tritt natürlich einzig ein Effekt ein, wenn man überhaupt kritische Grenzen auf dem eigenen System erreicht. Ist dies nicht der Fall, tritt auch keine wundersame Beschleunigung in Erscheinung. Kurzum, wer ein wenig Mail, WWW & Co macht, der wird mit diesen Einstellungen nichts gewinnen. Nutzer von KDE, Zeitgenossen die viel mit Dateien arbeiten oder diese auch oft parallel schreiben, werden hingegen teils einen spürbaren Unterschied registrieren.

echo 'geom sched insert -a rr ada0' >> /etc/rc.local

 

Der zuvor geladene Disk-IO-Scheduler muß noch installiert werden für den jeweiligen Datenträger, mehr Konfiguration ist nicht notwendig.

echo 'tmpfs_load="YES"' >> /boot/loader.conf
echo 'tmpfs /tmp tmpfs rw,mode=1777 2 0' >> /etc/fstab
echo 'tmpfs /var/tmp tmpfs rw 2 0' >> /etc/fstab

 

Die Wirksamkeit von Tmpfs entfaltet sich ebenso nur auf Systemen, die auch ausgiebig Gebrauch von temporären Dateien machen, z.B. wenn ports kompiliert werden. Nicht vergessen sollte man, den alten Eintrag für tmp in /etc/fstab auszukommentieren. Tmpfs gilt noch als experimentell, tritt eine Panic auf, so ist diese jedoch in der Regel zu geringem Hauptspeicher geschuldet. Ich setzte tmpfs seit mehr als einem Jahr regelmäßig ohne Probleme ein.

Mehr Informationen erhält man in tuning, sollte sich aber darüber im klaren sein, was man da en Detail tut. Viele Systemparameter  sollten nur in grenzwertigen Situationen z.B. auf einem stark frequentierten Server anpaßt werden. Obige Optimierungen können helfen, schaden aber auch nichts, außer, daß beispielsweise ein wenig mehr Speicher abgezweigt wird in MB-Dimensionen.

 

Bild: der Bulo

, , , , , , , , , , , ,

Debian: Installation und Verschlüsselung

Ich erwähnte schon einmal, daß es zunehmend schwieriger wird ein reguläres Debian zur Installation zu nutzen. Grml to the rescue heißt es da lapidar, nicht umsonst die Admin-Distro der Wahl. Debian selbst ist nett, aber bei der Installation werden einem zunehmend Steine in den Weg gelegt. Grml hingegen liefert alles mit, was man im Admin-Alltag benötigt, dazu gehört auch ein relativ aktueller Kernel plus die entsprechende Firmware.

Neben Grml benötigt man nur einen Internet-Anschluß, ein wenig Zeit und selbstredend grundlegende Kenntnisse in der Konsole. Die Partitionen werden klassisch aufgeteilt: root, swap, home. Swap und home werden verschlüsselt, auf LVM gehe ich nicht ein. Ziel ist es relativ schmerzfrei ein Debian Testing zu installieren. Letzteres ist durchaus stabil zu nennen, dennoch können gelegentlich bei einem Update die einen oder anderen Bauchschmerzen auftreten. Grundlegende Kenntnisse sind also ein Muß, daß man die Mailinglisten frequentiert ebenso.

Weiterlesen: »Debian: Installation und Verschlüsselung«

, , , , , , ,

Debian: Kernel bauen

Debian gehört nicht unbedingt zu meinem bevorzugten täglich Brot, aber dennoch habe ich seit Potato mit dieser GNU/Linux-Distro desöfteren zu tun. Ich war immer mehr der Slacker seit den frühen 90ern, bin also die dortigen Wege gewohnt. Nun hier will ich kurz zeigen, wie man einen Kernel backt und zwar nach Debian-Art.

Dazu benötigt man diverse Zutaten, u.a. den Kernel-Quellcode, ein paar Debian-Werkzeuge und natürlich ein wenig Zeit. Auf heutigen Systemen geht die Zeit eher bei der erstmaligen Konfiguration des Kernels verloren, denn der Kompilation selbst. Aber wie auch sonst gilt, your mileage may vary.

Eine Anleitung für die Konfiguration des Kernels selbst werde ich hier nicht geben, da sollte jeder schon wissen was er tut.

cd /usr/src
apt-get install build-essential
apt-get install kernel-package
apt-get install libncurses5-dev
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.38.tar.bz2

 

Obige Anweisungen dienen einzig der Vorbereitung. Man navigiert zu /usr/src, installiert die für den Kernelbau notwendigen Pakete und lädt den Kernel-Quellcode per se herunter. Libncurses5-dev wird nur benötigt, wenn man den Kernel mittels make nconfig konfigurieren möchte — aber dies muß man ganz dem eigenen Gusto entscheiden.

Der eigene Bau gestaltet sich recht simpel. Da ein älterer Kernel installiert ist, nimmt man die Konfigurationsdatei von diesem und besitzt damit schon einmal eine Basis für die weitere Konfiguration.

tar xjvf linux-2.6.38.tar.bz2
ln -s linux-2.6.38 linux
cp /boot/config-2.6.32-5-amd64 /usr/src/linux/.config
cd linux
make oldconfig
make nconfig
make-kpkg -j3 --initrd --revision olhe201103 kernel_image kernel_headers

 

Als erstes wird der Kernel-Quellcode entpackt, dann erstellt man einen soft link, im Verzeichnis des Kernel-Quellcodes paßt man mit make oldconfig die alte Konfigurationsdatei an die neuen Optionen an und letztendlich muß man mit make nconfig oder auch make menuconfig die Konfiguration des Kernels gemäß dem eigenen Geschmack anpassen. Danach baue ich die Debian-Pakete mittels make-kpkg. Die Anzahl der Jobs bei j3 entsprechen dem eigenen System, hier ein Dualcore. Revision kann ebenso nach Lust und Laune angepaßt werden, siehe die manpage, sollte aber dennoch einem Muster folgen, falls man desöfteren Kernel installiert.

cd ..
dpkg -i *.deb

 

Der letzte Schritt ist die Installation der erzeugten Pakete, zum einen linux-image und zum anderen linux-headers. Falls noch andere Pakete unter /usr/src liegen, sollte man den Platzhalter entsprechend sinnvoll ergänzen. Nun kann man den Rechner neustarten, bei Problemen wählt man im Grub-Menu einfach den alten Kernel aus und begibt sich auf Fehlersuche. Viel Spaß :-)

, , , , , , , ,

FreeBSD: Installation

Üblicherweise wird FreeBSD mittels sysinstall installiert, in der Praxis jedoch liegen mit dieser Installation einige Features brach, die dieses freie UNIX-Derivat in petto hat, wie z.B. ZFS, gjournal, usw. Um diesen Malus zu kompensieren bedarf es einiger manueller Schritte, welche sich jedoch in der Praxis weniger wild gestalten.

Beispielhaft stelle ich hier ein etwas klassisches Installationsschema dar, sprich getrennte root– und home-Partition, sowie Bereiche für usr, tmp und var. Als Partitionstabelle wird nicht MBR genutzt, sondern GPT, kurz für GUID Partition Table. Zum Einsatz kommt das seit Jahrzehnten bewährte Filesystem UFS plus Softupdates.

Voraussetzungen: keine Berührungsängste mit der Konsole, grundlegende Kenntnisse, Bedienung der Fixit-Konsole des Boot-Mediums. Gestartet wird also wie gewohnt von einem Boot-Image, z.B. mit der Fixit-Konsole oder mittels mfsbsd.

gpart create -s GPT ad4
gpart add -t freebsd-boot -s 128 ad4
gpart bootcode -b /dist/boot/pmbr -p /dist/boot/gptboot -i 1 ad4 

gpart add -t freebsd-swap -s 2G ad4

gpart add -t freebsd-ufs -s 2G ad4
gpart add -t freebsd-ufs -s 2G ad4
gpart add -t freebsd-ufs -s 3G ad4
gpart add -t freebsd-ufs -s 25G ad4
gpart add -t freebsd-ufs  ad4

 

Im Beispiel wird zuerst ein GPT-Schema erstellt, dann wird Platz geschaffen für den Bootcode, welcher letztendlich vom Installationsmedium herüber kopiert wird. Als nächstes wird die swap-Partition erstellt, 2GB ist meinem System angepaßt. Danach folgen die Partitionen analog dem oben erwähnten Schema: root, var, tmp, usr und der Rest für home. Ich habe hier recht großzügige Werte gewählt, für root genügt auch 1GB, für var und tmp ebenso entsprechend weniger, usr muß abgeschätzt werden, da dort die Programme, sowie deren Daten installiert werden, darüber hinaus der Quellcode für Kernel, Welt und nicht zu vergessen die Ports.

Weiterlesen: »FreeBSD: Installation«

, , , , , ,

FreeBSD: die Ports

Die FreeBSD Ports sind ein wundervolles Werkzeug im Umgang mit tausenden von Anwendungspaketen und deren Abhängigkeiten. Im Gegensatz zu anderen Systemen, die bei ihrer Fülle an Paketen gerne auch diverse Architekturen bzw. das Userland mitzählen, um eine größere Anzahl Software zu suggerieren, gibt es es bei den FreeBSD Ports nur optionale Software bzw. die Architektur entscheidet sich bei der Übersetzung des Quellcodes.

22772 Ports sind es bis dato, Tendenz steigend. Knapp 834 stehen im Moment auf ignore, d.h. sie werden nicht installiert, 238 von diesen sind tatsächlich kaputt, andere sind nicht wirklich frei ob restriktiver Lizenzen, wiederum andere besitzen bekannte Sicherheitslücken.

Die Vorgehensweise zur Installation von Ports ist recht simpel, man aktualisiert mittels csup oder portsnap den Portstree, navigiert in diesem zur gewünschten Applikation und baut diese mittels make install clean. Etwaige auftretende Dialoge kann man schlicht mit Okay beantworten, außer man weiß was man tut.

portsnap fetch extract

portsnap fetch update

cd /usr/ports/multimedia/mplayer

make install clean

 

In obigem Beispiel wird portsnap als root genutzt, portsnap fetch extract lädt initial einen Schnappschuß des Portstree herunter und entpackt diesen. Ist dies einmal getan, genügt zukünftig ein portsnap fetch update um den Portstree zu aktualisieren. Bei diesem Beispiel wird mplayer installiert, indem man zu dem entsprechenden Verzeichnis navigiert und mittels make install clean den Bau, sowie die Installation initiiert.

Wichtig vor jeder Installation, insbesondere bei einem Update von Software ist ein Blick in /usr/ports/UPDATING, dort finden sich regelmäßig wichtige Hinweise bezüglich etwaiger Fallstricke und wie man diese umgehen kann.

Ein Update per se, ist wie bei obiger Vorgehensweise recht simpel, wiederum navigiert man in das entsprechende Verzeichnis, deinstalliert die Software und installiert diese neu, nachdem der Portstree aktualisiert wurde.

 

portsnap fetch update
cd /usr/ports/multimedia/mplayer
make deinstall clean && make install clean

 

Natürlich ist dies bei entsprechend viel Software und diversen Abhängigkeiten recht aufwendig, insofern greift man gerne zu Hilfsmitteln — ich nutze für diesen Zweck portmaster. Portmaster ist ein Script, welches all die wiederkehrenden Aufgaben übernimmt und den Alltag erheblich erleichtert.

 

portsnap fetch update
cd /usr/ports/ports-mgmt/portmaster && make install clean
portmaster mplayer

 

Diese Vorgehensweise würde den Portstree aktualisieren, portmaster installieren und mit diesem den bereits installierten Port mplayer aktualisieren. Möchte man mplayer initial installieren, so muß man nur ein Teil der Verzeichnisstruktur mit angeben, portmaster multimedia/mplayer. Auch die rekursive Abarbeitung von Updates ist möglich, so daß ebenso alle von diesem Port abhängigen Ports aktualisiert werden.

 

portmaster multimedia/mplayer
portmaster mplayer
portmaster -e mplayer
portmaster -R mplayer
portmaster -L
portmaster -a
portmaster -g

 

portmaster multimedia/mplayer installiert wie bereits erwähnt initial einen Port, portmaster –e mplayer deinstalliert einen Port, portmaster mplayer ohne Angabe eines Unterverzeichnisses aktualisiert einen bereits installierten Port, portmaster –R mplayer aktualisiert ebenso alle von mplayer abhängigen Ports, portmaster –L listet alle installierten Ports sowie etwaige Updates, portmaster –a installiert alle anstehenden Updates, portmaster –g erzeugt ein Paket, welches mittels pkg_add einfach auf anderen Rechnern installiert werden kann. Darüber hinaus findet man in der Manpage zu Portmaster noch allerlei nützliche Funktionalitäten, welche u.a. auch den Umgang mit Paketen erleichtern.

Die Abarbeitung von Ports mittels Tools wie portupgrade bleibt hier unerwähnt, da ich derlei auf Datenbanken basierende Werkzeuge in heutiger Zeit eher als unnötigen Ballast erachte, denn Hilfe. Wer dennoch portupgrade nutzen möchte, der sollte sich für eines von beiden entscheiden. Eine alternierende Anwendung beider Werkzeuge zieht schwerwiegende Probleme nach sich, man sollte dies also tunlichst vermeiden.

Wer darüber hinaus die Lust verspürt eigene Ports zu erstellen bzw. diese zu aktualisieren, der kann sich das FreeBSD Porter-Handbuch zu Gemüte führen.

Viel Spaß :-)

 

 

Bild: Der Bulo

, , , , , , , ,

FreeBSD Kernel und Welt

FreeBSD Release ist eine feine Sache, insbesondere für Server, aber auf dem Desktop ist es oftmals von Vorteil Stable zu fahren. Stable ist neben Current einer der Entwicklungszweige von FreeBSD. In Current erfolgt die hauptsächliche Entwicklung, nach einiger Verweildauer dort wird der jeweilige Code «mfced», d.h. «merged from current» und schlägt in Stable auf. Aus Stable werden dann wiederum nach einiger Zeit minor oder major-Releases erstellt, wie zuletzt FreeBSD 8.2 bzw. das kommende FreeBSD 9.0.

Stable ist grob vergleichbar mit Debian Testing, man verfolgt ein ähnliches Prinzip bei der Entwicklung. En detail jedoch scheiden sich die Geister, während Debian durchaus mal desöfteren auch in Testing hinüber ist bzw. diverse Software schlichtweg fehlt ob Fehler, etc. pp., ist FreeBSD Stable weitaus reifer. Die FreeBSD-Entwickler sind deutlich konservativer und nehmen es sehr genau mit der Unterscheidung der einzelnen Zweige. Dennoch sollte man, wie auch bei Debian, die entsprechende Mailingliste abonnieren.

Um nun den Betrieb von Stable aufzunehmen, kann man schlicht ein bisheriges Release aktualisieren oder man fährt mit monatlich erscheinenden Snapshots. Entscheidet man sich für letzteres muß man häufiger neu installieren, bequemer hingegen ist meiner Meinung nach Kernel und Welt neuzubauen. Dazu lädt man den entsprechenden Quellecode herunter, baut die Welt, dann den Kernel und installiert diesen, bootet in den Single User Mode, installiert dort die Welt und bringt mittels mergemaster diverse Konfigurationsdateien auf den neuesten Stand. Letzteres ist für viele wohl die größte Hürde, aber zumindest nur dort, wo selbst Hand angelegt wurde.

Zuvor jedoch muß man noch csup sagen, von welchem Server es den entsprechenden Quellecode herunterladen soll: cp /usr/share/examples/cvsup/standard-supfile /etc danach ändert man folgende Zeile und fügt den Server ein: *default host=CHANGE_THIS.FreeBSD.org — z.B.: *default host=cvsup2.de.FreeBSD.org. Selbstredend muß auch der Release-Tag angepaßt werden. Wir wollen Stable, also muß die entsprechende Zeile wie folgt lauten: *default release=cvs tag=RELENG_8

Nun beginnt der eigentliche Bau von Kernel und Welt (als Root ausgeführt):

csup -L 2 /etc/standard-supfile
cd /usr/src/ && make -j3 buildworld
make -j3 buildkernel installkernel
reboot

 

Die Jobs sollten der eigenen Hardware entsprechend angepaßt werden, wer kein Dualcore etc. besitzt nutzt ein schlichtes make buildkernel installkernel. Beschleunigen kann man das Prozedere indem man tmpfs einsetzt bzw. zukünfigte Bauten von Kernel und Welt seitens ccache beschleunigt.

Nach dem Neustart wählt man den Single User Mode aus und installiert die Welt, sowie die aktualisierten Konfigurationsdateien.

fsck -p
mount -u /
mount -a -t ufs
mergemaster -p
cd /usr/src && make installworld && mergemaster -Ui
reboot

 

Mit fsck –p erfolgt eine kurze Prüfung des Filesystems, dann werden die nötigen Partionen eingehangen. mergemaster –p verarbeitet nur die Konfigurationsdateien, die für die Installation der Welt wichtig sind, make installworld installiert diese und mergemaster –Ui verarbeitet die restlichen Konfigurationsdateien.

Nach einem erneuten Neustart wird wieder in den Single User Mode gestartet und aufgeräumt.

fsck -y
mount -u /
mount -a -t ufs
cd /usr/src && make clean && reboot

 

Danach steht das aktualisierte System. Die Vorgehensweise mag ein wenig übervorsichtig wirken, andere vollziehen die Installation der Welt ohne den Single User Mode, aber mir ist es derart lieber. Schließlich baue ich Kernel und Welt nicht täglich neu, je nach Zeit bei interessanten Updates, mindestens jedoch monatlich.

Wer sich hingegen nicht mit Mergemaster in der Konsole zu helfen weiß, der sollte entweder den Weg über Snapshots gehen oder weiterhin das aktuelle Release nutzen. Zu schnell kann das System bei unachtsamer Bedienung «unbenutzbar» werden. Ansonsten, viel Spaß :-)

 

Bild: Der Bulo

, , , , , , , , , , ,

Firefox 4 und FreeBSD

Firefox 4 ist in aller Munde und für Windows bzw. Linux findet man auch entsprechende Pakete online. Anders schaut es hierbei bei FreeBSD aus, wer da die Vorzüge der vierten Version genießen möchte, der muß selbst Hand anlegen. Zumindest wenn man ein 64Bit System sein eigen nennt, kann man auf ein vorkompiliertes Paket zurückgreifen, dieses findet man auf bsdforen.de. Ein pkg_add name_des_pakets.tbz installiert dieses dann bzw. verweist auf fehlende Abhängigkeiten, die dann noch zuvor installiert werden müssen.

An alle anderen richtet sich diese Anleitung, wobei die Erstellung keine Hexerei ist, man muß nur den Port herunterladen, ein make install initiieren und ein wenig warten. Voraussetzung ist ein installiertes FreeBSD Betriebssystem mit X und devel/subversion.

Als erstes installiert man subversion, entweder indem man in das entsprechende Verzeichnis navigiert und mittels make install den Bau startet oder seitens portmaster devel/subversion. Nach der Installation von subversion lädt man den Port herunter  svn co https://trillian.chruetertee.ch/svn/freebsd-gecko/branches/experimental/www/firefox/ wechselt in das Verzeichnis von firefox, startet mittels make install den Bau des Ports und kann im Prinzip beim darauffolgenden Dialog alles auf default belassen. In der Zwischenzeit dürfte ein Tee, sowie eine Zeitung sicherlich die dahinschwindende Zeit gepflegt überbrücken.

 

Zusammenfassung (Befehle als root ausgeführt):

cd /usr/ports/devel/subversion && make install clean

cd /usr/ports/www

svn co https://trillian.chruetertee.ch/svn/freebsd-gecko/branches/experimental/www/firefox/

cd firefox-devel && make install clean

 

 

 

 

Bild: F!XMBR, Quellen: Foxkeh und FreeBSD

, , , , , , , , , , ,

WordPress: Teaser oberhalb des Artikels per “Custom Field”

Wordpress
Foto: Eric M Martin | CC-Lizenz

WordPress entwickelt sich immer mehr zu einer großen CMS-Lösung. Das wurde schon oft kritisiert, weil man an manchen Stellen durchaus den Eindruck gewinnen wollte, als wolle man im Hause WordPress immer höher und immer weiter springen, ohne auf das Kernprodukt und die Sicherheit zu achten. Selbstverständlich bringt WordPress so auch Features mit, mit denen man spielen kann. Der eine oder andere Besucher hat es schon gesehen, wir haben nun die Möglichkeit, einen Teaser oberhalb des Artikels anzeigen zu lassen. Beispiel sind hier und hier zu finden. Gelöst wird das Ganz per custom field, benutzerdefinierem Feld.

Weiterlesen: »WordPress: Teaser oberhalb des Artikels per “Custom Field”«

, , , , , ,

Per oEmbed Videos und Bilder in WordPress einbinden

Gerade das Einbinden von Videos hat schon so manchen WordPress-User zum Wahnsinn getrieben. Seit der Version 2.9 ist dies vorbei. WordPress hat oEmbed integriert. Was heißt das? Kurz zusammengefasst: Ihr müsst in Eurem Artikel nur noch die URL zum Video/Bild eingeben, WordPress integriert es dann automatisch mit oEmbed. Kein Code muss mehr von YouTube kopiert werden, keine Probleme mehr mit dem Object-Tag, einfach die URL in den Artikel einfügen und gut. Nutzer von Posterous kennen dieses Feature bereits und wissen es zu schätzen. Unterstützt werden folgende Services:

Weiterlesen: »Per oEmbed Videos und Bilder in WordPress einbinden«

, , , , , , , , , , ,

Das Facebook-Privatsphären-Einmaleins


via Datenschutz ist Bürgerrecht

Mehr Infos:

Soziales Web: Zurück zum Einfachen und Notwendigen
NYT — Facebook Privacy: A Bewildering Tangle of Options
EFF — Facebook Should Follow Its Own Principles
epic: Facebook Privacy
boing boing — Facebook: New «social» features secretly install malware
Jürgen Fenn — Facebook is a closed shop: XI, X, IX, VIII, VII, VI, V, IV, III, II, I

, , , , , , , ,

Absolute FreeBSD oder Absolute BSD 2.0

Absolute FreeBSD ist der Nachfolger von Absolute BSD, geschrieben von Michael W. Lucas, einem Kenner seines Fachs. Lucas Bücher haben einen entscheidenden Vorteil — neben der fachlichen Qualität: sie sind lesbar. Lesbar im Sinne von man beginnt mit der ersten Seite und endet mit der letzten. Somit dürften auch technophobe Zeitgenossen auf ihre Kosten kommen und etwaige Hürden FreeBSD locker mit diesem Werk bezwingen. Man findet hier weniger ein aufgewärmtes FreeBSD Handbuch vor, sondern ein deutlich erweitertes Werk, welches zudem noch stilitisch gehaltvoller daher kommt — zudem brauche ich wohl kaum den unschätzbaren Wert von auf totem Holz verewigtem Wissen zu erwähnen.

Weiterlesen: »Absolute FreeBSD oder Absolute BSD 2.0«

, , , , , , , ,

RSS-Feed abonnieren