自身はNetBSDをメインとして使わせて頂いているものの、FreeBSD-10.0-RC4を仮想マシンに、一時的ながらFreeBSD 10.1 RELEASEを物理マシンにインストールしたことがあるFreeBSD、最近、汎用的なレスキューUSB作りに凝っていて*BSDレスキュー用途で手軽に入手できるFreeBSDのインストーラ兼(CLIベースの)Live版に興味を持ちました。
そこでUSBメモリに入れてみようとftp://ftp.freebsd.org/pub/FreeBSD/releases/i386/i386/ISO-IMAGES/11.0/でディスクイメージを確認、軽量なものという前提で探すと現時点では、FreeBSD 11.0 RELEASE i386用インストーラ兼ライブには、USBメモリ用のFreeBSD-11.0-RELEASE-i386-mini-memstick.imgやCD/DVD/USBハイブリッドな模様のFreeBSD-11.0-RELEASE-i386-bootonly.isoが良さそう。
一応、この2つをダウンロード、mini-memstick.imgよりも取り回しが楽なbootonly.isoが気に入り、検証の流れ上、基本、同じ内容のMBR形式、GPT形式1本ずつあるUSBメモリそれぞれにdd、マルチブート構成にもでき、Live版もとても良好です。
尚、[Live CD]を選択した場合、アカウントはroot、パスワードはないのでroot、[Enter]でログインできます。
FreeBSDのファイルシステムはUFS/UFS2、ZFS。。。と思い込んで疑わず、自身で行なったにも関わらず、ISOディスクイメージをddしたパーティションのマウント時に少しハマりました。
ISOをddしたんだから、他のファイルシステムに突然変異するわけもなく、当然、当該パーティションのファイルシステムは、ISO9660。
Linuxでは何もしなくても、NetBSDではdisklabelの当該パーティションのfstypeにISO9660、fsizeに0を指定してあれば、タイプを指定しなくてもマウントされますが、敢えて手作業するならLinuxではmount.iso9660/mount -t iso9660、NetBSDではmount_cd9660/mount -t cd9660。
そりゃそうですよね。。。
一方、mini-memstick.imgは、FreeBSD boot、FreeBSD UFS、FreeBSD swapの3つのパーティションから成るGPT形式でした。
ただ、これ、パーティションにはddできず、USBメモリまるごと1本使う必要がある上、最大、というかデフォルトで128(論理的にはもっと)作成できるパーティション数が、上記3つに限定されており、マルチブートできないことが判明。
しばし、考えた末、メインマシンは、NetBSD以外にも補完の為、Linuxの内、Debianをマルチブート構成にしてある為、LinuxならfdiskでもGPT形式を扱うことができることは承知も、パーティション数の制限の操作はできないはずだが、DebianにGPT用のgdiskを入れれば、なんとかなるのかも?と試してみることに。
結果、予想通り、[x extra functionality (experts only)]から[s resize partition table]を実行すれば、パーティション数を変更することができること、セクタ調整値も[d display the sector alignment value]で確認、[l set the sector alignment value]で設定できることがわかりました。
が、いざパーティション数を変更しようとすると「最初のパーティションテーブルが重複してるから数を減らして改めてやってみな」的なメッセージが表示され、停止、最終的に1つだけしか増やすことができませんでした。
奇しくも何れもUEFI/EFIとは無縁も手持ちの数台のPCは、GPT形式のレスキューUSBを起動できることを確認済みにも関わらず、このGPT形式のFreeBSD専用USBメモリ直だとノートdynabookでは起動するのにデスクトップPavilion Slimlineでは起動せず、違いと言えば、GRUB経由か否か、ならばGRUBをインストールすればいけるのか。。。ということで1つ増えたパーティションをGRUB用にして試してみたら、予想通り、Pavilionでも起動させることができるようになりました。(FreeBSD UFSパーティションに対してkfreeBSD /boot/loader)
これ以上パーティション数を増やせないのは、既にある3つのパーティション位置が原因?これを変えないとダメ?だとしたら、GRUB 2からは、kfreebsd /boot/loaderでUFSパーティションを読み込めた為、これだけ抽出すればよい?と思ってレスキューUSBに入れてあるCloneZillaでFreeBSD専用と化したUSBメモリからクローンイメージを作って他に余ったのがなかった(実はラズパイシステムパーティション用の予備として16GBの新品が1本あるが使いたくなかった)ため、当該USBメモリをGPT形式で初期化、パーティションを作ってddしてみましたが、起動しない。。。
そこでFreeBSDハンドブックを見るとswapも含め.img内の3つのパーティションは必須らしいことが判明。。。ということは、3つともイメージ化してGPTで初期化後、これら用のパーティションを作ってそれぞれddすれば良さげ?
と思いつつ、bootonly.isoで満足していることもあり、まだ、試していませんが、この制限は、必要に迫られてのことなのか、他に入れられたくないという意図があるのか?何も考えず固定にしたのか?何れにしてもFreeBSDのみ必要としているユーザー以外には、ユーザーフレンドリーとは言い難い現実。。。
尚、このmini-memstick.imgのファイルシステムは、UFSなので、これをddした場合には、NetBSDでは、GPT形式の場合、gptコマンドとdkctlコマンドを使って/dev/dk?をマウントすることになりますが、タイプ指定なしでマウントできるはず(手作業ならmount_ffs/mount -t ffsかmount_ufs/mount -t ufs(実は同じ))、Linuxでは、mount -t ufs/mount.ufs -o ro,ufstype=ufs2でマウントできます。
FreeBSD一筋、専用USBで結構、むしろ歓迎というならmini-memstick.imgやmemstick.img、そうでなければ、bootonly.isoか、disc1.isoやdvd1.iso、内、より軽量なものを探している場合やFreeBSD Live目的の場合、マルチブートさせたい場合などは、bootonly.isoという選択になるでしょう。(中身の違いは2.3. インストール前に行う作業参照。)
尚、少ししてからNetBSDでも簡単にLiveイメージを作成でき、マルチブートにできる方法もわかり、レスキューUSBにも入れてあるので自身としては使い慣れたNetBSDの方を使う機会の方が多いかとは思うものの、あるに越したことはないので併せてこのFreeBSDインストーラ兼Liveも入れさせて頂いています。
ちなみにNetBSD Live、FreeBSD Liveのみならず、このマルチブート構成のレスキューUSBには、Linux環境もある上、Windows対応ディストロ、アンチウィルスやクローニングほか有用なツール満載で多機能で(何なら以前作ってあったGUIベースのWindows 7 PE入りUSBメモリも)あり、*BSD/Linux/Windowsなら何かとカバーできますし、その必要があるなら使い慣れたシステムやツール、ストレージを嵩張ることなく持ち歩くことができるという点は、この上ないメリットと言えるでしょう。
必要性からではなく、興味本位で始めたレスキューUSB作り、レスキューと言えばレスキューも実際のところは、HDD/SSDから立ち上げるまでもない場合に*BSD LiveやLinux Liveを、特定のツールを使うだけの場合、それらのLiveを。。。といった具合に作ってみると結構、使い途はある(何かと使おうという意思が働く)もので日常的に重宝しています。