BUFFALO Linkstation LS220Dの抜け殻なんて拾うんじゃなかった

BUFFALOの廉価NAS、Linkstation LS220Dシリーズの抜け殻を手にしてしまったので手持ちのHDDを組み込んで高値で売り払おう、そんな軽い気持ちで始めて2日間ドツボに嵌まりまくっていた記録。

## 結論から先に書いておきます。　めんどくせぇ。

以前のモデルでしたら玄箱の頃のテクニック

* 新しいディスクを入れました
* ファームウェアをアレしました
* tftpサーバを立ち上げました
* ファンクションキーを押しながら電源を入れました
* EMモードで起動出来たのでファームウェアアップデートをしました

で終わりましたが、今は駄目でした。

## 何が必要か

* パーティションを切るための環境
* 起動させるために必要なファイル群

そうなんです。ファイル群が入手困難です。

## 実際の作業
* パーティション設定

Linux環境でpartedを使用して設定していきます。

対象のドライブ（今回は/dev/sdc）に対して`parted /dev/sdc`で設定状態に入り、下記のコマンドを投げまくります。

```
mklabel gpt
mkpart primary 17.4KB 1024MB
mkpart primary 1024MB 6144MB
mkpart primary 6144MB 6144MB
mkpart primary 6144MB 6144MB
mkpart primary 6144MB 7168MB
mkpart primary 7168MB -1s
set 3 bios_grub on
```

ディスクを使い回す際は`p`で現在のパーティション情報を確認し、`rm パーティション番号`で全て削除してから投げてください。

1. 最初のmkpartで「そんなとこから始めるとアレだからこっからにしとかない？」と聞かれたら素直に従ってください。
1. 3つ目か4つ目あたりで「それだとパフォーマンス落ちるかもよ？」と訪ねられますが、`Ignore`で押し切ってください。
1. 最初の`mklabel gpt`は絶対必要です。忘れてしまうと悲しい結果を目にします。

* 起動させるために必要なファイルをコピー

**先に書いておきますが、ファイルを提供するようなことはしておりません。**

というか「どういうファイルが必要でどこに配置すればいい」という情報すら持ち合わせておりません。自分がやれることは**生きている別個体からコピーしてくる**だけです。

というわけで、その手順。
復元対象のディスクは引き続き/dev/sdc、コピー元は/dev/sddとします。

```
mkfs -t ext3 /dev/sdc1
dd if=/dev/sdd1 of=/dev/sdc1
dd if=/dev/sdd2 of=/dev/sdc2
dd if=/dev/sdd3 of=/dev/sdc3
dd if=/dev/sdd4 of=/dev/sdc4
dd if=/dev/sdd5 of=/dev/sdc5
```

* sdc3、sdc4に対してはコピーの必要がないかもしれないけど念のため
* /dev/sdc6はデータ用領域のため、起動後に初期化すればよいので無視

<details><summary>賢明な皆さんはお気付きだと思いますが、</summary>
生きている別個体のディスクからコピーしなくても、ddでファイルにしとけば~~うんたらかんたらほんにゃら~~</details>

ここまで終わったら、ディスクをLS220Dシリーズに戻してください。
電源はまだ入れてはいけません。

## tftpサーバの準備 ##

**詳しくは書きません。これは備忘録ってやつです。**

