doc/zh_TW.Big5/articles/remote-install/article.xml
Gabor Kovesdan a6684b4306 - Reduce the misuse of role attribute; role="directory" should actually be
class="directory"
- Add constraint to enforce this
2013-04-04 11:40:58 +00:00

490 lines
18 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="big5"?>
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V4.5-Based Extension//EN"
"../../../share/xml/freebsd45.dtd">
<!--
The FreeBSD Documentation Project
The FreeBSD Chinese (Traditional) Documentation Project
Original Revision: 1.5
-->
<article lang='zh_tw'>
<articleinfo>
<title>遠端安裝 &os; 作業系統而不必接 Remote Console</title>
<author>
<firstname>Daniel</firstname>
<surname>Gerzo</surname>
<affiliation>
<address><email>danger@FreeBSD.org</email></address>
</affiliation>
<!-- 11 April 2008 -->
</author>
<legalnotice 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>本文介紹如何在沒辦法連到遠端 console 的機器做 &os; 遠端安裝。
本文構想來自於作者與 &a.mm; 的合作成果,
以及 &a.pjd; 所投注的諸多心血。</para>
</abstract>
</articleinfo>
<sect1 id="background">
<title>緣起</title>
<para>世上有許多 server hosting provider但其中有官方支援 &os;
則不是相當多。 他們通常會在所提供的機器上有 &linux; distribution
的安裝支援。</para>
<para>有些會讓您可選擇喜好的 &linux; distribution 來裝,
像這種情況就可以試著安裝 &os;。 而有些則是會提供救急用的系統,
這種也可以用來安裝 &os;</para>
<para>本文介紹這些遠端基本安裝 &os; 的方式,以及 RAID-1 與
<application>ZFS</application> 設定步驟。</para>
</sect1>
<sect1 id="intro">
<title>介紹</title>
<para>茲摘錄一下本文的目的以及闡述這邊所涵蓋的東西。
對於無官方支援 &os; 的代管服務(colocation)用戶而言,
本文中所介紹到的指令會相當有用。</para>
<procedure>
<step>
<para>正如先前 <link
linkend="background">緣起</link> 所提到的,許多名聲還不賴的
server hosting 公司會提供一些救急用系統,可以透過
<acronym>LAN</acronym> 方式開機,也可以透過
<application>SSH</application> 方式進行管理。 通常會有該加值服務,
以讓他們的客戶可以連進來修復有問題的作業系統。
本節之後將介紹如何透過救急系統來安裝 &os;</para>
<!-- XXXTR: Solaris has a restore command, something like
sysrestore, FreeBSD Should have one too. -->
</step>
<step>
<para>下一節會介紹如何在本機設定以及打造最小巧的 &os; ——
該版最後會在遠端機器上透過 ramdisk 方式啟動,並以
<application>sysinstall</application><acronym>FTP</acronym>
mirror 站來安裝完整的 &os; 作業系統。</para>
</step>
<step>
<para>本文其餘部分將介紹安裝程序,以及 <application>ZFS</application>
檔案系統的設定。</para>
</step>
</procedure>
<sect2 id="requirements">
<title>需求</title>
<para>為了成功完成遠端安裝,必須要有:</para>
<itemizedlist>
<listitem>
<para>要有可以上網的作業系統,並且 <application>SSH</application>
可以連線。</para>
</listitem>
<listitem>
<para>瞭解 &os; 的安裝程序</para>
</listitem>
<listitem>
<para>熟悉如何使用 &man.sysinstall.8;</para>
</listitem>
<listitem>
<para>&os; 安裝光碟片或者 <acronym>ISO</acronym> image 檔</para>
</listitem>
</itemizedlist>
</sect2>
</sect1>
<sect1 id="preparation">
<title>準備 - <application>mfsBSD</application></title>
<para>在裝 &os; 之前,要先打造最小化的 &os; 作業系統 image 檔,
以便可以從硬碟上開機。 如此一來,新的系統就可以透過網路來操作,
而剩下來的安裝部分即可不必透過 console。</para>
<para><application>mfsBSD</application> 這套工具就是用來打造小型的
&os; image 檔。 <application>mfsBSD</application> (名字其中
<quote>mfs</quote> 就是 <quote>memory file system</quote>)所建造出來的
整套系統會透過 ramdisk 方式來運作。 由於此一特色,硬碟的部分就不受限,
因此可以用來安裝完整的 &os; 作業系統。 <application>mfsBSD</application>
的首頁位於 <ulink url="http://people.freebsd.org/~mm/mfsbsd/"></ulink>
其中連結有該工具的最新 release 部分。</para>
<para>請注意:<application>mfsBSD</application> 內部運作方式的細節,不
在本文介紹範圍之內。 若對這方面有興趣的讀者,可至
<application>mfsBSD</application> 官網查閱相關文件。</para>
<para>首先下載最新的 <application>mfsBSD</application> 並解壓縮之,
然後切到解壓縮後的工作目錄,也就是 <application>mfsBSD</application>
script 檔所在處:</para>
<screen>&prompt.root; <userinput>fetch http://people.freebsd.org/~mm/mfsbsd/mfsbsd-latest.tar.gz</userinput>
&prompt.root; <userinput>tar xvzf mfsbsd-<replaceable>1.0-beta1</replaceable>.tar.gz</userinput>
&prompt.root; <userinput>cd <replaceable>mfsbsd-1.0-beta1</replaceable>/</userinput></screen>
<sect2 id="mfsbsd-config">
<title>設定 <application>mfsBSD</application></title>
<para>在將 <application>mfsBSD</application> 開機之前,
有幾個重要設定要先設妥。 此時最重要的設定,很明顯就是網路設定。
到底網路怎麼設最好,則取決於所處的網路環境,
以及該網路卡會以哪一種驅動程式載入而定。 我們將會看到
<application>mfsBSD</application> 如何在任何網路情況下進行設定。</para>
<para>另一件重要事就是設定 <username>root</username> 密碼。
這點可以透過 <filename>conf/rootpw.conf</filename> 來完成。
請切記:該檔密碼是以明文方式存放,因此不建議放真正平常有在用的密碼。
然而這密碼只是臨時密碼而已,可以在之後開機時再做更換。</para>
<sect3>
<title>設定網路(<filename>conf/interfaces.conf</filename> 方式)</title>
<para>若對要裝的機器網卡為何還不知道是哪一款,但可以善加利用
<application>mfsBSD</application> 的自動偵測功能。
<application>mfsBSD</application> 的開機 script 會根據網卡的 MAC
位址範圍來偵測正確的驅動程式,像是下列的
<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>別忘了在 <filename>conf/rc.conf</filename> 內要加上
<literal>defaultrouter</literal> 的相關設定:</para>
<programlisting>defaultrouter="192.168.0.1"</programlisting>
</sect3>
<sect3>
<title>設定網路(<filename>conf/rc.conf</filename> 方式)</title>
<para>若已經知道網卡是哪一種,那麼要設定網路的話直接改
<filename>conf/rc.conf</filename> 會比較方便。
該檔設定語法與 &os; 標準的 &man.rc.conf.5; 是一致的。</para>
<para>舉個例子,若知道該機器網卡是用 &man.re.4;,那麼就在
<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>打造 <application>mfsBSD</application> image</title>
<para>打造 <application>mfsBSD</application>
image 檔的過程相當簡單。</para>
<para>首先是把 &os; 安裝光碟或者安裝用的 <acronym>ISO</acronym> image
檔丟到 <filename class="directory">/cdrom</filename>
為維持所有例子的一致,本文假設都是用 &os; 7.0-RELEASE
<acronym>ISO</acronym>。 而把 ISO image 檔掛載到 <filename
class="directory">/cdrom</filename> 目錄相當簡單,
就是用 &man.mdconfig.8;</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>接著就開始打造可開機的 <application>mfsBSD</application>
image</para>
<screen>&prompt.root; <userinput>make BASE=/cdrom/<replaceable>7.0-RELEASE</replaceable></userinput></screen>
<note>
<para>上述的 <command>make</command> 指令要在
<application>mfsBSD</application> 的最上層目錄執行,比方說 <filename
class="directory">~/mfsbsd-1.0-beta1/</filename></para>
</note>
</sect2>
<sect2>
<title><application>mfsBSD</application> 開動</title>
<para>現在 <application>mfsBSD</application> image 已經備妥,
要上傳到遠端機器的救急系統或者預先安裝的 &linux; distribution。
要完成這工作最適合的工具就是 <application>scp</application></para>
<screen>&prompt.root; <userinput>scp disk.img root@192.168.0.2:.</userinput></screen>
<para>為了能順利啟動 <application>mfsBSD</application> image
要把檔案放在欲安裝機器的第一顆(可開機)硬碟上。
假設例子的第一顆開機硬碟代號為 <devicename>sda</devicename>
那麼作法就類似下面這樣:</para>
<screen>&prompt.root; <userinput>dd if=/root/disk.img of=/dev/sda bs=1m</userinput></screen>
<para>若一切順利,該 image 檔現在應該會在第一顆硬碟的
<acronym>MBR</acronym> 磁區並可以開始進行重開機了。 可以用
&man.ping.8; 工具來檢測該機器開機完畢與否。 一旦 ping 到之後,
就可以透過 &man.ssh.1; 連進去,並且用 <username>root</username>
以及剛設定的密碼登入。</para>
</sect2>
</sect1>
<sect1 id="installation">
<title>&os; 作業系統的安裝</title>
<para>現在 <application>mfsBSD</application> 已順利啟動,並且應該可以透過
&man.ssh.1; 方式來連。 本節將介紹如何建立 slice 分割、設定
<application>gmirror</application> 以作 RAID-1、如何以
<application>sysinstall</application> 來安裝 &os;
作業系統的最小化安裝。</para>
<sect2>
<title>準備硬碟</title>
<para>首先要作的是配置硬碟空間給 &os;,像是建立 slice 跟分割區。
很明顯地,目前在跑的作業系統是載入到系統記憶體內執行,
因此要對硬碟配置並無任何問題。 這些工作可以用
<application>sysinstall</application> 或者以 &man.fdisk.8; 搭配
&man.bsdlabel.8; 來完成。</para>
<para>首先先把各硬碟都先清空。 請對各硬碟作下列指令:</para>
<screen>&prompt.root; <userinput>dd if=/dev/zero of=/dev/<replaceable>ad0</replaceable> count=2</userinput></screen>
<para>接著,以您慣用的工具來建立 slice 以及設定 label。 通常會建議以
<application>sysinstall</application> 工具來作會比較輕鬆,
或者是強而又不太會出槌的文字介面 &unix; 標準工具(像是 &man.fdisk.8;,
&man.bsdlabel.8;),這部分稍後也會一併介紹。 前者部分在 &os; Handbook
<ulink url="&url.books.handbook;/install-steps.html">安裝
&os;</ulink> 章節有相當詳盡的介紹,所以這邊主要要介紹的是如何建立
RAID-1 系統以及 <application>ZFS</application>
這邊會介紹建立以 &man.gmirror.8; 做成的小型 mirrored 檔案系統:
<filename class="directory">/</filename> (根目錄), <filename
class="directory">/usr</filename> 以及 <filename
class="directory">/var</filename>,而硬碟的其餘剩餘空間則通通以
&man.zpool.8; 做成 <application>ZFS</application> 的 mirrored 檔案系統
。 請注意:必須要先把 &os; 作業系統裝好並開完機後,才能進行設定
<application>ZFS</application> 檔案系統。</para>
<para>下面的例子會介紹如何建立 slice 以及 label、在每個分割區上啟用
&man.gmirror.8;、如何在每個 mirrored 分割區上建立
<application>UFS2</application> 檔案系統:</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 &amp;&amp; bsdlabel -R /dev/ad1s1 /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>對該硬碟建立 slice 並且在第零軌處將開機表作初始。
請對該機器所有硬碟都作此一動作。</para>
</callout>
<callout arearefs="bsdlabel-writing">
<para>對各硬碟寫入 label 以及 bootstrap 碼。</para>
</callout>
<callout arearefs="bsdlabel-editing">
<para>現在手動修改該硬碟的 label至於如何建立分割區(partitions)
請參閱 &man.bsdlabel.8; 說明。
分割區分別建立:<literal>a</literal> 是給 <filename
class="directory">/</filename> (根目錄)
<literal>b</literal> 給 swap
<literal>d</literal><filename class="directory">/var</filename>
<literal>e</literal><filename class="directory">/usr</filename>
最後,會在稍後步驟把 <literal>f</literal>
<application>ZFS</application> 使用。</para>
</callout>
<callout arearefs="bsdlabel-restore">
<para>把剛剛的 label 設定先匯出,再匯入到第二顆硬碟上,
如此一來兩邊的硬碟 label 設定就會同樣。</para>
</callout>
<callout arearefs="gmirror1">
<para>在各分割區上啟用 &man.gmirror.8;</para>
</callout>
<callout arearefs="gmirror2">
<para>請注意:<option>-F</option> 選項是用在 swap 上。
這參數會讓 &man.gmirror.8; 認為該硬體是處於可靠狀態,
即使發生電源故障或系統當掉,也不會去同步。</para>
</callout>
<callout arearefs="newfs">
<para>在各個有做 mirror 的分割區上建立 <application>UFS2</application>
檔案系統</para>
</callout>
</calloutlist>
</sect2>
<sect2>
<title>系統安裝</title>
<para>這裡是最重要的一環,
本節介紹實際上如何在先前一節所做好的硬碟安裝最小化的 &os;
為了完成此一目標,所有檔案系統都必須掛載妥當,才能讓
<application>sysinstall</application> 可以把 &os; 裝到硬碟內:</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>做完上述動作之後,請執行 &man.sysinstall.8;。 請從主選單中選擇
<guimenuitem>Custom</guimenuitem> 安裝,選
<guimenuitem>Options</guimenuitem><keycap>Enter</keycap>
然後以方向鍵移動到 <literal>Install Root</literal> 處,按
<keycap>Space</keycap> 鍵然後改為 <filename
class="directory">/mnt</filename>,再按 <keycap>Enter</keycap>
鍵以將修改值存起來,然後按 <keycap>q</keycap> 鍵即可離開這個
<guimenuitem>Options</guimenuitem> 畫面。</para>
<warning>
<para>請注意:本步驟極為重要,若忽略的話那麼
<application>sysinstall</application> 就沒辦法安裝 &os;</para>
</warning>
<para>接著選 <guimenuitem>Distributions</guimenuitem>,然後移動游標到
<option>Minimal</option> 處,按 <keycap>Space</keycap> 鍵。
本文之所以介紹最小化安裝是為了要節省網路流量,因為系統安裝是透過
<application>ftp</application> 方式來進行。 要離開本畫面,請選
<option>Exit</option> 即可。</para>
<note>
<para>至於 <guimenuitem>Partition</guimenuitem>
<guimenuitem>Label</guimenuitem> 步驟則可略過,
因為這些目前已經都設定完畢了。</para>
</note>
<para><guimenuitem>Media</guimenuitem> 選單中請選
<option>FTP</option>。 請選最近的 mirror 站,並且讓
<application>sysinstall</application> 假設網路已經設妥。
接下來就會回到 <guimenuitem>Custom</guimenuitem> 選單。</para>
<para>最後,按下 <guimenuitem>Commit</guimenuitem> 即可開始進行安裝。
完成安裝後,即可離開 <application>sysinstall</application></para>
</sect2>
<sect2>
<title>後續安裝步驟</title>
<para>此時 &os; 作業系統應該已經裝完,然而還有些後續流程要做。
必須要做一些後續設定,才能讓 &os; 可以開機跟登入。</para>
<para>現在必須要用 &man.chroot.8; 以切到剛剛新裝好的系統內。
指令如下:</para>
<screen>&prompt.root; <userinput>chroot /mnt</userinput></screen>
<para>然後再打下列指令以繼續完成:</para>
<itemizedlist>
<listitem>
<para><literal>GENERIC</literal> kernel 複製到
<filename class="directory">/boot/kernel</filename>
目錄:</para>
<screen>&prompt.root; <userinput>cp -Rp /boot/GENERIC/* /boot/kernel</userinput></screen>
</listitem>
<listitem>
<para>建立 <filename>/etc/rc.conf</filename>,
<filename>/etc/resolv.conf</filename>
<filename>/etc/fstab</filename> 檔案。 別忘了,要記得在
<filename>/etc/rc.conf</filename> 檔設相關網路設定,以及把
<application>sshd</application> 啟用。 此外,
<filename>/etc/fstab</filename> 檔應該會長像下面這樣:</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>新增 <filename>/boot/loader.conf</filename> 檔,
並且內容填入下列:</para>
<programlisting>geom_mirror_load="YES"
zfs_load="YES"</programlisting>
</listitem>
<listitem>
<para>執行下列指令,以在下次開機時啟用 <application>ZFS</application>
</para>
<screen>&prompt.root; <userinput>echo 'zfs_enable="YES"' >> /etc/rc.conf </userinput></screen>
</listitem>
<listitem>
<para>使用 &man.adduser.8; 工具來新增其他使用者帳號。 別忘了,
至少要有一個帳號得加入 <groupname>wheel</groupname> 群組,
才能在重開機後以該帳號切換為 root。</para>
</listitem>
<listitem>
<para>再次檢查上述相關的設定,是否有遺漏或打錯。</para>
</listitem>
</itemizedlist>
<para>現在該系統終於可以重開機了,請用 &man.reboot.8;
指令以重開機。</para>
</sect2>
</sect1>
<sect1 id="zfs">
<title>ZFS</title>
<para>系統重開機完畢之後,應該就可以登入了。 歡迎使用全新的 &os; 安裝方式,
完全透過遠端而不必接上 remote console</para>
<para>接下來只剩要調整 &man.zpool.8; 以及建立 &man.zfs.8; 檔案系統而已。
<application>ZFS</application> 的建立及管理是相當淺顯易懂。 首先,
建立 mirrored pool</para>
<screen>&prompt.root; <userinput>zpool create tank mirror /dev/ad[01]s1f</userinput></screen>
<para>接著,建立檔案系統:</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>一切就是這樣簡單。 若對 &os; 上的 <application>ZFS</application>
細節部分有興趣,請參閱 &os; Wiki 上的 <ulink
url="http://wiki.freebsd.org/ZFS">ZFS</ulink> 一節說明。</para>
</sect1>
</article>