ここ数週間はレポートの提出やソフトウェアのレビュー等でWindowsを使っていました。
いざManjaro Linuxに戻ろうと思ったら、途中でファイルの書き込みができないことに気づきました。
いろいろ試した結果、解決したので備忘録として置いておきます。
自環境のストレージ構成
現状では、WindowsとLinuxでファイルシステムの一部を共有しています。
ストレージ | 用途 | ファイルシステム |
---|---|---|
M.2 NVMe SSD 250GB | Windows | NTFS |
SATA SSD 250GB | Linux | EXT4 |
SATA SSD 500GB | ユーザーファイル | NTFS |
Linuxでは以下のフォルダを500GB SSDの方に作成し、シンボリックリンクを貼ってあります。
- Desktop
- Documents
- Downloads
- Music
- Pictures
- Public
- Templates
- Videos
どこでエラーが起きたか
ダウンロードしたファイルをVimで編集して保存しようと思ったときに、「read-only file system」と警告され、書き込みができませんでした。
また、Shutterで撮ったスクリーンショットの保存場所をPictures内に変更しようとしたときも出来なかったんです。
これで、まず疑ったのはfstabです。
fstabによる自動マウント設定
以前はThunarから手動でマウントしていたのですが、面倒くさくなってきたので/etc/fstabに設定を追加していました。
UUID=7A10645D106421FD /mnt/D ntfs defaults,umask=000,dmask=027,fmask=137,uid=1000,gid=1000 0 0
この設定が間違っているのが原因で書き込みができないのでは、と最初は考えたのですが違いました。UUIDやマウントオプションは間違っていませんでした。
以下は設定方法です。
UUIDの確認方法
まず、自動マウントしたいストレージをファイルマネージャーでマウントします。ここではマウント位置を確認します。
次に、ファイルシステム名をdfコマンドで確認します。上で確認したマウント位置に対応するファイルシステム名を覚えます。
df -h
最後に、blkidコマンドでファイルシステム名に対応するUUIDを取得します。加えて、ext4やfat32といった形式も確認もできます。(コマンドに管理者権限が必要な場合があります。)
blkid // 出力がない場合 sudo blkid
マウントオプションの設定方法
マウントするストレージのファイルに対する権限を設定します。
まずは、dmask, fmask, umaskです。
- dmask … ディレクトリに対する権限
- fmask … ファイルに対する権限
- umask … 新規作成したファイル・ディレクトリに対する権限
といったイメージになります。
また、ファイル属性はlsコマンドで確認できます。
ls -l
番号が示すファイル権限は、2の累乗で
r(読み込み) | 4 |
w(書き込み) | 2 |
x(実行可能) | 1 |
の和となります。
しかし、fstabはこの3桁の数字を777から引いたものを記入します。(ややこしいですが…)
id
再マウント時にエラーが!
fstabを編集後にストレージをアンマウントして、再マウントしてみました。
sudo umount /mnt/D/ sudo mount -a
しかし、ここで以下のエラーメッセージが表示されました。(起動時の自動マウントはエラー表示がされないので気づかなかった…)
ただ、Windowsシステムはハイバーネートも高速起動も有効化していません。
詰みかけていたのですが、調べているとntfsfixという機能を見つけました。
NTFSFixですべて解決!
ntfsfixはNTFSシステムのエラーをチェックして自動で修正できる機能です。
注意として、引数にシステムファイル名を取ります。
※マウント場所ではありません。必ずアンマウント後に行ってください
sudo umount /mnt/D/ sudo ntfsfix /dev/sda1
今回は遭遇した不具合とその解決方法について書きました。これからも時々書いていこうと思います。
コメント