0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Buffaloの古いNASの有効活用方法 〜TeraStationをOpenMediaVaultに〜

Last updated at Posted at 2025-06-01

はじめに

TeraStation(TS-XH8.0L/R6)OpenMediaVaultを入れてNASにしたのでそのやり方を公開します。

TeraStation Xシリーズは2010年発売の古い機器で、ファームウェアの更新があまりありません。
またSMBv1を使っているのも問題であり、iPhoneの「ファイル」アプリからサーバ接続ができなかったり、WindowsからのアクセスもSMBv1/CIFSを有効化する必要があります。

(参考)iPhoneから接続失敗する画像

ソフトウェア周りの問題を解決するために、Debian化をしてOpenMediaVaultを入れたので、その手順をここで紹介します。色々詰まるポイントがあったのでメモがわりに作成しました。

本手順で必要なもの

・TeraStation本体
・HDDを全台同時に繋げるUbuntu機(これは最悪なくても別手段あり)

手順概要

手順1 Buffalo公式ファームウェアの正常起動を確認
手順2 HDDをUbuntuからマウント
手順3 Debian化のためのファイルの置き換え
手順4 Debianのインストール
手順5 OpenMediaVaultのインストール
手順6 OpenMediaVaultの設定(SMB接続まで)

手順1 Buffalo公式ファームウェアの正常起動を確認

これはタイトルのそのままです。2025年5月現在、TS-Xシリーズの最新のファームウェアはVer 1.76になります。
もしHDDが抜かれているジャンク品を購入した場合など、正常に起動していないTeraStationの場合はこちらの記事を参照して、Buffaloの公式ファームウェアが起動する状態にしてください。

スクリーンショット 2025-05-19 20.05.11.png

手順2 HDDをUbuntuからマウント

TeraStationの電源を落とし、HDDを引っこ抜いてUbuntuに繋ぎます。

今回はUbuntu Server 24.04.2 LTSを使用しました。
HDDを繋いだ状態で起動すると4つのRAIDアレイが構成されていることがわかります。(md124からmd127のRAIDデバイス番号は変わる可能性があります)

スクリーンショット 2025-05-19 20.18.00.png

Ubuntu Serverはデフォルトでmdadmコマンドが使えるかと思いますが、もしRAIDアレイが見えない人は
sudo apt install mdadm
などを試してください。

それぞれマウントして中身を確認してみます。

スクリーンショット 2025-05-19 22.55.24.png

スクリーンショット 2025-05-19 22.56.33.png

ファイルの中身から以下のことがわかります。

