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$ $FreeBSD$
$FreeBSDde:$ $FreeBSDde:$
basiert auf: r44123 basiert auf: r44131
--> -->
<chapter xmlns="http://docbook.org/ns/docbook" <chapter xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
@ -4260,6 +4260,12 @@ DHCP"</programlisting>
</listitem> </listitem>
</itemizedlist> </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 <para>Es gibt verschiedene Wege, einen plattenlosen Rechner
einzurichten. Viele Elemente sind daran beteiligt, die fast einzurichten. Viele Elemente sind daran beteiligt, die fast
immer an den persönlichen Geschmack angepasst werden immer an den persönlichen Geschmack angepasst werden
@ -4306,9 +4312,6 @@ DHCP"</programlisting>
werden und für andere Rechner nicht erreichbar sein.</para> werden und für andere Rechner nicht erreichbar sein.</para>
</caution> </caution>
<para>Alle Informationen in diesem Abschnitt wurden unter
&os;&nbsp;5.2.1-RELEASE getestet.</para>
<sect2> <sect2>
<title>Hintergrundinformationen</title> <title>Hintergrundinformationen</title>
@ -4398,9 +4401,200 @@ DHCP"</programlisting>
</listitem> </listitem>
</itemizedlist> </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> <para>Weitere Informationen finden Sie in &man.diskless.8;.</para>
</sect2> </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"> <sect2 xml:id="network-pxe-setting-up-dhcp">
<title>Konfiguration des <title>Konfiguration des
<application>ISC DHCP</application>-Servers</title> <application>ISC DHCP</application>-Servers</title>
@ -4598,108 +4792,6 @@ margaux:ha=0123456789ab:tc=.def100</programlisting>
</sect2> </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> <sect2>
<title>Vorbereitung des Root-Dateisystems</title> <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> Gerätedateien dort mit &man.devfs.5; zu erzeugen.</para>
</sect2> </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> <sect2>
<title>Speicher-Dateisysteme für <title>Speicher-Dateisysteme für
<filename>/etc/rc.initdiskless</filename></title> <filename>/etc/rc.initdiskless</filename></title>