読者です 読者をやめる 読者になる 読者になる

ソフトウェアとハードウェアの境界

ホビー開発に関する誰得情報満載☆

LinuxBean + FreeBSD + Windows10 マルチブート

FreeBSDが気になって仕方がない

もうずっとずっと気になっている。
毎朝、向かいのホームで電車を待つ彼女、くらい気になる。
以前に一度Linuxとのデュアルブートでインストールしようとしたのだが、Grubから起動できなかったり、ちょっと扱いに困ったので諦めた。

FreeBSDのインストールは、この年末年始に取り組んだ課題の一つである。 ではなぜFreeBSDが気になるのか。 OS関連の書籍などを読んでいるとよく目にする、UNIXの歴史的経緯。

A diagram showing the key Unix and Unix-like operating systems

BSDは何を隠そう、Unix V6の正当な子孫なのだ。 つまり、僕の大好きなDennis Richie(デニス・リッチー)の子孫でもあるわけだ。 そんなデニスの子孫になんとなく触れてみたい、というただそれだけの理由で気になっている。

因みにLinuxはその横のMinixに触発されて作成されたそうだ。

僕はBSDLinuxのどっちが好きとか優れてる、なんて考えは全く持っていなくて、どっちも大好き。 現在も現役バリバリで働いてるOS、特にUnix系OSの話題の記事など読んでいてテンションが上がる。

こんな記事も見つけた。
osdn.jp
リーナスさんは言います。
「どちらも優れているし、どちらもソフトウェアとして正しい、方向性は違えども。」
本当にそう思います(よくわかってないけど)。

FreeBSDのハードルの高さ

まず、FreeBSDを使ってみようと思ったとき、お試しする方法としては、以下の3つの方法があると思う。

普通に考えてFreeBSDを直接インストールして単一で使おうとは思わないだろう。 僕の場合、上の2つは考えていなかった。 やっぱりOSは直接インストールしてこそ本領を発揮するし、その本領を見なければ試す意味もないと思う。 だからといって、今まで使ったこともないOSのみでマシンを駆動するのも大変だ、ということでマルチブートを採用した。

FreeBSDのインストール方法についてはこちらを参照しよう。
https://www.freebsd.org/doc/ja_JP.eucJP/books/handbook/bsdinstall-start.html
The FreeBSD Project
「インストール手順も書きなさいよ」と言われそうだが…。
FreeBSDは、単純にUnixに触れてみたいという思いだけでは使えないと思う。 Linuxは大抵のディストリビューションにおいて、インストール直後から必要なものの150%くらいを用意してくれている。 だから軽量Linuxなどはその余計なものを取っ払って、100%にしたり80%に抑えてあとはユーザに任せたりする。

FreeBSDは全然違っていて、僕のなんとなくの直感だけど、まず20%くらいしか用意してくれていない。 そこから必要な物を各自が用意していくという感じだ。
それぞれのツール、その用途をわかった上で自らチューニングしながらインストールしていかなければならない。 そういった部分からすでに、ハードルの高さが全く違うわけだ。

不要なものを削っていく、あるいは停止させる作業と、無いものを順次作って用意していく作業とでは、その難易度に差があって当然。 だから、FreeBSDをちょっと使ってみようと思った皆様方は、上記に張っているリンクへ飛び、しっかりとドキュメントを読み、基礎的な知識を得てインストールする、ということをおすすめする。

Linuxを極めし者ギークとなり、FreeBSDを極めしは「道」となる。

いう慣用句がもう少しでできるとか。
インストール手順を書くのが面倒だという訳ではないのですよ(という言い訳)。

FreeBSDのパッケージ管理

あと、FreeBSDを扱う上でよくわからなかったのが、パッケージ管理。 そもそも僕はUnix系OSMacOSXLinuxしか触れたことがなく、主にLinuxを使用していたので、わざわざソースをコンパイルしてインストールするということはあまりなかった。 単純に「apt-get」で大抵のツールが手に入ったからだ。

だから、FreeBSDportsとか「pkg」がよくわかっていなかった。
FreeBSDでは、この2つがパッケージ管理の要になるようだ。

  • pkg → コンパイル済パッケージの管理
  • ports → ソースの依存関係の解決、管理

