<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="http://blog.bs2.to/styles/rss.css" type="text/css"?>
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
>
 <channel>
  <title>LGJ Notes</title>
  <link>http://blog.bs2.to/EdwardLee</link>
  <description>蒙古大夫 2.0。
這裡紀錄的都不是我的專業，我的專業就是不專業。別傻了，什麼是專業？</description>
  <pubDate>Wed, 17 Mar 2010 09:30:24 +0800</pubDate>
  <generator>http://blog.bs2.to</generator>
        <item>
   <title>FreeBSD tips 集錦（一）</title>
   <description>
    這裡想收集一下我在使用 FreeBSD 的當中所碰到的一些小 tips，只有提要，而且可能並不完整（或有更好的其他方式）。原則上收集到十個條目就會編成一篇，所以這個主題是連續劇，將來會接龍下去。當然，如果有人提供一些 tips 給我，發表的次數就會比較密集（會註明提供者）。&lt;p&gt;&lt;br/&gt;&lt;ol&gt;
&lt;li&gt;內建 sh 與 bash 的不同：&lt;br /&gt;
  &lt;ul&gt;
  &lt;li&gt;不支援 multibyte characters。裡頭避免寫中文。&lt;/li&gt;
  &lt;li&gt;不支援 &lt;tt&gt;\usr\{dir1,dir2,dir3}&lt;/tt&gt; 的語法，他不會自動展開。&lt;/li&gt;
  &lt;/ul&gt;
&lt;/li&gt;&lt;p&gt;

&lt;li&gt;console 抓圖：&lt;br /&gt;
  使用 &lt;tt&gt;vidcontrol&lt;/tt&gt;：
&lt;pre&gt;
vidcontrol -P ﹤ /dev/ttyv0 [ ﹥ vid.txt]
&lt;/pre&gt;
  小寫 -p 會存成 binary 檔，可使用 &lt;tt&gt;scr2png&lt;/tt&gt; 來轉（轉檔方法由 chinsan 提供）。加 -H 會抓所有曾出現過的訊息。
&lt;/li&gt;&lt;p&gt;

&lt;li&gt;console 下的翻頁：&lt;br /&gt;
按 Pause 鍵或 Scroll Lock 鍵，會進入翻頁模式，這時使用 PageUp/PageDown 即可翻頁，再按一次 Pause/Scroll Lock 鍵，則回復原來模式。
&lt;/li&gt;&lt;p&gt;

&lt;li&gt;防止 Ctrl-Alt-Del 重開機鍵：&lt;br /&gt;
&lt;tt&gt;/etc/sysctl.conf&lt;/tt&gt; 加一行：
&lt;pre&gt;
hw.syscons.kbd_reboot=0
&lt;/pre&gt;
以上的設定要 6.1-R 以上的版本才行。舊版本可以重編譯 kernel 時加上以下的設定（chinsan 提供）：
&lt;pre&gt;
options SC_DISABLE_REBOOT
&lt;/pre&gt;
&lt;/li&gt;&lt;p&gt;

&lt;li&gt;ip 查詢：&lt;br /&gt;
&lt;pre&gt;
cidr - RFC 1878 subnet helper（vanilla 提供）
geoiplookup - look up country using IP Address or hostname（chinsan 提供）
&lt;/pre&gt;
&lt;/li&gt;&lt;p&gt;

&lt;li&gt;開機後進入 single mode：&lt;br /&gt;
開機後要進入 single mode，可以執行：
&lt;pre&gt;
shutdown now
&lt;/pre&gt;
然後按 Enter 鍵。此時，如果你不是在 &lt;tt&gt;ttyv0&lt;/tt&gt; login 的，別忘了按 &lt;tt&gt;Alt-F1&lt;/tt&gt;，否則會停在那裡不動，因為此時只開一個 &lt;tt&gt;ttyv0&lt;/tt&gt;。回復 multiuser mode，只要執行 &lt;tt&gt;exit&lt;/tt&gt; 即可。
&lt;/li&gt;&lt;p&gt;

&lt;li&gt;硬體資訊查詢：&lt;br /&gt;
&lt;pre&gt;
dmidecode - DMI(SMBIOS) table decoder
pciconf - diagnostic utility for the PCI bus
diskinfo - get information about disk device
&lt;/pre&gt;
&lt;/li&gt;&lt;p&gt;

&lt;li&gt;列出直接 link 的 lib：&lt;br /&gt;
&lt;tt&gt;ldd&lt;/tt&gt; 所列出的是 recursive 所 link 的 lib。要查直接 link 到的，使用 &lt;tt&gt;readelf&lt;/tt&gt;：&lt;br /&gt;
&lt;pre&gt;
readelf -d somebin | grep NEEDED
&lt;/pre&gt;
&lt;/li&gt;&lt;p&gt;

