579 lines
23 KiB
XML
579 lines
23 KiB
XML
<?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
|
|
Remote Console</title>
|
|
|
|
<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;
|
|
&tm-attrib.general;
|
|
</legalnotice>
|
|
|
|
<copyright>
|
|
<year>2008</year>
|
|
<holder>The &os; Documentation Project</holder>
|
|
</copyright>
|
|
|
|
<pubdate>$FreeBSD$</pubdate>
|
|
|
|
<releaseinfo>$FreeBSD$</releaseinfo>
|
|
|
|
<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>
|
|
</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>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>
|
|
|
|
<para>This article covers the basic installation and configuration
|
|
steps required to bootstrap a remote installation of &os; with
|
|
RAID-1 and <application>ZFS</application> capabilities.</para>
|
|
</sect1>
|
|
|
|
<sect1 xml:id="intro">
|
|
<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>
|
|
|
|
<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
|
|
possible to install &os; with the help of these rescue
|
|
systems.</para>
|
|
<!-- XXXTR: Solaris has a restore command, something like
|
|
sysrestore, FreeBSD Should have one too. -->
|
|
</step>
|
|
|
|
<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>
|
|
</step>
|
|
|
|
<step>
|
|
<para>The rest of this article will describe the installation
|
|
procedure itself, as well as the configuration of the
|
|
<application>ZFS</application> file system.</para>
|
|
</step>
|
|
</procedure>
|
|
|
|
<sect2 xml:id="requirements">
|
|
<title>Requirements</title>
|
|
|
|
<para>To continue successfully, you must:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Have a network accessible operating system with
|
|
<application>SSH</application> access</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Understand the &os; installation process</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Be familiar with the &man.sysinstall.8; utility</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Have the &os; installation <acronym>ISO</acronym>
|
|
image or <acronym>CD</acronym> handy</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 xml:id="preparation">
|
|
<title>Preparation - <application>mfsBSD</application></title>
|
|
|
|
<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>
|
|
|
|
<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 <application>mfsBSD</application> <uri
|
|
xlink:href="http://mfsbsd.vx.sk/">home page</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> 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> scripts will reside:</para>
|
|
|
|
<screen>&prompt.root; <userinput>fetch http://mfsbsd.vx.sk/release/mfsbsd-<replaceable>2.1</replaceable>.tar.gz</userinput>
|
|
&prompt.root; <userinput>tar xvzf mfsbsd-<replaceable>2.1</replaceable>.tar.gz</userinput>
|
|
&prompt.root; <userinput>cd mfsbsd-<replaceable>2.1</replaceable>/</userinput></screen>
|
|
|
|
<sect2 xml:id="mfsbsd-config">
|
|
<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
|
|
<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/loader.conf</filename>. Please
|
|
see the included comments.</para>
|
|
|
|
<sect3>
|
|
<title>The <filename>conf/interfaces.conf</filename>
|
|
method</title>
|
|
|
|
<para>When the installed network interface card is unknown, it
|
|
is possible to use the auto-detection features of
|
|
<application>mfsBSD</application>. The startup scripts of
|
|
<application>mfsBSD</application> can detect the correct
|
|
driver to use, based on the MAC address of the interface, if
|
|
we set the following options in
|
|
<filename>conf/interfaces.conf</filename>:</para>
|
|
|
|
<programlisting>mac_interfaces="ext1"
|
|
ifconfig_ext1_mac="00:00:00:00:00:00"
|
|
ifconfig_ext1="inet 192.168.0.2/24"</programlisting>
|
|
|
|
<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>
|
|
|
|
<sect3>
|
|
<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
|
|
&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>
|
|
|
|
<programlisting>defaultrouter="192.168.0.1"
|
|
ifconfig_re0="inet 192.168.0.2/24"</programlisting>
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<sect2 xml:id="mfsbsd-build">
|
|
<title>Building an <application>mfsBSD</application>
|
|
Image</title>
|
|
|
|
<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; 10.1-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>FreeBSD-10.1-RELEASE-amd64-disc1.iso</replaceable></userinput>
|
|
&prompt.root; <userinput>mount_cd9660 /dev/md10 /cdrom</userinput></screen>
|
|
|
|
<para>Since the recent &os; releases do not contain regular
|
|
distribution sets, it is required to extract the &os; distribution
|
|
files from the distribution archives located on the
|
|
<acronym>ISO</acronym> image:</para>
|
|
|
|
<screen>&prompt.root; <userinput>mkdir <replaceable>DIST</replaceable></userinput>
|
|
&prompt.root; <userinput>tar -xvf /cdrom/usr/freebsd-dist/base.txz -C <replaceable>DIST</replaceable></userinput>
|
|
&prompt.root; <userinput>tar -xvf /cdrom/usr/freebsd-dist/kernel.txz -C <replaceable>DIST</replaceable></userinput></screen>
|
|
|
|
<para>Next, build the bootable <application>mfsBSD</application>
|
|
image:</para>
|
|
|
|
<screen>&prompt.root; <userinput>make BASE=<replaceable>DIST</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-2.1/</filename>.</para>
|
|
</note>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Booting <application>mfsBSD</application></title>
|
|
|
|
<para>Now that the <application>mfsBSD</application> image is
|
|
ready, it must be uploaded to the remote system running a live
|
|
rescue system or pre-installed &linux; distribution. The most
|
|
suitable tool for this task is
|
|
<application>scp</application>:</para>
|
|
|
|
<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>
|
|
|
|
<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>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<sect1 xml:id="installation">
|
|
<title>Installation of the &os; Operating System</title>
|
|
|
|
<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
|
|
<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
|
|
<application>sysinstall</application> or &man.fdisk.8; in
|
|
conjunction to &man.bsdlabel.8;.</para>
|
|
|
|
<para>At the start, mark all system disks as empty. Repeat the
|
|
following command for each hard drive:</para>
|
|
|
|
<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
|
|
<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
|
|
<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>
|
|
|
|
<screen>&prompt.root; <userinput>fdisk -BI /dev/ad0</userinput> <co xml:id="fdisk"/>
|
|
&prompt.root; <userinput>fdisk -BI /dev/ad1</userinput>
|
|
&prompt.root; <userinput>bsdlabel -wB /dev/ad0s1</userinput> <co xml:id="bsdlabel-writing"/>
|
|
&prompt.root; <userinput>bsdlabel -wB /dev/ad1s1</userinput>
|
|
&prompt.root; <userinput>bsdlabel -e /dev/ad0s1</userinput> <co xml:id="bsdlabel-editing"/>
|
|
&prompt.root; <userinput>bsdlabel /dev/ad0s1 > /tmp/bsdlabel.txt && bsdlabel -R /dev/ad1s1 /tmp/bsdlabel.txt</userinput> <co xml:id="bsdlabel-restore"/>
|
|
&prompt.root; <userinput>gmirror label root /dev/ad[01]s1a</userinput> <co xml:id="gmirror1"/>
|
|
&prompt.root; <userinput>gmirror label var /dev/ad[01]s1d</userinput>
|
|
&prompt.root; <userinput>gmirror label usr /dev/ad[01]s1e</userinput>
|
|
&prompt.root; <userinput>gmirror label -F swap /dev/ad[01]s1b</userinput> <co xml:id="gmirror2"/>
|
|
&prompt.root; <userinput>newfs /dev/mirror/root</userinput> <co xml:id="newfs"/>
|
|
&prompt.root; <userinput>newfs /dev/mirror/var</userinput>
|
|
&prompt.root; <userinput>newfs /dev/mirror/usr</userinput></screen>
|
|
|
|
<calloutlist>
|
|
<callout arearefs="fdisk">
|
|
<para>Create a slice covering the entire disk and initialize
|
|
the boot code contained in sector 0 of the given disk.
|
|
Repeat this command for all hard drives in the
|
|
system.</para>
|
|
</callout>
|
|
|
|
<callout arearefs="bsdlabel-writing">
|
|
<para>Write a standard label for each disk including the
|
|
bootstrap code.</para>
|
|
</callout>
|
|
|
|
<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
|
|
<application>ZFS</application>.</para>
|
|
</callout>
|
|
|
|
<callout arearefs="bsdlabel-restore">
|
|
<para>Import the recently created label for the second hard
|
|
drive, so both hard drives will be labeled in the same
|
|
way.</para>
|
|
</callout>
|
|
|
|
<callout arearefs="gmirror1">
|
|
<para>Initialize &man.gmirror.8; on each partition.</para>
|
|
</callout>
|
|
|
|
<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>
|
|
</callout>
|
|
|
|
<callout arearefs="newfs">
|
|
<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>
|
|
|
|
<screen>&prompt.root; <userinput>mount /dev/mirror/root /mnt</userinput>
|
|
&prompt.root; <userinput>mkdir /mnt/var /mnt/usr</userinput>
|
|
&prompt.root; <userinput>mount /dev/mirror/var /mnt/var</userinput>
|
|
&prompt.root; <userinput>mount /dev/mirror/usr /mnt/usr</userinput></screen>
|
|
|
|
<para>When you are done, start &man.sysinstall.8;. Select the
|
|
<guimenuitem>Custom</guimenuitem> installation from the main
|
|
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>Enter</keycap> to submit your changes and exit the
|
|
<guimenuitem>Options</guimenuitem> menu by pressing
|
|
<keycap>q</keycap>.</para>
|
|
|
|
<warning>
|
|
<para>Note that this step is very important and if skipped,
|
|
<application>sysinstall</application> will be unable to
|
|
install &os;.</para>
|
|
</warning>
|
|
|
|
<para>Go to the <guimenuitem>Distributions</guimenuitem> menu,
|
|
move the cursor with the arrow keys to
|
|
<option>Minimal</option>, and check it by pressing
|
|
<keycap>Space</keycap>. This article uses the Minimal
|
|
distribution in order to save network traffic, because the
|
|
system itself will be installed over
|
|
<application>ftp</application>. Exit this menu by choosing
|
|
<option>Exit</option>.</para>
|
|
|
|
<note>
|
|
<para>The <guimenuitem>Partition</guimenuitem> and
|
|
<guimenuitem>Label</guimenuitem> menus will be skipped, as
|
|
these are useless now.</para>
|
|
</note>
|
|
|
|
<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
|
|
<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
|
|
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>You must now &man.chroot.8; into the freshly installed
|
|
system in order to finish the installation. Use the following
|
|
command:</para>
|
|
|
|
<screen>&prompt.root; <userinput>chroot /mnt</userinput></screen>
|
|
|
|
<para>To complete our goal, perform these steps:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Copy the <literal>GENERIC</literal> kernel to the
|
|
<filename>/boot/kernel</filename>
|
|
directory:</para>
|
|
|
|
<screen>&prompt.root; <userinput>cp -Rp /boot/GENERIC/* /boot/kernel</userinput></screen>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Create the <filename>/etc/rc.conf</filename>,
|
|
<filename>/etc/resolv.conf</filename> and
|
|
<filename>/etc/fstab</filename> files. Do not forget to
|
|
properly set the network information and to enable
|
|
<application>sshd</application> in
|
|
<filename>/etc/rc.conf</filename>. The contents of
|
|
<filename>/etc/fstab</filename> will be similar to the
|
|
following:</para>
|
|
|
|
<programlisting># Device Mountpoint FStype Options Dump Pass#
|
|
/dev/mirror/swap none swap sw 0 0
|
|
/dev/mirror/root / ufs rw 1 1
|
|
/dev/mirror/usr /usr ufs rw 2 2
|
|
/dev/mirror/var /var ufs rw 2 2
|
|
/dev/cd0 /cdrom cd9660 ro,noauto 0 0</programlisting>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Create <filename>/boot/loader.conf</filename> with the
|
|
following contents:</para>
|
|
|
|
<programlisting>geom_mirror_load="YES"
|
|
zfs_load="YES"</programlisting>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Perform the following command, which will make
|
|
<application>ZFS</application> available on the next
|
|
boot:</para>
|
|
|
|
<screen>&prompt.root; <userinput>echo 'zfs_enable="YES"' >> /etc/rc.conf </userinput></screen>
|
|
</listitem>
|
|
|
|
<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>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>Double-check all your settings.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>The system should now be ready for the next boot. Use the
|
|
&man.reboot.8; command to reboot your system.</para>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<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>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>
|
|
|
|
<screen>&prompt.root; <userinput>zpool create tank mirror /dev/ad[01]s1f</userinput></screen>
|
|
|
|
<para>Next, create some file systems:</para>
|
|
|
|
<screen>&prompt.root; <userinput>zfs create tank/ports</userinput>
|
|
&prompt.root; <userinput>zfs create tank/src</userinput>
|
|
&prompt.root; <userinput>zfs set compression=gzip tank/ports</userinput>
|
|
&prompt.root; <userinput>zfs set compression=on tank/src</userinput>
|
|
&prompt.root; <userinput>zfs set mountpoint=/usr/ports tank/ports</userinput>
|
|
&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>
|
|
</sect1>
|
|
</article>
|