前にOpenWrtのファームを書き込んで最新のLinuxマイコンにしたLininoOneをサーバー用途に使ってみることにしました。OpenWrtのパッケージには多くのネットワークサービスが用意されているので、どんなサーバでも構築出来そうです。
すぐに思いついたのはNASです。LininoOneはUSBホスト機能があるので、USBハードディスクやUSBメモリなどをつないでNASにするのは簡単そうです。
試しにexFATでフォーマットしてあったUSBハードディスクをつないで、sshでログインしてから手動でマウントしてみたところエラーになってしまいました。インストール済みパッケージを調べてみるとexFATのモジュールが入っていませんでした。そこでLininoOneのOpenWrtにブラウザからアクセスしてインストールを行いました。
exFATだけでなくFATやext4などのファイルシステムも入っていなかったので一緒にインストールしておきました。パッケージ名は、
kmod-fs-exfat
kmod-fs-vfat
kmod-fs-ext4
になります。インストールの手順は以前の投稿を参考にしてください。
これでハードディスクがマウント出来るようになりました。そこでNASにするためにsambaをインストールしてみたところ今度はディスク容量不足でインストールできませんでした。
sambaはライブラリだけでも8MB近くあるので残り3MBくらいしか残っていないLininoOneではどうしようもありません。そもそも全容量が10MBほどしかないのでsambaは無理でした。
このままではNAS以外のサーバを立てるのも難しそうです。そこで最終手段としてルートファイルシステムを外部ディスクに移してOpenWrtを運用してみようと考えました。使うのはこれ。
ダイソーで購入した32GBのmicroSDです。これでOpenWrtを運用します。安上がりなシステムですね。
Linuxのルートにするのでext4でフォーマットすることにしました。LininoOneのOpenWrtでもフォーマット出来るのでしょうがmkfsとかをインストールしなければならないので、手っ取り早くPCのUbuntuでフォーマットしました。これをLininoOneのmicroSDスロットに差し込んで電源を入れます。
ブラウザからOpenWrtにアクセスして、メニューの"System"→"Mount Points"を選びます。
Mount Pointsの画面が開いたら、
下の方にある"Mount Points"項目の"Add"ボタンを押します。
設定ダイアログが開いたら、
"UUID"のドロップダウンリストでmicroSDを選択して、"Mount Point"でルートファイルシステムを選びます。
"Root preparation"の項目にルートファイルシステムをコピーする手順が表示されますので、sshでLininoOneにログインしてこのコマンドを正確に入力していきます。コピーが終わったらブラウザに戻り"Save"ボタンを押します。
Mount Pointsの画面に戻ったら念のため一番下の"Save & Apply"ボタンを押してから、LininoOneの電源を抜いて再起動します。
しばらくしてOpenWrtが起動したらブラウザでアクセスします。最初の画面でディスク容量をみると増えているのが確認できます。
これでソフトウェアパッケージを好きなだけインストールできるようになりました。さっそく目的のsambaをインストールしてみます。パッケージ名はluci-app-samba4です。
ライブラリ等も問題なくインストールされました。
続いてsambaの設定です。OpenWrtのメニューに"Services"というメニューが現れるので、その中の"Network Shares"を選択します。
Network Sharesでまずは"Interface"と"Workgroup"を設定します。有線LANしか使わないつもりなのでLanを選択しました。Workgroupは自分のネットワークのワークグループ名を入力します。
つぎに下の方にある"Shared Directries"の"Add"ボタンを押し、/mntをshareという名前で共有させるように設定しました。/mntにUSBディスクをマウントしてネットワークからアクセスできるようにしようと考えたからです。このフォルダや共有名は自分で好きなものを設定するといいでしょう。
アクセスはルート権限で行えるように"Force Root"の項目もチェックしておきました。最後に"Save & Apply"ボタンを押します。
さらにメニューの"System"→"Mount Points"から/mntにUSBハートディスク等を自動的にマウントするように設定してもいいのですが、現時点では色々つなげてテストしたいので最終的な運用形態を決めてから設定することにしました。
それでは一度LininoOneの電源を切ってUSBハードディスクをつなぎ、再度電源を入れてみます。
手動で/mntにハードディスクをマウントしてネットワーク経由でアクセスしてみるとちゃんと読み書き出来ました。ホスト名はOpenWrt(デフォルト)、共有名はshareにしたので\\OpenWrt\shareでアクセスできました。Windowsの場合アクセス時に「ネットワーク資格情報」を聞いてくるので、ユーザー名にrootと入れパスワードに何も入れずにつなげます。自宅のローカルネットワークなのでOpenWrtのルートパスワードはつけてないんです。
(Windows11の場合)
Linuxのからのアクセスはスムーズに行えるのですが、Windows11では接続するまでに非常に時間がかかる場合があります。Windowsのうっとおしい「リアルタイム保護」とかが邪魔をしていると思い手動でオフにしてみたところ、一時的には改善しますが、しばらくするとまた「リアルタイム保護」が勝手に起動してくるので接続に時間がかかるようになったりします。
スムーズにアクセス出来ているときは100BASE-TのLANで2~6Mbpsの転送速度で読み書き出来ています。ちょっと遅いです。はっきりと確認したわけではないのですが、LininoOneのOpenWrtでのファイルアクセススピードがあまり早くないように感じます。それならばUSBフラシュメモリを使ってもそれほどパフォーマンスの低下は感じないかもしれません。
そこでこれをつないで試してみました。
ダイソーのUSBメモリ32GBです。FAT32のままでマウントしました。書き込みはハードディスクの時よりかなり遅いと思っていましたが小さなファイルならキャッシュが効いているのかスピードの低下は感じません。読み出しもHDDハードディスクとくらべて極端に遅い感じはありませんでした(すべてUbuntuからの読み書き)。このサイズならばネットワークの片隅に置いておけば邪魔になりませんし、複数のPCやスマホでちょっとしたファイルのやり取りをするくらいなら使えそうです。でも本格的なNASとして使うのは無理ですね。
ちなみにOpenWrtで使えるディスク容量が増えたのでluci-i18n-base-jaパッケージをインストールしてブラウザのメニューを日本語化しました。
設定が見やすくなりました。
NASはいまいちでしたが、インストールできるネットワークサービスはまだまだ沢山あるので、これからも色々試してみようと思います。
※コメント投稿者のブログIDはブログ作成者のみに通知されます