&lt;li&gt;&lt;tt&gt;rc.d&lt;/tt&gt; script 的啟動：&lt;br /&gt;
如果在 &lt;tt&gt;/etc/rc.conf&lt;/tt&gt; 或 &lt;tt&gt;/etc/rc.conf.local&lt;/tt&gt; 中沒有 enable 的項目，使用（chinsan 補充）：
&lt;pre&gt;
/etc/rc.d/xxx forcestart
/etc/rc.d/xxx forcestop
或
/usr/local/etc/rc.d/yyy forcestart
/usr/local/etc/rc.d/yyy forcestop
&lt;/pre&gt;
&lt;/li&gt;
多加一個 &lt;tt&gt;force&lt;/tt&gt;。&lt;p&gt;

&lt;li&gt;執行大型程式：&lt;br /&gt;
如果執行一些大型程式，發現無法執行，core dump 或記憶體不足，這是由於 FreeBSD kernel 預設每個 prosess 的 heap size 是 512MB，需要自行去調大，在 &lt;tt&gt;/boot/load.conf&lt;/tt&gt; 加入：
&lt;pre&gt;
kern.maxdsiz=&quot;1073741824&quot;  # max data size 1GB
kern.dfldsiz=&quot;1073741824&quot;  # initial data size 1GB
kern.maxssiz=&quot;134217728&quot;   # max stack size 128MB
&lt;/pre&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;

詳細的使用方法，請由 &lt;tt&gt;man&lt;/tt&gt; 來得知。

&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;p&gt;
&lt;font color=&quot;red&quot;&gt;【修訂】：Mon Feb  5 12:10:34 CST 2007&lt;/font&gt;&lt;br /&gt;
修正 typo（bsah），thanks to edwar。
   </description>
   <link>http://blog.bs2.to/post/EdwardLee/7777</link>
   <comments>http://blog.bs2.to/post/EdwardLee/7777</comments>
   <guid>http://blog.bs2.to/post/EdwardLee/7777</guid>
      <dc:creator>EdwardLee</dc:creator>
      
    <category>FreeBSD 筆記</category>
         <pubDate>Sat, 03 Feb 2007 23:05:54 +0800</pubDate>
   <source url="http://blog.bs2.to/rss/rss20/EdwardLee">LGJ Notes</source>
     </item>
          <item>
   <title>FreeBSD 如何 mount iso image？</title>
   <description>
    在 FreeBSD 要 mount 一個燒錄用的 iso 檔，並不像 GNU/Linux 般的容易。無法直接使用 &lt;tt&gt;mount&lt;/tt&gt; 指令給 mount 上來，這究竟是怎麼一回事？&lt;p&gt;&lt;br/&gt;在 GNU/Linux 有個 loop device（&lt;tt&gt;/dev/loop*&lt;/tt&gt;），可以給燒錄用的 iso 檔使用，就是把 iso 檔使用 &lt;tt&gt;-o loop&lt;/tt&gt; 參數直接 mount 上來，查看裡頭的內容細節，這本是非常平常的事。可是，到了 FreeBSD，發現並沒有 loop device 可以用，這下要怎麼把 iso 檔 mount 上來呢？&lt;p&gt;

首先想到的是
&lt;a href=&quot;http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook&quot;&gt;FreeBSD Handbook&lt;/a&gt;，找了一下，藏在&lt;a href=&quot;http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/disks-virtual.html&quot;&gt;第 17 章&lt;/a&gt;，而且敘述也很簡短，不過，總算是能用了。原來 FreeBSD 有一個虛擬的 memory disk device（&lt;tt&gt;/dev/md*&lt;/tt&gt;），他有多種用途，其中的 vnode 型態就可以給 iso 檔來用。&lt;p&gt;

但手續上就比較麻煩一點，例如，我們想把 xxx.iso 給 mount 上來的話，首先要去製作一個 vnode type 的 memory disk，並把 iso 檔內容映射至這個 md device，然後再來 mount 這個 md device：
&lt;pre&gt;
mdconfig -a -t vnode -f xxx.iso -u 0
mount -t cd9660 /dev/md0 /mnt/iso
&lt;/pre&gt;
這樣就行了，要把他 umount 也是要兩個動作：
&lt;pre&gt;
umount /mnt/iso
mdconfig -d -u 0
&lt;/pre&gt;
是否有此 md device 可以使用 &lt;tt&gt;mdconfig -l&lt;/tt&gt; 來得知。&lt;p&gt;