```
LinkStation LS200シリーズ ファームウェア アップデータ
https://www.buffalo.jp/support/download/detail/?dl_contents_id=60846

ls200-v175.exeを展開
ls200-v175/initrd.imgとuImage.imgを展開、パスワード候補は下記4つらしい
1NIf_2yUOlRDpYZUVNqboRpMBoZwT4PzoUvOPUp6l
aAhvlM1Yp7_2VSm6BhgkmTOrCN1JyE0C5Q6cB3oBB
YvSInIQopeipx66t_DCdfEvfP47qeVPhNhAuSYmA4
IeY8omJwGlGkIbJm2FH_MV4fLsXE8ieu0gNYwE6Ty 

2つのファイル
initrd/initrd.buffalo
uImage.buffalo
をtftpサーバのルートに配置
/private/tftpboot/

IPアドレスを192.168.11.1に変更

tftpサーバーを起動
sudo launchctl load -w /System/Library/LaunchDaemons/tftp.plist

tftpサーバーが起動しているか確認
sudo lsof -i:69

* ファンクションボタンを押しながら起動
* 白ランプが高速点滅したら押し下げ終了
* 赤ランプが点滅したら再度ファンクションボタンを押す（長押し必須？）
* 赤ランプが消え白ランプが消えるか暗く高速点滅していたらEMモードに突入おめでとう
* 実際のところランプの状態に関係なく突入してたりしますけどね ←

tftpサーバーを終了
sudo launchctl unload -w /System/Library/LaunchDaemons/tftp.plist

IPアドレスを「DHCPサーバを使用」に変更
```

## ファームウェア アップデータ ##

c:¥BUFFALO/バージョン/LSUpdater.iniを開き、Flags行から下を書き換えましょう。

```
[Flags]
VersionCheck = 0
NoFormatting = 0
[SpecialFlags]
Debug=1
```

ファームウェア アップデータを起動したらウインド左上のアイコンをクリックすると出てくる「デバッグモード」を選び、

* [ ] 　ユーザ領域を消去
* [ ] 　強制アップデート

にチェックを入れてOK、対象のLinkstationが見つかったら「ファームウェア更新」をクリック。管理者用パスワードの初期値は「password」でした。

ここで

```
ドライバのパーティション情報が確認できませんでした。
ファームウェアをアップデートできません。
```

が出てしまった場合はパーティションが正しく切れていない、あるいは必要なファイル群が用意できていないということになります。

→ 冒頭で　**めんどくせぇ。**と書いたのはこれが理由です。正しくパーティションを切っただけではファームウェアのインストールが出来ないのです。**今は。**

## あとはブラウザから設定

詳細設定→管理→初期化で

* 初期化
* （時間と精神に余裕があれば）ディスク完全フォーマット

をしておきましょう。

RAIDを組みたいならパーティション情報が書き込まれていないディスクを追加して、詳細設定→管理→ディスクあたりで設定してください。

※疲れたし、そこまで面倒みたくないのでぶん投げました。

## ちなみになんですが、

* ファンクションボタンを押しながら起動
* 白ランプが高速点滅したら一旦手を離し、点滅中に再度押し下げ

で管理者ユーザー名とパスワードが「admin」「password」に初期化できます。https://www.buffalo.jp/support/faq/detail/15050.html

物理的に手が出せる環境に置かれたLinkstationの運命、**あとは分かるな？**

状況に応じて、詳細設定→管理→初期化→ファンクションボタンの初期化設定を「初期化しない」にしておいた方が良いかもですよ。**パスワードを忘れたときに死にますが。**

# 追記

昔のアップデータだと、パーティションが正しくないディスクはパーティションを作成しつつアップデートしてくれていたのですが、ここ数年のアップデータからはその機能が消し去られてしまっているようです（**アップデータだけ**で復旧させるための**何かのヒント**として書き残しておきます。でも昔のアップデータを入手する手段が必要なのです）。

「**うちのNASは壊れたら修理に出すか買い換えて欲しい、でないと儲からないから**」
そんな声が聞こえた気がしました。実際その通りだとは思いますが。

悪いことは言いません。「RAID 1で万が一の際にも安心」という耳障りのよいキャッチに惑わされず、片肺状態になった時に出来ることが「無事にデータを吸い出せるよう祈りながらPC経由でファイルをコピーする・RAIDの復旧を待つ（だが高確率で失敗する）」くらいの廉価版NASを信じず、こまめにバックアップしておきましょう。