2019年7月29日

Giga LANDISK(HDL-G)を復旧する

はじめに

14年前位に購入したアイ・オー・データ機器のGiga LANDISKというNAS製品があったのですが、ある日HDDが調子悪くなり、中のデータだけPCに退避してしばらく放置していました。

これより高性能なラズパイがある今、復旧させる必要性もあまり感じなかったのですが、当時バッファローの玄箱に代表される組み込みLinuxの学習環境として愛着が多少はあったので、残りの余生をデータ退避先として過ごしてもらおうと復旧作業を行ってみた次第です。

準備

復旧手順は、
  1. 新しいHDDと交換する
  2. Linuxをインストールする
だけなんですが、この製品のHDDは今主流のSerialATAではなくパラレルATAのため、新品での入手はほぼ絶望的で、今回は仕方なくヤフオクで中古を仕入れました。

次のLinuxにインストールについても、時間が経ち過ぎてネット上の情報が少なくなっているのと、この製品をサポートしたLinuxカーネル(Debian)は5世代前のwheezyで、LTSも去年の5月で期限を迎えていました。
(しかも次のバージョンのjessieではサポート自体切られている。。)

HDDにインストーラーを入れる

いくつか不安要素はあったものの、ダメならその時は寿命と諦めるという事で、まずはHDDにDebianのインストーラーを入れるため、母艦PC(Windows)上のHyper-VにUbuntuをセットアップします。

その際、パラレルATA-USB変換ケーブルでHDDと母艦PCを繋ぎますが、デフォルトでは母艦PC側にHDDがマウントされてHyper-V側に接続できないため、ディスクの管理よりHDDをオフラインにしておく必要があります。

オフラインにしたHDDを無事Hyper-V側にマウントできたら、Ubuntuのターミナル上でHDDのセットアップを行います。
# マウントされたHDDデバイスパスを確認
$ sudo fdisk -l
(/dev/sdbなどに表示を確認) 
# インストーラーを入れるパーティション100MBを確保
$ sudo fdisk /dev/sdb
d で既存パーティションを削除
n で新規パーティションを作成
開始シリンダ数は2048でそのまま、次のサイズ指定で+100Mを入力して100MB分のパーティションを作成
p で作成されたパーティションを確認
w で結果をHDDに書き込み 
# 作成したパーティションをext2でフォーマット
$ sudo mkfs -t ext2 /dev/sdb1 
# HDDに読み書きできるようマウント
$ sudo mount /dev/sdb1 /mnt 
# インストーラーをダウンロード
$ wget http://ftp.riken.jp/Linux/debian/debian-archive/debian/dists/wheezy/main/installer-armel/current/images/iop32x/network-console/glantank/initrd.gz
$ wget http://ftp.riken.jp/Linux/debian/debian-archive/debian/dists/wheezy/main/installer-armel/current/images/iop32x/network-console/glantank/preseed.cfg
$ wget http://ftp.riken.jp/Linux/debian/debian-archive/debian/dists/wheezy/main/installer-armel/current/images/iop32x/network-console/glantank/zImage 
# インストーラーをHDDにコピー(initrd.gzは.gzを外してリネーム)
$ sudo initrd.gz /mnt/initrd
$ sudo preseed.cfg /mnt/preseed.cfg
$ sudo zImage /mnt/zImage 
# initrdとzImageに実行権限を付与
$ sudo 0777 /mnt/initrd
$ sudo 0777 /mnt/zImage 
# HDDをアンマウント
$ sudo umount /mnt
以上の作業が完了したら、母艦PCからHDDを取り外し、Giga LANDISKに取り付けます。
この後、最初は機器上のUARTからシリアルコンソール経由でインストール作業を行っていたのですが、時間が経つと応答が返ってこなくなってしまったため通常通りSSH接続にて行いました。
(なお、UART端子はこちらの情報を参考に、▼マークから3.3V、RxD、TxD、GNDの順となっているため、それに従ってUSB-シリアル変換ケーブルとシリアルコンソールを115200/8-N-1に設定して接続します)

ミラーサイトをdebian-archiveにする

Giga LANDISKに有線LANケーブルを接続し電源を入れて数分待つと、DHCPによってIPアドレスが振られてSSHでアクセスできるようになります。
(ユーザー名はinstaller、パスワードはinstall)

詳しい画面はこちらのサイトが参考になりますが、ミラーサイトの選択については前述の通りwheezyはサポート切れのため、一般的なミラーサイトを選択してもエラーが出て次へ進めません。

そのため、Choose a mirror of the Debian archiveで"enter information manually"を選択し、
  • Debian archive mirror hostname に ftp.riken.jp
  • Debian archive mirror directory に /Linux/debian/debian-archive/debian
を入力してミラーサイトを手動で設定する必要があります。
(ftp.riken.jpで決め打ちするより、cdn.debian.orgなどCDNを設定した方がいいかも)

以降は案内に従ってインストールを進めると、無事Debianがセットアップされます。

その他

WiFiルーターの有線LANポート節約のため、USB-Ethernet接続で内蔵イーサネットポートが空いているラズパイにGiga LANDISKを接続しています。そのため、ラスパイ側と母艦PC側で静的ルーティングの設定を行います。
# Giga LANDISK側のIPアドレスを設定
$ sudo vim /etc/network/interfaces
auto eth0
iface eth0 inet static
  address 10.0.3.2
  netmask 255.255.255.0
  gateway 10.0.3.1
  dns-nameservers 10.0.3.1 
# ラズパイのIPフォワーディングを有効にする
$ sudo vim /etc/sysctl.conf
net.ipv4.ip_forward=1 
# 内蔵イーサネットポートにIPアドレスを設定
$ sudo vim /etc/dhcpcd.conf
interface eth0
static ip_address=10.0.3.1/24
static routers=10.0.0.1
static domain_name_servers=10.0.0.1 
# IPマスカレードを設定
$ sudo vim /etc/rc.local
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE 
# 母艦PC側でルーティングテーブルを追加
> route -p add 10.0.3.0 mask 255.255.255.0 10.0.0.3

おわりに

aptコマンドじゃなくてaptitudeコマンドだったり、sambaがSMBv1のため最新のWindowsから接続できないなど細々と問題はありますが、それを解決していくのも組み込みLinuxの醍醐味だったりします。
(自分だけ?)