FreeBSD
この記事は、最終更新日よりおよそ 10 年 1 ヶ月経過しています。 公式サイトなどで最新情報を確認してください。(最終更新:2014年6月) |
FreeBSD 関連めも。ここでは主に i386 9系列以降が対象。
外付けCDドライブからインストーラが起動しない
反応が遅い USB CD-ROMドライブを使っている時にありがち。 boot時にプロンプトに入って下記入力。
kern.cam.boot_delay=10000 boot
UEFI対応状況
FreeBSD の UEFI support は 4月上旬の FreeBSD/amd64-HEAD から対応した模様。 i386 や arm での対応も一応予定があるらしい…
対応状況、またそもそも筆者にとって当面必要性が無さそうなこともあり、現時点では本稿では扱わない。
以下は MBR を使う場合の話であることに注意すること。
Windowsのブートマネージャーから起動する
同じ機械でFreeBSDとWindowsを併用(デュアルブート)したい場合に設定する。
Windows Vista/7/8
下記の手順で Windows Boot Manager を設定する。
- FreeBSD の boot1 ファイル(稼働中システムの /boot/boot1 または インストールCDから取得できる)を用意し、Windows の起動ドライブのルートディレクトリ(C:¥ とする)に置いておく。
- コマンドプロンプト(のショートカット)を右クリックして「管理者として実行」。
- bcdedit /enum[Return] で一覧が出てくる。この中の identifier({}で囲まれたキーワードまたはUUID)に注目。
- 以下のコマンド操作。
C:\Windows\system32> bcdedit /create /d "FreeBSD" /application bootsector エントリ {UUID} は正常に作成されました。 C:\Windows\system32> bcdedit /set {UUID} device boot この操作を正しく終了しました。 C:\Windows\system32> bcdedit /set {UUID} path \boot1 この操作を正しく終了しました。 C:\Windows\system32> bcdedit /displayorder {UUID} /addfirst この操作を正しく終了しました。 C:\Windows\system32> bcdedit /enum ... リアル モード ブート セクター -------------------------------- identifier {********-****-****-****-************} device partition=C: path \boot1 description FreeBSD ...
/enum を実行して FreeBSD のエントリが追加されていることを確認できればひとまずOK。
この状態では、規定で FreeBSD が起動するので、もし普段は Windows を起動させたい場合は、上記例で /addfirst の替わりに /addlast を指定する。または上記設定した後であれば、Windows のエントリの identifier(現在起動している場合は{current})を指定して再度 /addfirst を実行する。
C:\Windows\system32> bcdedit /displayorder {current} /addfirst
その他の操作方法は bcdedit /? を参照。
2つ以上のOSが選べる状態では、起動時に初期状態で30秒待たされてしまう。この秒数を変えたい場合は下記の操作をする(下記例では5秒に設定)。
C:\Windows\system32> bcdedit /timeout 5
なお、規定のOSの選択と、タイムアウト秒数の設定に限り、コンピュータのプロパティ→システム詳細設定→詳細設定タブ→起動と回復の設定ボタンを押した画面からも変更可。
Windows 2000/XP
下記の手順で NTLDR の設定ファイル (BOOT.INI) を書く。
- FreeBSD の boot1 ファイル(稼働中システムの /boot/boot1 または インストールCDから取得できる)を用意し、Windows の起動ドライブのルートディレクトリ(C:¥ とする)に置いておく。
- C:¥BOOT.INI の属性(システム、隠しファイル)を解除。
- C:¥BOOT.INI をテキストエディタで開く。
- C:¥boot1="FreeBSD" などと追加して保存。
- C:¥BOOT.INI の属性を戻す。
FreeBSDのboot0(ブートマネージャ)を使う
FreeBSD/i386 9.0 以降ではインストーラが bsdinstall に替わり、8系列までの sysinstall ではブートマネージャの書き換えを選択できたが、9系列では出来なくなっている。 (なんでだろ。Windows Vista 以降ではかえって面倒だから?)
FreeBSD/i386 9.0 以降でブートマネージャ(boot0)を使いたい場合は、インストールの最後に "Manual Configuration" でプロンプトへ降りて boot0 を書き込む操作を行う。
# fdisk -B -b /boot/boot0 /dev/ada0
※/dev/ada0 は実際のインストール先ドライブに書き換えること。
この作業をし忘れた場合は、再度インストールCDから起動して、最初に Shell を起動すれば、同じ要領でできる。
参考
Windows Vista/7/8 との共存
Windows NT 6.x 系列(Windows Vista/7/8)では従来(4系列=NT 4.x、5系列=2000/XP)の NTLDR から Windows Boot Manager (BOOTMGR) にブートローダが変更され、GPT対応などがされているが、従来のMBRを使ったシステムにおいても、MBRやPBRのUUID (Disk Identifier / Disk Signature) が書き変わると起動しないようになってしまった。
FreeBSD と Windows Vista/7/8 を共存させる場合、後からFreeBSDを入れて上記の手順でMBRを書き換えるとWindowsが起動しなくなる。逆に、先にFreeBSDを入れて後からWindowsを入れるとMBRを書き換えられてしまうことがある。つまり、いずれにせよ下記のような修復作業が必要になる。
- Windows Vista/7/8 のインストールディスク(DVD)を用意、またはシステム修復ディスク(CD-R)を作成する。(コントロールパネル→バックアップと復元→システム修復ディスクの作成)
- FreeBSD の boot0 (MBR) を書き込む。
- Windowsのインストールorシステム修復ディスクで起動し、システムの修復を選択後、コマンドプロンプトに入る。
- bootrec /fixboot を実行。
- exit でコマンドプロンプトを抜け、再起動。
ここまでの手順を実行しても起動しない場合は、もう一度システム修復ディスクで起動し、コマンドプロンプトから
X:\Windows\System32> bootsect /nt60 c: (Windowsをインストールしたドライブ名) X:\Windows\System32> bootrec /fixboot X:\Windows\System32> bootrec /RebuildBcd
を実行。
※自動修復を行った場合や、プロンプトから bootrec /fixmbr を実行すると、FreeBSDのブートマネージャが消えるので注意。
参考
- Windows の起動時の問題を修復するためにWindows 回復環境で Bootrec.exe ツールを使用する。
- Windows が正常に起動しない場合の対処方法
- Windows と GPT に関する FAQ
SSD向けにTrim命令を発行する
SSD (Solid State Drive) を使っている場合、(機器により程度の差はあるようだが)Trim命令を発行することが望ましい。
FreeBSD では 8.3-RELEASE よりTRIMに対応しているが、自動では有効にならず、設定作業が必要。
9.0-RELEASE 以降の bsdinstall では、パーティション作成で Manual を選んだ場合のみ、Create 時の Option で TRIM を有効にすることができるようになっている(Guidedで自動作成した後のModifyでは設定できない)。
具体的には下記例のように tunefs を使う。
# tunefs -t enable /dev/ada0s2a
設定にはroot権限はもちろんだが、対象のパーティションがマウントされてるとうまくいかない。
要は、通常のパーティションならシングルユーザモードに入って設定すればいいわけだが、ルートパーティションを設定したい場合は、9系列以降のインストールCDから起動し、インストール開始前に <Shell> に入って設定する必要がある(LiveCDにするとルートパーティションがマウントされることがある)。
(manを見ると、読み込み専用マウントならOKのように読めるが、筆者が最初に試したときはreadonlyでも設定できなかったので、以降このようにしている。)
参考
無線LANを使う
WPA には FreeBSD 6.0-RELEASE より対応している。 具体的には、wlan と wpa_supplicant により対応しているので、これらを使うように ifconfig 等を設定する。
- アクセスポイントのSSIDやセキュリティキーなどを確認。
- 予め ifconfig や dmesg などを見て、無線LANデバイス名(ath, wi, wpi など)を特定する。
- /etc/wpa_supplicant.conf を書く。
- /etc/rc.conf を書き換える。
- service netif start で動作を確認。これで動けば、次からは再起動後に自動的につながるはず。
ここの例は、WPA/WPA2-PSK インフラストラクチャモードの場合。アドホックやWEPなどは FreeBSD Handbook 日本語版を参照。
無線LANデバイス名を見つけるには
ifconfig -a で media が 802.11 Wireless などとなっているものを探せば良い。ただしノートパソコンなどで無線LANが無効に設定されていると、認識されていないかもしれない。
# ifconfig -a ath0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 2290 ether 00:00:00:00:00:00 nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL> media: IEEE 802.11 Wireless Ethernet autoselect (autoselect) status: no carrier ...
/etc/rc.conf の書き方
例:
wlans_ath0="wlan0" ifconfig_wlan0="WPA DHCP"
/etc/wpa_supplicant.conf の書き方
例:
network={ ssid="homerouter" psk="passphrase" scan_ssid=1 # SSIDをブロードキャストしていないAPに接続する場合 priority=5 # 優先順位。数字が大きいほど順位が高い。 } network={ ssid="mobilerouter" psk="passphrase" priority=4 } network={ ssid="publicrouter" psk="passphrase" priority=3 }
/etc/wpa_supplicant.conf ファイルにはパスフレーズを直接記入するため、取扱注意。 root:wheel の所有にし、パーミッションは 600 に設定しておく。
参考
参考
- FreeBSD Handbook Chapter 30. Advanced Networking 30.3. Wireless Networking
- FreeBSDハンドブック 第22章 高度なネットワーク 22.3. 無線ネットワーク
(日本語版の方は内容が古く、WPAに関する記述は未稿。)