Skip site navigation (1)Skip section navigation (2)
Date:      Sun,  9 Jul 2006 17:32:33 +0800
From:      chinsan <chinsan.tw@gmail.com>
To:        FreeBSD-gnats-submit@FreeBSD.org
Cc:        vanilla@FreeBSD.org
Subject:   docs/99955: [UPDATE] zh_TW: add articles/nanobsd
Message-ID:  <20060709092859.CD22C2E970@smtp2.bc.hgc.com.tw>
Resent-Message-ID: <200607090930.k699UCjv054494@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         99955
>Category:       docs
>Synopsis:       [UPDATE] zh_TW: add articles/nanobsd
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-doc
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          update
>Submitter-Id:   current-users
>Arrival-Date:   Sun Jul 09 09:30:11 GMT 2006
>Closed-Date:
>Last-Modified:
>Originator:     chinsan
>Release:        FreeBSD 6.1-STABLE i386
>Organization:
FreeBSD Taiwan
>Environment:
System: FreeBSD chinsan2.twbbs.org 6.1-STABLE FreeBSD 6.1-STABLE #1: Fri Jun 2 16:44:35 CST 2006 root@chinsan2.twbbs.org:/usr/obj/usr/src/sys/GENERIC i386


	
>Description:

  Add nanobsd article.  This translation is based on the
  Simplified Chinese translation with changes
  to fit the language practice of Traditional Chinese.

  Obtained from:  The FreeBSD Traditional Chinese Project

  Each changelog can reviewd at https://opensvn.csie.org/traccgi/freebsddoc/timeline

  ( http://chinsan2.twbbs.org/chinsan/zh_TW.Big5.20060709_1.svn729.diff )


  Thanks. :p
 
>How-To-Repeat:
>Fix:

	

--- zh_TW.Big5.20060709_1.svn729.diff begins here ---
diff -ruN zh_TW.Big5.orig/articles/Makefile zh_TW.Big5/articles/Makefile
--- zh_TW.Big5.orig/articles/Makefile	Sun Jul  9 11:19:08 2006
+++ zh_TW.Big5/articles/Makefile	Sun Jul  9 17:20:24 2006
@@ -6,6 +6,7 @@
 SUBDIR+= freebsd-questions
 SUBDIR+= hubs
 SUBDIR+= mailing-list-faq
+SUBDIR+= nanobsd
 SUBDIR+= pr-guidelines
 SUBDIR+= problem-reports
 
diff -ruN zh_TW.Big5.orig/articles/nanobsd/Makefile zh_TW.Big5/articles/nanobsd/Makefile
--- zh_TW.Big5.orig/articles/nanobsd/Makefile	Thu Jan  1 08:00:00 1970
+++ zh_TW.Big5/articles/nanobsd/Makefile	Sun Jul  9 17:20:24 2006
@@ -0,0 +1,28 @@
+# 
+# The FreeBSD Traditional Chinese Project
+#
+# Original Revision: 1.2
+# $FreeBSD$
+#
+# Article: Introduction to NanoBSD
+
+DOC?= article
+
+FORMATS?= html
+WITH_ARTICLE_TOC?= YES
+
+INSTALL_COMPRESSED?= gz
+INSTALL_ONLY_COMPRESSED?=
+
+# 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
+
+SRCS=	article.sgml
+
+URL_RELPREFIX?=	../../../..
+DOC_PREFIX?=	${.CURDIR}/../../..
+
+.include "${DOC_PREFIX}/share/mk/doc.project.mk"
diff -ruN zh_TW.Big5.orig/articles/nanobsd/article.sgml zh_TW.Big5/articles/nanobsd/article.sgml
--- zh_TW.Big5.orig/articles/nanobsd/article.sgml	Thu Jan  1 08:00:00 1970
+++ zh_TW.Big5/articles/nanobsd/article.sgml	Sun Jul  9 17:20:24 2006
@@ -0,0 +1,436 @@
+<!--
+     The FreeBSD Documentation Project
+     The FreeBSD Chinese (Traditional) Documentation Project
+
+     Original Revision: 1.1
+-->
+<!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>NanoBSD 簡介</title>
+
+    <authorgroup>
+      <author>
+	<firstname>Daniel</firstname>
+	<surname>Gerzo</surname>
+	<!-- 14 March 2006 -->
+      </author>
+    </authorgroup>
+
+    <pubdate>$FreeBSD$</pubdate>
+
+    <copyright>
+      <year>2006</year>
+      <holder>The FreeBSD Documentation Project</holder>
+    </copyright>
+
+    <legalnotice id="trademarks" role="trademarks">
+      &tm-attrib.freebsd;
+      &tm-attrib.general;
+    </legalnotice>
+
+    <abstract>
+      <para>這篇文件提供了關於 <application>NanoBSD</application> 工具的情報介紹,
+	這工具可用來建立用於嵌入式環境應用程式的 &os; 系統映像檔,
+	以便存放到 Compact Flash 卡(或隨身碟)。</para>
+    </abstract>
+  </articleinfo>
+
+  <sect1 id="intro">
+    <title>NanoBSD 簡介</title>
+
+    <indexterm><primary>NanoBSD</primary></indexterm>
+
+    <para><application>NanoBSD</application> 是 &a.phk; 目前正在開發的一項工具。
+      它可用來建立用於嵌入式環境應用程式的 &os; 系統映像檔,
+      以便存放到 Compact Flash 卡(或隨身碟,mass storage medium)。</para>
+
+    <para>這一工具也可以用來自製安裝映像檔,
+      以簡化俗稱為 <quote>嵌入式系統(computer appliances)</quote> 的系統安裝、維護工作。 
+      通常,每個嵌入式系統產品都有限定硬體和軟體,
+      或者換言之,所有的應用程式都是預先裝好的。
+      這些設備可以直接放到現有的網路中,而且(幾乎是)立即使用。</para>
+
+    <para><application>NanoBSD</application> 提供的功能包括:</para>
+
+    <itemizedlist>
+      <listitem>
+	<para>可以和 &os; 一樣使用 Ports 和 Packages &mdash;
+	  所有的應用程序都可以在 <application>NanoBSD</application> 中直接使用,
+	  而方式與 &os; 完全一樣。</para>
+      </listitem>
+
+      <listitem>
+	<para>功能絲毫未損 &mdash; 在 &os; 做的任何工作,都可以在
+	  <application>NanoBSD</application> 中使用,
+	  除非您在建立 <application>NanoBSD</application> 映像檔時,
+	  有指定要拿掉它們。</para>
+      </listitem>
+
+      <listitem>
+	<para>所有東西在運行時都是唯讀的 &mdash; 可以安全地拔掉電源插頭。
+	  系統不正常關機的話,不用再跑 &man.fsck.8; 了。</para>
+      </listitem>
+
+      <listitem>
+	<para>可輕鬆編譯、自行打造 &mdash; 只需使用一個 shell script 和一個設定檔,
+	  您可以輕鬆依需求來量身訂做適用的映像檔。</para>
+      </listitem>
+    </itemizedlist>
+  </sect1>
+
+  <sect1 id="howto">
+    <title>如何使用 NanoBSD</title>
+
+    <sect2 id="design">
+      <title>NanoBSD 的設計</title>
+
+      <para>一旦將映像檔存入嵌入式硬體,就可以用它來引導 <application>NanoBSD</application>
+	了。 預設情況下,隨身碟會劃分為三部分:</para>
+
+      <itemizedlist>
+	<listitem>
+	  <para>兩個映像檔分割區: <literal>code#1</literal>
+	    和 <literal>code#2</literal>。</para>
+	</listitem>
+
+	<listitem>
+	  <para>一個設定檔分割區,在運行環境中,
+	    可以將其掛載(mount)到 <filename role="directory">/cfg</filename> 目錄下。</para>
+	</listitem>
+      </itemizedlist>
+
+      <para>這些分割區,在預設情況下是以唯讀方式掛載。</para>
+
+      <para><filename role="directory">/etc</filename> 和
+	<filename role="directory">/var</filename> 目錄均為
+	&man.md.4;(malloc)磁碟。</para>
+
+      <para>設定檔的分割區則是在
+	<filename role="directory">/cfg</filename> 目錄。
+	它包含了用於 <filename role="directory">/etc</filename>
+	目錄的檔案,在啟動之後暫時以唯讀方式掛載。 因此,若想要重開機保留新的設定,
+	那麼要記得從 <filename role="directory">/etc</filename> 把改過的檔案複製回
+	<filename role="directory">/cfg</filename> 目錄才行。</para>
+
+      <example>
+	<title>把修改過 <filename>/etc/resolv.conf</filename> 設定保存起來</title>
+
+	<screen>&prompt.root; <userinput>vi /etc/resolv.conf</userinput>
+[...]
+&prompt.root; <userinput>mount /cfg</userinput>
+&prompt.root; <userinput>cp /etc/resolv.conf /cfg</userinput>
+&prompt.root; <userinput>umount /cfg</userinput></screen>
+      </example>
+
+      <note>
+	<para>只有在系統啟動過程中,以及需要修改設定檔的時候,才需要掛載含有
+	  <filename role="directory">/cfg</filename> 的那個分割區。</para>
+
+	<para>一直都掛載 <filename role="directory">/cfg</filename>
+	  不是一個好主意,特別是當您把 <application>NanoBSD</application>
+	  放在不適合進行大量寫入動作的分割區時
+	 (比如:由於檔案系統的同步化會定期在系統碟內寫入資料)。</para>
+      </note>
+    </sect2>
+
+    <sect2>
+      <title>打造 NanoBSD 映像檔</title>
+
+      <para><application>NanoBSD</application> 映像檔是透過使用非常簡單的
+	<filename>nanobsd.sh</filename> shell  script 來打造的,這個 script 可以在
+	<filename role="directory"><replaceable>/usr</replaceable>/src/tools/tools/nanobsd</filename>
+	目錄中找到。 這個 script 建立的映像檔,可以用 &man.dd.1; 工具來複製到隨身碟上。</para>
+
+      <para>打造
+	<application>NanoBSD</application> 映像檔所需的指令是:</para>
+
+      <screen>&prompt.root; <userinput>cd /usr/src/tools/tools/nanobsd</userinput> <co id="nbsd-cd">
+&prompt.root; <userinput>sh nanobsd.sh</userinput> <co id="nbsd-sh">
+&prompt.root; <userinput>cd /usr/obj/nanobsd.full</userinput> <co id="nbsd-cd2">
+&prompt.root; <userinput>dd if=_.disk.full of=/dev/da0 bs=64k</userinput> <co id="nbsd-dd"></screen>
+
+      <calloutlist>
+	<callout arearefs="nbsd-cd">
+	  <para>進入 <application>NanoBSD</application> 打造 script 的主目錄。</para>
+	</callout>
+
+	<callout arearefs="nbsd-sh">
+	  <para>開始打造過程。</para>
+	</callout>
+
+	<callout arearefs="nbsd-cd2">
+	  <para>進入打造好的映像檔所在的目錄。</para>
+	</callout>
+
+	<callout arearefs="nbsd-dd">
+	  <para>在隨身碟上安裝 <application>NanoBSD</application>。</para>
+	</callout>
+      </calloutlist>
+    </sect2>
+
+    <sect2>
+      <title>自行打造 NanoBSD 映像檔</title>
+
+      <para>這可能是 <application>NanoBSD</application> 最為重要,
+	同時也是您最感興趣的功能。 同時,在開發
+	<application>NanoBSD</application> 應用程式時,這也是相當耗時的過程。</para>
+
+      <para>執行下面的指令將會
+	<filename>nanobsd.sh</filename> 讀取目前所在目錄的
+	<filename>myconf.nano</filename> 檔的設定:</para>
+
+      <screen>&prompt.root; <userinput>sh nanobsd.sh -c myconf.nano</userinput></screen>
+
+      <para>自行打造的流程,只需兩個步驟:</para>
+
+      <itemizedlist>
+	<listitem>
+	  <para>自訂選項</para>
+	</listitem>
+
+	<listitem>
+	  <para>自訂功能</para>
+	</listitem>
+      </itemizedlist>
+
+      <sect3>
+	<title>自訂選項</title>
+
+        <para>透過修改設定,可以設定用於
+          <application>NanoBSD</application> 打造過程中 <literal>buildworld</literal>
+          和 <literal>installworld</literal> 階段的編譯、安裝選項,以及
+          <application>NanoBSD</application> 主要打造過程中的選項。
+          透過使用這些選項可以削減系統的尺寸,使之能夠放入
+          64 MB 的隨身碟。 您還可以進一步透過這些選項來削減 &os;,
+          直到它只包含 kernel 以及兩三個 userland 檔案為止。</para>
+
+	<para>設定檔案中包含用以代替預設值的設定選項。簡介最重要的幾項設定如下:</para>
+
+	<itemizedlist>
+	  <listitem>
+	    <para><literal>NANO_NAME</literal> &mdash; 本次打造的名稱(所建立工作目錄的名稱)。</para>
+	  </listitem>
+
+	  <listitem>
+	    <para><literal>NANO_SRC</literal> &mdash; 用以編譯、打造映像檔的 source tree 的位置。</para>
+	  </listitem>
+
+	  <listitem>
+	    <para><literal>NANO_KERNEL</literal> &mdash; 設定用來編譯的 kernel 設定檔檔名。</para>
+	  </listitem>
+
+	  <listitem>
+	    <para><literal>CONF_BUILD</literal> &mdash; 用於
+	      <literal>buildworld</literal> 打造階段的選項。</para>
+	  </listitem>
+
+	  <listitem>
+	    <para><literal>CONF_INSTALL</literal> &mdash; 用於
+	      <literal>installworld</literal> 打造階段的選項。</para>
+	  </listitem>
+
+	  <listitem>
+	    <para><literal>CONF_WORLD</literal> &mdash; 用於
+	      <literal>buildworld</literal> 和
+	      <literal>installworld</literal> 這兩個打造階段的選項。</para>
+	  </listitem>
+
+	  <listitem>
+	    <para><literal>FlashDevice</literal> &mdash; 定義所用的嵌入式硬體類型。
+	      詳情請參考 <filename>FlashDevice.sub</filename> 檔。</para>
+	  </listitem>
+	</itemizedlist>
+      </sect3>
+
+      <sect3>
+	<title>自訂功能</title>
+
+	<para>透過在設定檔案中使用 shell 函數,可以進一步微調
+	  <application>NanoBSD</application>。 舉例說明一下自行打造函數的基本方式:</para>
+
+	  <programlisting>cust_foo()(
+	echo "bar=topless" &gt; \
+		&dollar;{NANO_WORLDDIR}/etc/foo
+)
+customize_cmd cust_foo</programlisting>
+
+        <para>下面舉更實際點的例子,它會把預設的
+          <filename role="directory">/etc</filename> 目錄大小,從 5MB 調整為 30MB:</para>
+
+	<programlisting>cust_etc_size()(
+	cd &dollar;{NANO_WORLDDIR}/conf
+	echo 30000 &gt; default/etc/md_size
+)
+customize_cmd cust_etc_size</programlisting>
+
+	<para>除此之外,還有幾個預設的功能定義可以用來自訂:</para>
+
+	<itemizedlist>
+	  <listitem>
+	    <para><literal>cust_comconsole</literal> &mdash; 在預設 VGA 顯示卡上停用 &man.getty.8;
+	     (<filename>/dev/ttyv*</filename>)並啟用 serial port 的 COM1 以作為系統 console。</para>
+	  </listitem>
+
+	  <listitem>
+	    <para><literal>cust_allow_ssh_root</literal> &mdash; 允許 &man.sshd.8;
+	      可以用 <username>root</username> 帳號登入。</para>
+	  </listitem>
+
+	  <listitem>
+	    <para><literal>cust_install_files</literal> &mdash;
+	      從 <filename role="directory">nanobsd/Files</filename>
+	      目錄中安裝檔案,這包含一些實用的系統管理 script 。</para>
+	  </listitem>
+	</itemizedlist>
+      </sect3>
+
+      <sect3>
+	<title>設定檔案舉例</title>
+
+	<para>下面是用於自行打造的 <application>NanoBSD</application> 映像檔的完整例子:</para>
+
+	<programlisting>NANO_NAME=custom
+NANO_SRC=/usr/src
+NANO_KERNEL=MYKERNEL
+NANO_IMAGES=2
+
+CONF_BUILD='
+NO_KLDLOAD=YES
+NO_NETGRAPH=YES
+NO_PAM=YES
+'
+
+CONF_INSTALL='
+NO_ACPI=YES
+NO_BLUETOOTH=YES
+NO_CVS=YES
+NO_FORTRAN=YES
+NO_HTML=YES
+NO_LPR=YES
+NO_MAN=YES
+NO_SENDMAIL=YES
+NO_SHAREDOCS=YES
+NO_EXAMPLES=YES
+NO_INSTALLLIB=YES
+NO_CALENDAR=YES
+NO_MISC=YES
+NO_SHARE=YES
+'
+
+CONF_WORLD='
+NO_BIND=YES
+NO_MODULES=YES
+NO_KERBEROS=YES
+NO_GAMES=YES
+NO_RESCUE=YES
+NO_LOCALES=YES
+NO_SYSCONS=YES
+NO_INFO=YES
+'
+
+FlashDevice SanDisk 1G
+
+cust_nobeastie()(
+	touch &dollar;{NANO_WORLDDIR}/boot/loader.conf
+	echo "beastie_disable=\"YES\"" &gt;&gt; &dollar;{NANO_WORLDDIR}/boot/loader.conf
+)
+
+customize_cmd cust_comconsole
+customize_cmd cust_install_files
+customize_cmd cust_allow_ssh_root
+customize_cmd cust_nobeastie</programlisting>
+      </sect3>
+    </sect2>
+
+    <sect2>
+      <title>更新 NanoBSD</title>
+
+      <para>更新 <application>NanoBSD</application> 相對 &os; 而言較為簡單:</para>
+
+      <procedure>
+	<step>
+	  <para>和之前一樣打造新的 <application>NanoBSD</application> 映像檔。</para>
+	</step>
+
+	<step>
+	  <para>將新的映像檔放入正運行的
+	    <application>NanoBSD</application> 中未用的分割區之一。</para>
+
+	  <para>與之前最初安裝 <application>NanoBSD</application> 的步驟相比,
+	    這一步驟最重要的區別在於:這次不用 <filename>_.disk.full</filename> 檔(它包含整個磁碟的映像檔),
+	    而應安裝 <filename>_.disk.image</filename> 映像檔(這個檔案中,只包含一個系統分割區)。</para>
+	</step>
+
+	<step>
+	  <para>重新啟動,並從新安裝的分割區中啟動系統。</para>
+	</step>
+
+	<step>
+	  <para>如果一切順利的話,升級工作就完成了。</para>
+	</step>
+
+	<step>
+	  <para>如果發生了任何問題,則可以從先前的分割區啟動
+	 (其中包含了舊的、 可用的映像檔),來盡快恢復系統功能。
+	  接下來可以修正新編譯的版本中存在的問題,並重複前述步驟。</para>
+	</step>
+      </procedure>
+
+      <para>要在正在運行的
+	<application>NanoBSD</application> 系統中安裝新的映像檔,可以使用位於
+	<filename role="directory">/root</filename> 目錄的
+	<filename>updatep1</filename> 或
+	<filename>updatep2</filename>  script ,
+	實際上要用哪一個 script,則取決於正在運行的系統是位於哪個分割區而定。</para>
+
+      <para>隨時提供新 <application>NanoBSD</application> 映像檔所提供的服務,
+	以及採用的傳輸方法的不同,您可以參考並使用下列三種方式之一:</para>
+
+      <sect3>
+	<title>使用 &man.ftp.1;</title>
+
+	<para>如果傳輸速度是第一要求的話,請採用下面例子:</para>
+
+	<screen>&prompt.root; <userinput>ftp myhost
+get _.disk.image "| sh updatep1"</userinput></screen>
+      </sect3>
+
+      <sect3>
+	<title>使用 &man.ssh.1;</title>
+
+	<para>如果想更安全的話,應參考下面例子:</para>
+
+	<screen>&prompt.root; <userinput>ssh myhost cat _.disk.image.gz | zcat | sh updatep1</userinput></screen>
+      </sect3>
+
+      <sect3>
+	<title>使用 &man.nc.1;</title>
+
+	<para>如果遠程主機既不提供 &man.ftp.1; 服務,也不提供 &man.sshd.8; 服務的話:</para>
+
+	<procedure>
+	  <step>
+	    <para>首先,在提供映像檔的主機上開啟 TCP listen,並讓它把映像檔傳給 client:</para>
+
+	    <screen>myhost&prompt.root; <userinput>nc -l <replaceable>2222</replaceable> &lt; _.disk.image</userinput></screen>
+
+	    <note>
+	      <para>請確認您所使用的 port 沒有被防火牆阻止來自
+		<application>NanoBSD</application> client 的連線請求。</para>
+	    </note>
+	  </step>
+	  <step>
+	    <para>連到提供新映像檔服務的主機,並執行 <filename>updatep1</filename> 這支 script:</para>
+	      
+	    <screen>&prompt.root; <userinput>nc myhost <replaceable>2222</replaceable> | sh updatep1</userinput></screen>
+	  </step>
+	</procedure>
+      </sect3>
+    </sect2>
+  </sect1>
+</article>
--- zh_TW.Big5.20060709_1.svn729.diff ends here ---


>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20060709092859.CD22C2E970>