はじめに
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の公式ファームウェアが起動する状態にしてください。
手順2 HDDをUbuntuからマウント
TeraStationの電源を落とし、HDDを引っこ抜いてUbuntuに繋ぎます。
今回はUbuntu Server 24.04.2 LTSを使用しました。
HDDを繋いだ状態で起動すると4つのRAIDアレイが構成されていることがわかります。(md124
からmd127
のRAIDデバイス番号は変わる可能性があります)
Ubuntu Serverはデフォルトでmdadm
コマンドが使えるかと思いますが、もしRAIDアレイが見えない人は
sudo apt install mdadm
などを試してください。
それぞれマウントして中身を確認してみます。
ファイルの中身から以下のことがわかります。
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.buffalo
とinitrd.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.buffalo
とinitrd.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_config
をsshd_start
関数内に書き込みます。
これだけで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インストーラの起動に成功しています。
ssh installer@TeraStationのIPアドレス
でログインをしてください(パスワードはinstall
です)
Start installer
で画面に沿って進めていきます。
一般ユーザはminnsou
として作っておきます。
パーティションは迷うところですが、今回は各領域で公式ファームウェアと同じ形にしておきました。
boot領域(画像だとRAID1 device #0
)を/boot
、OS領域(画像だとRAID1 device #1
)を/
でマウントします。swap領域はそのままです。
データ領域(画像だとRAID0 device #2
)はOMVインストール後にマウントするので、インストーラーではマウントせずとしています。
RAIDデバイス番号は変わる可能性があるので、画像は参考程度にしてください。
なお、パーティションを変える場合は公式の注意があるので従ってください。
このままGUIに沿って進めるとインストールプロセスが開始します。
40分ほどするとインストールが完了するので再起動させます。
2025年5月現在、インストーラーがうまく動かない事象が発生しています。
詳細はGithubのissueを参照ください。
ここでは回避方法だけ簡単に説明します。
上記の画面で「Continue」を押さずにCtrl-a d
と押すと次の画面である「2*shell」に移ります。
このインストーラーは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」のようにバージョン番号が表示されて入ればインストール成功です。
もし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」を選択し、自分の作成したユーザを選択し、編集します。
公式のWikiを参考にそのユーザに_ssh
グループとsudo
グループを付与します。
前者のグループ追加によりminnsou
アカウントでのSSHログインが可能になり、後者によりminnsou
アカウントでsudo
コマンドが使えるようになります。
また固定IPにもしておきます。
左のメニューから「ネットワーク」→「インターフェース」より表示されているIFがあると思いますので設定を変更するだけです。
デフォルトでは画面のようにDHCPになっているはずなので、好きなIPアドレスを入力してください。
もしここに何もインターフェースが表示されていない方はインストール時にomv-confdbadm populate
を実行し忘れているかと思います。
それではマウントしていなかったデータ領域で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」の再生マークをクリックし、既存のファイルシステムのマウントをしていきます。
ファイルシステムに先ほど作った/dev/md6
を選択して保存します。
次に「Storage」→「Shared Folders」より共有フォルダを作ります。+ボタンより新規作成をします。
名前は適当にtest_dir
とします。これがSMB接続の時に見えるディレクトリ名です。
作ったユーザのみがアクセスできるように「Permission」もクリックし、該当ユーザに権限を与えます。
今回はDebianインストーラーで作ったminnsou
ユーザ&グループに権限を追加しておきます。
なお、Debianインストーラーで作成したユーザの場合、パスワードの設定も必要になります。1
メニューの「User」→「User」よりパスワードも設定しておいてください。
「Services」→「SMB/CIFS」→「Settings」より「Enable」をクリックしてSambaを有効化します。
「Services」→「SMB/CIFS」→「Share」より新規作成をします。
「Shared folder」に先ほど作った共有フォルダtest_dir
を選択して保存します。
それ以外の各項目はデフォルトでもSMB接続ができるかと思います。
(ゲスト接続はデフォルトでNOになっているので問題なし)
これで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のコピー
公式ファームウェアからコピーしておいたmiconapl
とlibbufalo_bin.so
、libbuffalo_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と接続するとログが見えて色々と便利です。
特に何もしなくても出力はできるのですが、キーボードからの入力できません。
問題が起きた時のためにコンソール経由でもログインできるようキーボードの入力を受け付けるようにします。
root@debian:~# /usr/local/sbin/miconapl -a serialmode_console
これだけでシリアルコンソールが使えるようになります。
ただし電源を落とすとコンソールがまた使えなくなってしまうので、起動時にこのコマンドを実行するようにサービス化しておきます。
root@debian:~# vi /etc/systemd/system/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ログインの部分は以下の記事を参考にさせていただきました。
らっしー様のブログ