Maのエッセイへ

FreeBSDでCUIな「ノート型ワークステーション」を仕立ててみる

FreeBSDは,特に5以降のバージョンと私との相性が悪く,gentoo linuxに走ってからというもの,放置していたのですが,Software Designの2011年10月号の「FreeBSD絶対主義」を読んで,再度挑戦してみようと思いました。インストール手順がPC-BSDのインストールディスクでPC-BSDじゃない方をインストールするというイレギュラーな方法論で,これはPC-BSD自体が存在していなかった(はずの)4とは相当異なるので,ひととおりまとめておきたいと思います。

1 インストールディスクの用意

 インストールディスク用のファイルをダウンロードし,DVDに(ディスクイメージとして)書き込んで,インストールディスクを作ります。
 おおもとのサイトとしてはhttp://www.pcbsd.org/があります。ここのサイトからだと「Download Current Release PC-BSD 8.2」のボタンを押すか,「Get It」から「8.2 Hubble downloads」を選ぶと,どこから何をダウンロードするかの選択画面が出ます。そこで,ファイルとしては「DVD 64bit」,場所としてはネットワーク的に近い所でJapanの中から適当な場所を選びます。
 もっとも「DVD 64bit」は「AMD CPU用じゃないか?」って感じのメッセージが見受けられるので,AMD 64bitCPUじゃない機械で,うまく動かない場合には「DVD 32bit」を試すべきかもしれません。(私はAMD支持者なので……(笑)。)また,後でpackageで追加インストールしようとすると,このDVDでは動いてくれなかったので,回線が充分に早い場合には,DVDではなくCDのboot onlyのファイルでbootだけのディスクを作るので充分かもしれません。なにせDVDのファイルは大きいので,私の環境(下り3MのADSL)では,何時間という単位でダウンロードに時間がかかりました。

2 windowsからHDDの領域を確保しておく

 私の場合,インストールの実験に使う機械には,windowsと(そのwindowsの領域内に)Ubuntu Linuxを入れてあります。その方が完璧に動くまでの間のファイル転送が楽だったり(windowsなりubuntuなりのファイルシステムを読み書きできるようになると,実験対象のOSのネットワークまわりや周辺機器まわりが壊滅していても,windowsやubuntuでファイルを入手して,実験対象のOS領域に転送することができます。)設定を確認できたりして,好都合なのです。領域確保もwindowsのディスクの管理でやってしまうと,FreeBSD側でやることが減って楽です。(まあいつかwindowsの力を借りないで動くようにするのが目標なのですが……。)
 FreeBSDの場合は,昔から領域を1つ確保すると,インストーラーの方で1つの中に複数の領域があるかのように処理してくれるので,1つだけ確保してもらえれば充分です。
 なお,ブートローダーとしてMBMがインストールされていることを前提にします。MBMがインストールされている場合,特に何もしなくても,MBMの起動画面でFreeBSDが表示されますし,選択すると問題なく起動してくれるので便利です。
 あと,windowsで設定しているか否かにかかわらず,デフォルトゲートウェイとDNSのIPアドレスも調べてメモしておきましょう。

3 インストールディスクから起動

 インストールディスクから起動します。

4 ブート画面はそのままで可

 BSDおなじみの白黒のブート画面が出ます。
 1を選んでもいいですし,そのままにしても1を選んだことになるんでそれでもいいです。
 ちなみに,その後yes/noを聞かれますが,そこも放置でかまいません。

5 インストール言語の選択

 「Japanese」を選んで問題ありません。

6 ホスト名の選択

 その機械の(ドメイン付の)名前をこの時点で指定することができます。FreeBSDなんで,後で指定もできますが,ここで指定する場合には「指定したホスト名を使用する」にチェックを入れた上で,その下の欄にホスト名を入力します。私は,ここで指定して問題ありませんでした。
 終わったら「次へ」を押します。

7 キーボードの選択

 キーボードを選びます。大抵はいわゆる「日本語106か日本語109」でしょうから,左側で「japan - (jp)」を選び,右側で「」を選びます。私はいわゆる英語キーボード派なので,左で「U.S English - (us)」右で「」を選択しています。
 ちなみに選んだ後で,カーソルを下の枠にあわせてキーボードで入力すると,入力された文字が表示されるので,それでチェックできることになっています。
 終わったら「次へ」を押します。