好像有點給他麻煩，我試著寫了兩個很醜的 sh script 來做這些動作，如果有人有更好的寫法，請不吝借我一用：
&lt;pre&gt;
#!/usr/bin/env sh
# vim:ts=2 sw=2 et
# isom.sh : mount iso on FreeBSD box using md device.
# Edward G.J. Lee (08/02/06)

if [ $# -eq 0 ]
then
  echo
  echo &quot;Usage: `basename $0` youriso&quot;
  echo
  exit 1
fi

file $1 | grep &#039;ISO 9660&#039; &amp;gt; /dev/null 2&amp;gt;&amp;amp;1
IFIOS=$?

if [ $IFIOS -eq 0 ]
then
  if [ ! -d $HOME/mnt/iso1 ]
  then
    mkdir -p $HOME/mnt/iso1
  fi
  mdconfig -a -t vnode -f $1 -u 0
  mount -t cd9660 /dev/md0 $HOME/mnt/iso1
  if [ $? -eq 1 ]
  then
    mdconfig -d -u 0
    echo
    echo &quot;mount failed.&quot;
    echo
    exit 1
  else
    echo
    echo &quot;mount under $HOME/mnt/iso1&quot;
    echo
    exit 0
  fi
else
  echo
  echo &#039;This is not an iso file, abort!&#039;
  echo
  exit 1
fi
&lt;/pre&gt;
不過，你要讓這個 user 有 md device 讀寫權限，否則就要使用 root 的身份來 mount。umoun 是寫在另外一個 sh script：
&lt;pre&gt;
#!/usr/bin/env sh                                                               
# vim:ts=2 sw=2 et
# isoum.sh : umount iso from FreeBSD md device
# Edward G.J. Lee (08/02/06)

umount $HOME/mnt/iso1
mdconfig -d -u 0
&lt;/pre&gt;
當然，由於我的環境很單純，只有我一個人在用，所以就固定在 &lt;tt&gt;/dev/md0&lt;/tt&gt; 了。雖然麻煩了點，不過 FreeBSD 的做法還真的感覺有點 hacker 風格呀！:-)
   </description>
   <link>http://blog.bs2.to/post/EdwardLee/7265</link>
   <comments>http://blog.bs2.to/post/EdwardLee/7265</comments>
   <guid>http://blog.bs2.to/post/EdwardLee/7265</guid>
      <dc:creator>EdwardLee</dc:creator>
      
    <category>FreeBSD 筆記</category>
         <pubDate>Mon, 25 Dec 2006 22:14:52 +0800</pubDate>
   <source url="http://blog.bs2.to/rss/rss20/EdwardLee">LGJ Notes</source>
     </item>
          <item>
   <title>FreeBSD 的 kern.maxdsiz</title>
   <description>
    曾經執行一些大一點的程式，去開大一點的檔案，結果就 crash 了，一直很納悶，因為，同樣的軟硬體，在 GNU/Linux 執行卻又完全正常。&lt;p&gt;&lt;br/&gt;在編輯字型檔，尤其是中文字型檔，通常需要多一點的資源。之前，使用
&lt;a href=&quot;http://fontforge.sourceforge.net/&quot;&gt;fontforge&lt;/a&gt;
去開一般的中文 TrueType 字型，竟然開不起來。於是跑去問 KANOU Hiroki，他是
&lt;a href=&quot;http://www.freshports.org/print/fontforge/&quot;&gt;fontforge FreeBSD port&lt;/a&gt;
的 maintainer。他告訴我把 &lt;tt&gt; kern.maxdsiz&lt;/tt&gt; 開大一些就行了。&lt;p&gt;

查了一下 &lt;tt&gt;/usr/src/sys/conf/NOTES&lt;/tt&gt; 及 &lt;tt&gt;/usr/include/machine/vmparam.h&lt;/tt&gt;，原來 FreeBSD 對系統資源的運用有一定的限制，預設的 max data seg size/per process 只有 512 MiB 而已。怪不得碰到一些怪獸級的軟體就跑不起來了。&lt;p&gt;
 
這個無需重編譯 kernel，只要在 &lt;tt&gt;/boot/loader.conf&lt;/tt&gt; 設定：
&lt;pre&gt;
kern.maxdsiz=&quot;1073741824&quot;
或
kern.maxdsiz=&quot;1G&quot;
&lt;/pre&gt;
就可以了，這樣就會增加至 1 GB 的大小。&lt;p&gt;

