MFde: Update the German documentation set
doc/de_DE.ISO8859-1/articles/Makefile Fixes only doc/de_DE.ISO8859-1/articles/solid-state/Makefile new file [X] doc/de_DE.ISO8859-1/articles/solid-state/article.sgml new translation [X] doc/de_DE.ISO8859-1/books/developers-handbook/kerneldebug/chapter.sgml 1.11 -> 1.12 doc/de_DE.ISO8859-1/books/handbook/bibliography/chapter.sgml 1.88 -> 1.89 + fixes doc/de_DE.ISO8859-1/books/handbook/eresources/chapter.sgml 1.201 -> 1.202 + fixes doc/de_DE.ISO8859-1/books/handbook/linuxemu/chapter.sgml 1.140 -> 1.141 + fixes doc/de_DE.ISO8859-1/share/sgml/mailing-lists.ent 1.70 -> 1.71 + fixes Obtained from: The FreeBSD German Documentation Project [X] Translated by: bcr@
This commit is contained in:
parent
a3aa7c0a7a
commit
c2aaf6963d
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=36541
8 changed files with 682 additions and 226 deletions
|
@ -3,7 +3,7 @@
|
||||||
# The FreeBSD German Documentation Project
|
# The FreeBSD German Documentation Project
|
||||||
#
|
#
|
||||||
# $FreeBSD$
|
# $FreeBSD$
|
||||||
# $FreeBSDde: de-docproj/articles/Makefile,v 1.6 2009/01/17 11:49:01 jkois Exp $
|
# $FreeBSDde: de-docproj/articles/Makefile,v 1.7 2010/09/18 13:58:33 bcr Exp $
|
||||||
# basiert auf: 1.42
|
# basiert auf: 1.42
|
||||||
|
|
||||||
SUBDIR = contributing
|
SUBDIR = contributing
|
||||||
|
@ -12,6 +12,7 @@ SUBDIR+= explaining-bsd
|
||||||
SUBDIR+= laptop
|
SUBDIR+= laptop
|
||||||
SUBDIR+= linux-comparison
|
SUBDIR+= linux-comparison
|
||||||
SUBDIR+= new-users
|
SUBDIR+= new-users
|
||||||
|
SUBDIR+= solid-state
|
||||||
SUBDIR+= version-guide
|
SUBDIR+= version-guide
|
||||||
|
|
||||||
# ROOT_SYMLINKS+= new-users
|
# ROOT_SYMLINKS+= new-users
|
||||||
|
|
24
de_DE.ISO8859-1/articles/solid-state/Makefile
Normal file
24
de_DE.ISO8859-1/articles/solid-state/Makefile
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
#
|
||||||
|
# The FreeBSD Documentation Project
|
||||||
|
# The FreeBSD German Documentation Project
|
||||||
|
#
|
||||||
|
# $FreeBSD$
|
||||||
|
# $FreeBSDde: de-docproj/articles/solid-state/Makefile,v 1.1 2010/09/18 13:58:33 bcr Exp $
|
||||||
|
# basiert auf: 1.17
|
||||||
|
#
|
||||||
|
# Article: FreeBSD und Solid State Devices
|
||||||
|
|
||||||
|
DOC?= article
|
||||||
|
|
||||||
|
FORMATS?= html html-split
|
||||||
|
WITH_ARTICLE_TOC?= YES
|
||||||
|
|
||||||
|
INSTALL_COMPRESSED?= gz
|
||||||
|
INSTALL_ONLY_COMPRESSED?=
|
||||||
|
|
||||||
|
SRCS= article.sgml
|
||||||
|
|
||||||
|
URL_RELPREFIX?= ../../../..
|
||||||
|
DOC_PREFIX?= ${.CURDIR}/../../..
|
||||||
|
|
||||||
|
.include "${DOC_PREFIX}/share/mk/doc.project.mk"
|
529
de_DE.ISO8859-1/articles/solid-state/article.sgml
Normal file
529
de_DE.ISO8859-1/articles/solid-state/article.sgml
Normal file
|
@ -0,0 +1,529 @@
|
||||||
|
<!-- Copyright (c) 2001 The FreeBSD Documentation Project
|
||||||
|
|
||||||
|
Redistribution and use in source (SGML DocBook) and 'compiled' forms
|
||||||
|
(SGML, HTML, PDF, PostScript, RTF and so forth) with or without
|
||||||
|
modification, are permitted provided that the following conditions
|
||||||
|
are met:
|
||||||
|
|
||||||
|
1. Redistributions of source code (SGML DocBook) must retain the above
|
||||||
|
copyright notice, this list of conditions and the following
|
||||||
|
disclaimer as the first lines of this file unmodified.
|
||||||
|
|
||||||
|
2. Redistributions in compiled form (transformed to other DTDs,
|
||||||
|
converted to PDF, PostScript, RTF and other formats) must reproduce
|
||||||
|
the above copyright notice, this list of conditions and the
|
||||||
|
following disclaimer in the documentation and/or other materials
|
||||||
|
provided with the distribution.
|
||||||
|
|
||||||
|
THIS DOCUMENTATION IS PROVIDED BY THE FREEBSD DOCUMENTATION PROJECT "AS
|
||||||
|
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NIK CLAYTON BE LIABLE FOR ANY
|
||||||
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||||
|
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
|
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||||
|
ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
$FreeBSD$
|
||||||
|
$FreeBSDde: de-docproj/articles/solid-state/article.sgml,v 1.2 2010/09/18 21:55:49 jkois Exp $
|
||||||
|
basiert auf: 1.18
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN" [
|
||||||
|
<!ENTITY % articles.ent PUBLIC "-//FreeBSD//ENTITIES DocBook FreeBSD Articles Entity Set//DE">
|
||||||
|
%articles.ent;
|
||||||
|
<!ENTITY legalnotice SYSTEM "../../share/sgml/legalnotice.sgml">
|
||||||
|
]>
|
||||||
|
|
||||||
|
<article lang="de">
|
||||||
|
<articleinfo>
|
||||||
|
<title>&os; und Solid State-Geräte</title>
|
||||||
|
|
||||||
|
<authorgroup>
|
||||||
|
<author>
|
||||||
|
<firstname>John</firstname>
|
||||||
|
<surname>Kozubik</surname>
|
||||||
|
|
||||||
|
<affiliation>
|
||||||
|
<address><email>john@kozubik.com</email></address>
|
||||||
|
</affiliation>
|
||||||
|
</author>
|
||||||
|
</authorgroup>
|
||||||
|
|
||||||
|
<pubdate>$FreeBSD$</pubdate>
|
||||||
|
|
||||||
|
<copyright>
|
||||||
|
<year>2001</year>
|
||||||
|
<year>2009</year>
|
||||||
|
<holder>The FreeBSD Documentation Project</holder>
|
||||||
|
</copyright>
|
||||||
|
|
||||||
|
<legalnotice id="trademarks" role="trademarks">
|
||||||
|
&tm-attrib.freebsd;
|
||||||
|
&tm-attrib.general;
|
||||||
|
</legalnotice>
|
||||||
|
|
||||||
|
&legalnotice;
|
||||||
|
|
||||||
|
<abstract>
|
||||||
|
<para>Dieser Artikel behandelt die Verwendung von Solid State Festplatten
|
||||||
|
in &os;, um eingebettete Systeme zu erstellen.</para>
|
||||||
|
|
||||||
|
<para>Eingebettete Systeme haben den Vorteil, dass sie eine höhere
|
||||||
|
Stabilität aufgrund des fehlens von beweglichen Bauteilen
|
||||||
|
(Festplatten) besitzen. Es muss jedoch beachtet werden, dass generell
|
||||||
|
weniger Speicherplatz zur Verfügung steht und die Lebensdauer des
|
||||||
|
Speichermediums geringer ist.</para>
|
||||||
|
|
||||||
|
<para>Spezielle Themen die behandelt werden beinhalten die Typen und
|
||||||
|
Attribute von Solid State Datenträgern, die in &os; verwendet
|
||||||
|
werden, Kernel-Optionen die in solch einer Umgebung von Interesse sind,
|
||||||
|
der <filename>rc.initdiskless</filename>-Mechanismus, welcher die
|
||||||
|
Initalisierung solcher Systeme automatisiert, sowie die Notwendigkeit
|
||||||
|
von Nur-Lese-Dateisystemen und das Erstellen von Dateisystemen von
|
||||||
|
Grund auf. Der Artikel schliesst mit ein paar generellen Strategien
|
||||||
|
für kleine und Nur-Lese-&os; Umgebungen.</para>
|
||||||
|
|
||||||
|
<para><emphasis>Übersetzt von Benedict Reuschling</emphasis>.</para>
|
||||||
|
</abstract>
|
||||||
|
</articleinfo>
|
||||||
|
|
||||||
|
<sect1 id="intro">
|
||||||
|
<title>Solid State Festplattengeräte</title>
|
||||||
|
|
||||||
|
<para>Der Umfang des Artikels ist auf Solid State Geräte
|
||||||
|
beschränkt, die auf Flash-Speicher basieren. Flash-Speicher ist ein
|
||||||
|
Solid State Speicher (keine beweglichen Teile), der nicht flüchtig
|
||||||
|
ist (der Speicher behält die Daten sogar nachdem alle Energiequellen
|
||||||
|
ausgeschaltet wurden). Flash-Speicher kann grossen physischen Schock
|
||||||
|
aushalten und ist vergleichsweise schnell (die Flash-Speicher
|
||||||
|
Lösungen, die in diesem Artikel behandelt werden, sind nur wenig
|
||||||
|
langsamer als eine EIDE-Festplatte in der Schreibgeschwindigkeit und viel
|
||||||
|
schneller bei Lese-Operationen). Ein sehr wichtiger Aspekt von
|
||||||
|
Flash-Speichern, dessen Auswirkungen später in diesem Artikel
|
||||||
|
diskutiert werden, ist, dass jeder Sektor eine begrenzte Kapazität
|
||||||
|
zur Wiederbeschreibung besitzt. Man kann nur eine bestimmte Anzahl von
|
||||||
|
Schreib-, Lösch- und Wiederbeschreibungsvorgängen
|
||||||
|
durchführen, bevor der Sektor permanent unbrauchbar wird. Obwohl
|
||||||
|
viele Flash-Speicher Produkte automatisch schlechte Blöcke markieren
|
||||||
|
und manche Geräte Schreiboperationen gleichmässig verteilen,
|
||||||
|
bleibt weiterhin die Anzahl der durchführbaren Schreibvorgänge
|
||||||
|
begrenzt. Verschiedene Geräteeinheiten besitzen zwischen 1,000,000
|
||||||
|
und 10,000,000 Schreibzyklen pro Sektor in ihren Spezifikationen. Diese
|
||||||
|
Zahlen variieren aufgrund der Umgebungstemperatur.</para>
|
||||||
|
|
||||||
|
<para>Im Speziellen werden wir ATA-kompatible Compact-Flash-Karten
|
||||||
|
betrachten, welche als Speichermedien für Digitalkameras ziemlich
|
||||||
|
populär sind. Von besonderem Interesse ist der Umstand, dass diese
|
||||||
|
direkt an den IDE-Bus angeschlossen werden und kompatibel zu den
|
||||||
|
ATA-Befehlen sind. Aus diesem Grund können diese Geräte mit
|
||||||
|
einem einfachen und billigen Adapter direkt an den IDE-Bus eines
|
||||||
|
Computers angeschlossen werden. Auf diese Weise sehen Betriebssysteme
|
||||||
|
wie &os; diese Geräte dann als normale (wenn auch sehr kleine)
|
||||||
|
Festplatten an.</para>
|
||||||
|
|
||||||
|
<para>Andere Solid State Plattenlösungen existieren, jedoch platzieren
|
||||||
|
deren Kosten, Obskurität und ihre Unhandlichkeit sie aussserhalb
|
||||||
|
des Umfangs dieses Artikels.</para>
|
||||||
|
</sect1>
|
||||||
|
|
||||||
|
<sect1 id="kernel">
|
||||||
|
<title>Kerneloptionen</title>
|
||||||
|
|
||||||
|
<para>Ein paar Kerneloptionen sind von besonderem Interesse für
|
||||||
|
diejenigen, welche diese eingebetteten &os;-Systeme erstellen
|
||||||
|
möchten.</para>
|
||||||
|
|
||||||
|
<para>Alle eingebetteten &os;-Systeme, die Flash-Speicher als Systemplatte
|
||||||
|
verwenden, sind interessant für Dateisysteme im Hauptspeicher und
|
||||||
|
RAM-Disks. Wegen der begrenzten Anzahl von Schreibzyklen, die auf
|
||||||
|
Flash-Speicher durchgeführt werden können, werden die Platte
|
||||||
|
und die Dateisysteme darauf mit grosser Wahrscheinlichkeit nur lesend
|
||||||
|
eingehängt werden. In dieser Umgebung werden Dateisysteme wie
|
||||||
|
<filename>/tmp</filename> und <filename>/var</filename> als RAM-Disks
|
||||||
|
eingebunden, um dem System zu erlauben, Logdateien anzulegen und
|
||||||
|
Zähler sowie temporäre Dateien zu aktualisieren. RAM-Disks
|
||||||
|
sind eine kritische Komponente für eine erfolgreiche Solid State
|
||||||
|
Umsetzung in &os;.</para>
|
||||||
|
|
||||||
|
<para>Sie sollten dafür sorgen, dass die folgenden Zeilen in Ihrer
|
||||||
|
Kernelkonfigurationsdatei vorhanden sind:</para>
|
||||||
|
|
||||||
|
<programlisting>options MFS # Memory Filesystem
|
||||||
|
options MD_ROOT # md device usable as a potential root device
|
||||||
|
pseudo-device md # memory disk</programlisting>
|
||||||
|
</sect1>
|
||||||
|
|
||||||
|
<sect1 id="ro-fs">
|
||||||
|
<title>Die <literal>rc</literal>-Subsysteme und nur-Lese
|
||||||
|
Dateisysteme</title>
|
||||||
|
|
||||||
|
<para>Die Initialisierung nach dem Bootvorgang eines eingebetteten
|
||||||
|
&os;-Systems wird von <filename>/etc/rc.initdiskless</filename>
|
||||||
|
kontrolliert.</para>
|
||||||
|
|
||||||
|
<para><filename>/etc/rc.d/var</filename> hängt
|
||||||
|
<filename>/var</filename> als RAM-Disk ein, erstellt eine konfigurierbare
|
||||||
|
Liste von Verzeichnissen in <filename>/var</filename> mittels des
|
||||||
|
&man.mkdir.1;-Kommandos und ändert die Attribute von ein paar dieser
|
||||||
|
Verzeichnisse. Bei der Ausführung von
|
||||||
|
<filename>/etc/rc.d/var</filename> kommt eine andere
|
||||||
|
<filename>rc.conf</filename>-Variable ins Spiel:
|
||||||
|
<literal>varsize</literal>. Die Datei <filename>/etc/rc.d/var</filename>
|
||||||
|
erstellt eine <filename>/var</filename>-Partition basierend auf dem Wert
|
||||||
|
dieser Variable in <filename>rc.conf</filename>:</para>
|
||||||
|
|
||||||
|
<programlisting>varsize=8192</programlisting>
|
||||||
|
|
||||||
|
<para>Standardmässig wird dieser Wert in Sektoren angegeben.</para>
|
||||||
|
|
||||||
|
<para>Der Fakt, dass es sich bei <filename>/var</filename> um ein nur-Lese
|
||||||
|
Dateisystem handelt, ist eine wichtige Unterscheidung, da die
|
||||||
|
<filename>/</filename>-Partition (und jede andere Partition, die Sie auf
|
||||||
|
Ihrem Flash-Medium haben) nur lesend eingehängt wird. Erinnern Sie
|
||||||
|
sich, dass in <xref linkend="intro"> die Beschränkungen von
|
||||||
|
Flash-Speichern erläutert wurden, speziell deren begrenzte
|
||||||
|
Kapazität zum Schreiben. Die Notwendigkeit, Dateisysteme auf
|
||||||
|
Flash-Speichern nur lesend einzubinden und keine Swap-Dateien zu
|
||||||
|
verwenden, kann nicht oft genug erwähnt werden. Eine Swap-Datei auf
|
||||||
|
einem ausgelasteten System kann in weniger als einem Jahr den gesamten
|
||||||
|
Flash-Speicher aufbrauchen. Häufige Protokollierung oder das
|
||||||
|
Erstellen und Löschen von temporären Dateien kann das gleiche
|
||||||
|
verursachen. Aus diesem Grund sollten Sie zusätzlich zum entfernen
|
||||||
|
des <literal>swap</literal>-Eintrags aus ihrer
|
||||||
|
<filename>/etc/fstab</filename>-Datei auch noch die Optionsfelder
|
||||||
|
für jedes Dateisystem auf <literal>ro</literal> wie folgt
|
||||||
|
stellen:</para>
|
||||||
|
|
||||||
|
<programlisting># Device Mountpoint FStype Options Dump Pass#
|
||||||
|
/dev/ad0s1a / ufs ro 1 1</programlisting>
|
||||||
|
|
||||||
|
<para>Ein paar Anwendungen im normalen System werden sofort nach dieser
|
||||||
|
Änderung ausfallen. Beispielsweise wird Cron nicht richtig
|
||||||
|
funktionieren, aufgrund von fehlenden Cron-Tabellen in
|
||||||
|
<filename>/var</filename> die von
|
||||||
|
<filename>/etc/rc.d/var</filename> erstellt wurden. Syslog und DHCP
|
||||||
|
werden ebenfalls Probleme durch das nur-Lese Dateisystem
|
||||||
|
und fehlende Elemente im Verzeichnis <filename>/var</filename>
|
||||||
|
verursachen, die <filename>/etc/rc.d/var</filename> erstellt hat. Diese
|
||||||
|
Probleme sind jedoch nur vorübergehend und werden zusammen mit
|
||||||
|
Lösungen zur Ausführung von anderen gebräuchlichen
|
||||||
|
Softwarepaketen in <xref linkend="strategies"> angesprochen.</para>
|
||||||
|
|
||||||
|
<para>Eine wichtige Sache, an die man sich erinnern sollte, ist, dass
|
||||||
|
ein Dateisystem, welches als nur lesend in
|
||||||
|
<filename>/etc/fstab</filename> eingebunden wurde, jederzeit als
|
||||||
|
schreibend durch das folgende Kommando eingehängt werden
|
||||||
|
kann:</para>
|
||||||
|
|
||||||
|
<screen>&prompt.root; <userinput>/sbin/mount -uw <replaceable>partition</replaceable></userinput></screen>
|
||||||
|
|
||||||
|
<para>und auch wieder zurück auf nur lesend durch den Befehl:</para>
|
||||||
|
|
||||||
|
<screen>&prompt.root; <userinput>/sbin/mount -ur <replaceable>partition</replaceable></userinput></screen>
|
||||||
|
</sect1>
|
||||||
|
|
||||||
|
<sect1>
|
||||||
|
<title>Ein Dateisystem von Grund auf neu erstellen</title>
|
||||||
|
|
||||||
|
<para>Wenn ATA-kompatible Compact-Flash-Karten von &os; als normale
|
||||||
|
IDE-Festplatten erkannt werden, könnten Sie theoretisch &os; aus dem
|
||||||
|
Netzwerk mittels der Kern- und mfsroot-Floppies oder einer CD
|
||||||
|
installieren.</para>
|
||||||
|
|
||||||
|
<para>Jedoch kann selbst eine kleine Installation von &os; durch die
|
||||||
|
normale Installationsprozedur ein System erzeugen, dass grösser als
|
||||||
|
200 MB ist. Da die meisten Leute kleinere Flash-Speichermedien
|
||||||
|
einsetzen (128 MB wird hier als gross angesehen - 32 oder sogar
|
||||||
|
16 MB sind gebräuchlich) ist eine gewöhnliche Installation
|
||||||
|
mit normalen Methoden nicht möglich, da es einfach nicht genug
|
||||||
|
freien Plattenplatz gibt, selbst für die kleinste
|
||||||
|
Installationsart.</para>
|
||||||
|
|
||||||
|
<para>Der einfachste Weg, diese Speicherlimitierung zu umgehen, ist, &os;
|
||||||
|
auf konventionelle Weise auf eine normale Festplatte zu installieren.
|
||||||
|
Nachdem die Installation abgeschlossen wurde, kürzen Sie das
|
||||||
|
Betriebssystem auf das nötigste, bis Sie eine Grösse erreicht
|
||||||
|
hat, die auf das Flash-Medium passt und benutzen Sie dann tar auf dem
|
||||||
|
gesamten Dateisystem. Die folgenden Schritte werden Sie durch den
|
||||||
|
Prozess der Vorbereitung eines Flash-Mediums für ihr getartes
|
||||||
|
Dateisystem führen. Beachten Sie, dass Operationen wie
|
||||||
|
Partitionierung, Benennung, Erstellung von Dateisystemen, etc. von Hand
|
||||||
|
durchgeführt werden müssen, da eine normale Installation nicht
|
||||||
|
möglich ist. Zusätzlich zu den Kern- und mfsroot-Disketten
|
||||||
|
benötigen Sie auch die fixit-Floppy.</para>
|
||||||
|
|
||||||
|
<procedure>
|
||||||
|
<step>
|
||||||
|
<title>Partitionierung Ihrer Flash-Medien</title>
|
||||||
|
|
||||||
|
<para>Wählen Sie nach dem Starten der Kern- und mfsroot-Disketten,
|
||||||
|
<literal>custom</literal> aus dem Installationsmenü. In diesem
|
||||||
|
Menü wählen Sie dann <literal>partition</literal> aus.
|
||||||
|
Dort sollten Sie alle bestehenden Partitionen mit Hilfe der Taste
|
||||||
|
<keycap>d</keycap> löschen. Nachdem alle bestehenden
|
||||||
|
Partitionen gelöscht wurden, erstellen Sie mittels der Taste
|
||||||
|
<keycap>c</keycap> eine Partition und akzeptieren Sie den
|
||||||
|
Standardwert für die Grösse der Partition. Wenn Sie nach
|
||||||
|
dem Typ der Partition gefragt werden, stellen Sie sicher, dass der
|
||||||
|
Wert auf <literal>165</literal> eingestellt ist. Schreiben Sie jetzt
|
||||||
|
diese Partitionstabelle auf die Platte durch betätigen der Taste
|
||||||
|
<keycap>w</keycap> (dies ist die versteckte Option auf diesem
|
||||||
|
Bildschirm). Wenn Sie eine ATA-kompatible Compact Flash-Karte
|
||||||
|
verwenden, sollten Sie den &os; Bootmanager auswählen.
|
||||||
|
Drücken Sie nun die Taste <keycap>q</keycap>, um das
|
||||||
|
Partitionsmenü zu verlassen. Sie werden das Menü des
|
||||||
|
Bootmanagers noch ein weiteres Mal gezeigt bekommt. In diesem Fall
|
||||||
|
wiederholen Sie die Auswahl von vorher.</para>
|
||||||
|
</step>
|
||||||
|
|
||||||
|
<step>
|
||||||
|
<title>Anlegen von Dateisystemen auf Ihrem
|
||||||
|
Flashspeicher-Gerät</title>
|
||||||
|
|
||||||
|
<para>Verlassen Sie das Installationsmenü und wählen Sie aus
|
||||||
|
dem Hauptinstallationsmenü die Option <literal>fixit</literal>.
|
||||||
|
In der fixit-Umgebung angelangt, geben Sie den folgenden Befehl
|
||||||
|
ein:</para>
|
||||||
|
|
||||||
|
<screen>&prompt.root; <userinput>disklabel -e /dev/ad0c</userinput></screen>
|
||||||
|
|
||||||
|
<para>Zu diesem Zeitpunkt sollten Sie sich im vi-Editor unter der
|
||||||
|
Herrschaft des disklabel-Kommandos befinden. Als nächstes
|
||||||
|
müssen Sie die eine <literal>a:</literal>-Zeile an das Ende der
|
||||||
|
Datei hinzufügen. Diese
|
||||||
|
<literal>a:</literal>-Zeile sollte wie folgt aussehen:</para>
|
||||||
|
|
||||||
|
<programlisting>a: <replaceable>123456</replaceable> 0 4.2BSD 0 0</programlisting>
|
||||||
|
|
||||||
|
<para>Wobei <replaceable>123456</replaceable> eine Zahl darstellt, die
|
||||||
|
exakt der gleichen Zahl in der bestehenden Zeile mit dem
|
||||||
|
<literal>c:</literal>-Eintrag entspricht. Sie kopieren quasi
|
||||||
|
die bestehende Zeile <literal>c:</literal> als eine neue Zeile
|
||||||
|
<literal>a:</literal> und stellen sicher, dass fstype
|
||||||
|
<literal>4.2BSD</literal> entspricht. Speichern Sie die Datei und
|
||||||
|
verlassen Sie den Editor.</para>
|
||||||
|
|
||||||
|
<screen>&prompt.root; <userinput>disklabel -B -r /dev/ad0c</userinput>
|
||||||
|
&prompt.root; <userinput>newfs /dev/ad0a</userinput></screen>
|
||||||
|
</step>
|
||||||
|
|
||||||
|
<step>
|
||||||
|
<title>Schreiben des Dateisystems auf Ihr Flash-Medium</title>
|
||||||
|
|
||||||
|
<para>Hängen Sie das neu erstellte Flash-Medium ein:</para>
|
||||||
|
|
||||||
|
<screen>&prompt.root; <userinput>mount /dev/ad0a /flash</userinput></screen>
|
||||||
|
|
||||||
|
<para>Verbinden Sie diese Maschine mit dem Netzwerk, um die tar-Datei
|
||||||
|
zu übertragen und extrahieren Sie es auf das Dateisystem des
|
||||||
|
Flash-Mediums. Ein Beispiel dazu wäre folgendes:</para>
|
||||||
|
|
||||||
|
<screen>&prompt.root; <userinput>ifconfig xl0 192.168.0.10 netmask 255.255.255.0</userinput>
|
||||||
|
&prompt.root; <userinput>route add default 192.168.0.1</userinput></screen>
|
||||||
|
|
||||||
|
<para>Jetzt da die Maschine ans Netzwerk angeschlossen ist, kopieren
|
||||||
|
Sie die tar-Datei. An diesem Punkt werden Sie möglicherweise
|
||||||
|
mit einem Dilemma konfrontiert - sollte Ihr Flash-Speicher
|
||||||
|
beispielsweise 128 MB gross sein und Ihre tar-Datei grösser
|
||||||
|
als 64 MB, können Sie ihre tar-Datei auf dem Flash-Speicher
|
||||||
|
nicht entpacken - Ihnen wird vorher der Speicherplatz ausgehen. Eine
|
||||||
|
Lösung für dieses Problem, sofern Sie FTP verwenden, ist,
|
||||||
|
dass Sie die Datei entpacken können, während es von FTP
|
||||||
|
übertragen wird. Wenn Sie die Übertragung auf diese Weise
|
||||||
|
durchführen, haben Sie niemals die tar-Datei und deren Inhalt
|
||||||
|
zur gleichen Zeit auf Ihrem Medium:</para>
|
||||||
|
|
||||||
|
<screen><prompt>ftp></prompt> <userinput>get tarfile.tar "| tar xvf -"</userinput></screen>
|
||||||
|
|
||||||
|
<para>Sollte Ihre tar-Datei gezippt sein, können Sie dies
|
||||||
|
ebenso bewerkstelligen:</para>
|
||||||
|
|
||||||
|
<screen><prompt>ftp></prompt> <userinput>get tarfile.tar "| zcat | tar xvf -"</userinput></screen>
|
||||||
|
|
||||||
|
<para>Nachdem der Inhalt Ihrer tar-Datei auf dem Dateisystem des
|
||||||
|
Flash-Mediums abgelegt wurden, können Sie den Flash-Speicher
|
||||||
|
aushängen und neu starten:</para>
|
||||||
|
|
||||||
|
<screen>&prompt.root; <userinput>cd /</userinput>
|
||||||
|
&prompt.root; <userinput>umount /flash</userinput>
|
||||||
|
&prompt.root; <userinput>exit</userinput></screen>
|
||||||
|
|
||||||
|
<para>In der Annahme, dass Sie Ihr Dateisystem richtig konfiguriert
|
||||||
|
haben, als es noch auf der gewöhnlichen Festplatte gebaut wurde
|
||||||
|
(mit Ihren Nur-Lese-Dateisystemen und den nötigen Optionen im
|
||||||
|
Kernel), sollten Sie nun erfolgreich von Ihrem &os; Embedded-System
|
||||||
|
starten können.</para>
|
||||||
|
</step>
|
||||||
|
</procedure>
|
||||||
|
</sect1>
|
||||||
|
|
||||||
|
<sect1 id="strategies">
|
||||||
|
<title>Systemstrategien für kleine und Nur-Lese-Umgebungen</title>
|
||||||
|
|
||||||
|
<para>In <xref linkend="ro-fs"> wurde darauf hingewiesen, dass das
|
||||||
|
<filename>/var</filename>-Dateisystem von
|
||||||
|
<filename>/etc/rc.d/var</filename> konstruiert wurde und die Präsenz
|
||||||
|
eines Nur-Lese-Wurzeldateisystems Probleme mit vielen in &os;
|
||||||
|
gebrächlichen Softwarepaketen verursacht. In diesem Artikel werden
|
||||||
|
Vorschläge für das erfolgreiche Betreiben von cron, syslog,
|
||||||
|
Installationen von Ports und dem Apache-Webserver unterbreitet.</para>
|
||||||
|
|
||||||
|
<sect2>
|
||||||
|
<title>cron</title>
|
||||||
|
|
||||||
|
<para>Während des Bootvorgangs wird <filename
|
||||||
|
class="directory">/var</filename> von
|
||||||
|
<filename>/etc/rc.d/var</filename> anhand der Liste aus
|
||||||
|
<filename>/etc/mtree/BSD.var.dist</filename> gefüllt, damit
|
||||||
|
<filename class="directory">cron</filename>, <filename
|
||||||
|
class="directory">cron/tabs</filename>, <filename
|
||||||
|
class="directory">at</filename> und ein paar weitere
|
||||||
|
Standardverzeichnisse erstellt werden.</para>
|
||||||
|
|
||||||
|
<para>Jedoch löst das noch nicht das Problem, Crontabs über
|
||||||
|
Neustarts des Systems hinaus zu erhalten. Wenn das System neu
|
||||||
|
gestartet wird, verschwindet das <filename>/var</filename>-Dateiystem,
|
||||||
|
welches sich im Hauptspeicher befunden hat und jegliche Crontabs, die
|
||||||
|
Sie hatten werden ebenfalls verschwinden. Aus diesem Grund besteht eine
|
||||||
|
Lösung darin, Crontabs für diejenigen Benutzer zu erstellen,
|
||||||
|
die diese auch benötigen. Dazu sollte das
|
||||||
|
<filename>/</filename>-Dateisystem lesend und schreibend
|
||||||
|
eingehängt und diese Crontabs an einen sicheren Ort kopiert
|
||||||
|
werden, wie beispielsweise <filename>/etc/tabs</filename>. Fügen
|
||||||
|
Sie dann eine Zeile an das Ende der Datei
|
||||||
|
<filename>/etc/rc.initdiskless</filename> hinzu, die diese Crontabs in
|
||||||
|
<filename>/var/cron/tabs</filename> kopiert, nachdem dieses Verzeichnis
|
||||||
|
während der Systeminitialisierung erstellt wurde. Sie werden auch
|
||||||
|
eine Zeile hinzufügen mössen, welche die Besitzer und
|
||||||
|
Berechtigungen auf diesen Verzeichnissen, die Sie erstellen und den
|
||||||
|
dazugehörigen Dateien, die Sie mittels
|
||||||
|
<filename>/etc/rc.initdiskless</filename> kopieren, setzen.</para>
|
||||||
|
</sect2>
|
||||||
|
|
||||||
|
<sect2>
|
||||||
|
<title>syslog</title>
|
||||||
|
|
||||||
|
<para>Die Datei <filename>syslog.conf</filename> spezifiziert den Ort von
|
||||||
|
bestimmten Logdateien, welche in <filename>/var/log</filename>
|
||||||
|
existieren. Diese Dateien werden nicht von
|
||||||
|
<filename>/etc/rc.d/var</filename> während der
|
||||||
|
Systeminitialisierung erstellt. Aus diesem Grund müssen Sie
|
||||||
|
irgendwo in <filename>/etc/rc.d/var</filename> nach dem Abschnitt, der
|
||||||
|
die Verzeichnisse in <filename>/var</filename> erstellt, eine Zeile
|
||||||
|
ähnlich der folgenden hinzufügen:</para>
|
||||||
|
|
||||||
|
<screen>&prompt.root; <userinput>touch /var/log/security /var/log/maillog /var/log/cron /var/log/messages</userinput>
|
||||||
|
&prompt.root; <userinput>chmod 0644 /var/log/*</userinput></screen>
|
||||||
|
</sect2>
|
||||||
|
|
||||||
|
<sect2>
|
||||||
|
<title>Installation von Ports</title>
|
||||||
|
|
||||||
|
<para>Bevor die notwendigen Änderungen erkärt werden, einen
|
||||||
|
Ports-Baum zu verwenden, ist es notwendig, Sie an die
|
||||||
|
Nur-Lese-Besonderheit Ihres Dateisystems auf dem Flash-Medium zu
|
||||||
|
erinnern. Da dieses nur lesend verfügbar ist, müssen Sie es
|
||||||
|
vorübergehend mit Schreibrechten ausstatten, indem Sie die
|
||||||
|
mount-Syntax, wie in <xref linkend="ro-fs"> dargestellt wird,
|
||||||
|
verwenden. Sie sollten immer diese Dateisysteme erneut mit
|
||||||
|
nur-Lese-Rechten einhängen wenn Sie damit fertig sind -
|
||||||
|
unnötige Schreibvorgänge auf dem Flash-Medium kann dessen
|
||||||
|
Lebenszeit erheblich verkürzen.</para>
|
||||||
|
|
||||||
|
<para>Um es zu ermöglichen, in das Ports-Verzeichnis zu wechseln
|
||||||
|
und erfolgreich
|
||||||
|
<command>make</command> <maketarget>install</maketarget>
|
||||||
|
auszuführen, müssen wir ein Paketverzeichnis auf einem
|
||||||
|
Nicht-Hauptspeicherdateisystem erstellen, welches die Pakete über
|
||||||
|
Neustarts hinweg im Auge behält. Weil es sowieso nötig ist,
|
||||||
|
Ihre Dateisysteme mit Lese-Schreibrechten für die Installation
|
||||||
|
eines Pakets einzuhängen, ist es sinnvoll anzunehmen, dass ein
|
||||||
|
Bereich Ihres Flash-Mediums ebenfalls für Paketinformationen, die
|
||||||
|
darauf abgespeichert werden, verwendet wird.</para>
|
||||||
|
|
||||||
|
<para>Erstellen Sie zuerst ein Verzeichnis für die Paketdatenbank.
|
||||||
|
Normalerweise ist dies <filename>/var/db/pkg</filename>, jedoch
|
||||||
|
können wir es dort nicht unterbringen, da es jedesmal verschwinden
|
||||||
|
wird, wenn das System neu gestartet wird.</para>
|
||||||
|
|
||||||
|
<screen>&prompt.root; <userinput>mkdir /etc/pkg</userinput></screen>
|
||||||
|
|
||||||
|
<para>Fügen Sie nun eine Zeile in <filename>/etc/rc.d/var</filename>
|
||||||
|
hinzu, welche das <filename>/etc/pkg</filename>-Verzeichnis mit
|
||||||
|
<filename>/var/db/pkg</filename> verknüpft. Ein Beispiel:</para>
|
||||||
|
|
||||||
|
<screen>&prompt.root; <userinput>ln -s /etc/pkg /var/db/pkg</userinput></screen>
|
||||||
|
|
||||||
|
<para>Nun wird jedes Mal, wenn Sie Ihre Dateisysteme mit
|
||||||
|
Lese-Schreibrechten einbinden und ein Paket installieren, der Befehl
|
||||||
|
<command>make</command> <maketarget>install</maketarget> funktionieren
|
||||||
|
und Paketinformationen werden erfolgreich nach
|
||||||
|
<filename>/etc/pkg</filename> geschrieben (da zu diesem Zeitpunkt das
|
||||||
|
Dateisystem mit Lese-Schreibrechten eingebunden ist), welche dann stets
|
||||||
|
dem Betriebssystem als <filename>/var/db/pkg</filename> zur
|
||||||
|
Verfügung stehen.</para>
|
||||||
|
</sect2>
|
||||||
|
|
||||||
|
<sect2>
|
||||||
|
<title>Apache Webserver</title>
|
||||||
|
|
||||||
|
<note>
|
||||||
|
<para>Die Anweisungen in diesem Abschnitt sind nur notwendig, wenn
|
||||||
|
Apache so eingerichtet ist, dass dieser seine PID oder
|
||||||
|
Protokollierungsinformationen ausserhalb von <filename
|
||||||
|
class="directory">/var</filename> ablegt. Standardmässig
|
||||||
|
bewahrt Apache seine PID-Datei in <filename
|
||||||
|
class="directory">/var/run/httpd.pid</filename> und seine
|
||||||
|
Protokolldateien in <filename
|
||||||
|
class="directory">/var/log</filename> auf.</para>
|
||||||
|
</note>
|
||||||
|
|
||||||
|
<para>Es wird nun davon ausgegangen, dass Apache seine Protokolldateien
|
||||||
|
in einem Verzeichnis namens <filename
|
||||||
|
class="directory"><replaceable>apache_log_dir</replaceable></filename>
|
||||||
|
ausserhalb von <filename class="directory">/var</filename> speichert.
|
||||||
|
Wenn dieses Verzeichnis auf einem nur-Lese-Dateisystem existiert, wird
|
||||||
|
Apache nicht in der Lage sein, Protokolldateien zu speichern und wird
|
||||||
|
vermutlich nicht richtig funktionieren. Wenn dies der Fall ist, muss
|
||||||
|
ein neues Verzeichnis zu der Liste der Verzeichnisse in
|
||||||
|
<filename>/etc/rc.d/var</filename> hinzugefügt werden, um dieses
|
||||||
|
in <filename>/var</filename> zu erstellen und um <filename
|
||||||
|
class="directory"><replaceable>apache_log_dir</replaceable></filename>
|
||||||
|
nach <filename>/var/log/apache</filename> zu verknüpfen. Es ist
|
||||||
|
auch nötig, Berechtigungen und Besitzer auf diesem neuen
|
||||||
|
Verzeichnis zu setzen.</para>
|
||||||
|
|
||||||
|
<para>Fügen Sie zuerst das Verzeichnis <literal>log/apache</literal>
|
||||||
|
zu der Liste von Verzeichnissen hinzu, die in
|
||||||
|
<filename>/etc/rc.d/var</filename> angelegt werden sollen.</para>
|
||||||
|
|
||||||
|
<para>Danach tragen Sie die folgenden Befehle in
|
||||||
|
<filename>/etc/rc.d/var</filename> nach dem Abschnitt zum Erstellen der
|
||||||
|
Verzeichnisse ein:</para>
|
||||||
|
|
||||||
|
<screen>&prompt.root; <userinput>chmod 0774 /var/log/apache</userinput>
|
||||||
|
&prompt.root; <userinput>chown nobody:nobody /var/log/apache</userinput></screen>
|
||||||
|
|
||||||
|
<para>Schliesslich löschen Sie das bestehende <filename
|
||||||
|
class="directory"><replaceable>apache_log_dir</replaceable></filename>
|
||||||
|
Verzeichnis und ersetzen es mit einer Verknüpfung:</para>
|
||||||
|
|
||||||
|
<screen>&prompt.root; <userinput>rm -rf <filename class="directory"><replaceable>apache_log_dir</replaceable></filename></userinput>
|
||||||
|
&prompt.root; <userinput>ln -s /var/log/apache <filename class="directory"><replaceable>apache_log_dir</replaceable></filename></userinput></screen>
|
||||||
|
</sect2>
|
||||||
|
</sect1>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Local Variables:
|
||||||
|
mode: sgml
|
||||||
|
sgml-indent-data: t
|
||||||
|
sgml-omittag: nil
|
||||||
|
sgml-always-quote-attributes: t
|
||||||
|
End:
|
||||||
|
-->
|
||||||
|
|
|
@ -3,8 +3,8 @@
|
||||||
The FreeBSD German Documentation Project
|
The FreeBSD German Documentation Project
|
||||||
|
|
||||||
$FreeBSD$
|
$FreeBSD$
|
||||||
$FreeBSDde: de-docproj/books/developers-handbook/kerneldebug/chapter.sgml,v 1.11 2009/06/01 20:44:17 bcr Exp $
|
$FreeBSDde: de-docproj/books/developers-handbook/kerneldebug/chapter.sgml,v 1.12 2010/10/02 18:19:15 bcr Exp $
|
||||||
basiert auf: 1.78
|
basiert auf: 1.79
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<chapter id="kerneldebug">
|
<chapter id="kerneldebug">
|
||||||
|
@ -506,54 +506,7 @@
|
||||||
Schnittstelle von <command>ddd</command> anzugehen.</para>
|
Schnittstelle von <command>ddd</command> anzugehen.</para>
|
||||||
</sect1>
|
</sect1>
|
||||||
|
|
||||||
<sect1 id="kerneldebug-post-mortem">
|
|
||||||
<title>Post-Mortem-Auswertung eines Speicherauszugs</title>
|
|
||||||
|
|
||||||
<para>Was machen Sie, falls ein Kernel abstürzt und einen
|
|
||||||
Kernspeicherauszug ablegt, aber Sie es nicht erwartet haben und
|
|
||||||
der Kernel folglich nicht unter Benutzung von <command>config
|
|
||||||
-g</command> kompiliert wurde? Nicht alles ist dann verloren.
|
|
||||||
Geraten Sie nicht in Panik!</para>
|
|
||||||
|
|
||||||
<para>Natürlich müssen Sie immer noch die Ablage von
|
|
||||||
Speicherauszügen nach einem Absturz aktivieren. Sehen Sie
|
|
||||||
weiter oben nach den Optionen, die Sie festlegen müssen, um
|
|
||||||
dies zu tun.</para>
|
|
||||||
|
|
||||||
<para>Wechseln Sie in Ihr Kernel-Konfigurationsverzeichnis
|
|
||||||
(<filename>/usr/src/sys/<replaceable>arch</replaceable>/conf</filename>)
|
|
||||||
und bearbeiten Sie die Konfigurationsdatei. Entfernen Sie den
|
|
||||||
Kommentar vor folgender Zeile (oder fügen Sie sie hinzu,
|
|
||||||
falls sie nicht vorhanden ist):</para>
|
|
||||||
|
|
||||||
<programlisting>makeoptions DEBUG=-g #Build kernel with gdb(1) debug symbols</programlisting>
|
|
||||||
|
|
||||||
<para>Bauen Sie den Kernel neu. Aufgrund der Änderung des
|
|
||||||
Zeitstempels im Makefile werden einige weitere Objektdateien neu
|
|
||||||
gebaut, zum Beispiel <filename>trap.o</filename>. Mit etwas
|
|
||||||
Glück ändert die hinzugefügte
|
|
||||||
<option>-g</option>-Option nichts am erzeugten Code, sodass Sie
|
|
||||||
schließlich einen neuen Kernel mit gleichem Code wie im
|
|
||||||
fehlerbehafteten, jedoch mit einigen Symbolen zur Fehlersuche
|
|
||||||
(Debugging-Symbols), erhalten. Sie sollten zumindest die alten
|
|
||||||
und neuen Dateigrößen mit dem &man.size.1;-Befehl
|
|
||||||
überprüfen. Falls sich eine Nichtübereinstimmung
|
|
||||||
findet, müssen Sie an dieser Stelle vermutlich
|
|
||||||
aufgeben.</para>
|
|
||||||
|
|
||||||
<para>Untersuchen Sie nun den Speicherauszug, wie oben beschrieben.
|
|
||||||
Die Symbole zur Fehlersuche könnten an manchen Stellen
|
|
||||||
unvollständig sein, wie es die Stack-Ablaufverfolgung im
|
|
||||||
Beispiel oben zeigt, wo manche Funktionen ohne Zeilennummer und
|
|
||||||
Parameterliste aufgelistet sind. Falls Sie mehr Symbole zur
|
|
||||||
Fehlersuche benötigen, entfernen Sie geeignete Objektdateien,
|
|
||||||
bauen Sie den Kernel ein weiteres Mal neu und wiederholen Sie die
|
|
||||||
<command>gdb <option>-k</option></command>-Sitzung, bis Sie
|
|
||||||
genug wissen.</para>
|
|
||||||
|
|
||||||
<para>Das Ganze funktioniert nicht unter Garantie, reicht aber in
|
|
||||||
den meisten Fällen aus.</para>
|
|
||||||
</sect1>
|
|
||||||
|
|
||||||
<sect1 id="kerneldebug-online-ddb">
|
<sect1 id="kerneldebug-online-ddb">
|
||||||
<title>Online-Kernel-Fehlersuche mit DDB</title>
|
<title>Online-Kernel-Fehlersuche mit DDB</title>
|
||||||
|
@ -898,71 +851,6 @@ Debugger (msg=0xf01b0383 "Boot flags requested debugger")
|
||||||
Emacs-Fenster bietet), usw.</para>
|
Emacs-Fenster bietet), usw.</para>
|
||||||
</sect1>
|
</sect1>
|
||||||
|
|
||||||
<sect1 id="kerneldebug-kld">
|
|
||||||
<title>Fehlersuche bei ladbaren Modulen mit GDB</title>
|
|
||||||
|
|
||||||
<para>Während der Fehlersuche bei einer Panic, die innerhalb
|
|
||||||
eines Moduls oder unter Benutzung von GDB auf einem entfernten
|
|
||||||
System gegen ein System, das dynamische Module benutzt,
|
|
||||||
ausgelöst wurde, müssen Sie GDB mitteilen, wie es an
|
|
||||||
die Informationen zu den Symbolen dieser Module kommt.</para>
|
|
||||||
|
|
||||||
<para>Zuerst müssen Sie die Module mit Informationen zur
|
|
||||||
Fehlersuche bauen:</para>
|
|
||||||
|
|
||||||
<screen>&prompt.root; <userinput>cd /sys/modules/linux</userinput>
|
|
||||||
&prompt.root; <userinput>make clean; make COPTS=-g</userinput></screen>
|
|
||||||
|
|
||||||
<para>Falls Sie GDB auf einem entfernten System benutzen,
|
|
||||||
können Sie <command>kldstat</command> auf dem Zielsystem
|
|
||||||
starten, um herauszufinden, wohin die Module geladen
|
|
||||||
wurden:</para>
|
|
||||||
|
|
||||||
<screen>&prompt.root; <userinput>kldstat</userinput>
|
|
||||||
Id Refs Address Size Name
|
|
||||||
1 4 0xc0100000 1c1678 kernel
|
|
||||||
2 1 0xc0a9e000 6000 linprocfs.ko
|
|
||||||
3 1 0xc0ad7000 2000 warp_saver.ko
|
|
||||||
4 1 0xc0adc000 11000 linux.ko</screen>
|
|
||||||
|
|
||||||
<para>Falls Sie einen Speicherauszug nach einem Absturz auf Fehler
|
|
||||||
untersuchen, müssen Sie die
|
|
||||||
<literal>linker_files</literal>-Liste abgehen, beginnend mit
|
|
||||||
<literal>linker_files->tqh_first</literal> und den
|
|
||||||
<literal>link.tqe_next</literal>-Zeigern folgend, bis Sie den
|
|
||||||
Eintrag mit dem <literal>Dateinamen</literal>, nach dem Sie
|
|
||||||
suchen, gefunden haben. Der <literal>Adress</literal>-Teil des
|
|
||||||
Eintrags ist die Adresse, wohin das Modul geladen
|
|
||||||
wurde.</para>
|
|
||||||
|
|
||||||
<para>Als Nächstes müssen Sie den Adressabstand des
|
|
||||||
Textabschnitts innerhalb des Moduls herausfinden:</para>
|
|
||||||
|
|
||||||
<screen>&prompt.root; <userinput>objdump --section-headers /sys/modules/linux/linux.ko | grep text</userinput>
|
|
||||||
3 .rel.text 000016e0 000038e0 000038e0 000038e0 2**2
|
|
||||||
10 .text 00007f34 000062d0 000062d0 000062d0 2**2</screen>
|
|
||||||
|
|
||||||
<para>Das, wonach Sie suchen, ist die
|
|
||||||
<literal>.text</literal>-Zeile, Zeile 10 im Beispiel oben. Die
|
|
||||||
vierte hexadezimale Spalte (insgesamt die sechste) zeigt den
|
|
||||||
Adressabstand des Textabschnitts innerhalb der Datei. Addieren
|
|
||||||
Sie diesen Adressabstand zu der Ladeadresse des Moduls, um die
|
|
||||||
Verschiebungsadresse für den Code des Moduls zu erhalten.
|
|
||||||
In unserem Beispiel erhalten wir 0xc0adc000 + 0x62d0 =
|
|
||||||
0x0ae22d0. Benutzen Sie den
|
|
||||||
<command>add-symbol-file</command>-Befehl in GDB, um dem
|
|
||||||
Debugger das Modul mitzuteilen:</para>
|
|
||||||
|
|
||||||
<screen><prompt>(kgdb)</prompt> <userinput>add-symbol-file /sys/modules/linux/linux.ko 0xc0ae22d0</userinput>
|
|
||||||
add symbol table from file "/sys/modules/linux/linux.ko" at text_addr = 0xc0ae22d0?
|
|
||||||
(y or n) <userinput>y</userinput>
|
|
||||||
Reading symbols from /sys/modules/linux/linux.ko...done.
|
|
||||||
<prompt>(kgdb)</prompt></screen>
|
|
||||||
|
|
||||||
<para>Sie sollten nun auf alle Symbole im Modul zugreifen
|
|
||||||
können.</para>
|
|
||||||
</sect1>
|
|
||||||
|
|
||||||
<sect1 id="kerneldebug-console">
|
<sect1 id="kerneldebug-console">
|
||||||
<title>Fehlersuche bei einem Konsolen-Treiber</title>
|
<title>Fehlersuche bei einem Konsolen-Treiber</title>
|
||||||
|
|
||||||
|
|
|
@ -3,8 +3,8 @@
|
||||||
The FreeBSD German Documentation Project
|
The FreeBSD German Documentation Project
|
||||||
|
|
||||||
$FreeBSD$
|
$FreeBSD$
|
||||||
$FreeBSDde: de-docproj/books/handbook/bibliography/chapter.sgml,v 1.46 2010/06/18 11:55:07 jkois Exp $
|
$FreeBSDde: de-docproj/books/handbook/bibliography/chapter.sgml,v 1.47 2010/10/09 16:20:29 bcr Exp $
|
||||||
basiert auf: 1.88
|
basiert auf: 1.89
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<appendix id="bibliography">
|
<appendix id="bibliography">
|
||||||
|
@ -631,8 +631,8 @@
|
||||||
<para>Simon Garfinkel, Daniel Weise, Steven Strassmann. <emphasis>The
|
<para>Simon Garfinkel, Daniel Weise, Steven Strassmann. <emphasis>The
|
||||||
UNIX-HATERS Handbook</emphasis>. IDG Books Worldwide, Inc.,
|
UNIX-HATERS Handbook</emphasis>. IDG Books Worldwide, Inc.,
|
||||||
1994. ISBN 1-56884-203-1. <ulink
|
1994. ISBN 1-56884-203-1. <ulink
|
||||||
url="http://research.microsoft.com/~daniel/unix-haters.html">
|
url="http://www.simson.net/ref/ugh.pdf">Online</ulink>
|
||||||
Online</ulink> verfügbar.</para>
|
verfügbar.</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
|
|
|
@ -3,8 +3,8 @@
|
||||||
The FreeBSD German Documentation Project
|
The FreeBSD German Documentation Project
|
||||||
|
|
||||||
$FreeBSD$
|
$FreeBSD$
|
||||||
$FreeBSDde: de-docproj/books/handbook/eresources/chapter.sgml,v 1.89 2010/05/14 15:50:38 fboerner Exp $
|
$FreeBSDde: de-docproj/books/handbook/eresources/chapter.sgml,v 1.90 2010/10/29 14:57:02 jkois Exp $
|
||||||
basiert auf: 1.201
|
basiert auf: 1.202
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<appendix id="eresources">
|
<appendix id="eresources">
|
||||||
|
@ -568,6 +568,11 @@
|
||||||
<entry>Token-Ring Unterstützung in FreeBSD</entry>
|
<entry>Token-Ring Unterstützung in FreeBSD</entry>
|
||||||
</row>
|
</row>
|
||||||
|
|
||||||
|
<row>
|
||||||
|
<entry>&a.toolchain.name;</entry>
|
||||||
|
<entry>Wartung der &os;-Toolchain</entry>
|
||||||
|
</row>
|
||||||
|
|
||||||
<row>
|
<row>
|
||||||
<entry>&a.usb.name;</entry>
|
<entry>&a.usb.name;</entry>
|
||||||
<entry>USB-Unterstützung in FreeBSD</entry>
|
<entry>USB-Unterstützung in FreeBSD</entry>
|
||||||
|
@ -1732,6 +1737,19 @@
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term>&a.toolchain.name;</term>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para><emphasis>Wartung der &os;-Toolchain</emphasis></para>
|
||||||
|
|
||||||
|
<para>Auf dieser Mailingliste werden alle Themen rund um
|
||||||
|
die &os;-Toolchain diskutiert. Dazu gehören der
|
||||||
|
Status von Clang und GCC, aber auch Fragen zu Programmen
|
||||||
|
wie Assemblern, Linkern und Debuggern.</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>&a.usb.name;</term>
|
<term>&a.usb.name;</term>
|
||||||
|
|
||||||
|
|
|
@ -3,8 +3,8 @@
|
||||||
The FreeBSD German Documentation Project
|
The FreeBSD German Documentation Project
|
||||||
|
|
||||||
$FreeBSD$
|
$FreeBSD$
|
||||||
$FreeBSDde: de-docproj/books/handbook/linuxemu/chapter.sgml,v 1.90 2010/02/05 16:30:28 bcr Exp $
|
$FreeBSDde: de-docproj/books/handbook/linuxemu/chapter.sgml,v 1.91 2010/10/29 14:11:14 jkois Exp $
|
||||||
basiert auf: 1.140
|
basiert auf: 1.141
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<chapter id="linuxemu">
|
<chapter id="linuxemu">
|
||||||
|
@ -1796,58 +1796,50 @@ export PATH</programlisting>
|
||||||
<thead>
|
<thead>
|
||||||
<row>
|
<row>
|
||||||
<entry>Dateisystem</entry>
|
<entry>Dateisystem</entry>
|
||||||
<entry>Größe (1k-blocks)</entry>
|
<entry>Größe der Partition</entry>
|
||||||
<entry>HDD-Größe (GB)</entry>
|
|
||||||
<entry>Gemountet nach</entry>
|
<entry>Gemountet nach</entry>
|
||||||
</row>
|
</row>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<row>
|
<row>
|
||||||
<entry><filename>/dev/da0s1a</filename></entry>
|
<entry><filename>/dev/da0s1a</filename></entry>
|
||||||
<entry>1.016.303</entry>
|
<entry>1 GB</entry>
|
||||||
<entry>1</entry>
|
|
||||||
<entry><filename>/</filename></entry>
|
<entry><filename>/</filename></entry>
|
||||||
</row>
|
</row>
|
||||||
|
|
||||||
<row>
|
<row>
|
||||||
<entry><filename>/dev/da0s1b</filename></entry>
|
<entry><filename>/dev/da0s1b</filename></entry>
|
||||||
<entry> </entry>
|
<entry>6 GB</entry>
|
||||||
<entry>6</entry>
|
|
||||||
<entry>Swap</entry>
|
<entry>Swap</entry>
|
||||||
</row>
|
</row>
|
||||||
|
|
||||||
<row>
|
<row>
|
||||||
<entry><filename>/dev/da0s1e</filename></entry>
|
<entry><filename>/dev/da0s1e</filename></entry>
|
||||||
<entry>2.032.623</entry>
|
<entry>2 GB</entry>
|
||||||
<entry>2</entry>
|
|
||||||
<entry><filename>/var</filename></entry>
|
<entry><filename>/var</filename></entry>
|
||||||
</row>
|
</row>
|
||||||
|
|
||||||
<row>
|
<row>
|
||||||
<entry><filename>/dev/da0s1f</filename></entry>
|
<entry><filename>/dev/da0s1f</filename></entry>
|
||||||
<entry>8.205.339</entry>
|
<entry>8 GB</entry>
|
||||||
<entry>8</entry>
|
|
||||||
<entry><filename>/usr</filename></entry>
|
<entry><filename>/usr</filename></entry>
|
||||||
</row>
|
</row>
|
||||||
|
|
||||||
<row>
|
<row>
|
||||||
<entry><filename>/dev/da1s1e</filename></entry>
|
<entry><filename>/dev/da1s1e</filename></entry>
|
||||||
<entry>45.734.361</entry>
|
<entry>45 GB</entry>
|
||||||
<entry>45</entry>
|
|
||||||
<entry><filename>/compat/linux/oracle</filename></entry>
|
<entry><filename>/compat/linux/oracle</filename></entry>
|
||||||
</row>
|
</row>
|
||||||
|
|
||||||
<row>
|
<row>
|
||||||
<entry><filename>/dev/da1s1f</filename></entry>
|
<entry><filename>/dev/da1s1f</filename></entry>
|
||||||
<entry>2.032.623</entry>
|
<entry>2 GB</entry>
|
||||||
<entry>2</entry>
|
|
||||||
<entry><filename>/compat/linux/sapmnt</filename></entry>
|
<entry><filename>/compat/linux/sapmnt</filename></entry>
|
||||||
</row>
|
</row>
|
||||||
|
|
||||||
<row>
|
<row>
|
||||||
<entry><filename>/dev/da1s1g</filename></entry>
|
<entry><filename>/dev/da1s1g</filename></entry>
|
||||||
<entry>2.032.623</entry>
|
<entry>2 GB</entry>
|
||||||
<entry>2</entry>
|
|
||||||
<entry><filename>/compat/linux/usr/sap</filename></entry>
|
<entry><filename>/compat/linux/usr/sap</filename></entry>
|
||||||
</row>
|
</row>
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
<!--
|
<!--
|
||||||
Namen der FreeBSD Mailinglisten und verwandter Software
|
Namen der FreeBSD Mailinglisten und verwandter Software
|
||||||
|
|
||||||
$FreeBSDde: de-docproj/share/sgml/mailing-lists.ent,v 1.38 2010/05/14 16:22:05 fboerner Exp $
|
|
||||||
$FreeBSD$
|
$FreeBSD$
|
||||||
basiert auf: 1.70
|
$FreeBSDde: de-docproj/share/sgml/mailing-lists.ent,v 1.39 2010/10/29 14:57:02 jkois Exp $
|
||||||
|
basiert auf: 1.71
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<!ENTITY a.mailman.listinfo "http://lists.FreeBSD.org/mailman/listinfo">
|
<!ENTITY a.mailman.listinfo "http://lists.FreeBSD.org/mailman/listinfo">
|
||||||
|
@ -591,6 +591,10 @@
|
||||||
<!ENTITY a.tokenring.name "<ulink
|
<!ENTITY a.tokenring.name "<ulink
|
||||||
url='&a.tokenring.url;'>freebsd-tokenring</ulink>">
|
url='&a.tokenring.url;'>freebsd-tokenring</ulink>">
|
||||||
|
|
||||||
|
<!ENTITY a.toolchain.url "&a.mailman.listinfo;/freebsd-toolchain">
|
||||||
|
<!ENTITY a.toolchain "<ulink url='&a.toolchain.url;'>FreeBSD integrated toolchain</ulink>">
|
||||||
|
<!ENTITY a.toolchain.name "<ulink url='&a.toolchain.url;'>freebsd-toolchain</ulink>">
|
||||||
|
|
||||||
<!ENTITY a.usb.url "&a.mailman.listinfo;/freebsd-usb">
|
<!ENTITY a.usb.url "&a.mailman.listinfo;/freebsd-usb">
|
||||||
<!ENTITY a.usb "<ulink url='&a.usb.url;'>FreeBSD USB</ulink>">
|
<!ENTITY a.usb "<ulink url='&a.usb.url;'>FreeBSD USB</ulink>">
|
||||||
<!ENTITY a.usb.name "<ulink url='&a.usb.url;'>freebsd-usb</ulink>">
|
<!ENTITY a.usb.name "<ulink url='&a.usb.url;'>freebsd-usb</ulink>">
|
||||||
|
|
Loading…
Reference in a new issue