Update to r44131:

Description on how to set up a PXE boot with NFS root.

Submitted by:	    Bjoern Heidotting (via email)
Obtained from:	    The FreeBSD German Documentation Project
This commit is contained in:
Benedict Reuschling 2014-07-22 18:46:06 +00:00
parent 2aa437ff50
commit 1219f42b7a
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=45351

View file

@ -5,7 +5,7 @@
$FreeBSD$
$FreeBSDde:$
basiert auf: r44123
basiert auf: r44131
-->
<chapter xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
@ -4260,6 +4260,12 @@ DHCP"</programlisting>
</listitem>
</itemizedlist>
<para>Um <acronym>PXE</acronym> beim Systemstart zu verwenden,
müssen Sie im <acronym>BIOS</acronym> des Rechner die
Option <literal>Über das Netzwerk starten</literal>
aktivieren. Alternativ können Sie während der
PC-Initialisierung auch eine Funktionstaste drücken.</para>
<para>Es gibt verschiedene Wege, einen plattenlosen Rechner
einzurichten. Viele Elemente sind daran beteiligt, die fast
immer an den persönlichen Geschmack angepasst werden
@ -4306,9 +4312,6 @@ DHCP"</programlisting>
werden und für andere Rechner nicht erreichbar sein.</para>
</caution>
<para>Alle Informationen in diesem Abschnitt wurden unter
&os;&nbsp;5.2.1-RELEASE getestet.</para>
<sect2>
<title>Hintergrundinformationen</title>
@ -4398,9 +4401,200 @@ DHCP"</programlisting>
</listitem>
</itemizedlist>
<para>Sie können das Verzeichnis
<filename>/tftpboot</filename> an einem beliebigen Ort auf
dem Server ablegen. Stellen Sie aber sicher, dass Sie
diesen Ort sowohl in <filename>/etc/inetd.conf</filename>
als auch in <filename>/usr/local/etc/dhcpd.conf</filename>
eingetragen haben.</para>
<para>Weitere Informationen finden Sie in &man.diskless.8;.</para>
</sect2>
<sect2 xml:id="network-pxe-nfs">
<info>
<title>Einrichtung einer &man.chroot.8;-Umgebung für das
<acronym>NFS</acronym>-Root-Dateisystem</title>
<authorgroup>
<author>
<personname>
<firstname>Craig</firstname>
<surname>Rodrigues</surname>
</personname>
<affiliation>
<address>rodrigc@FreeBSD.org</address>
</affiliation>
<contrib>Beigetragen von </contrib>
</author>
</authorgroup>
</info>
<para>Das &intel; Preboot eXecution Environment
(<acronym>PXE</acronym>) erlaubt es, ein Betriebssystem über das
Netzwerk zu starten. <acronym>PXE</acronym>-Unterstützung wird
von modernen Mainboards über das <acronym>BIOS</acronym>
bereitgestellt, wo Sie es bei den Einstellungen zum Starten über
das Netzwerk aktivieren können. Ein voll funktionsfähiges
<acronym>PXE</acronym>-Setup erfordert zusätzlich einen richtig
konfigurierten <acronym>DHCP</acronym>- und
<acronym>TFTP</acronym>-Server.</para>
<para>Sobald das Gastsystem startet, erhält es vom
<acronym>DHCP</acronym>-Server Informationen, wo der initiale
Bootloader per <acronym>TFTP</acronym> zu bekommen ist. Nachdem
das Gastsystem diese Informationen erhält, lädt es den
Bootloader über <acronym>TFTP</acronym> herunter und führt
diesen anschließend aus. Dieses Verfahren ist in Sektion 2.2.1
der <link
xlink:href="http://download.intel.com/design/archives/wfm/downloads/pxespec.pdf">Preboot
Execution Environment (PXE) Specification</link> dokumentiert.
In &os; ist <filename>/boot/pxeboot</filename> der Bootloader,
der während des <acronym>PXE</acronym>-Vorgangs abgerufen wird.
Nachdem <filename>/boot/pxeboot</filename> ausgeführt und der
&os;-Kernel geladen wurde, wird mit dem Rest der
&os;-Bootsequenz fortgefahren. Weitere Informationen über den
Bootvorgang unter &os; finden Sie in <xref
linkend="boot"/>.</para>
<procedure>
<step>
<para>Wählen Sie ein Verzeichnis welches eine
&os;-Installation enthält und über NFS eingehangen
werden kann. Als Beispiel kann das Verzeichnis
<filename>/b/tftpboot/FreeBSD/install</filename>
verwendet werden.</para>
<screen>&prompt.root; <userinput>export NFSROOTDIR=/b/tftpboot/FreeBSD/install</userinput>
&prompt.root; <userinput>mkdir -p ${NFSROOTDIR}</userinput></screen>
</step>
<step>
<para>Aktivieren Sie den NFS-Server. Diese Prozedur wird
im Kapitel <xref linkend="network-configuring-nfs"/>
beschrieben.</para>
<para>Exportieren Sie das eben erstellte Verzeichnis über
NFS, indem Sie folgende Zeile in
<filename>/etc/exports</filename> hinzufügen:</para>
<programlisting>/b -ro -alldirs</programlisting>
</step>
<step>
<para>Starten Sie den NFS-Server neu:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/nfsd restart</userinput></screen>
</step>
<step>
<para>Aktivieren Sie &man.inetd.8; wie im Kapitel <xref
linkend="network-inetd-settings"/> beschrieben.</para>
</step>
<step>
<para>Fügen Sie folgende Zeilen in
<filename>/etc/inetd.conf</filename> hinzu:</para>
<programlisting>tftp dgram udp wait root /usr/libexec/tftp tftp -l -s /b/tftpboot</programlisting>
</step>
<step>
<para>Starten Sie inetd neu:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/inetd restart</userinput></screen>
</step>
<step>
<para><link linkend="makeworld">Erstellen Sie einen neues
Basissystem und einen &os;-Kernel</link>:</para>
<screen>&prompt.root; <userinput>cd /usr/src</userinput>
&prompt.root; <userinput>make buildworld</userinput>
&prompt.root; <userinput>make buildkernel</userinput></screen>
</step>
<step>
<para>Installieren sie &os; in das Verzeichnis, welches
über <acronym>NFS</acronym> eingehangen ist:</para>
<screen>
&prompt.root; <userinput>make installworld DESTDIR=${NFSROOTDIR}</userinput>
&prompt.root; <userinput>make installkernel DESTDIR=${NFSROOTDIR}</userinput>
&prompt.root; <userinput>make distribution DESTDIR=${NFSROOTDIR}</userinput>
</screen>
</step>
<step>
<para>Testen Sie den <acronym>TFTP</acronym>-Server und
vergewissern Sie sich, dass Sie den Bootloader
herunterladen können, der über <acronym>PXE</acronym>
bereitgestellt wird:</para>
<screen>
&prompt.root; <userinput>tftp localhost</userinput>
tftp> <userinput>get FreeBSD/install/boot/pxeboot</userinput>
Received 264951 bytes in 0.1 seconds
</screen>
</step>
<step>
<para>Bearbeiten Sie
<filename>${NFSROOTDIR}/etc/fstab</filename> und
erstellen Sie einen Eintrag, um das Root-Dateisystem
über <acronym>NFS</acronym> einzuhängen:</para>
<programlisting>
# Device Mountpoint FSType Options Dump Pass
myhost.example.com:/b/tftpboot/FreeBSD/install / nfs ro 0 0
</programlisting>
<para>Ersetzen Sie
<replaceable>myhost.example.com</replaceable> durch den
Hostnamen oder die <acronym>IP</acronym>-Adresse Ihres
<acronym>NFS</acronym>-Servers. In diesem Beispiel wird
das Root-Dateisystem schreibgeschützt eingehangen, um
ein potenzielles Löschen des Inhalts durch die
<acronym>NFS</acronym>-Clients zu verhindern.</para>
</step>
<step>
<para>Setzen Sie das root-Passwort in der
&man.chroot.8;-Umgebung:</para>
<screen>&prompt.root; <userinput>chroot ${NFSROOTDIR} </userinput>
&prompt.root; <userinput>passwd</userinput></screen>
<para>Damit setzen Sie das root-Passwort für die
Client-Maschinen, welche über <acronym>PXE</acronym>
starten.</para>
</step>
<step>
<para>Aktivieren Sie &man.ssh.1; root-Logins für
Client-Maschinen, die über <acronym>PXE</acronym>
starten, indem Sie die Option
<literal>PermitRootLogin</literal> in
<filename>${NFSROOTDIR}/etc/ssh/sshd_config</filename>
aktivieren. Dies ist in &man.sshd.config.5;
dokumentiert.</para>
</step>
<step>
<para>Führen Sie weitere Anpassungen der
&man.chroot.8;-Umgebung in ${NFSROOTDIR} durch, wie zum
Beispiel die Installation weiterer Pakete mittels
&man.pkg.add.1;, dass Bearbeiten der Passwortdatei mit
&man.vipw.8;, oder &man.amd.conf.5; für den Automounter.
Ein Beispiel:</para>
<screen>
&prompt.root; <userinput>chroot ${NFSROOTDIR}</userinput>
&prompt.root; <userinput>pkg_add -r bash</userinput></screen>
</step>
</procedure>
</sect2>
<sect2 xml:id="network-pxe-setting-up-dhcp">
<title>Konfiguration des
<application>ISC DHCP</application>-Servers</title>
@ -4598,108 +4792,6 @@ margaux:ha=0123456789ab:tc=.def100</programlisting>
</sect2>
-->
<sect2>
<title>Konfiguration des
<acronym>NFS</acronym>-Servers</title>
<para>Aktivieren Sie <acronym>NFS</acronym> und exportieren
Sie die entsprechenden Dateisysteme auf dem
<acronym>NFS</acronym>-Server.</para>
<para>Fügen Sie folgende Zeile in
<filename>/etc/rc.conf</filename> hinzu:</para>
<programlisting>nfs_server_enable="YES"</programlisting>
<para>Exportieren Sie das Verzeichnis, in dem sich das
Wurzelverzeichnis für den plattenlosen Betrieb befindet,
indem Sie folgende Zeile in
<filename>/etc/exports</filename> hinzufügen (passen Sie
dabei den <foreignphrase>mountpoint</foreignphrase> an und
ersetzen Sie <replaceable>corbieres</replaceable> durch
den Namen Ihres plattenlosen Rechners):</para>
<programlisting><replaceable>/data/misc</replaceable>
-alldirs -ro <replaceable>margaux corbieres</replaceable>
</programlisting>
<para>Weisen Sie nun <application>mountd</application> an,
seine Konfigurationsdatei neu einzulesen. Wenn Sie
<acronym>NFS</acronym> erst in der Datei
<filename>/etc/rc.conf</filename> aktivieren mussten,
sollten Sie stattdessen den Rechner neu starten. Dadurch
wird die Konfigurationsdatei ebenfalls
neu eingelesen.</para>
<screen>&prompt.root; <userinput>service mountd restart</userinput></screen>
</sect2>
<sect2>
<title>Konfiguration des
<acronym>TFTP</acronym>-Servers</title>
<para>Um <acronym>PXE</acronym> beim Systemstart zu verwenden,
müssen Sie im <acronym>BIOS</acronym> des Rechner die
Option <literal>Über das Netzwerk starten</literal>
aktivieren. Alternativ können Sie während der
PC-Initialisierung auch eine Funktionstaste drücken.
</para>
<indexterm>
<primary>TFTP</primary>
<secondary>plattenloser Betrieb</secondary>
</indexterm>
<indexterm>
<primary>NFS</primary>
<secondary>plattenloser Betrieb</secondary>
</indexterm>
<para>Führen Sie folgende Schritte aus um
&man.tftpd.8; zu aktivieren:</para>
<procedure>
<step>
<para>Erzeugen Sie ein Verzeichnis, in dem
<application>tftpd</application> seine Dateien ablegt,
beispielsweise <filename>/tftpboot</filename>.</para>
</step>
<step>
<para>Fügen Sie folgende Zeile in
<filename>/etc/inetd.conf</filename> ein:</para>
<programlisting>tftp dgram udp wait root /usr/libexec/tftpd tftpd -s /tftpboot</programlisting>
<note><para>Anscheinend benötigen zumindest einige
<acronym>PXE</acronym>-Versionen die
<acronym>TCP</acronym>-Version von
<acronym>TFTP</acronym>. Sollte dies bei Ihnen der
Fall sein, fügen Sie eine zweite Zeile ein, in der
Sie <literal>dgram udp</literal> durch
<literal>stream tcp</literal> ersetzen.</para>
</note>
</step>
<step>
<para>Weisen Sie <application>inetd</application> an, seine
Konfiguration erneut einzulesen (Damit der folgende
Befehl funktioniert, muss die Option
<option>inetd_enable="YES"</option> in der Datei
<filename>/etc/rc.conf</filename> vorhanden sein.):</para>
<screen>&prompt.root; <userinput>/etc/rc.d/inetd restart</userinput></screen>
</step>
</procedure>
<para>Sie können das Verzeichnis
<filename>/tftpboot</filename> an einem beliebigen Ort auf
dem Server ablegen. Stellen Sie aber sicher, dass Sie
diesen Ort sowohl in <filename>/etc/inetd.conf</filename>
als auch in <filename>/usr/local/etc/dhcpd.conf</filename>
eingetragen haben.</para>
</sect2>
<sect2>
<title>Vorbereitung des Root-Dateisystems</title>
@ -4829,197 +4921,6 @@ cd /usr/src/etc; make distribution</programlisting>
Gerätedateien dort mit &man.devfs.5; zu erzeugen.</para>
</sect2>
<sect2 xml:id="network-pxe-nfs">
<info>
<title><acronym>PXE</acronym>-Boot mit einem
<acronym>NFS</acronym>-Root-Dateisystem</title>
<authorgroup>
<author>
<personname>
<firstname>Craig</firstname>
<surname>Rodrigues</surname>
</personname>
<affiliation>
<address>rodrigc@FreeBSD.org</address>
</affiliation>
<contrib>Beigetragen von </contrib>
</author>
</authorgroup>
</info>
<para>Das &intel; Preboot eXecution Environment
(<acronym>PXE</acronym>) erlaubt es, ein Betriebssystem über das
Netzwerk zu starten. <acronym>PXE</acronym>-Unterstützung wird
von modernen Mainboards über das <acronym>BIOS</acronym>
bereitgestellt, wo Sie es bei den Einstellungen zum Starten über
das Netzwerk aktivieren können. Ein voll funktionsfähiges
<acronym>PXE</acronym>-Setup erfordert zusätzlich einen richtig
konfigurierten <acronym>DHCP</acronym>- und
<acronym>TFTP</acronym>-Server.</para>
<para>Sobald das Gastsystem startet, erhält es vom
<acronym>DHCP</acronym>-Server Informationen, wo der initiale
Bootloader per <acronym>TFTP</acronym> zu bekommen ist. Nachdem
das Gastsystem diese Informationen erhält, lädt es den
Bootloader über <acronym>TFTP</acronym> herunter und führt
diesen anschließend aus. Dieses Verfahren ist in Sektion 2.2.1
der <link
xlink:href="http://download.intel.com/design/archives/wfm/downloads/pxespec.pdf">Preboot
Execution Environment (PXE) Specification</link> dokumentiert.
In &os; ist <filename>/boot/pxeboot</filename> der Bootloader,
der während des <acronym>PXE</acronym>-Vorgangs abgerufen wird.
Nachdem <filename>/boot/pxeboot</filename> ausgeführt und der
&os;-Kernel geladen wurde, wird mit dem Rest der
&os;-Bootsequenz fortgefahren. Weitere Informationen über den
Bootvorgang unter &os; finden Sie in <xref
linkend="boot"/>.</para>
</sect2>
<sect2>
<title>Einrichtung der <command>chroot</command>-Umgebung für
das NFS-Root-Dateisystem</title>
<procedure>
<step>
<para>Wählen Sie ein Verzeichnis welches eine
&os;-Installation enthält und über NFS eingehangen
werden kann. Als Beispiel kann das Verzeichnis
<filename>/b/tftpboot/FreeBSD/install</filename>
verwendet werden.</para>
<screen>&prompt.root; <userinput>export NFSROOTDIR=/b/tftpboot/FreeBSD/install</userinput>
&prompt.root; <userinput>mkdir -p ${NFSROOTDIR}</userinput></screen>
</step>
<step>
<para>Aktivieren Sie den NFS-Server. Diese Prozedur wird
im Kapitel <xref linkend="network-configuring-nfs"/>
beschrieben.</para>
<para>Exportieren Sie das eben erstellte Verzeichnis über
NFS, indem Sie folgende Zeile in
<filename>/etc/exports</filename> hinzufügen:</para>
<programlisting>/b -ro -alldirs</programlisting>
</step>
<step>
<para>Starten Sie den NFS-Server neu:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/nfsd restart</userinput></screen>
</step>
<step>
<para>Aktivieren Sie &man.inetd.8; wie im Kapitel <xref
linkend="network-inetd-settings"/> beschrieben.</para>
</step>
<step>
<para>Fügen Sie folgende Zeilen in
<filename>/etc/inetd.conf</filename> hinzu:</para>
<programlisting>tftp dgram udp wait root /usr/libexec/tftp tftp -l -s /b/tftpboot</programlisting>
</step>
<step>
<para>Starten Sie inetd neu:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/inetd restart</userinput></screen>
</step>
<step>
<para><link linkend="makeworld">Erstellen Sie einen neues
Basissystem und einen &os;-Kernel</link>:</para>
<screen>&prompt.root; <userinput>cd /usr/src</userinput>
&prompt.root; <userinput>make buildworld</userinput>
&prompt.root; <userinput>make buildkernel</userinput></screen>
</step>
<step>
<para>Installieren sie &os; in das Verzeichnis, welches
über <acronym>NFS</acronym> eingehangen ist:</para>
<screen>
&prompt.root; <userinput>make installworld DESTDIR=${NFSROOTDIR}</userinput>
&prompt.root; <userinput>make installkernel DESTDIR=${NFSROOTDIR}</userinput>
&prompt.root; <userinput>make distribution DESTDIR=${NFSROOTDIR}</userinput>
</screen>
</step>
<step>
<para>Testen Sie den <acronym>TFTP</acronym>-Server und
vergewissern Sie sich, dass Sie den Bootloader
herunterladen können, der über <acronym>PXE</acronym>
bereitgestellt wird:</para>
<screen>
&prompt.root; <userinput>tftp localhost</userinput>
tftp> <userinput>get FreeBSD/install/boot/pxeboot</userinput>
Received 264951 bytes in 0.1 seconds
</screen>
</step>
<step>
<para>Bearbeiten Sie
<filename>${NFSROOTDIR}/etc/fstab</filename> und
erstellen Sie einen Eintrag, um das Root-Dateisystem
über <acronym>NFS</acronym> einzuhängen:</para>
<programlisting>
# Device Mountpoint FSType Options Dump Pass
myhost.example.com:/b/tftpboot/FreeBSD/install / nfs ro 0 0
</programlisting>
<para>Ersetzen Sie
<replaceable>myhost.example.com</replaceable> durch den
Hostnamen oder die <acronym>IP</acronym>-Adresse Ihres
<acronym>NFS</acronym>-Servers. In diesem Beispiel wird
das Root-Dateisystem schreibgeschützt eingehangen, um
ein potenzielles Löschen des Inhalts durch die
<acronym>NFS</acronym>-Clients zu verhindern.</para>
</step>
<step>
<para>Setzen Sie das root-Passwort in der
&man.chroot.8;-Umgebung:</para>
<screen>&prompt.root; <userinput>chroot ${NFSROOTDIR} </userinput>
&prompt.root; <userinput>passwd</userinput></screen>
<para>Damit setzen Sie das root-Passwort für die
Client-Maschinen, welche über <acronym>PXE</acronym>
starten.</para>
</step>
<step>
<para>Aktivieren Sie &man.ssh.1; root-Logins für
Client-Maschinen, die über <acronym>PXE</acronym>
starten, indem Sie die Option
<literal>PermitRootLogin</literal> in
<filename>${NFSROOTDIR}/etc/ssh/sshd_config</filename>
aktivieren. Dies ist in &man.sshd.config.5;
dokumentiert.</para>
</step>
<step>
<para>Führen Sie weitere Anpassungen der
&man.chroot.8;-Umgebung in ${NFSROOTDIR} durch, wie zum
Beispiel die Installation weiterer Pakete mittels
&man.pkg.add.1;, dass Bearbeiten der Passwortdatei mit
&man.vipw.8;, oder &man.amd.conf.5; für den Automounter.
Ein Beispiel:</para>
<screen>
&prompt.root; <userinput>chroot ${NFSROOTDIR}</userinput>
&prompt.root; <userinput>pkg_add -r bash</userinput></screen>
</step>
</procedure>
</sect2>
<sect2>
<title>Speicher-Dateisysteme für
<filename>/etc/rc.initdiskless</filename></title>