不過，很奇怪的是 &lt;tt&gt;sysctl&lt;/tt&gt; 這個指令無法查到這個設定值。我目前是使用：
&lt;pre&gt;
[edt1023@lgj ~]$ ulimit -d
1048576
&lt;/pre&gt;
來得知的。&lt;p&gt;

經過實際的測試，使用記憶體量仍然是大於 GNU/Linux 的使用量，甚至執行
&lt;a href=&quot;http://blog.bs2.to/post/EdwardLee/5765&quot;&gt;Linux ABI&lt;/a&gt;
就會明顯看出不一樣，以下是載入
&lt;a href=&quot;http://cle.linux.org.tw/fonts/cwttf/center/&quot;&gt;cwheib.ttf&lt;/a&gt;
的情形：
&lt;pre&gt;
使用 FreeBSD native fontforge：
[edt1023@lgj ~]$ ps aux|grep fontforge
edt1023    93980 38.3 63.6 330560 322596  p3  S+   10:00PM   0:08.69 fontforge -n

使用 Linux ABI fontforge.linux:
[edt1023@lgj ~]$ ps aux|grep fontforge
edt1023    93983 25.1 37.2 194428 188936  p3  S+   10:00PM   0:09.94 fontforge.li
&lt;/pre&gt;
明顯 FreeBSD native fontforge 資源使用相當的多，造成目前處理字型檔得靠 Linux ABI 才行，原因待追究。
   </description>
   <link>http://blog.bs2.to/post/EdwardLee/7244</link>
   <comments>http://blog.bs2.to/post/EdwardLee/7244</comments>
   <guid>http://blog.bs2.to/post/EdwardLee/7244</guid>
      <dc:creator>EdwardLee</dc:creator>
      
    <category>FreeBSD 筆記</category>
         <pubDate>Sun, 24 Dec 2006 21:45:30 +0800</pubDate>
   <source url="http://blog.bs2.to/rss/rss20/EdwardLee">LGJ Notes</source>
     </item>
          <item>
   <title>使用 portversion 而非 pkg_version</title>
   <description>
    在 FreeBSD 中的套件管理並不是一個單一的工具，他有許多工具同時存在，但都可以同時使用，指向統一的 pkg database，而不會造成混亂。&lt;p&gt;&lt;br/&gt;我們知道，在 FreeBSD base system 裡頭有個  &lt;tt&gt;pkg_version&lt;/tt&gt; 可以查知套件的版本號。最常用到的地方就是想更新套件時使用，例如：
&lt;pre&gt;
pkg_version -v -L=
&lt;/pre&gt;
就會列出系統中所安裝的現有套件版本號和 ports 中所存在的版本不同的套件，而我們就可以視情形來更新這些套件。&lt;p&gt;

但是，使用 &lt;tt&gt;pkg_version&lt;/tt&gt; 的一個很大的代價是，他的速度相當的慢。這時，我們可以安裝 &lt;tt&gt;portupgrade&lt;/tt&gt; 套件，這個套件有一個 &lt;tt&gt;portversion&lt;/tt&gt; 工具，和 &lt;tt&gt;pkg_version&lt;/tt&gt; 的功能是一樣的，但是速度就快得多了，以下是一個實際的例子：
&lt;pre&gt;
[edt1023@lgj ~]$ time portversion -v -L=
cups-base-1.2.7    ﹤  needs updating (port has 1.2.7_1) 
[省略]
ruby18-bdb-0.5.9   ﹤  needs updating (port has 0.5.9_2)

real    0m25.073s
user    0m21.341s
sys     0m3.212s
[edt1023@lgj ~]$ time pkg_version -v -L=
cups-base-1.2.7   ﹤   needs updating (port has 1.2.7_1)
[省略]
p5-Mail-SpamAssassin-3.1.7_1  ﹤   needs updating (port has 3.1.7_3)

real    5m28.321s
user    3m30.997s
sys     1m28.252s
&lt;/pre&gt;
看到了嗎？所花費的時間差太多了吧！你會用哪一個呢？

&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;p&gt;

