Whitespace fixes. Translators can ignore them.

This commit is contained in:
Benedict Reuschling 2014-05-26 17:21:11 +00:00
parent 158eeecfa8
commit 2d07b07efe
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=44961

View file

@ -1,14 +1,24 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN"
"http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd">
<article xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:lang="en">
<info><title>Remote Installation of the &os; Operating System Without a
<article xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
xml:lang="en">
<info>
<title>Remote Installation of the &os; Operating System Without a
Remote Console</title>
<author><personname><firstname>Daniel</firstname><surname>Gerzo</surname></personname><affiliation>
<address><email>danger@FreeBSD.org</email></address>
</affiliation></author>
<author>
<personname>
<firstname>Daniel</firstname>
<surname>Gerzo</surname>
</personname>
<affiliation>
<address>
<email>danger@FreeBSD.org</email>
</address>
</affiliation>
</author>
<legalnotice xml:id="trademarks" role="trademarks">
&tm-attrib.freebsd;
@ -27,25 +37,25 @@
<abstract>
<para>This article documents the remote installation of the &os;
operating system when the console of the remote system is
unavailable. The main idea behind this article is the result of
a collaboration with &a.mm.email; with valuable input provided by
&a.pjd.email;.</para>
unavailable. The main idea behind this article is the result
of a collaboration with &a.mm.email; with valuable input
provided by &a.pjd.email;.</para>
</abstract>
</info>
<sect1 xml:id="background">
<title>Background</title>
<para>There are many server hosting providers in the world, but very
few of them are officially supporting &os;. They usually provide
support for a &linux; distribution to be installed on the servers
they offer.</para>
<para>There are many server hosting providers in the world, but
very few of them are officially supporting &os;. They usually
provide support for a &linux; distribution to be installed on
the servers they offer.</para>
<para>In some cases, these companies will install your preferred
&linux; distribution if you request it. Using this option, we will
attempt to install &os;. In other cases, they may offer a rescue
system which would be used in an emergency. It is possible to use
this for our purposes as well.</para>
&linux; distribution if you request it. Using this option, we
will attempt to install &os;. In other cases, they may offer a
rescue system which would be used in an emergency. It is
possible to use this for our purposes as well.</para>
<para>This article covers the basic installation and configuration
steps required to bootstrap a remote installation of &os; with
@ -56,18 +66,20 @@
<title>Introduction</title>
<para>This section will summarize the purpose of this article and
better explain what is covered herein. The instructions included
in this article will benefit those using services provided by
colocation facilities not supporting &os;.</para>
better explain what is covered herein. The instructions
included in this article will benefit those using services
provided by colocation facilities not supporting &os;.</para>
<procedure>
<step>
<para>As we have mentioned in the <link linkend="background">Background</link> section, many of the
reputable server hosting companies provide some kind of rescue
system, which is booted from their <acronym>LAN</acronym> and
accessible over <application>SSH</application>. They usually
provide this support in order to help their customers fix
broken operating systems. As this article will explain, it is
<para>As we have mentioned in the <link
linkend="background">Background</link> section, many of
the reputable server hosting companies provide some kind of
rescue system, which is booted from their
<acronym>LAN</acronym> and accessible over
<application>SSH</application>. They usually provide this
support in order to help their customers fix broken
operating systems. As this article will explain, it is
possible to install &os; with the help of these rescue
systems.</para>
<!-- XXXTR: Solaris has a restore command, something like
@ -77,10 +89,11 @@
<step>
<para>The next section of this article will describe how to
configure, and build minimalistic &os; on the local machine.
That version will eventually be running on the remote machine
from a ramdisk, which will allow us to install a complete &os;
operating system from an <acronym>FTP</acronym> mirror using
the <application>sysinstall</application> utility.</para>
That version will eventually be running on the remote
machine from a ramdisk, which will allow us to install a
complete &os; operating system from an
<acronym>FTP</acronym> mirror using the
<application>sysinstall</application> utility.</para>
</step>
<step>
@ -110,8 +123,8 @@
</listitem>
<listitem>
<para>Have the &os; installation <acronym>ISO</acronym> image
or <acronym>CD</acronym> handy</para>
<para>Have the &os; installation <acronym>ISO</acronym>
image or <acronym>CD</acronym> handy</para>
</listitem>
</itemizedlist>
</sect2>
@ -123,28 +136,29 @@
<para>Before &os; may be installed on the target system, it is
necessary to build the minimal &os; operating system image which
will boot from the hard drive. This way the new system can be
accessed from the network, and the rest of the installation can be
done without remote access to the system console.</para>
accessed from the network, and the rest of the installation can
be done without remote access to the system console.</para>
<para>The <application>mfsBSD</application> tool-set can be used to
build a tiny &os; image. As the name of
<para>The <application>mfsBSD</application> tool-set can be used
to build a tiny &os; image. As the name of
<application>mfsBSD</application> suggests (<quote>mfs</quote>
means <quote>memory file system</quote>), the resulting image runs
entirely from a ramdisk. Thanks to this feature, the manipulation
of hard drives will not be limited, therefore it will be possible
to install a complete &os; operating system. The home page of
<application>mfsBSD</application>, at <uri xlink:href="http://people.freebsd.org/~mm/mfsbsd/">http://people.freebsd.org/~mm/mfsbsd/</uri>, includes
pointers to the latest release of the toolset.</para>
means <quote>memory file system</quote>), the resulting image
runs entirely from a ramdisk. Thanks to this feature, the
manipulation of hard drives will not be limited, therefore it
will be possible to install a complete &os; operating system.
The home page of <application>mfsBSD</application>, at <uri
xlink:href="http://people.freebsd.org/~mm/mfsbsd/">http://people.freebsd.org/~mm/mfsbsd/</uri>,
includes pointers to the latest release of the toolset.</para>
<para>Please note that the internals of
<application>mfsBSD</application> and how it all fits together is
beyond the scope of this article. The interested reader should
consult the original documentation of
<application>mfsBSD</application> and how it all fits together
is beyond the scope of this article. The interested reader
should consult the original documentation of
<application>mfsBSD</application> for more details.</para>
<para>Download and extract the latest
<application>mfsBSD</application> release and change your working
directory to the directory where the
<application>mfsBSD</application> release and change your
working directory to the directory where the
<application>mfsBSD</application> scripts will reside:</para>
<screen>&prompt.root; <userinput>fetch http://people.freebsd.org/~mm/mfsbsd/mfsbsd-latest.tar.gz</userinput>
@ -152,28 +166,30 @@
&prompt.root; <userinput>cd <replaceable>mfsbsd-1.0-beta1</replaceable>/</userinput></screen>
<sect2 xml:id="mfsbsd-config">
<title>Configuration of <application>mfsBSD</application></title>
<title>Configuration of
<application>mfsBSD</application></title>
<para>Before booting <application>mfsBSD</application>, a few
important configuration options have to be set. The most
important that we have to get right is, naturally, the network
setup. The most suitable method to configure networking options
depends on whether we know beforehand the type of the network
interface we will use, and the network interface driver to be
loaded for our hardware. We will see how
setup. The most suitable method to configure networking
options depends on whether we know beforehand the type of the
network interface we will use, and the network interface
driver to be loaded for our hardware. We will see how
<application>mfsBSD</application> can be configured in either
case.</para>
<para>Another important thing to set is the
<systemitem class="username">root</systemitem> password. This can be done by editing
<filename>conf/rootpw.conf</filename>. Please keep in
mind that the file will contain your password in the plain text,
thus we do not recommend to use real password here.
Nevertheless, this is just a temporary one-time password which
can be later changed in a live system.</para>
<para>Another important thing to set is the <systemitem
class="username">root</systemitem> password. This can be
done by editing <filename>conf/rootpw.conf</filename>. Please
keep in mind that the file will contain your password in the
plain text, thus we do not recommend to use real password
here. Nevertheless, this is just a temporary one-time
password which can be later changed in a live system.</para>
<sect3>
<title>The <filename>conf/interfaces.conf</filename> method</title>
<title>The <filename>conf/interfaces.conf</filename>
method</title>
<para>When the installed network interface card is unknown, we
can use the auto-detection features of
@ -188,8 +204,9 @@ initconf_mac_ext1="00:00:00:00:00:00"
initconf_ip_ext1="192.168.0.2"
initconf_netmask_ext1="255.255.255.0"</programlisting>
<para>Do not forget to add the <literal>defaultrouter</literal>
information to <filename>conf/rc.conf</filename>:</para>
<para>Do not forget to add the
<literal>defaultrouter</literal> information to
<filename>conf/rc.conf</filename>:</para>
<programlisting>defaultrouter="192.168.0.1"</programlisting>
</sect3>
@ -198,14 +215,15 @@ initconf_netmask_ext1="255.255.255.0"</programlisting>
<title>The <filename>conf/rc.conf</filename> Method</title>
<para>When the network interface driver is known, it is more
convenient to use <filename>conf/rc.conf</filename>
for networking options. The syntax of this file is the same
as the one used in the standard &man.rc.conf.5; file of
convenient to use <filename>conf/rc.conf</filename> for
networking options. The syntax of this file is the same as
the one used in the standard &man.rc.conf.5; file of
&os;.</para>
<para>For example, if you know that a &man.re.4; network
interface is going to be available, you can set the following
options in <filename>conf/rc.conf</filename>:</para>
interface is going to be available, you can set the
following options in
<filename>conf/rc.conf</filename>:</para>
<programlisting>defaultrouter="192.168.0.1"
ifconfig_re0="inet 192.168.0.2 netmask 255.255.255.0"</programlisting>
@ -213,18 +231,21 @@ ifconfig_re0="inet 192.168.0.2 netmask 255.255.255.0"</programlisting>
</sect2>
<sect2 xml:id="mfsbsd-build">
<title>Building an <application>mfsBSD</application> Image</title>
<title>Building an <application>mfsBSD</application>
Image</title>
<para>The process of building an <application>mfsBSD</application>
image is pretty straightforward.</para>
<para>The process of building an
<application>mfsBSD</application> image is pretty
straightforward.</para>
<para>The first step is to mount the &os; installation
<acronym>CD</acronym>, or the installation
<acronym>ISO</acronym> image to <filename>/cdrom</filename>. For the sake of example,
in this article we will assume that you have downloaded the &os;
7.0-RELEASE <acronym>ISO</acronym>. Mounting this ISO image to
the <filename>/cdrom</filename> directory is
easy with the &man.mdconfig.8; utility:</para>
<acronym>ISO</acronym> image to <filename>/cdrom</filename>.
For the sake of example, in this article we will assume that
you have downloaded the &os; 7.0-RELEASE
<acronym>ISO</acronym>. Mounting this ISO image to the
<filename>/cdrom</filename> directory is easy with the
&man.mdconfig.8; utility:</para>
<screen>&prompt.root; <userinput>mdconfig -a -t vnode -u 10 -f <replaceable>7.0-RELEASE-amd64-disc1.iso</replaceable></userinput>
&prompt.root; <userinput>mount_cd9660 /dev/md10 /cdrom</userinput></screen>
@ -235,9 +256,10 @@ ifconfig_re0="inet 192.168.0.2 netmask 255.255.255.0"</programlisting>
<screen>&prompt.root; <userinput>make BASE=/cdrom/<replaceable>7.0-RELEASE</replaceable></userinput></screen>
<note>
<para>The above <command>make</command> has to be run
from the top level of the <application>mfsBSD</application>
directory tree, for example <filename>~/mfsbsd-1.0-beta1/</filename>.</para>
<para>The above <command>make</command> has to be run from the
top level of the <application>mfsBSD</application> directory
tree, for example
<filename>~/mfsbsd-1.0-beta1/</filename>.</para>
</note>
</sect2>
@ -252,20 +274,21 @@ ifconfig_re0="inet 192.168.0.2 netmask 255.255.255.0"</programlisting>
<screen>&prompt.root; <userinput>scp disk.img root@192.168.0.2:.</userinput></screen>
<para>To boot <application>mfsBSD</application> image properly, it
must be placed on the first (bootable) device of the given
machine. This may be accomplished using this example providing
that <filename>sda</filename> is the first bootable disk
device:</para>
<para>To boot <application>mfsBSD</application> image properly,
it must be placed on the first (bootable) device of the given
machine. This may be accomplished using this example
providing that <filename>sda</filename> is the first bootable
disk device:</para>
<screen>&prompt.root; <userinput>dd if=/root/disk.img of=/dev/sda bs=1m</userinput></screen>
<para>If all went well, the image should now be in the
<acronym>MBR</acronym> of the first device and the machine can
be rebooted. Watch for the machine to boot up properly with the
&man.ping.8; tool. Once it has came back on-line, it should be
possible to access it over &man.ssh.1; as user
<systemitem class="username">root</systemitem> with the configured password.</para>
be rebooted. Watch for the machine to boot up properly with
the &man.ping.8; tool. Once it has came back on-line, it
should be possible to access it over &man.ssh.1; as user
<systemitem class="username">root</systemitem> with the
configured password.</para>
</sect2>
</sect1>
@ -274,19 +297,19 @@ ifconfig_re0="inet 192.168.0.2 netmask 255.255.255.0"</programlisting>
<para>The <application>mfsBSD</application> has been successfully
booted and it should be possible to log in through &man.ssh.1;.
This section will describe how to create and label slices, set up
<application>gmirror</application> for RAID-1, and how to use
This section will describe how to create and label slices, set
up <application>gmirror</application> for RAID-1, and how to use
<application>sysinstall</application> to install a minimal
distribution of the &os; operating system.</para>
<sect2>
<title>Preparation of Hard Drives</title>
<para>The first task is to allocate disk space for &os;, i.e.: to
create slices and partitions. Obviously, the currently running
system is fully loaded in system memory and therefore there will
be no problems with manipulating hard drives. To complete this
task, it is possible to use either
<para>The first task is to allocate disk space for &os;, i.e.:
to create slices and partitions. Obviously, the currently
running system is fully loaded in system memory and therefore
there will be no problems with manipulating hard drives. To
complete this task, it is possible to use either
<application>sysinstall</application> or &man.fdisk.8; in
conjunction to &man.bsdlabel.8;.</para>
@ -295,28 +318,31 @@ ifconfig_re0="inet 192.168.0.2 netmask 255.255.255.0"</programlisting>
<screen>&prompt.root; <userinput>dd if=/dev/zero of=/dev/<replaceable>ad0</replaceable> count=2</userinput></screen>
<para>Next, create slices and label them with your preferred tool.
While it is considered easier to use
<para>Next, create slices and label them with your preferred
tool. While it is considered easier to use
<application>sysinstall</application>, a powerful and also
probably less buggy method will be to use standard text-based
&unix; tools, such as &man.fdisk.8; and &man.bsdlabel.8;, which
will also be covered in this section. The former option is well
documented in the <link xlink:href="&url.books.handbook;/install-steps.html">Installing &os;</link>
chapter of the &os; Handbook. As it was mentioned in the
introduction, this article will present how to set up a system
with RAID-1 and <application>ZFS</application> capabilities.
Our set up will consist of a small &man.gmirror.8; mirrored
<filename>/</filename> (root), <filename>/usr</filename> and <filename>/var</filename> dataset, and the rest of
the disk space will be allocated for a &man.zpool.8; mirrored
&unix; tools, such as &man.fdisk.8; and &man.bsdlabel.8;,
which will also be covered in this section. The former option
is well documented in the <link
xlink:href="&url.books.handbook;/install-steps.html">Installing
&os;</link> chapter of the &os; Handbook. As it was
mentioned in the introduction, this article will present how
to set up a system with RAID-1 and
<application>ZFS</application> capabilities. Our set up will
consist of a small &man.gmirror.8; mirrored
<filename>/</filename> (root), <filename>/usr</filename> and
<filename>/var</filename> dataset, and the rest of the disk
space will be allocated for a &man.zpool.8; mirrored
<application>ZFS</application> file system. Please note, that
the <application>ZFS</application> file system will be
configured after the &os; operating system is successfully
installed and booted.</para>
<para>The following example will describe how to create slices and
labels, initialize &man.gmirror.8; on each partition and how to
create a <application>UFS2</application> file system in each
mirrored partition:</para>
<para>The following example will describe how to create slices
and labels, initialize &man.gmirror.8; on each partition and
how to create a <application>UFS2</application> file system in
each mirrored partition:</para>
<screen>&prompt.root; <userinput>fdisk -BI /dev/ad0</userinput> <co xml:id="fdisk"/>
&prompt.root; <userinput>fdisk -BI /dev/ad1</userinput>
@ -347,13 +373,13 @@ ifconfig_re0="inet 192.168.0.2 netmask 255.255.255.0"</programlisting>
<callout arearefs="bsdlabel-editing">
<para>Now, manually edit the label of the given disk. Refer
to the &man.bsdlabel.8; manual page in order to find out how
to create partitions. Create partitions
<literal>a</literal> for <filename>/</filename> (root) file system,
<literal>b</literal> for swap, <literal>d</literal> for
<filename>/var</filename>,
<literal>e</literal> for <filename>/usr</filename> and finally
<literal>f</literal> which will later be used for
to the &man.bsdlabel.8; manual page in order to find out
how to create partitions. Create partitions
<literal>a</literal> for <filename>/</filename> (root)
file system, <literal>b</literal> for swap,
<literal>d</literal> for <filename>/var</filename>,
<literal>e</literal> for <filename>/usr</filename> and
finally <literal>f</literal> which will later be used for
<application>ZFS</application>.</para>
</callout>
@ -370,26 +396,26 @@ ifconfig_re0="inet 192.168.0.2 netmask 255.255.255.0"</programlisting>
<callout arearefs="gmirror2">
<para>Note that <option>-F</option> is used for the swap
partition. This instructs &man.gmirror.8; to assume that
the device is in the consistent state after the power/system
failure.</para>
the device is in the consistent state after the
power/system failure.</para>
</callout>
<callout arearefs="newfs">
<para>Create a <application>UFS2</application> file system on
each mirrored partition.</para>
</callout>
<para>Create a <application>UFS2</application> file system
on each mirrored partition.</para>
</callout>
</calloutlist>
</sect2>
<sect2>
<title>System Installation</title>
<para>This is the most important part. This section will describe
how to actually install the minimal distribution of &os; on the
hard drives that we have prepared in the previous section. To
accomplish this goal, all file systems need to be mounted so
<application>sysinstall</application> may write the contents of
&os; to the hard drives:</para>
<para>This is the most important part. This section will
describe how to actually install the minimal distribution of
&os; on the hard drives that we have prepared in the previous
section. To accomplish this goal, all file systems need to be
mounted so <application>sysinstall</application> may write the
contents of &os; to the hard drives:</para>
<screen>&prompt.root; <userinput>mount /dev/mirror/root /mnt</userinput>
&prompt.root; <userinput>mkdir /mnt/var /mnt/usr</userinput>
@ -401,7 +427,8 @@ ifconfig_re0="inet 192.168.0.2 netmask 255.255.255.0"</programlisting>
menu. Select <guimenuitem>Options</guimenuitem> and press
<keycap>Enter</keycap>. With the help of arrow keys, move the
cursor on the <literal>Install Root</literal> item, press
<keycap>Space</keycap> and change it to <filename>/mnt</filename>. Press
<keycap>Space</keycap> and change it to
<filename>/mnt</filename>. Press
<keycap>Enter</keycap> to submit your changes and exit the
<guimenuitem>Options</guimenuitem> menu by pressing
<keycap>q</keycap>.</para>
@ -429,23 +456,24 @@ ifconfig_re0="inet 192.168.0.2 netmask 255.255.255.0"</programlisting>
<para>In the <guimenuitem>Media</guimenuitem> menu, select
<option>FTP</option>. Select the nearest mirror and let
<application>sysinstall</application> assume that the network is
already configured. You will be returned back to the
<application>sysinstall</application> assume that the network
is already configured. You will be returned back to the
<guimenuitem>Custom</guimenuitem> menu.</para>
<para>Finally, perform the system installation by selecting the
last option, <guimenuitem>Commit</guimenuitem>.
Exit <application>sysinstall</application> when it finishes the
last option, <guimenuitem>Commit</guimenuitem>. Exit
<application>sysinstall</application> when it finishes the
installation.</para>
</sect2>
<sect2>
<title>Post Installation Steps</title>
<para>The &os; operating system should be installed now; however,
the process is not finished yet. It is necessary to perform
some post installation steps in order to allow &os; to boot in
the future and to be able to log in to the system.</para>
<para>The &os; operating system should be installed now;
however, the process is not finished yet. It is necessary to
perform some post installation steps in order to allow &os; to
boot in the future and to be able to log in to the
system.</para>
<para>You must now &man.chroot.8; into the freshly installed
system in order to finish the installation. Use the following
@ -483,8 +511,8 @@ ifconfig_re0="inet 192.168.0.2 netmask 255.255.255.0"</programlisting>
</listitem>
<listitem>
<para>Create <filename>/boot/loader.conf</filename>
with the following contents:</para>
<para>Create <filename>/boot/loader.conf</filename> with the
following contents:</para>
<programlisting>geom_mirror_load="YES"
zfs_load="YES"</programlisting>
@ -501,8 +529,8 @@ zfs_load="YES"</programlisting>
<listitem>
<para>Add additional users to the system using the
&man.adduser.8; tool. Do not forget to add a user to the
<systemitem class="groupname">wheel</systemitem> group so you may obtain root
access after the reboot.</para>
<systemitem class="groupname">wheel</systemitem> group so
you may obtain root access after the reboot.</para>
</listitem>
<listitem>
@ -510,7 +538,7 @@ zfs_load="YES"</programlisting>
</listitem>
</itemizedlist>
<para>The system should now be ready for the next boot. Use the
<para>The system should now be ready for the next boot. Use the
&man.reboot.8; command to reboot your system.</para>
</sect2>
</sect1>
@ -518,14 +546,14 @@ zfs_load="YES"</programlisting>
<sect1 xml:id="zfs">
<title>ZFS</title>
<para>If your system survived the reboot, it should now be possible
to log in. Welcome to the fresh &os; installation, performed
remotely without the use of a remote console!</para>
<para>If your system survived the reboot, it should now be
possible to log in. Welcome to the fresh &os; installation,
performed remotely without the use of a remote console!</para>
<para>The only remaining step is to configure &man.zpool.8; and
create some &man.zfs.8; file systems. Creating and administering
<application>ZFS</application> is very straightforward. First,
create a mirrored pool:</para>
create some &man.zfs.8; file systems. Creating and
administering <application>ZFS</application> is very
straightforward. First, create a mirrored pool:</para>
<screen>&prompt.root; <userinput>zpool create tank mirror /dev/ad[01]s1f</userinput></screen>
@ -539,7 +567,8 @@ zfs_load="YES"</programlisting>
&prompt.root; <userinput>zfs set mountpoint=/usr/src tank/src</userinput></screen>
<para>That is all. If you are interested in more details about
<application>ZFS</application> on &os;, please refer to the <link xlink:href="http://wiki.freebsd.org/ZFS">ZFS</link> section of the &os;
Wiki.</para>
<application>ZFS</application> on &os;, please refer to the
<link xlink:href="http://wiki.freebsd.org/ZFS">ZFS</link>
section of the &os; Wiki.</para>
</sect1>
</article>