Bring in Alfred Perlstein's PXE tutorial.
PR: docs/20794
This commit is contained in:
parent
ee8183e279
commit
913d3010c6
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=9707
2 changed files with 293 additions and 0 deletions
en_US.ISO8859-1/articles/pxe
13
en_US.ISO8859-1/articles/pxe/Makefile
Normal file
13
en_US.ISO8859-1/articles/pxe/Makefile
Normal file
|
@ -0,0 +1,13 @@
|
|||
|
||||
DOC?= article
|
||||
|
||||
FORMATS?= html
|
||||
|
||||
INSTALL_COMPRESSED?=gz
|
||||
INSTALL_ONLY_COMPRESSED?=
|
||||
|
||||
SRCS= article.sgml
|
||||
|
||||
DOC_PREFIX?= ${.CURDIR}/../../..
|
||||
|
||||
.include "${DOC_PREFIX}/share/mk/doc.project.mk"
|
280
en_US.ISO8859-1/articles/pxe/article.sgml
Normal file
280
en_US.ISO8859-1/articles/pxe/article.sgml
Normal file
|
@ -0,0 +1,280 @@
|
|||
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN" [
|
||||
<!ENTITY % man PUBLIC "-//FreeBSD//ENTITIES DocBook Manual Page Entities//EN">
|
||||
%man
|
||||
]>
|
||||
|
||||
<article>
|
||||
<articleinfo>
|
||||
<title>FreeBSD Jumpstart Guide</title>
|
||||
|
||||
<authorgroup>
|
||||
<author>
|
||||
<firstname>Alfred</firstname>
|
||||
<surname>Perlstein</surname>
|
||||
|
||||
<affiliation>
|
||||
<address><email>alfred@FreeBSD.org</email></address>
|
||||
</affiliation>
|
||||
</author>
|
||||
</authorgroup>
|
||||
|
||||
<pubdate>$FreeBSD$</pubdate>
|
||||
|
||||
<abstract>
|
||||
<para>This article details the method used to allow machines to install
|
||||
FreeBSD using the Intel PXE method of booting a machine over a network.
|
||||
</para>
|
||||
</abstract>
|
||||
</articleinfo>
|
||||
|
||||
<sect1 id="introduction">
|
||||
<title>Introduction</title>
|
||||
|
||||
<warning>
|
||||
<para>This procedure will make the 'Server' both insecure and dangerous,
|
||||
it's best to just keep the 'Server' on it's own hub and not in any way
|
||||
accessable by any machines other than the 'Clients'.</para>
|
||||
</warning>
|
||||
|
||||
<para>Terminology : </para>
|
||||
|
||||
<informaltable frame="none">
|
||||
<tgroup cols="2">
|
||||
|
||||
<tbody>
|
||||
<row>
|
||||
<entry>Server</entry>
|
||||
<entry>The machine offering netboot and install options.</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry>Client</entry>
|
||||
<entry>The machine that will have FreeBSD installed on it.</entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</tgroup>
|
||||
</informaltable>
|
||||
|
||||
<para>Requires:
|
||||
Clients supporting the Intel PXE netboot option, an ethernet connection.
|
||||
</para>
|
||||
|
||||
<para>Please let me know if you come across anything you have problems with
|
||||
or suggestions for additional documentation.</para>
|
||||
|
||||
<para>If you'd like someone to train/implement a specific netinstall system
|
||||
for you, please send email so that we can discuss terms.</para>
|
||||
|
||||
<para>I'd also like to thank Paul Saab <email>ps@FreeBSD.org</email> and
|
||||
John Baldin <email>jhb@FreeBSD.org</email> for doing most of the
|
||||
programming work on pxeboot, the interface to Intel's PXE (netboot)
|
||||
system.</para>
|
||||
</sect1>
|
||||
|
||||
<sect1 id="server-config">
|
||||
<title>Server Configuration</title>
|
||||
|
||||
<procedure>
|
||||
<step>
|
||||
<para>Install DHCP : Install isc-dhcp-2.0 you can use this config file
|
||||
<ulink url="http://people.freebsd.org/~alfred/UNKNOWN/dhcpd.conf">
|
||||
dhcpd.conf</ulink>, stick it in /usr/local/etc/</para>
|
||||
</step>
|
||||
|
||||
<step>
|
||||
<para>Enable tftp:</para>
|
||||
|
||||
<procedure>
|
||||
<step>
|
||||
<para>Make a directory <filename>/usr/tftpboot</filename></para>
|
||||
</step>
|
||||
|
||||
<step>
|
||||
<para>Add this line to your
|
||||
<filename>/etc/inetd.conf:</filename></para>
|
||||
|
||||
<programlisting>tftp dgram udp wait nobody /usr/libexec/tftpd</programlisting>
|
||||
</step>
|
||||
|
||||
<step>
|
||||
<screen>&prompt.root; <userinput>tftpd /usr/tftpboot</userinput></screen>
|
||||
</step>
|
||||
</procedure>
|
||||
|
||||
</step>
|
||||
|
||||
<step>
|
||||
<para>Enable NFS:</para>
|
||||
|
||||
<procedure>
|
||||
<step>
|
||||
<para>Add this to <filename>/etc/rc.conf</filename>:</para>
|
||||
|
||||
<programlisting>nfs_server_enable="YES"</programlisting>
|
||||
</step>
|
||||
|
||||
<step>
|
||||
<para>Add this to <filename>/etc/exports</filename>:</para>
|
||||
|
||||
<programlisting>/usr -alldirs -ro</programlisting>
|
||||
</step>
|
||||
</procedure>
|
||||
</step>
|
||||
|
||||
<step>
|
||||
<para>Reboot to enable the new services or start them
|
||||
manually.</para>
|
||||
</step>
|
||||
</procedure>
|
||||
</sect1>
|
||||
|
||||
<sect1 id="bootstrap-config">
|
||||
<title>Bootstrap Setup</title>
|
||||
|
||||
<procedure>
|
||||
<step>
|
||||
<para>Download bootfiles : Download the
|
||||
<ulink url="ftp://ftp.FreeBSD.org/pub/FreeBSD/snapshots/i386/kern.flp">
|
||||
kern.flp</ulink> and
|
||||
<ulink url="ftp://ftp.FreeBSD.opg/pub/FreeBSD/snapshots/i386/mfsroot.flp">
|
||||
mfsroot.flp</ulink> floppy images.</para>
|
||||
</step>
|
||||
|
||||
<step>
|
||||
<para>Setup tftp/pxe-boot directory:</para>
|
||||
|
||||
<procedure>
|
||||
<step>
|
||||
<para>Put pxeboot in the boot directory:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>rm -rf /usr/obj/*</userinput>
|
||||
&prompt.root; <userinput>cd /usr/src/sys/boot</userinput>
|
||||
&prompt.root; <userinput>make</userinput>
|
||||
&prompt.root; <userinput>cp /usr/src/sys/boot/i386/pxeldr/pxeboot /usr/tftpboot</userinput></screen>
|
||||
</step>
|
||||
|
||||
<step>
|
||||
<para>Using the vndevice mount the <filename>kern.flp</filename>
|
||||
file and copy its contents to
|
||||
<filename>/usr/tftpboot</filename>:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>vnconfig vn0 kern.flp</userinput> # associate a vndevice with the file
|
||||
&prompt.root; <userinput>mount /dev/vn0 /mnt</userinput> # mount it
|
||||
&prompt.root; <userinput>cp -R /mnt /usr/tftpboot</userinput> # copy the contents to /usr/tftpboot
|
||||
&prompt.root; <userinput>umount /mnt</userinput> # unmount it
|
||||
&prompt.root; <userinput>vnconfig -u vn0</userinput> # disassociate the vndevice from the file</screen>
|
||||
</step>
|
||||
</procedure>
|
||||
</step>
|
||||
|
||||
<step>
|
||||
<para>Compile a custom kernel for the clients(particularly to avoid
|
||||
the device config screen at boot) and stick it in
|
||||
<filename>/usr/tftpboot</filename>.</para>
|
||||
</step>
|
||||
|
||||
<step>
|
||||
<para> Make a special <filename>loader.rc</filename> to and install it
|
||||
in <filename>/usr/tftpboot/boot/loader.rc</filename> so that it
|
||||
doesn't prompt for the second disk, here's
|
||||
<ulink url="http://people.FreeBSD.org/~alfred/UNKNOWN/loader.rc">
|
||||
mine</ulink>.</para>
|
||||
</step>
|
||||
|
||||
<step>
|
||||
<para> Extract the installer and helper utilities from the mfsroot disk
|
||||
and uncompress them, put them in <filename>/usr/tftpboot</filename>
|
||||
as well:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>vnconfig vn0 mfsroot.flp</userinput> # associate a vndevice with the file
|
||||
&prompt.root; <userinput>mount /dev/vn0 /mnt</userinput> # mount it
|
||||
&prompt.root; <userinput>cp /mnt/mfsroot.gz /usr/tftpboot</userinput> # copy the contents to /usr/tftpboot
|
||||
&prompt.root; <userinput>umount /mnt</userinput> # unmount it
|
||||
&prompt.root; <userinput>vnconfig -u vn0</userinput> # disassociate the vndevice from the file
|
||||
&prompt.root; <userinput>cd /usr/tftpboot</userinput> # get into the pxeboot directory
|
||||
&prompt.root; <userinput>gunzip mfsroot.gz</userinput> # uncompress the mfsroot</screen>
|
||||
</step>
|
||||
|
||||
<step>
|
||||
<para>Make your sysinstall script <filename>install.cfg</filename>, you
|
||||
can use
|
||||
<ulink url="http://prople.FreeBSD.org/~alfred/UNKNOWN/install.cfg">
|
||||
mine</ulink> as a template, but you must edit it.</para>
|
||||
</step>
|
||||
|
||||
<step>
|
||||
<para>Copy the sysinstall script into the extracted and uncompressed
|
||||
mfsroot image:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>cd /usr/tftpboot</userinput>
|
||||
&prompt.root; <userinput>vnconfig vn0 mfsroot</userinput>
|
||||
&prompt.root; <userinput>mount /dev/vn0 /mnt</userinput>
|
||||
&prompt.root; <userinput>cp install.cfg /mnt</userinput>
|
||||
&prompt.root; <userinput>umount /mnt</userinput>
|
||||
&prompt.root; <userinput>vnconfig -u vn0</userinput></screen>
|
||||
</step>
|
||||
</procedure>
|
||||
</sect1>
|
||||
|
||||
<sect1 id="install-setup">
|
||||
<title>Install Setup</title>
|
||||
|
||||
<procedure>
|
||||
<step>
|
||||
<para>Put the install files in an NFS accessable location on the
|
||||
Server. Make a directory corresponding the 'nfs' directive in the
|
||||
<filename> install.cfg</filename> file and mirror the FreeBSD
|
||||
install files there, you'll want it to look somewhat like
|
||||
this:</para>
|
||||
|
||||
<screen>ABOUT.TXT TROUBLE.TXT compat20 floppies ports
|
||||
ERRATA.TXT UPGRADE.TXT compat21 games proflibs
|
||||
HARDWARE.TXT XF86336 compat22 info src
|
||||
INSTALL.TXT bin compat3x kern.flp
|
||||
LAYOUT.TXT catpages crypto manpages
|
||||
README.TXT cdrom.inf dict mfsroot.flp
|
||||
RELNOTES.TXT compat1x doc packages</screen>
|
||||
</step>
|
||||
|
||||
<step>
|
||||
<para> Copy the compressed packages into the packages/All directory
|
||||
under <filename>nfs</filename>.</para>
|
||||
</step>
|
||||
|
||||
<step>
|
||||
<para>Make sure you have an <filename>INDEX</filename> file prepared
|
||||
in the packages directory. You can make your own
|
||||
<filename>INDEX</filename> entries like so:</para>
|
||||
|
||||
<programlisting>alfred-1.0||/|Alfred install bootstrap||alfred@FreeBSD.org||||</programlisting>
|
||||
|
||||
<para>Then you can install custom packages, particularly your own
|
||||
custom post-install package.</para>
|
||||
</step>
|
||||
</procedure>
|
||||
</sect1>
|
||||
|
||||
<sect1 id="custom-postinst-package">
|
||||
<title>Custom Post-Install Package</title>
|
||||
|
||||
<para>You can use the script <filename>pkgmaker.sh</filename> to create a
|
||||
custom package for post install, the idea is to have it install and
|
||||
configure any special things you may need done.
|
||||
<filename>pkgmaker</filename> is run in the directory above the package
|
||||
you wish to create with the single argument of the package (ie mypkg)
|
||||
which will then create a mypkg.tgz for you to include in your sysinstall
|
||||
package.</para>
|
||||
|
||||
<para>Inside your custom package dir you'll want a file called
|
||||
<filename>PLIST</filename> which contains all the files that you wish to
|
||||
install and be incorperated into your package.</para>
|
||||
|
||||
<para>You'll also want files called '<filename>pre</filename>' and
|
||||
'<filename>post</filename>' in the directory, these are shell scripts
|
||||
that you want to execute before and after your package is
|
||||
installed.</para>
|
||||
|
||||
<para>Since this package is in your <filename>install.cfg</filename> file
|
||||
it should be run and do the final configuration for you.</para>
|
||||
</sect1>
|
||||
</article>
|
Loading…
Reference in a new issue