&lt;font color=&quot;red&quot;&gt;修正：Sun Dec 24 12:46:35 CST 2006&lt;/font&gt;&lt;br /&gt;
&lt;a href=&quot;http://blog.gslin.org&quot;&gt;DK&lt;/a&gt; 大大提到了使用 INDEX 的方式：&lt;br /&gt;
&lt;a href=&quot;http://blog.gslin.org/archives/2006/12/24/969/&quot;&gt;關於 FreeBSD 下 pkg_version 與 portversion 的速度&lt;/a&gt;&lt;br /&gt;
發現，&lt;tt&gt;pkg_version -I&lt;/tt&gt; 才是最快的方式。
   </description>
   <link>http://blog.bs2.to/post/EdwardLee/7238</link>
   <comments>http://blog.bs2.to/post/EdwardLee/7238</comments>
   <guid>http://blog.bs2.to/post/EdwardLee/7238</guid>
      <dc:creator>EdwardLee</dc:creator>
      
    <category>FreeBSD 筆記</category>
         <pubDate>Sun, 24 Dec 2006 00:45:28 +0800</pubDate>
   <source url="http://blog.bs2.to/rss/rss20/EdwardLee">LGJ Notes</source>
     </item>
          <item>
   <title>FreeBSD + GNU/Linux 聯合大作戰（二）</title>
   <description>
    不可諱言的，目前 GNU/Linux 在市場上是比其他的 free unix-like OS 較受青睞，原因當然很多，這裡暫不探討這些原因。這裡要談的是，各廠商的軟體，只支援 GNU/Linux，而且又非 free/open source 的封閉性軟體的時候，那麼，使用
&lt;a href=&quot;http://www.freebsd.org/&quot;&gt;FreeBSD&lt;/a&gt;
的使用者怎麼辦呢？&lt;p&gt;&lt;br/&gt;這些沒有原始碼，又尚未有 FreeBSD native binary 的軟體不少，例如                 
&lt;a href=&quot;http://www.adobe.com/products/acrobat/readermain.html&quot;&gt;Adobe PDF Reader&lt;/a&gt;&lt;sup&gt;&amp;reg;&lt;/sup&gt;、&lt;a href=&quot;http://www.wolfram.com/&quot;&gt;Mathematica&lt;/a&gt;&lt;sup&gt;&amp;reg;&lt;/sup&gt;、&lt;a href=&quot;http://www.maplesoft.com/&quot;&gt;Maple&lt;/a&gt;&lt;sup&gt;&amp;trade;&lt;/sup&gt;、&lt;a href=&quot;http://www.mathworks.com/&quot;&gt;MATLAB&lt;/a&gt;&lt;sup&gt;&amp;reg;&lt;/sup&gt;、&lt;a href=&quot;http://www.oracle.com/index.html&quot;&gt;Oracle&lt;/a&gt;&lt;sup&gt;&amp;reg;&lt;/sup&gt; 等等，這些軟體有 GNU/Linux binary，但並沒有 FreeBSD binary，而且也沒有原始碼，縱使想自行編譯也拿他們一點辦法也沒有。&lt;p&gt;

在 FreeBSD 有實作 Linux ABI（Application Binary Interface），他能夠很巧妙的在執行 Linux binary 時，把該呼叫的函式，轉為呼叫 Linux 的函式，這樣就能『直接』在 FreeBSD 上執行 Linux binary 了。雖然官方文件仍然沿著歷史的因素，稱呼為 Linux emulator，但他其實並不是模擬器，因為執行時也載入真正的 Linux kernel/lib 供應用軟體呼叫，也因此有人稱他為 Linuxulator。&lt;p&gt;

當然，要達成這樣子的功能，必須先安裝一套 GNU/Linux base system。Linux 核心（系統呼叫的部份）也需先載入 linux 模組（&lt;tt&gt;linux.ko&lt;/tt&gt;）。GNU/Linux base system 可以從 ports 安裝，目前有 Fedora Core/Gentoo/Debian/SuSE 等可供選擇，這樣就行了。&lt;p&gt;

我們就來試試看這個 Linux ABI 的能耐，這裡以 Adobe Reader 來做測試，這個軟體滿常用到的，而前陣子 FreeBSD port 中只有 7.0.1 的版本（目前已經有 7.0.8），由於這個新版本有一些突破性的功能，例如 3D Object，我們就來試試看如何在 FreeBSD 執行 Linux binary。&lt;p&gt;

&lt;pre&gt;
cd /usr/ports/emulators/linux_base-fc4
make install clean
vi /boot/loader.conf 加入
  linux_load=&quot;YES&quot;
或尚未載入而又不想重開機的話，可以使用 kldload 來載入：
  kldload linux
&lt;/pre&gt;

這樣就可以直接執行 Linux binary 了，當然這些 binary 所需要的額外動態函式庫（*.so）要自行 copy 到：
&lt;pre&gt;
/usr/compat/linux/usr/lib
或
/usr/compat/linux/usr/X11R6/lib
並執行
/usr/compat/linux/sbin/ldconfig
&lt;/pre&gt;
這樣執行 Linux binary 時才找得到所需要的動態函式庫。&lt;p&gt;

Adobe Reader 就比較單純，因為必要的 lib 是本身就有附上，而其他 lib 在所安裝上的 linux_base 中就已經有了，所以只要解開在一個獨立目錄，修改一下 acroread 這個 sh script：
                                                                                
