NixOSでNTFSファイルシステムを読み書きする
はじめに
前回の投稿でNixOSのインストールから日本語環境、GUI環境の構築までを紹介しました。今回はWindowsからLinuxに移行したら必要になると思われるNTFSファイルシステムの書き込み、つまりWindowsで使っていたディスクをLinuxで書き込みできるようにするお話です。
NTFSファイルシステムを読み書きするには
ntfs3gというパッケージをインストールする必要があります。このパッケージをインストールすることで、NixOS上でWindowsのNTFSファイルシステムをマウントして読み書きができるようになります。nix-envコマンドでインストールしましょう。
nix-env -i ntfs3g
読み込みだけでしたら、あとは設定ファイルconfiguration.nixに一行書き込むだけで、接続されているディスクがFilesアプリ上にstorageとして表示されます。
boot.supportedFilesystems = [ "ntfs" ];
ストレージをクリックすればパスワードを聞いてきますので、現在ログインしているユーザーパスワードを入力してください。読み込みできますので、Windowsのストレージからファイルをコピーして持ってこられます。書き込みもしたい、フルアクセスを目指す場合は次に進みます。
次にマウントしたいWindowsのディスクを調べます。fdiskコマンドを使って、現在接続されているディスクを表示させます。一般ユーザーの権限ではfdiskコマンドが使えないのでroot権限を取得します。
sudo -i
パスワードを聞いてきますので、現在のユーザーログインパスワードを入力します。ルートユーザーに切り替わったらfdiskコマンドで調べましょう。
[root@nixos:~]# fdisk -l
Disk /dev/nvme0n1: 931.51 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: CSSD-M2B1TPG3VNF
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: B3993C11-1155-40FC-9247-6DC757202C28
Device Start End Sectors Size Type
/dev/nvme0n1p1 2048 206847 204800 100M EFI System
/dev/nvme0n1p2 206848 239615 32768 16M Microsoft reserved
/dev/nvme0n1p3 239616 1952198655 1951959040 930.8G Microsoft basic data
/dev/nvme0n1p4 1952198656 1953521663 1323008 646M Windows recovery environment
Disk /dev/nvme1n1: 953.87 GiB, 1024209543168 bytes, 2000409264 sectors
Disk model: ADATA SX8200PNP
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: A783DA0C-359E-402D-A979-9AB03D5E6458
Device Start End Sectors Size Type
/dev/nvme1n1p1 34 32767 32734 16M Microsoft reserved
/dev/nvme1n1p2 32768 2000406527 2000373760 953.9G Microsoft basic data
Disk /dev/sdb: 1.82 TiB, 2000398934016 bytes, 3907029168 sectors
Disk model: Seagate BarraCud
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 36174537-4F96-4D0C-9A04-3A400586E774
Device Start End Sectors Size Type
/dev/sdb1 34 32767 32734 16M Microsoft reserved
/dev/sdb2 32768 3907026943 3906994176 1.8T Microsoft basic data
Disk /dev/sda: 476.94 GiB, 512110190592 bytes, 1000215216 sectors
Disk model: INTEL SSDSC2KW51
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: B07066FD-E671-E04D-B646-9554C4EABEF6
Device Start End Sectors Size Type
/dev/sda1 2048 1050623 1048576 512M EFI System
/dev/sda2 1050624 1000215182 999164559 476.4G Linux filesystem
[root@nixos:~]#
今回はデータ保存用として使用している2つのドライブ、/dev/nvme1n1と/dev/sdbをNixOSにマウントします。
マウントする場所は任意ですが、ユーザーフォルダ直下が良いと思うので、ログインしているユーザーフォルダ直下にマウントするフォルダを作成します。
mkdir Winfile1
mkdir Winfile2
今回はWinfile1とWinfile2というフォルダを作成します。この2つのフォルダにストレージをマウントします。起動時にマウントするように、configuration.nixファイルを編集します。 今回も設定ファイルの編集にはnanoを使います。
nano /etc/nixos/configuration.nix
設定を追加します。私のユーザー名はnokiyameegoなので、実際に設定するときはご自身のユーザー名を入れてください。
冒頭の一行を設定ファイルに記載した方は、その後に続けて書き込みましょう。
boot.supportedFilesystems = [ "ntfs" ];
fileSystems."/home/nokiyameego/Winfile1" = #ユーザー名はご自身のものを
{ device = "/dev/nvme1n1p2";
fsType = "ntfs";
options = [ "rw" "uid=nokiyameego" ]; #ユーザー名はご自身のものを
};
fileSystems."/home/nokiyameego/Winfile2" = #ユーザー名はご自身のものを
{ device = "/dev/sdb2";
fsType = "ntfs";
options = [ "rw" "uid=nokiyameego" ]; #ユーザー名はご自身のものを
};
設定したファイルをリビルドします。
nixos-rebuild switch --upgrade
その後再起動すれば、登録したストレージがマウントされているはずです。
終わりに
私の環境はWindowsとNixOSのマルチブートになっていますので、これでWindowsストレージにアクセスできるようになりました。WindowsでやっていたことをLinuxでできるように環境を少しずつ構築しています。まだまだ至らない点や間違いがあると思います。ビギナー視点でわかりやすく手順を追ったつもりです。
NixOS独自の世界に興味を持っていただけたら、ぜひインストールして試してみてください。楽しいひと時を過ごせるはずです。