まず最初にひとつお断りを…今回の記事はLinuxに関する、いつもと異なる毛色の内容です。馴染みのない方は「ちょっと何言ってるのか分からない…」といった印象を持たれるだろうなと思いますが、備忘録代わりの記事と捉えていただければと思います。
LinuxディストリビューションのひとつであるUbuntuの新たなバージョン20.04LTSが4月に正式リリースされました。このバージョンではLinux5.4のカーネルが採用されていて、exFatフォーマットをネイティブでサポートしています。
SDカードをexFatでフォーマットして使うことが多かった私は、これまでLinuxではexfat-fuse等のパッケージを通してアクセスをしていましたが、ファイルコピー中はシステム全体が重くなってしまい、難儀していました。
そんな中で、Linux5.4でexFatが使えるようになったことを知って、家にあるRaspberryPiのUbuntuのバージョンを19.10から上げました。
sudo apt update sudo apt upgrade
作業はSSHを使ってリモートで行いました。バージョンを上げる前に、OSのアップデートを確認します。
sudo do-release-upgrade
その後OSのアップグレードのコマンドを実行します。
「なるべくならSSHを使わないでね。失敗したとき大変だから…。」と英文でメッセージが出てきましたが、事前にバックアップを取っていたので、そのまま進めました。ほかの方のブログを拝見すると、30分〜1時間程度で終了しましたと仰る方もいましたが、私の場合(RaspberryPi4 4GB)だとがっつり7時間かかりました。
再起動後はさしたる不具合もなく、バージョンアップ作業は無事終了しました。
で、exFatのボリュームをfuse無しでマウントできるのか、実際に試してみました。
結果、マウントエラーが表示され、exFatのボリュームをマウントすることはできませんでした。
cat /proc/filesystems でファイルシステム一覧を表示しても、exFatの表記はありません。
Linux5.4でネイティブ対応されているはずなのに何故だろうと不思議に思いGoogleで検索してみたのですが、日本語表記の記事では該当するものはありませんでした。
その後も粘り強く記事を探すこと数時間…この話題について英語でやりとりをされている記事を見つけました。
この中でのやり取りを追うに、どうやらRaspberryPi用のLinux5.4カーネルは、exFatサポートの部分が抜け落ちている(といった表現が妥当なのかな)ようなのです。
とはいっても、exFatサポートの部分をダウンロード・インストールすることはできるようです。
まず、gitやビルド環境が整っていないなら、インストールします。
sudo apt install git sudo apt install build-essentisal
次に、exfat-linuxをダウンロードします。
git clone https://github.com/arter97/exfat-linux
作成されたフォルダに移動( cd exfat-linux )して、以下を実行してカーネルモジュールをインストールし、アクティブ化します。
make sudo make install sudo modprobe exfat
一連の作業が終了した後、cat /proc/filesystems を実行するとリストの下部に「exfat」が現れ、fuse無しでもexFatボリュームをマウントすることができるようになりました。
試しに数GBのファイルをexFatフォーマットのSDカードにコピーしてみましたが、コピー中はシステム全体が重くなることもなく、大変軽快に感じました。
もしかすると同じような現象でお困りの方がいらっしゃるかも知れませんが、この記事が何かのお役に立てば幸いです。(でも作業の実行は自己責任でお願いしますね…)
この記事にコメントする