&lt;pre&gt;
  Linux)
    ACRO_CONFIG=intellinux
把他修改成：
  Linux|FreeBSD)
    ACRO_CONFIG=intellinux
&lt;/pre&gt;

就成了。我個人使用的是英文版的，但有加裝中日韓文字型，所以閱讀不內嵌中日韓文字型的 PDF 就沒有問題了。&lt;p&gt;

&lt;center&gt;
&lt;a href=&quot;http://pic.bs2.to/content.php?id=edwardlee&amp;amp;album=9416E39C&amp;amp;photo=AB8813B9C3.png&quot;&gt;
&lt;img src=&quot;http://pic.bs2.to/content.php?id=edwardlee&amp;amp;album=9416E39C&amp;amp;photo=AB8813B9C3.png&quot; width=&quot;90%&quot; height=&quot;90%&quot; alt=&quot;AR 7.0.8 on FreeBSD&quot; title=&quot;AR 7.0.8 on FreeBSD；click 放大&quot;&gt;&lt;/a&gt;
&lt;/center&gt;&lt;p&gt;

萬一你要執行的 linux binary，系統無法辨識（較新的 GNU/Linux 所編譯出來的可執行檔大部份情形都可以辨識），例如：
&lt;pre&gt;
file your_linux_binary | awk &#039;/Linux/ {print $10,$12}&#039;
&lt;/pre&gt;
並沒有輸出任何資料的話（一般 Linux binary 會輸出 `GNU/Linux&#039; 字樣），那麼可以利用 &lt;tt&gt;brandelf&lt;/tt&gt; 把他標示上去：
&lt;pre&gt;
brandelf -t Linux your_linux_binary
&lt;/pre&gt;
這樣系統就會辨識出他是 GNU/Linux binary。或者由於相關的可執行檔太多，一個一個去修正會很麻煩，我們可以讓系統對於無法辨識的 binary，就把他當做是 GNU/Linux binary：
&lt;pre&gt;
sysctl kern.fallback_elf_brand=3
想一開機就有這個設定的話，在 /etc/sysctl.conf 加入：
kern.fallback_elf_brand=3
&lt;/pre&gt;

那個 ELF ABI 代號 3 是 ELF 的型態，是由 SCO/USL（Unix Systems Laboratories）所訂定的，要得知目前所能支援的 ELF ABI 代號，可執行：
&lt;pre&gt;
[edt1023@lgj ~]$ brandelf -l
known ELF types are: FreeBSD(9) Linux(3) Solaris(6) SVR4(0)
&lt;/pre&gt;
即可得知。

這個 Adobe Reader 的例子算是比較單純的，一些複雜些的軟體，可能需要做 lib 的對應（&lt;tt&gt;/etc/libmap.conf&lt;/tt&gt;）。一些大型的商業軟體的使用可以參考：
&lt;a href=&quot;http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/linuxemu.html&quot;&gt;FreeBSD handbook 第十章&lt;/a&gt;。


&lt;p&gt;&lt;bt&gt;&lt;p&gt;&lt;br /&gt;
相關參考資料：&lt;br /&gt;
&lt;a href=&quot;http://www.bsdforums.org/forums/archive/index.php/t-909.html&quot;&gt;http://www.bsdforums.org/forums/archive/index.php/t-909.html&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://kerneltrap.org/node/13&quot;&gt;http://kerneltrap.org/node/13&lt;/a&gt;
   </description>
   <link>http://blog.bs2.to/post/EdwardLee/5765</link>
   <comments>http://blog.bs2.to/post/EdwardLee/5765</comments>
   <guid>http://blog.bs2.to/post/EdwardLee/5765</guid>
      <dc:creator>EdwardLee</dc:creator>
      
    <category>FreeBSD 筆記</category>
         <pubDate>Thu, 03 Aug 2006 19:12:33 +0800</pubDate>
   <source url="http://blog.bs2.to/rss/rss20/EdwardLee">LGJ Notes</source>
     </item>
          <item>
   <title>FreeBSD + GNU/Linux 聯合大作戰</title>
   <description>
    轉換到 FreeBSD 也有差不多半個月，當初是以一個月至三個月來做緩衝期，不過，比我預料的還順利。當然，這中間還要感謝 Vanilla 以及 chinsan 兩位重量級大大從旁抽空幫忙說明，所以，比我預期的時間還短。整個熟悉是還談不上，但至少可以工作了。&lt;p&gt;&lt;br/&gt;目前比較頭疼的是，我還要維護 Slackware 中文化的工作，所以會在兩個作業系統之間兩頭跑，一些共同資料需要同步，操作上才會方便，例如電子郵件、news group 及一些跟了好久要用到的軟體的 cvs pools。由於我只是個人在使用，因此問題就單純了很多。&lt;p&gt;

所幸，當初我是好幾個 GNU/Linux distro 在使用，所以本就有共用磁區，而且是使用 ext3 的檔案系統，所以，這部份在 FreeBSD 就可以使用 ext2fs 掛載上來。經過測試，這在 FreeBSD 讀寫都沒有問題，只是讀寫的效率稍微差了一些，但仍在可接受的範圍。我的 email/news/筆記/程式/cvs pools 就放在這個磁區，這樣這些資料就不管我在哪個作業系統工作，都能夠同步了。&lt;p&gt;

我的 Slackware 使用的是 reiserfs 檔案系統，現在的 FreeBSD 也支援 reiserfs，只是，只能讀，不能寫，不過這樣就已經很方便溝通了。另外，swap 的部份雖然也有方法共用，但我不想冒這個風險，所以 swap 是各自獨立&lt;p&gt;

再來是，當初規劃的 FreeBSD 那個磁區，所給的空間小了一點，只好把一個 linux native 的磁區拿來給他用。現在問題就來了，由於 FreeBSD 是不能
安裝在 DOS Extended partition，而一個硬碟只能有四個 primary partition，所以，當初就割了一個大大的 DOS Extended partition，再來在其內分割成好幾個 logical partition，而共用磁區及 Slackware 剛好就是放在這些磁區上。&lt;p&gt;

在 FreeBSD 雖然表面上是看不到這些 logical partition，但其實還是能用，比較麻煩的是，如果是要使用 ufs2 檔案系統，那要回到 GNU/Linux，去使用 linux 的 fdisk，把他修改成 FreeBSD 磁區代號（0xa5）。再回到 FreeBSD，去把他 newfs 成 ufs2 檔案系統，這樣就可以給 FreeBSD 掛上來使用了。&lt;p&gt;

所以，我目前的掛載情形就變成了：
&lt;pre&gt;
[edt1023@lgj ~]$ mount
/dev/ad0s1a on / (ufs, local)
devfs on /dev (devfs, local)
procfs on /proc (procfs, local)
/dev/ad0s1d on /home (ufs, local, soft-updates)
/dev/ad0s1f on /usr (ufs, local, soft-updates)
/dev/ad0s1e on /var (ufs, local, soft-updates)
/dev/ad0s6 on /mnt/slk102 (reiserfs, local, nosuid, read-only, mounted by edt1023)
/dev/ad0s7 on /mnt/extra (ufs, local, soft-updates)
/dev/ad0s8 on /mnt/pub (ext2fs, local, nosuid, mounted by edt1023)
/dev/ad0s9 on /mnt/hd (ext2fs, local, nosuid, mounted by edt1023)
&lt;/pre&gt;

其中的 slice 6 至 slice 7 都是在 DOS Extended partition 裡頭的 logical partition，其中 slice 7 是格式化成 ufs2 給 FreeBSD 使用的。在 GNU/Linux 下看起來是長成這個樣子的：

&lt;pre&gt;
edt1023:~$ dmesg | grep hda
Kernel command line: ro root=/dev/hda6 hdc=ide-scsi vga=789
ide0: BM-DMA at 0xffa0-0xffa7, BIOS settings: hda:DMA, hdb:pio
hda: HDS728080PLAT20, ATA DISK drive
hda: attached ide-disk driver.
hda: host protected area =&amp;gt; 1
hda: 160836480 sectors (82348 MB) w/1719KiB Cache, CHS=10011/255/63, UDMA(100)
hda: hda1 hda2 hda3 ﹤hda5 hda6 hda7 hda8 hda9﹥ hda4
hda1:﹤bsd: hda10 hda11 hda12 hda13 hda14﹥
&lt;/pre&gt;

&lt;tt&gt;/dev/hda1&lt;/tt&gt; 是安裝 FreeBSD（&lt;tt&gt;/dev/ad0s1&lt;/tt&gt;）。&lt;tt&gt;/dev/hda3&lt;/tt&gt; 是 DOS Extended
partition。其中 &lt;tt&gt;/dev/hda8&lt;/tt&gt; 就是在 FreeBSD 上的 &lt;tt&gt;/dev/ad0s8&lt;/tt&gt;，其他依此類推。這樣，雖然 FreeBSD 上，這些 logical partition 看不到，但卻是「吃」得到的。&lt;p&gt;

當然，在 GNU/Linux 2.6.x kernel 開始，也支援 ufs2 檔案系統，也就是說，FreeBSD 的各個 slice 都可以 mount 上來，這裡就不多談了，因為，我現在主作業系統是放在 FreeBSD 呀！:-) &lt;p&gt;

工作環境已經就緒，那麼接下來一定會碰到許多細節問題，這需要時間，而且我預估的時間還包括啃文件，這個時間可能就會拖比較長了，所以，當初預估一至三個月的緩衝期應該還算是適當的，如果有認真閱讀文件的話，搞不好還不夠哩！


&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;p&gt;
PS. Well，我知道模擬器，不過，我不用這些東西！
   </description>
   <link>http://blog.bs2.to/post/EdwardLee/5555</link>
   <comments>http://blog.bs2.to/post/EdwardLee/5555</comments>
   <guid>http://blog.bs2.to/post/EdwardLee/5555</guid>
      <dc:creator>EdwardLee</dc:creator>
      
    <category>FreeBSD 筆記</category>
         <pubDate>Sat, 01 Jul 2006 22:25:49 +0800</pubDate>
   <source url="http://blog.bs2.to/rss/rss20/EdwardLee">LGJ Notes</source>
     </item>
          <item>
   <title>轉移至 FreeBSD</title>
   <description>
    我常使用的作業系統是
&lt;a href=&quot;http://en.wikipedia.org/wiki/GNU/Linux&quot;&gt;GNU/Linux&lt;/a&gt; 及
&lt;a href=&quot;http://www.freebsd.org&quot;&gt;FreeBSD&lt;/a&gt;。一直以來的主作業系統是
GNU/Linux，當然不太挑是哪一個 distribution（distro），也認為各 distro
間並沒有檯面上所說的差異那麼大，所以大概一些主流的 GNU/Linux distro
都有使用過。最近幾年來使用的主 distro 則是
&lt;a href=&quot;http://www.slackware.com/&quot;&gt;Slackware&lt;/a&gt;。&lt;p&gt;&lt;br/&gt;FreeBSD 的使用，其實和我使用 GNU/Linux 差不多的時間，但並沒有深入，走馬看花，所以一直沒有當成我的主作業系統。&lt;p&gt;

我的作業系統的主要功能是 desktop。別懷疑，我使用 GNU/Linux 當 desktop
也有十幾年了。當然，很多人認為 GNU/Linux/FreeBSD 是比較適合當成 server
來用的。看你怎麼用吧？我一不玩電動，二不想受商業公司的控制，而我所要完成的工作，在 GNU/Linux 都能夠完成，那麼，當成 desktop 又有何不可？&lt;p&gt;

我預計花一至三個月的時間，把所有在目前 Slackware 上作業的工作，巨細糜遺的轉移到 FreeBSD 平台（希望順利），這也是我會把時間估算的那麼長的原因，除了實際上的工作轉移，我還想把一些重要文件研讀一下，畢竟，要做為主作業系統，一般的狀況都要能掌握，才不會到時又要多花時間去處理。&lt;p&gt;

我不從事資訊業，所以這些作業系統真的是在使用（非商用），我也沒有推廣 XXX 的大志向，別人用不用我用的作業系統和我毫無關係。所以，希望這可以避開各 GNU/Linux distro 間的「權力爭鬥」，該要競爭的是某個議題是否有好的 solution 了，而不是某個 distro 是否比較好了，其實重要的問題沒有解決，各種 distro 還不就是半斤八兩，五十步笑百步，裡子用的東西不是大家都一樣？那些表面的推廣，言過其實的宣傳，帶給真正去用過的人的觀感是很不一致的，我不想身處這種沒有意義的漩渦中，被一些想商業化的人牽著鼻子走。&lt;p&gt;

由於目前 Slackware 算是 GNU/Linux 中最老牌的 distro，在台灣使用的人大概不多了，不過，他的中文化的工作我會視時間許可繼續下去，除非 Slackware 這個老店倒了，但主作業系統則全數轉移到 FreeBSD。
   </description>
   <link>http://blog.bs2.to/post/EdwardLee/5495</link>
   <comments>http://blog.bs2.to/post/EdwardLee/5495</comments>
   <guid>http://blog.bs2.to/post/EdwardLee/5495</guid>
      <dc:creator>EdwardLee</dc:creator>
      
    <category>FreeBSD 筆記</category>
         <pubDate>Thu, 15 Jun 2006 22:50:45 +0800</pubDate>
   <source url="http://blog.bs2.to/rss/rss20/EdwardLee">LGJ Notes</source>
     </item>
     </channel>
</rss>