簡単に説明すると、「pkg」は「apt-get」と同様、リポジトリにおいてあるコンパイル済バイナリパッケージを、依存関係を解決しながらインストールしていく仕組みである。
ports」はソースコードコンパイルしていく仕組みで、あるパッケージをインストールする際に依存関係にあるソースコードも取得してコンパイルしていく。 /usrディレクトリにportsディレクトリがあり、各パッケージはその中でカテゴリ別にディレクトリ分けされている。
インストールしたいパッケージのディレクトリに入り、makeしてインストールするのがportsの仕組みだ。
portsを使用すると、そのパッケージのコンパイル方法を詳細に決めることができ、運用方法に見合ったパッケージを作成することができる。

マルチブート環境

あまり詳細にインストール手順などは書くつもりはないのがだ、僕は以下のパーティション分けでインストールした。

  • LinuxBean 14.04 : 200GB
  • FreeBSD 10.2 : 80GB
  • Windows10 : 残り容量

よく、「マルチブート環境ではWindowsからインストールする」みたいな記事をよく見かけるのだが、僕はとりあえず上記の順番にインストールしていった。 Windowsをあとからインストールすると、MBRを上書きされてしまいgrubを再度インストールする手間があるが、Windows7からWindows10へアップグレードなどでどんな挙動をするかわからなかったので、この順番を採用した。

FreeBSDのインストール

FreeBSDをインストールする上で、一点ハマったことがあったので、メモしておく。
2.6. ディスク領域の割り当て
ディスク領域の割り当てをするときに、他の領域と同じように作成したパーティションに、直接ルート("/")ディレクトリを割り当てられないということ。

FreeBSDパーティション作成(サンプル画像)

https://www.freebsd.org/doc/ja_JP.eucJP/books/handbook/bsdinstall/bsdinstall-part-review.png
これはFreeBSDを単一でインストールする場合のパーティション分けになっている。
マルチブートする場合、この何もマウントしないfreebsd-ufs領域を作成し、その下にもう一つfreebsd-ufs領域を作成して、それにルート("/")ディレクトリを割り当てなければならない。

ada0
    ada0p1 200GB ext4 (Linux)
    ada0p2 80GB  freebsd-ufs   NONE
                    |
                    ----- freebsd-ufs   /
    ada0p3 216GB NTFS 

みたいな。
具体的な画像とか残せたらよかったけど、インストール中のスクリーンショットってどうやって撮るんだろう…。

LinuxBeanでgrubの再インストール

上記のOSを全てインストールできたら、grubの再インストールをする。 LinuxBeanのLiveCDを起動し、ターミナルから以下のコマンドを実行する。

# mount /dev/sda1
# grub-install /dev/sda1

パーティションをマウントしないとビジー状態で書き込みができない、みたいなエラーが出る。
上記のコマンドが成功したら、再起動する。 これで起動時にいつものgrubの画面が表示されるはずだ。

FreeBSD起動メニューの作成

grubLinuxWindowsに関しては自動で起動パーティションを見つけてくれるのだが、FreeBSDファイルシステムは見つけてくれないようだ。
grubからFreeBSD起動する場合は、Grub Customizerでメニューを作成する必要がある。  

Grub Costomizer


このようにFreeBSDの起動メニューは自動では作成されない。
追加ボタンをクリックし、以下の画面を表示する。

Grub Costomizer メニュー追加


ソースタブをクリックし、以下のテキストを貼り付け。

set root='(hd0,msdos2)'
chainloader +1

これでOKすれば完了。
hd0,msdos2はHDDのパーティションをどのように分けたかなど、インストールした環境によって変わる。
こちらの記事とかがわかりやすいので拝読してみるべし。
jp.linux.com

上記の設定完了後、再起動すると、めでたくマルチブート環境の完成だ。

FreeBSDの実際

少しだけ試してみたけど、portsを利用するとコンパイルに時間がかかって大変だった。
デスクトップ環境を構築しようと思ってコンパイルをしていったのだが、依存関係のパッケージをコンパイルする度にオプションを指定しなければならなかった。 その度にコンパイルがストップするので、ずっと監視していなければならずなかなか大変だった。
デスクトップ以外にもvimzshも同様に結構な時間がかかり、単純にlxdeを起動してターミナルからvimを起動するだけでも、FreeBSDインストールを始めてから丸2日ほどかかったと思う。
うーん、今後どのように使っていくべきか考えねばならぬ。
使い方さえしっかり覚えれば爆速環境を構築できるはずなのだが…。