8 システムのインストール方法の選択

 上の段では一番左の「新規インストール」を選びます。
 次の段(インストールするシステム)では右の「FreeBSD」を選びます。
 ちなみにここで左のPC-BSDを選ぶとPC-BSDがインストールされます。PC-BSDのインストールはUbuntuなみに簡単になっていますので,UbuntuのインストールののりでBSDをインストールしたい方は,PC-BSDを試してみることをお勧めします。
 一番下の段(インストール元)では,インストールメディアとして左の「DVD/USBを使用する」を選びます。
 もっとも回線が充分に早ければ右のネットワーク/インターネット経由を選んでもいいはずですし,boot only CDの場合はネットワーク経由を選ぶしかないはずですが……。いずれも試してはいません。
 終わったら「次へ」を押します。

9 インストール先の選択

 「インストール先とするディスクドライブを選択してください」となっている一番上の段は,インストール先として,2で確保した領域のあるHDDを選びます。
 次の段では,特にこだわりがない限り「自動分割を行う」を選んだ上で,インストール先のパーティションとして2で確保した領域を選びます。
 ……ここで,「自動分割を行う」を選ばなければ,1つの領域内でどう割り振るかを調整できるのですが,調整できる人はたぶん私のこの文書を呼ぶ必要がそもそもないはず。
 ちなみにこのパーティションの名前(例えば「ad0s2」)をメモしておくとあとあと便利です。
 次の段でファイルシステムを選ぶのですが,好みのファイルシステムとして好きな方を選んでください。最近のFreeBSDはZFSが流行なので,ZFSを選ぶのがありますが,他のOSからの読み書きを考えるのであればZFSにしない方がいいかもしれません。
 後で述べるとおり,FreeBSD側からwindowsの領域を読めるようになっていますので,私はZFSにしました。
 「ユーザーデータを暗号化」のチェックもどちらでもいいでしょう。私は外しました。
 最下段のチェックは外しておきます。(ブートローダーとしてMBMがインストールされているという前提。)
 終わったら「次へ」を押します。

10 ユーザーの作成

 管理者パスワードとして左と右に同じ文字列を入れます。絶対に忘れないように!
 加えて,ユーザーアカウントを1つ作っておくのが定石です。
 「追加」を押さないと追加されませんので要注意です。
 「自動ログインする」のチェックは外します。
 終わったら「次へ」を押します。

11 タイムゾーンの設定

 「Asia/Tokyo」を選択します。
 「インターネット経由で時刻を自動設定する(NTP)」は後で設定することにして,ここではあえてチェックを外します。
 「他の言語関連のファイルを削除する」のチェックは外したままでいいと思います。
 終わったら「次へ」を押します。

12 オプション機能の選択

 これもあえて何も追加しないことにします。
 たぶんそれでさくさくインストールできると思います。
 ……ports,srcなんで入れてもいいはずだけど,後でも入れられるし。
 終わったら「次へ」を押します。

12 インストール実行

 最後に,これまでのインストールのオプションが表示されますので,「次へ」で進み,インストールを開始するか聞かれるので「Yes」を選びます。
 インストールが終了すると,その旨表示されるので,DVDを抜いた後でボタンを押します。そうするとFreeBSDが起動します。

13 プログラムの追加インストール総論

 プログラムの追加のインストールについて,FreeBSDの場合大きく分けて2つのやり方があります。1つは既にコンパイル済みのプログラムを導入するpackageの利用,もう1つは環境に応じてコンパイルした上で導入するportsの利用です。

(1)packageの利用

 sysinstallと打つと,全画面で表示されますのでconfigure→package→ftp
 その後,ネットワーク的に近いサイトを指定して開始です。
 ……だいぶ時間がかかります。
 たいていはpackageを利用することで問題ないと思います。
 慣れてきたら順次portsにも手を出してみるというので充分だと思います。
 ちなみにファイル名が例えばsomethingだとわかっている場合,