RAIDデバイス 用途
md124 データ領域(初期化した際にデフォで作られる「share」ディレクトリが見える)
md125 swap領域(マウントできなかったので何も見えない)
md126 OS領域(Buffalo公式ファームウェアの/
md127 boot領域(Buffalo公式ファームウェアの/boot

もしTeraStationに保存してあるファイルを保管したい場合はデータ領域(md124)からデータをサルベージしておいてください。

手順3 Debian化のためのファイルの置き換え

Debian化にはDebian_on_Buffaloというツールを使います。
有用なツールを公開してくれている「1000001101000」様に感謝。

基本的な手順や内容はWikiを確認していただきたいですが、TS-XHLシリーズにおいては、カーネルである「uImage.buffalo.tsxl」と初期RAMディスクである「initrd.buffalo」を使用します。
他の機器の場合は対応するuImage.buffaloを探して選択してください。
OSは2025年5月現在で最新のBookwarm(Debian 12)を選びます。

uImage.buffalo.tsxlは名前をuImage.buffaloに変え、boot領域にファイルを置きます。
すでにあるuImage.buffaloinitrd.buffaloを共に置き換えてください。

コマンドのイメージは以下です。(/mnt/md127がboot領域だと仮定)

cp uImage.buffalo.tsxl /mnt/md127/uImage.buffalo
cp initrd.buffalo /mnt/md127/initrd.buffalo

ちゃんと2つ置き換わっていることも確認しておきます。

root@ubu24:~# ls -l /mnt/md127
total 20316
-rw-r--r-- 1 root root     176 May 29 04:44 bootshim
-rw-r--r-- 1 root root      20 Dec 21  2021 builddate.txt
-rw-r--r-- 1 root root   46054 May 30 06:43 conf_save.tgz
-rw-r--r-- 1 root root 6765872 May 30 07:22 initrd.buffalo
-rw-r--r-- 1 root root   27656 May 30 06:43 log.tgz
-rw-r--r-- 1 root root   10240 May 30 06:43 replication_queue.tar
-rw-r--r-- 1 root root   20986 May 30 06:43 splx.tgz
-rw-r--r-- 1 root root 2819418 May 20 21:55 System.map-6.1.137
-rw-r--r-- 1 root root  404368 Dec 21  2021 u-boot-88f6281.buffalo
-rw-r--r-- 1 root root  480980 Dec 21  2021 u-boot.buffalo
-rw-r--r-- 1 root root  480980 Dec 21  2021 u-boot-mv78100.buffalo
-rw-r--r-- 1 root root 2738636 Dec 21  2021 uImage-88f6281.buffalo
-rw-r--r-- 1 root root 4108800 May 30 07:22 uImage.buffalo
-rw-r--r-- 1 root root 2825964 Dec 21  2021 uImage-mv78100.buffalo
root@ubu24:~# 

Wikiではacp_commanderを使用してファイルの置き換えをしています。
ただその手順ではJavaのインストールが必要なので、本手順のようにHDDを直接マウントしてファイルを編集をする形を取りました。
本手順ではHDDを全部繋げられるUbuntu機が必要になる(TS-WXLのように4本HDDを使用するモデルは4本のHDDを繋ぐ必要がある)ので、そういったPCが用意できない場合は大人しくacp-commanderを使えばDebianのインストールができます。

uImage.buffaloinitrd.buffaloを置き換えずにOS領域のSSH関連のファイルを置き換えることで、Buffalo公式のファームウェアで起動したTeraStationにadminアカウントでSSHログインができるようになります。
SSHログインのために置き換えるのは/etc/sshd_config/etc/init.d/sshd.shの2つです。

/mnt/md126/etc/sshd_configは以下を設定します。
/mnt/md126がOS領域だと仮定)

PasswordAuthentication yes
UsePAM no

/mnt/md126/etc/sshd.shは画像のようにsed -i -e '4 s/allowssh no/allowssh yes/' /etc/sftponly_configsshd_start関数内に書き込みます。

スクリーンショット 2025-05-19 21.00.10.png

これだけでadminアカウントでSSHログインができるのですが、suコマンドが使えないのでrootが取れません。
そのためadminアカウントでsuコマンドが使えるようにさらに設定を変更していきます。

# Ubuntu上でrootになっておく 
# TeraStationのrootパスワードの無効化
mv /mnt/md126/etc/shadow.orig /mnt/md126/etc/shadow
sed -e 's/^root:[^:]*:/root::/' /mnt/md126/etc/shadow.orig > /mnt/md126/etc/shadow

# suにスティッキービットを立てる
chmod 4755 /mnt/md126/bin/su 

# adminグループのユーザがsuコマンドを使えるように変更
sed -i 's/^auth\s\+required\s\+pam_wheel\.so\s\+use_uid$/auth       required     pam_wheel.so use_uid group=admin/' /mnt/md126/etc/pam.d/su

これでadminアカウントでのSSHログインとadminアカウントでsuコマンドによるroot化が可能になります。

rootを取れれば、以下の記事のように/etc/samba/smb.confをいじることでSMBv2を使うこともできます。iPhoneとSMB接続するだけなら、この記事の通りに実施するだけでもOKです。
【別記事】LinkStationのSMB1接続不可エラーの対処方法

TeraStationに組み込まれているマイコンを制御するためのコマンドとしてmiconaplがあります。
このコマンドによりファンやLED、ブザー、温度管理などを行うことができるようになります。

このタイミングでOS領域からmiconaplコマンドのバイナリと共有ライブラリをコピーしておくと、Debianにした後でも便利なので、確保しておくのをお勧めします。

該当のファイルは以下の3つです。
/usr/local/sbin/miconapl
/usr/local/lib/libbuffalo_bin.so
/usr/local/lib/libbuffalo_bin.so.1

これらのファイルの使い方は最後に記載しておきます。

手順4 Debianのインストール

設定を変更したHDDをTeraStationに戻して起動します。

画像のように本体の液晶が「Terastation arm Debian Installer」になっていればDebianインストーラの起動に成功しています。

IMG_1029.JPG

ssh installer@TeraStationのIPアドレスでログインをしてください(パスワードはinstallです)

Start installerで画面に沿って進めていきます。
スクリーンショット 2025-05-20 23.19.47.png

一般ユーザはminnsouとして作っておきます。

スクリーンショット 2025-05-25 22.58.06.png

パーティションは迷うところですが、今回は各領域で公式ファームウェアと同じ形にしておきました。
boot領域(画像だとRAID1 device #0)を/boot、OS領域(画像だとRAID1 device #1)を/でマウントします。swap領域はそのままです。
データ領域(画像だとRAID0 device #2)はOMVインストール後にマウントするので、インストーラーではマウントせずとしています。

RAIDデバイス番号は変わる可能性があるので、画像は参考程度にしてください。

スクリーンショット 2025-05-26 13.51.47.png

なお、パーティションを変える場合は公式の注意があるので従ってください。

スクリーンショット 2025-05-29 14.55.46.png

このままGUIに沿って進めるとインストールプロセスが開始します。
40分ほどするとインストールが完了するので再起動させます。

スクリーンショット 2025-05-21 0.17.13.png

2025年5月現在、インストーラーがうまく動かない事象が発生しています。
詳細はGithubのissueを参照ください。
ここでは回避方法だけ簡単に説明します。

上記の画面で「Continue」を押さずにCtrl-a dと押すと次の画面である「2*shell」に移ります。

スクリーンショット 2025-0.png

このインストーラーはscreenコマンドで起動しているため、画面の切り替えはAlt+2などではない点に注意です。
screenの詳細は別のQiita記事を参照ください。

ここで以下のコマンドを実施して必要なライブラリをインストールしてください。

mount --bind /dev /target/dev
mount --bind /dev/pts /target/dev/pts
mount --bind /proc /target/proc
mount --bind /sys /target/sys
mount --bind /run /target/run
chroot /target /bin/bash
apt-get update
apt-get install -y linux-libc-dev=6.1.137-33
apt-get install -y linux-image-marvell-buffalo

インストールが完了したらCtrl-a pで前の画面に戻り、「Continue」を押して再起動すればOKです。

起動後に「Terastation ARM Debian 12.11」のようにバージョン番号が表示されて入ればインストール成功です。

IMG_1030.JPG

もしEMモードになってしまったり、ブートループになってしまったりした場合はDebianのインストールに失敗していますのでマウントしたりしてやり直してください。

手順5 OpenMediaVaultのインストール

OMVの公式に従ってインストールします。

TeraStationにSSHログインをし、aptで色々入れていきます。

# GPG鍵のインストール
apt-get install --yes gnupg
wget --quiet --output-document=- https://packages.openmediavault.org/public/archive.key | gpg --dearmor --yes --output "/usr/share/keyrings/openmediavault-archive-keyring.gpg"

# パッケージソースの追加
cat <<EOF >> /etc/apt/sources.list.d/openmediavault.list
deb [signed-by=/usr/share/keyrings/openmediavault-archive-keyring.gpg] https://packages.openmediavault.org/public sandworm main
# deb [signed-by=/usr/share/keyrings/openmediavault-archive-keyring.gpg] https://downloads.sourceforge.net/project/openmediavault/packages sandworm main
## Uncomment the following line to add software from the proposed repository.
# deb [signed-by=/usr/share/keyrings/openmediavault-archive-keyring.gpg] https://packages.openmediavault.org/public sandworm-proposed main
# deb [signed-by=/usr/share/keyrings/openmediavault-archive-keyring.gpg] https://downloads.sourceforge.net/project/openmediavault/packages sandworm-proposed main
## This software is not part of OpenMediaVault, but is offered by third-party
## developers as a service to OpenMediaVault users.
# deb [signed-by=/usr/share/keyrings/openmediavault-archive-keyring.gpg] https://packages.openmediavault.org/public sandworm partner
# deb [signed-by=/usr/share/keyrings/openmediavault-archive-keyring.gpg] https://downloads.sourceforge.net/project/openmediavault/packages sandworm partner
EOF

# OMVのインストール
export LANG=C.UTF-8
export DEBIAN_FRONTEND=noninteractive
export APT_LISTCHANGES_FRONTEND=none
apt-get update
apt-get --yes --auto-remove --show-upgraded \
    --allow-downgrades --allow-change-held-packages \
    --no-install-recommends \
    --option DPkg::Options::="--force-confdef" \
    --option DPkg::Options::="--force-confold" \
    install openmediavault

# OMVの構成データベースを構築する
omv-confdbadm populate

# 再起動
reboot

これでWebブラウザよりログインできるようになります。
インストール自体はこれで完了です。

手順6 OpenMediaVaultの設定(SMB接続まで)

これ以降はOMVの基本的な使い方なので詳細は述べませんが、他のPCやiPhoneなどからSMB接続できるようになるところまでの手順を簡単に記載します。

目標はDebianのインストーラーで作成した一般ユーザ(今回の例だとminnsou)のみがこのTeraStationにSMB接続(SMBv2)できるようにするところまでです。ゲスト接続はOFFとします。

まずはOMVにSSHログインできるようにユーザの設定を行います。
左のメニューから「Users」→「Users」を選択し、自分の作成したユーザを選択し、編集します。

スクリーンショット 2025-05-29 17.06.00.png

公式のWikiを参考にそのユーザに_sshグループとsudoグループを付与します。
前者のグループ追加によりminnsouアカウントでのSSHログインが可能になり、後者によりminnsouアカウントでsudoコマンドが使えるようになります。

スクリーンショット 2025-05-29 18.49.10.png

また固定IPにもしておきます。
左のメニューから「ネットワーク」→「インターフェース」より表示されているIFがあると思いますので設定を変更するだけです。
デフォルトでは画面のようにDHCPになっているはずなので、好きなIPアドレスを入力してください。

スクリーンショット 2025-05-29 18.55.40.png

もしここに何もインターフェースが表示されていない方はインストール時にomv-confdbadm populateを実行し忘れているかと思います。

固定IPについては、SSHログインして以下のコマンドを打てば、GUIインストーラーが起動するのでそこから設定することも可能です。
sudo omv-firstaid

スクリーンショット 2025-05-30 14.42.15.png

それではマウントしていなかったデータ領域でRAID6を作っていきます。
HDDの構成を変えてない場合は6つ目のパーティションがデータを保存する領域なのでsda6 sdb6 sdc6 sdd6からmd6を構成します。

RAIDアレイの構築はシェルで実施します。
SSHログインしてrootになり、まずは状況確認をします。

root@debian:~# cat /proc/mdstat 
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath] [faulty] 
md2 : active raid0 sdd6[3] sdc6[2] sdb6[1] sda6[0]
      1893869568 blocks super 1.2 512k chunks
      
md1 : active raid1 sdd2[3] sdc2[2] sda2[0] sdb2[1]
      4999156 blocks super 1.2 [4/4] [UUUU]
      bitmap: 1/1 pages [4KB], 65536KB chunk

md10 : active raid1 sdd5[3] sdc5[2] sdb5[1] sda5[0]
      1000436 blocks super 1.2 [4/4] [UUUU]
      bitmap: 0/1 pages [0KB], 65536KB chunk

md0 : active raid1 sdd1[3] sdc1[2] sdb1[1] sda1[0]
      1000384 blocks [4/4] [UUUU]
      
unused devices: <none>
root@debian:~# 

md2がデータ領域なので、こちらを削除してRAID6に作り直します。

# デフォルトで作られるRAID0のデータ領域(md2)を削除
root@debian:~# mdadm --stop /dev/md2
mdadm: stopped /dev/md2

# RAID6でRAIDアレイを構築
root@debian:~# mdadm --create /dev/md6 --level=raid6 --raid-devices=4 /dev/sda6 /dev/sdb6 /dev/sdc6 /dev/sdd6
mdadm: /dev/sda6 appears to be part of a raid array:
       level=raid0 devices=4 ctime=Wed May 28 14:08:09 2025
mdadm: /dev/sdb6 appears to be part of a raid array:
       level=raid0 devices=4 ctime=Wed May 28 14:08:09 2025
mdadm: /dev/sdc6 appears to be part of a raid array:
       level=raid0 devices=4 ctime=Wed May 28 14:08:09 2025
mdadm: /dev/sdd6 appears to be part of a raid array:
       level=raid0 devices=4 ctime=Wed May 28 14:08:09 2025
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md6 started.
root@debian:~#

# xfsでフォーマット(20分ほどかかります)
root@debian:~# mkfs.xfs /dev/md6

# mdadm.confのバックアップと生成
root@debian:~# mv /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf.bkup
root@debian:~# /usr/share/mdadm/mkconf > /etc/mdadm/mdadm.conf

# initramfsの更新
root@debian:~# update-initramfs -u 
root@debian:~# reboot

なお、ここでRAID6を作成するとバックグラウンドでresyncの処理が走ります。この処理がまあまあ重いので、このタイミングでRAIDの同期スピードを下げておくと、この後のGUIでの処理の時間が少し短くなると思います。

root@debian:~# echo 500 > /proc/sys/dev/raid/speed_limit_min
root@debian:~# echo 500 > /proc/sys/dev/raid/speed_limit_max

残りはGUIで設定をしていきます。
「Storage」→「File Systems」の再生マークをクリックし、既存のファイルシステムのマウントをしていきます。

スクリーンショット 2025-05-29 19.16.58.png

ファイルシステムに先ほど作った/dev/md6を選択して保存します。

スクリーンショット 2025-05-29 19.58.16.png

次に「Storage」→「Shared Folders」より共有フォルダを作ります。+ボタンより新規作成をします。

スクリーンショット 2025-05-29 21.35.26.png

名前は適当にtest_dirとします。これがSMB接続の時に見えるディレクトリ名です。

スクリーンショット 2025-05-29 21.36.55.png

作ったユーザのみがアクセスできるように「Permission」もクリックし、該当ユーザに権限を与えます。

スクリーンショット 2025-05-29 21.38.18.png

今回はDebianインストーラーで作ったminnsouユーザ&グループに権限を追加しておきます。

スクリーンショット 2025-05-29 21.39.30.png

なお、Debianインストーラーで作成したユーザの場合、パスワードの設定も必要になります。1
メニューの「User」→「User」よりパスワードも設定しておいてください。

スクリーンショット 2025-05-29 21.44.42.png

「Services」→「SMB/CIFS」→「Settings」より「Enable」をクリックしてSambaを有効化します。
スクリーンショット 2025-05-29 23.01.22.png

「Services」→「SMB/CIFS」→「Share」より新規作成をします。

スクリーンショット 2025-05-29 21.56.14.png

「Shared folder」に先ほど作った共有フォルダtest_dirを選択して保存します。
それ以外の各項目はデフォルトでもSMB接続ができるかと思います。
(ゲスト接続はデフォルトでNOになっているので問題なし)

スクリーンショット 2025-05-29 22.03.14.png

これでSMBの設定は完了です。別の機器で接続してみましょう。

iPhoneでも問題なく接続でき、作成したtest_dirが見えました。

もし同期スピードを変更した方はデフォルト値に戻しておきましょう。2

root@debian:~# echo 10000 > /proc/sys/dev/raid/speed_limit_min
root@debian:~# echo 200000 > /proc/sys/dev/raid/speed_limit_max

OMVさえ入れることができれば、自宅用のファイルサーバを作ったり、MacBookのTimeMachineを作ったり、色々できるかと思います。良きNASライフを。

TS-WXLシリーズは古い32bitのARMプロセッサ(armel)のため、OMVのプラグインが使えないので注意してください。公式のアナウンスはこちらです。
もしどうしてもプラグインが必要な方はIntelチップを採用したTeraStationを探してください。その場合はDebian_on_Intel_Terastationsが参考になると思います。

(参考)やっておくと便利なものたち 必須ではないので折りたたみ

miconaplのコピー

公式ファームウェアからコピーしておいたmiconapllibbufalo_bin.solibbuffalo_bin.so.1をDebianでも使えるようにします。

# 一旦SCPなどでホームディレクトに各ファイルを移動
root@debian:~# ls -la /home/minnsou/*
-rwxr-xr-x 1 minnsou users 151682 May 30 10:34 /home/minnsou/libbuffalo_bin.so
-rwxr-xr-x 1 minnsou users 151682 May 30 10:34 /home/minnsou/libbuffalo_bin.so.1
-rwxr-xr-x 1 minnsou users  73916 May 30 10:32 /home/minnsou/miconapl
root@debian:~#

# 適切な場所にコピーする
root@debian:~# cp /home/minnsou/miconapl /usr/local/sbin/
root@debian:~# cp /home/minnsou/libbuffalo_bin.so* /usr/local/lib/

# 共有ライブラリの更新
root@debian:~# ldconfig -v

# 動作確認
root@debian:~# miconapl -a bz_on button
# これでブザー音がピッと鳴ればOK

これでmiconaplが使えるようになります。
コマンドのより詳しい解説はLinkStation/玄箱をハックしようをどうぞ。

シリアルコンソールの有効化

TS-XHLには前面の扉を開けるとシリアルコンソール用のDsub9ピンがあり、クロスケーブルを使ってPCと接続するとログが見えて色々と便利です。

IMG_1044.JPG

(参考)起動時のシリアルコンソールのログ
serial_log.png

特に何もしなくても出力はできるのですが、キーボードからの入力できません
問題が起きた時のためにコンソール経由でもログインできるようキーボードの入力を受け付けるようにします。

root@debian:~# /usr/local/sbin/miconapl -a serialmode_console

これだけでシリアルコンソールが使えるようになります。
ただし電源を落とすとコンソールがまた使えなくなってしまうので、起動時にこのコマンドを実行するようにサービス化しておきます。

root@debian:~# vi /etc/systemd/system/miconapl_serial.service
miconapl_serial.service
[Unit]
Description=Run miconapl with serialmode_console at boot
After=multi-user.target

[Service]
Type=simple
ExecStart=/usr/local/sbin/miconapl -a serialmode_console
User=root
RemainAfterExit=true

[Install]
WantedBy=multi-user.target
root@debian:~# systemctl daemon-reexec
root@debian:~# systemctl enable miconapl_serial.service
Created symlink /etc/systemd/system/multi-user.target.wants/miconapl_serial.service → /etc/systemd/system/miconapl_serial.service.
root@debian:~# systemctl start miconapl_serial.service
root@debian:~# systemctl status miconapl_serial.service
● miconapl_serial.service - Run miconapl with serialmode_console at boot
     Loaded: loaded (/etc/systemd/system/miconapl_serial.service; enabled; preset: enabled)
     Active: active (exited) since Fri 2025-05-30 11:32:53 JST; 7s ago
    Process: 1569 ExecStart=/usr/local/sbin/miconapl -a serialmode_console (code=exited, status=0/SUCCESS)
   Main PID: 1569 (code=exited, status=0/SUCCESS)
        CPU: 29ms

May 30 11:32:53 debian systemd[1]: Started miconapl_serial.service - Run miconapl with serialmode_console at boot.
root@debian:~#

これで再起動後にキーボード入力ができることを確認してください。

不要なサービスの停止

LVM2のミラーデバイスを管理するサービスですが、今回はLVMは使わない&再起動時にこのサービスを落とすのに1分半かかっているので停止しておきます。

root@debian:~# systemctl disable blk-availability.service

参考

LinkStation/TeraStationをハックしている方のブログです。TS-WXLシリーズの記事もあり、とても参考になりました。
https://www.yamasita.jp/linkstation/category/ts-wxl/

TeraStationのSSHログインの部分は以下の記事を参考にさせていただきました。
らっしー様のブログ

  1. 原因が不明ですが、OMVインストール前に作成されているユーザはsmbpasswdが実行されていないからかもしれません。GUIで改めてパスワードを設定することでsmbpasswdの処理が走るのかと思います。

  2. もし再起動してもそのままのスピードが良い方は/etc/sysctl.confdev.raid.speed_limit_min = 50000のように追加してください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?