- Add an article describing remote installation of FreeBSD when the
console of the remote system is unavailable. Reviewed by: trhodes, keramida
This commit is contained in:
parent
548487ea22
commit
9717a4b038
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=31826
3 changed files with 589 additions and 0 deletions
|
@ -46,6 +46,7 @@ SUBDIR+= rc-scripting
|
||||||
SUBDIR+= relaydelay
|
SUBDIR+= relaydelay
|
||||||
SUBDIR+= releng
|
SUBDIR+= releng
|
||||||
SUBDIR+= releng-packages
|
SUBDIR+= releng-packages
|
||||||
|
SUBDIR+= remote-install
|
||||||
SUBDIR+= serial-uart
|
SUBDIR+= serial-uart
|
||||||
SUBDIR+= solid-state
|
SUBDIR+= solid-state
|
||||||
SUBDIR+= storage-devices
|
SUBDIR+= storage-devices
|
||||||
|
|
27
en_US.ISO8859-1/articles/remote-install/Makefile
Normal file
27
en_US.ISO8859-1/articles/remote-install/Makefile
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
#
|
||||||
|
# $FreeBSD$
|
||||||
|
#
|
||||||
|
|
||||||
|
DOC?= article
|
||||||
|
|
||||||
|
FORMATS?= html
|
||||||
|
WITH_ARTICLE_TOC?= YES
|
||||||
|
|
||||||
|
INSTALL_COMPRESSED?= gz
|
||||||
|
INSTALL_ONLY_COMPRESSED?=
|
||||||
|
|
||||||
|
SRCS= article.sgml
|
||||||
|
|
||||||
|
# Images from the cross-document image library
|
||||||
|
IMAGES_LIB= callouts/1.png
|
||||||
|
IMAGES_LIB+= callouts/2.png
|
||||||
|
IMAGES_LIB+= callouts/3.png
|
||||||
|
IMAGES_LIB+= callouts/4.png
|
||||||
|
IMAGES_LIB+= callouts/5.png
|
||||||
|
IMAGES_LIB+= callouts/6.png
|
||||||
|
IMAGES_LIB+= callouts/7.png
|
||||||
|
|
||||||
|
URL_RELPREFIX?= ../../../..
|
||||||
|
DOC_PREFIX?= ${.CURDIR}/../../..
|
||||||
|
|
||||||
|
.include "${DOC_PREFIX}/share/mk/doc.project.mk"
|
561
en_US.ISO8859-1/articles/remote-install/article.sgml
Normal file
561
en_US.ISO8859-1/articles/remote-install/article.sgml
Normal file
|
@ -0,0 +1,561 @@
|
||||||
|
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN" [
|
||||||
|
<!ENTITY % articles.ent PUBLIC "-//FreeBSD//ENTITIES DocBook FreeBSD Articles Entity Set//EN">
|
||||||
|
%articles.ent;
|
||||||
|
]>
|
||||||
|
|
||||||
|
<article>
|
||||||
|
<articleinfo>
|
||||||
|
<title>Remote Installation of the &os; Operating System without a
|
||||||
|
Remote Console</title>
|
||||||
|
|
||||||
|
<author>
|
||||||
|
<firstname>Daniel</firstname>
|
||||||
|
<surname>Gerzo</surname>
|
||||||
|
<affiliation>
|
||||||
|
<address><email>danger@FreeBSD.org</email></address>
|
||||||
|
</affiliation>
|
||||||
|
<!-- 11 April 2008 -->
|
||||||
|
</author>
|
||||||
|
|
||||||
|
<pubdate>$FreeBSD$</pubdate>
|
||||||
|
|
||||||
|
<legalnotice id="trademarks" role="trademarks">
|
||||||
|
&tm-attrib.freebsd;
|
||||||
|
&tm-attrib.general;
|
||||||
|
</legalnotice>
|
||||||
|
|
||||||
|
<copyright>
|
||||||
|
<year>2008</year>
|
||||||
|
<holder>The &os; Documentation Project</holder>
|
||||||
|
</copyright>
|
||||||
|
|
||||||
|
<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; with valuable input provided by
|
||||||
|
&a.pjd;.</para>
|
||||||
|
</abstract>
|
||||||
|
</articleinfo>
|
||||||
|
|
||||||
|
<sect1 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's 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 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 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 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 home page of
|
||||||
|
<application>mfsBSD</application>, at <ulink
|
||||||
|
url="http://people.freebsd.org/~mm/mfsbsd/"></ulink>, 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://people.freebsd.org/~mm/mfsbsd/mfsbsd-1.0-beta1.tar.gz</userinput>
|
||||||
|
&prompt.root; <userinput>tar xvzf mfsbsd-1.0-beta1.tar.gz</userinput>
|
||||||
|
&prompt.root; <userinput>cd mfsbsd-1.0-beta1/</userinput></screen>
|
||||||
|
|
||||||
|
<sect2 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
|
||||||
|
<username>root</username> password. This can be done by editing
|
||||||
|
the <filename>conf/rootpw.conf</filename> file. 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>
|
||||||
|
|
||||||
|
<para>When the installed network interface card is unknown, we
|
||||||
|
can 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>initconf_interfaces="ext1"
|
||||||
|
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 the <filename>conf/rc.conf</filename>
|
||||||
|
file:</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 the <filename>conf/rc.conf</filename> file
|
||||||
|
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 netmask 255.255.255.0"</programlisting>
|
||||||
|
</sect3>
|
||||||
|
</sect2>
|
||||||
|
|
||||||
|
<sect2 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
|
||||||
|
role="directory">/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 role="directory">/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>
|
||||||
|
|
||||||
|
<para>Next, build the bootable <application>mfsBSD</application>
|
||||||
|
image:</para>
|
||||||
|
|
||||||
|
<screen>&prompt.root; <userinput>make BASE=/cdrom/<replaceable>7.0-RELEASE</replaceable></userinput></screen>
|
||||||
|
|
||||||
|
<note>
|
||||||
|
<para>The above <command>make</command> command has to be run
|
||||||
|
from the top level of the <application>mfsBSD</application>
|
||||||
|
directory tree, i.e. <filename
|
||||||
|
role="directory">~/mfsbsd-1.0-beta1/</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 <devicename>sda</devicename> 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
|
||||||
|
<username>root</username> with the configured password.</para>
|
||||||
|
</sect2>
|
||||||
|
</sect1>
|
||||||
|
|
||||||
|
<sect1 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 <ulink
|
||||||
|
url="&url.books.handbook;/install-steps.html">Installing &os;</ulink>
|
||||||
|
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 role="directory">/</filename> (root), <filename
|
||||||
|
role="directory">/usr</filename> and <filename
|
||||||
|
role="directory">/var</filename> file systems, 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 id="fdisk">
|
||||||
|
&prompt.root; <userinput>fdisk -BI /dev/ad1</userinput>
|
||||||
|
&prompt.root; <userinput>bsdlabel -wB /dev/ad0s1</userinput> <co id="bsdlabel-writing">
|
||||||
|
&prompt.root; <userinput>bsdlabel -wB /dev/ad1s1</userinput>
|
||||||
|
&prompt.root; <userinput>bsdlabel -e /dev/ad0s1</userinput> <co id="bsdlabel-editing">
|
||||||
|
&prompt.root; <userinput>bsdlabel /dev/ad0s1 > /tmp/bsdlabel.txt && bsdlabel -R /tmp/bsdlabel.txt</userinput> <co id="bsdlabel-restore">
|
||||||
|
&prompt.root; <userinput>gmirror label root /dev/ad[01]s1a</userinput> <co 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 id="gmirror2">
|
||||||
|
&prompt.root; <userinput>newfs /dev/mirror/root</userinput> <co 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
|
||||||
|
role="directory">/</filename> (root) file system,
|
||||||
|
<literal>b</literal> for swap, <literal>d</literal> for
|
||||||
|
<filename role="directory">/var</filename>,
|
||||||
|
<literal>e</literal> for <filename
|
||||||
|
role="directory">/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 the <option>-F</option> option used for 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>
|
||||||
|
</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
|
||||||
|
role="directory">/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 on the
|
||||||
|
<option>Minimal</option> 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> 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
|
||||||
|
latest available 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 role="directory">/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 the
|
||||||
|
<filename>/etc/rc.conf</filename> file. The contents of the
|
||||||
|
<filename>/etc/fstab</filename> file 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 the <filename>/boot/loader.conf</filename> file,
|
||||||
|
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
|
||||||
|
<groupname>wheel</groupname> 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 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's all. If you are interested in more details about
|
||||||
|
<application>ZFS</application> on &os;, please refer to the <ulink
|
||||||
|
url="http://wiki.freebsd.org/ZFS">ZFS</ulink> section of the &os;
|
||||||
|
Wiki.</para>
|
||||||
|
</sect1>
|
||||||
|
</article>
|
Loading…
Reference in a new issue