僕が持っている色々な PC は WindowsOS と FreeBSD でマルチブートしています。デスクトップ PC の場合は M2.SSD の他に SATA 2.5 インチ SSD と、更に USB HDD を接続して、全てのストレージは NTFS と UFS (ZFS ではない;-) に分割して、どちらの OS でも高速アクセスと、ビッグデータ蓄積領域を確保している状態です。
普段は FreeBSD を利用しているのだけど、たまに Windows11 を起動してアプリを利用したり、蓄積していたデータをファイルサーバにアップして、再度 FreeBSD を起動してファイルサーバから取ってくる。とかしていましたが、今後はそーいう動作は必要なくなります。
FreeBSD 13.1-RELEASE (正確には 13.0-R 辺りからかな?) では NTFS 領域がマウントできて、かつ FreeBSD から rw アクセスが可能となりました。 sysctl で vfs.usermount=1 などとすると、一般ユーザ権限でマウントして、かつ、設定によっては自動的にマウントできたりします。
そして KDE5 などを使っていると dolphin (KDE5 のファイルマネージャ) から簡単にアクセスできるようになります。
設定方法について、順番に見ていきましょう。
1. ports からインストール
まずは ports から sysutils/fusefs-ntfs をインストールします。そして /boot/loader.conf に以下の行を書きます。
|
これで完了です。
2. 実際にマウント
僕のデスクトップ PC の場合、 FreeBSD の起動時に以下の SSD と HDD が認識されています。
|
nvd0 が M2.SSD で / パーティション他がある、メインの SSD です。
ada0 は SATA SSD で da0 は USB HDD です。全て WindowsOS と FreeBSD で半分ずつ (NTFS と UFS で半分ずつ) 利用しています。
実際に NTFS をマウントしてみるには以下のコマンドを利用します。
|
ports から sysutils/fusefs-ntfs をインストールすると ntfs-3g というコマンドがインストールされ、そのオプションに -o rw を指定しているので FreeBSD から書き込みもできるようになります。
これで NTFS の中のデータを取り出すために WindowsOS を起動することがなくなりました;-)。
3. automount しちゃうよ
KDE5 を利用している場合、 sddm からログインすると、ログインした段階で色々なファイルシステムを一般ユーザ権限でマウントしてくれる機能があります。
一般ユーザのアカウント takachan でログインすると、自動マウントさせたい場合には上にも書いた通り /etc/sysctl.conf に以下の設定をします。
|
この他に「KDE システム設定」でちょっと設定します。
「KDE システム設定」を起動して「起動と終了」→「Background Services」をチョイスすると、その中に [Removable Device Automounter] という項目があるのでこれにチェックを入れて更に再生ボタンを押してステータスを『実行中』にします。
次に同じく「KDE システム設定」の「リムーバブルストレージ」→「Removable Devices」をチョイスして、一番下にある [Automatically mount removable media that have never been mounted before] にチェックを入れて [適用]ボタンを押します。
これで、一旦ログアウトして再度ログインするか、service sddm restart してからログインしてみます。
と、いうか、sddm を再起動したあと、リモートから ssh でログインして df -k とかたたいて確認して、そのあとで sddm から一般ユーザでログインするとログイン後に様々なファイルシステムがマウントできることが確認できます。
僕のデスクトップ PC の場合はこんな感じになります。
|
/media/ ディレクトリのは以下にデバイス名付きで自動的に、一般ユーザ権限でマウントされます。デバイス名の後ろは p2,p3 とありますがパーティション名ですね。
Windows11 の C:\ や リカバリ領域なども自動マウントします。あと、UFS なファイルシステムも自動マウントしてしまいます。
Filesystem が /dev/fuse の場合は NTFS か FAT で /dev/da0p3 と表示されている場合は UFS ですね。 /media/Samsung_SSD_870_QVO_1TB_S5RRNF1R566155H_p3 は UFS ですが、これは /dev/ada0p3 で既に /opt にマウントしているので自動マウントされません。
KDE5 を利用した場合は opendesktop.org 由来の UDisks2 が利用されます。 FreeBSD 的かつ ports 的には sysutils/bsdisks が動作して plasmashell から dbus を経由して自動マウントしてくれるようです。
NTFS ファイルシステムを自動マウントしたくない場合は kldload fusefs.ko をやめれば良いです(あとで別件で説明します)。 UFS はもう完全に自動マウントしてしまうので止められない。自動マウント自体を停止したい場合は「KDE システム設定」の [Removable Device Automounter] を停止するしか手はないです。
KDE5 を利用している場合には KDE5 側で自動マウントしてくれますが、KDE5 を利用していな場合、 sysutils/dsbmd をイントールして /etc/rc.conf に dsbmd_enable=YES を書く必要があるかもしれません。
詳細については以下の URL を参照してください。
https://github.com/mrclksr/DSBMD
上記の dsbmd は ports のコンパイル時の make onfig で様々なファイルシステムを検知、自動マウントしてくれるようです。裏を返すとそれだけ色々な fusefs をインストールする。と、いうことになると思いますが。 ext4 とか HFS+ とかすげーな。みたいな・・。
一般ユーザ権限で色々なファイルシステムを自動マウント。遊んでみてください;-)。
4. 注意制限事項
注意点は二つ。
- Bitlocker で保護されている NTFS はマウントできない
- USB HDD の場合、スピンドルが止まっている場合がある
順番に見ていきましょうか。
Lenovo の ThunkPad X13 は Windows11 と FreeBSD のマルチブートですが、 Windows11 の NTFS は Bitlocker で保護されているので ntfs-3g ではマウントできません。以下のようになります。
|
上記のようなエラーが出た場合は WindowsOS 側で「コンピュータの管理」→「ディスクの管理」を開いて当該パーティションが『Bitlocker で保護されてます。』と、いう表示があるか確認してみましょう。
この場合 kldload fusefs.ko していても意味ないです。リカバリ領域が見えても意味ないし・・。
次の USB HDD の場合ですが、SSD と違い外付け USB HDD の場合、ケースの機能によっては HDD の回転を停止するものがあります。自動マウントしている状態で HDD のスピンドルが停止していた場合、 cd /media/USB-HDD/ とか ls /media/USB-HDD/ すると、そこから HDD のスピンドルが回り始めます。この場合、ほぼほぼ CAM status: SCSI Status Error が出ます。そして、マウントしている状態だけど ls しても表示してくれない・・。 orz
外付け HDD の場合は cd とか ls でアクセスする前に以下のコマンドを打つ必要があります。
|
上記コマンドを打った段階で停止していた HDD (/dev/da0) のスピンドルが回り始めます。そのあとで cd とか ls でアクセスするようにしましょう。
以上、FreeBSD で NTFS に対するアクセスと、ファイルシステムの一般ユーザ権限での自動マウントについて書いてみました。
マルチブートしている PC の場合、もう一方の OS の中へアクセスしたい。と、いうことは多々あるのですが、今回は FreeBSD 側から WindowsOS の NTFS に対して簡単にアクセスする方法を書いてみました。
皆さんの環境でも是非、導入してみてください;-)。自動マウントはらくちんですよ。