「pkg_add something」とすることでもインストールされます。

(2)portsの利用

 一番最初だけ
「portsnap fetch」
「portsnap extract」
「portsnap update」
の3つの命令を順次実行させておく必要があります。
その後は適当なタイミングで
「portsnap fetch」
「portsnap update」
の2つの命令を実行することでportsの内容を最新のものに更新しておけば足ります。
その上で,(somethingという名のプログラムをインストールする場合)
「cd /usr/ports」でportsのディレクトリに移動した後
「make search name="something"」でsomethingという名のプログラムを探します。
目的のプログラムのあるディレクトリsomewhereが見つかったら
「cd somewhere」としてそのディレクトリに移動した後,
「make config-recursive」
「make install clean」
でインストールされます。

14 /etc/resolv.confの書き換え

「nano -w /etc/resolv.conf」で「nameserver xxx.xxx.xxx.xxx」の行を増やしておきます。
具体的にはDNSサーバーのIPアドレスをxxx.xxx.xxx.xxxの所に入れます。
私はprimary, secondaryの他,デフォルトゲートウェイも書いています。
(デフォルトゲートウェイは別の所に別の書式で書くはずだ!)

15 nanoのインストール

 設定ファイルの書き換えがgentoo linuxなみに発生しますので,お手軽なエディタを入れておきます。
 FreeBSDの場合vi(もしくはそのクローン)が既に使えるはずなのですが,vi使いでない限り,よくわからないので,nanoを入れることにします。私も普段はemacs使うつもりで初期に入れるのですが,それでもnanoはまっさきに入れました。インストールが断然早いのですし,設定ファイルなしにとりあえず動くので,とりあえず入れておくと便利なのです。
 「Editors」→「nano」

15 NTFS-3Gのインストール

 windowsの領域を読み書きできるようにしておくと,FreeBSD側でネットワークが使えない場合でも,windowsでファイルを持ってきてそれをFreeBSDから使えるようになるので便利です。
 パッケージだと「sysutils」→「fusefs-ntfs」をインストール。
「nano -w /etc/rc.conf」で末尾に「fusefs_enable="YES"」を追加
「nano -w /etc/fstab」で,適宜「/dev/ad0s1 /win ntfs rw,late 0 0」を追加。
(windowsの領域が/dev/ad0s1でそれを/winにマウントする前提なので,mkdir /winしておく必要あり。
 また,/etc/fstabは区切りにspaceではなくtabを使用すること。)
「/usr/local/etc/rc.d/fusefs start」で実行しておく。
 あとは再起動かければwindowsの領域も読み書きできます。
※設定をきちんとすれば日本語のファイル名も表示できます。

16 jfbtermのインストール

(1)下準備

jfbtermを動かすのに必要な次のプログラムをインストールしておきます。
パッケージからでかまいません。
「converters/libiconv」(たぶん入っているとは思うけど)
「devel/autoconf」
「devel/automake」
「devel/gmake」
「devel/pkg-config」
「graphics/png」
「x11-fonts/gnu-unifont」

(2)jfbterm本体のインストール

今やportsにもパッケージにも入っているjfbtermなのですが,私とはなぜか相性が悪いので,本家から直接落としてコンパイルします。
「fetch http://www.ac.auone-net.jp/~baba/jfbterm/jfbterm-FreeBSD-0.6.1.tar.gz」
「tar xvzf jfbterm-FreeBSD-0.6.1.tar.gz」
「cd jfbterm-FreeBSD-0.6.1」
「./configure CPPFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib --prefix=/usr/local --mandir=/usr/local/man」
「/usr/local/bin/gmake」
(ちなみにここまでの作業はroot権限不要だけど以下は必要と思われます。)
「/usr/local/bin/gmake install」
「cat /usr/local/share/jfbterm/termcap.jfbterm >> /usr/share/misc/termcap」
「cap_mkdb /usr/share/misc/termcap」
「cp /usr/local/etc/jfbterm.conf.sample /usr/local/etc/jfbterm.conf」
(参照 http://www.ac.auone-net.jp/~baba/jfbterm/

目下の課題