ひこぽんのーと

覚書と雑記です。

NASが壊れた日 その4

前回の続き。

さて、NASのバックアップをどうしようか、について。
LinkStation LS410Dにはバックアップ機能は一応ついている。

  • ネットワーク上の別のNASに同期する
  • NASに直結したHDDに同期する

- NASNavigator2を使ってWindows PCに同期する
上記、3点だけど、予備のNASもHDDも無いのではじめの2つは論外。
3つ目に関しても、Windowsはめったに使わないので却下したい。

ということで、前回、NASSSH 接続できるようにしたので、
Linuxからrsyncでバックアップを取ることにした。
バックアップ先のHDDはPCに搭載しているものの、
専用のHDDで物理的に独立している。

以下、コマンド。

sudo rsync -av --delete --exclude={'/lost+found/'} root@<NASのIPアドレス>:/mnt/disk1/backup/ /usr/nas-bk/

rsyncについてはテクニックも色々とあるみたいだけど、
うだうだ考えるのは面倒なので単純なミラーリングとした。
しばらくは暫時ファイルが増えていくので手動で行って、
折を見て自動起動するようにしたいと考えている。

また、SMART情報についても
NASSSHでつなげれば確認できるので、
自動出力するようにスクリプトでも書けばよかろうかと思う。

終わり。

NASが壊れた日 その3

LS410DにSSHで接続できるようにするまでの手順を書いておく。

準備

用意するもの

設定

root奪取

sshdを実行するためにroot権がいるので、まずはこれを取得する。
事前に以下を調べたり、決めておいたりする。

NASIPアドレス 事前に調べとく
NASの管理者パスワード 初期設定で決めた値。未設定時はpassword
rootパスワード 自分で決める
java -jar ./acp_commander.jar -t <NASのIPアドレス> -ip <NASのIPアドレス> -pw <NASの管理者パスワード> -c "(echo <rootパスワード>; echo <rootパスワード>) | passwd"

sshdの設定・起動

sshd_configを設定する。
configの該当箇所をsedコマンドで置換して有効化し、sshdサービスを起動する。
LS410DにはSSH接続の機能が無いのでS50sshdは自動起動しない。
(パッケージはインストールされてんのにな、メンテナンス用なんすかね)

java -jar ./acp_commander.jar -t <NASのIPアドレス> -ip <NASのIPアドレス>  -pw <NASの管理者パスワード> -c "cat /etc/sshd_config"
java -jar ./acp_commander.jar -t <NASのIPアドレス> -ip <NASのIPアドレス>  -pw <NASの管理者パスワード>  -c "sed -i 's/#Port 22/Port 22/g' /etc/sshd_config"
java -jar ./acp_commander.jar -t <NASのIPアドレス> -ip <NASのIPアドレス>  -pw <NASの管理者パスワード>  -c "sed -i 's/#PermitRootLogin yes/PermitRootLogin yes/g' /etc/sshd_config"
java -jar ./acp_commander.jar -t <NASのIPアドレス> -ip <NASのIPアドレス>  -pw <NASの管理者パスワード> -c "/etc/init.d/S50sshd stop"
java -jar ./acp_commander.jar -t <NASのIPアドレス> -ip <NASのIPアドレス>  -pw <NASの管理者パスワード> -c "/etc/init.d/S50sshd start"

接続

PCからsshで接続してみる。
パスワードを尋ねられるので、passwdファイルに追記したパスワードを入力する。
問題なければログインできる。

ssh root@<NASのIPアドレス>

おわりに

と、ここまででsshログイン可能化はおしまい。
あとはバックアップをどうするか、については次回へ。
というわけで、次回に続く。

NASが壊れた日 その2

nagamitsu1976.hatenadiary.jp

前回の続き。
LinkStation LS410Dのディスクを入れ替えて復旧させるまでの手順。

準備

用意するもの

NAS Navigator2のインストール

ネットワーク上のNASを確認するアプリ。
インストーラを実行するだけで完了。

TFTP Boot Recoveryの展開

TFTP Boot Recovery 1.53.rar
$initrd
$kernel
NasNavi.exe
READMEMT.txt
TFTP%20Boot.exe
TFTPServerMT.exe
TFTPServerMT.ini
TFTPServerMT.log
initrd.buffalo *1 ファームウェアから取り出したファイルに置き換える
uImage.buffalo *2 ファームウェアから取り出したファイルに置き換える

ファームウェアの展開

ダンロードしたファイル(今回はls400-v186.exe)を展開すると以下のようになる。

ls400-v186.exe
img 画像フォルダ…いらない
ls400-v186   ファームフォルダ
LSUpdater.exe *3 ファームを流し込む時に使う
LSUpdater.ini *3 〃
hddrootfs.img
initrd.img *1 imgからinitrd.buffaloを取り出す
linkstation_version.ini
linkstation_version.txt
u-boot.img
uImage.img *2 imgからuImage.buffaloを取り出す
initrd.buffaloファイルの取り出し

initrd.imgをinitrd.zipにリネームして展開。
展開したファイルの中からinitrd.buffaloをコピーし、
TFTP Boot Recovery配下のファイルを上書きする。

initrd.imgを展開する際、パスワードロックがかかっているので、
以下のキーを順繰りに試してみる。

aAhvlM1Yp7_2VSm6BhgkmTOrCN1JyE0C5Q6cB3oBB
1NIf_2yUOlRDpYZUVNqboRpMBoZwT4PzoUvOPUp6l
YvSInIQopeipx66t_DCdfEvfP47qeVPhNhAuSYmA4
IeY8omJwGlGkIbJm2FH_MV4fLsXE8ieu0gNYwE6Ty
uImage.buffaloファイルの取り出し

initrd.buffaloと同じ要領でuImage.buffaloも取り出す。

HDDの準備

HDDの状態

新品であれば何もする必要がない。
再利用品であれば、パーティションはすべて削除し、
パーティションテーブルをGPTに設定しておく。
ついでにローレベルフォーマットしてもいいかもしれないし、
SMARTチェックもしといたほうがいいだろう。(めちゃ懲りた)

取り付け

HDDの状態が問題なければ、NASにHDDを挿す。

ネットワーク接続

PCとNASイーサネットで直結する。
(今はストレートケーブルで直結できて楽だなぁ)

IPアドレス変更

PCのIPアドレスを下記に変更する

IPアドレス 192.168.11.1
サブネット 255.255.255.0
ゲートウェイ 192.168.11.1

NAS起動

HDDを交換したNASの電源を入れる。

ランプ確認

白点滅 -> 赤点滅(6回)

TFTP Boot.exeを実行

コンソールが立ち上がり、情報が表示され、
「accepting requests...」の表示で止まる。

EMモード起動

NASのファンクションボタンを押すとNASのランプが赤から変わる。
赤点滅 -> 白点滅 -> 白点灯
TFTP Boot.exeのコンソール上でもinitrd.buffaloとuImage.buffaloの転送のログが表示される。

NAS Navigator2 の起動

NAS Navigator2を起動して、NASがEMモードで起動していることを確認できたらOK。
TFTP Boot.exeを終了する。(ctrl + cだね)

ファームウェアの更新

ここまでではネットワーク起動しただけで、HDDには何も書き込まれていない。

NASIPアドレスを確認/ PCのIPアドレス変更

NAS Navigator2でNASを選択すると表示されるIPアドレスとサブネットを確認し、
PCのIPアドレスNASと同じ帯域のIPアドレスに変更する。

LSUpdater.iniの書き換え

ファームウェア内のLSUpdater.iniを書き換える。

変更前
[Flags]
VersionCheck = 1
NoFormatting = 1
変更後
[Flags]
VersionCheck = 0
NoFormatting = 0

LSUpdater.exeの実行

画面に対象のNASの情報が表示される。
画面下部のファームウェア更新ボタンを押す。
確認ダイアログが出るので、「はい」を押す。
初期化が終わるまで眺めてる。

終了後、NAS Navigator2で確認すると
EMモードから通常運転に変わっている。

おわりに

これでLS410Dのディスク換装は終わり。
実はLSUpdaterの実行には何度か失敗している。
何が原因かわからないがNASIPアドレスが勝手に変わったり、
ファームウェアのバージョンが最新なので更新できないと表示されたり。
要はPCからNASへ通信ができて、ファイルが転送できりゃ問題ないはずなんで、
IP設定なんて間違えにくいと思うんだが。。。
最終的にうまくいったから良かったけど、謎すぎる。

んで、せっかくLS410Dを初期化したので、
ついでにSSHで接続できるようにしたいと思う。

というわけで、次回につづく。

NASが壊れた日 その1

予兆

NASのDNLAサーバ機能を利用してよく音楽を聞いていたのだが、
その日はなぜかネットワーク上のNASが見えなくなっていた。
pingは通るけど、ファイラーからは見えない。
仕方がないので一度、電源を切って再起動と思ったが、
終了プロセスのまま、落ちる気配がない。
仕方ないのでアダプタを抜いて強制シャットダウンをする。
電源投入するも、起動プロセスが終わらない。
マニュアルによると40秒程度で終わるものが1時間経っても終わらず
結局、3時間後に起動。

さすがにやばいと思い始めた。

発生

ファイラーから確認できたので、優先度の高いファイルからコピーを始めるも、
ほとんどコピーできないまま、ファイラーが固まる。

バックアップは無かった。
というより、このNASは当初バックアップディスクのつもりだったのだが、
長年の時を経てファイルサーバーの扱いになっていた。

あせるとともに、作戦変更。
電源を切って、分解して、クローンを取ろう、
そう思って、電源を切る。
今回はわりとはやく落ちた。

分解

当該NASはBuffalo LinkStation LS410Dシリーズの2TBモデルである。
分解、復旧、換装情報はなぜかネット上にたくさんあったので、
それを参考に分解してHDDを取り出した。

絶望

PCのSATAにつないだらHDDのS.M.A.R.T StatusがBadだった。
BIOSで認識はしているが、HDDの異常でfsckがはねられてしまい、
普段使っているLinuxが正しく起動しない。

仕方がないので手元にあったArch Linuxインストーラで起動する。
通常では考えられないほどの時間を経て、インストーラが起動した。

文章では連続しているが、ここまでに数日経っている。
その間にクローン用のHDDを取り寄せたりしていたのだ。
ともかく、ddを実行してクローンを取る。
ところがファイルの読み込み速度が異常に遅い。
良くて2000B/sである*1。HDDは2TBもあるのに。
流石に待ちきれない。
(SMART情報によるとスループットパフォーマンスが異常であった)

dd_rescueも試したが似たようなもので、
どうにもファイル転送系のトラブルのようだ。

結果

というわけで、結局、どうにもならなくて、
ファイル救助もできずに終わった。
そして、20年位積み重ねたファイルがすべて消えた。
殆どはゴミだけど、写真、壁紙、古いアプリケーションとか、
今となっては再度取得できないファイルをなくしたのが痛い。
そうかといって、データ復旧に何十万もかける気には到底ならず。

教訓

バックアップはちゃんと取りましょう、って事なんでしょう。
あと、大きすぎるHDDも考えものだね。
復旧時のクローンの待ち時間とかいろいろ。

その後

LS410Dのディスクは死んだが、装置としてはまだ生きているので、
新しいディスクをはめ込んで復活させた。
手順については、覚書として次回に。
というわけで続く。

*1:** 2000KBだったかもしれないが、とにかく遅かった。

Apple USB pro keyboard (JIS)をWindowsで使う

キーボードは壊れない

PS/2 の 古いCompaqキーボードが引退した後(マザーボードからPS/2が消えたから)、
代わりに使い始めたのが表題のこれ。

2000年ころまでPower Macを使っていたので、
拡張キーボードが欲しくて買ったのだが、
ドライバの兼ね合いでどうにも使えなかったので、即、お蔵入り。
その後、Windowsに乗り換えるも、
Windowsとこのキーボードの相性は悪く、
結局、Linuxを使うようになるまでは日の目を見なかった。

それでもWindowsで使いたい

今でもたまにWindowsを使うことがあるので、
このキーボードを多少使いやすくできないかと考えた。

至らない点

  1. 半角/全角キーがない
  2. PrintScrennがない
  3. 英数、かな/カナ、F13~F15が効かない
  4. 左CtrlとCaps Lockの位置が106キーボードとは逆配置

これらを解決するためにネットを漁ったら、
「Bootcamp サポートソフトウェアからキーボードドライバを引っこ抜け」*1
ってのが多かったのだけど、情報が古いせいか、これはうまくいかなかった。

解決策

左CtrlとCapsLockの入れ替えは、ChangeKeyという、 キー入れ替えソフトを使う。
キー入れ替えはレジストリを弄れば可能らしいが、それをこのソフトで行う。

F13にPrintScreen, かな/カナに漢字モードを割り当てるには
AutoHotKeyという、常駐型のキー入れ替えソフトを使う。

というわけで、Windowでもわりと使えるようになりました。
以上。

*1:今は「Windowsサポートソフトウェア」らしいがこっちはダウンロードする術がわからんかった。

Windowsの時刻をUTC + Timezone(Tokyo/Asia)にするのこと

時計について。

Linuxの時計はBIOSの時刻がUTC(標準時刻)として動作する。
また
Windowsの時計はBIOSの時刻がRTC(現地時刻)として動作する。

そのような違いからデュアルブート構成にすると
どちらかの時計に不都合が現れるので、
どちらかに合わせるしかない。

Arch Linux Wikiによると、
Windowsの時刻をUTCにする方が望ましいとある。
(Linuxから見ればそうだよな)

で、Windowsレジストリを追加して、
時刻設定のプロパティから自動設定をONにするとUTC + Timezoneになる。

設定追加

reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /d 1 /t REG_DWORD /f

設定削除

reg delete HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /f

Arch Linux ARMでBluetoothを有効にするのこと(Raspberry pi 3 B)

Raspberry pi 3 Bで動いているArch Linux ARMで
bluetoothを有効にしようとしたら、存外ハマったのでメモを残しておく。
以前にも少し触ったことがあったけど、こんなに苦労した記憶はないのだが、どうなってるんだ。

パッケージ

  1. bluez
  2. pi-bluetooth (AUR)
  3. bluez-utils-compat (AUR)

この内、3は2 が依存しているので必要となる。

bluez

bluetooth関連のパッケージで公式リポジトリにあるので、
pacmanでインストールする。

bluez-utils-compat

https://aur.archlinux.org/packages/bluez-utils-compat/

公式リポジトリにあるbluez-utilsから削除された機能を含んでいるので、
これをインストールするとbluez-utilsと衝突する。

ダウンロード

git clone urlはリンクが切れているので、cloneできない。
download snapshotのリンクからソースをダウンロードすること。

make

ソースファイルに署名がついているので、
署名サーバから署名を取得する必要がある。
パッケージビルドでビルドする前の署名チェックでキー値がわかる。
署名が確認できないとビルドが中断するため、
中断した場合は、以下のコマンドで署名をインポートする。

gpg --recv-keys 06CA9F5D1DCF2659()

pi-bluetooth

https://aur.archlinux.org/packages/pi-bluetooth/

こっちはcloneができるので 問題ない。
パッケージビルドすればインストールできる。

起動

brcm43438.service

pi-bluetoothに含まれるサービスbrcm43438.serviceを有効化する。
このまま起動すると問題があるのだが、それは後ほど。

sudo systemctl enable brcm43438.service 

bluetooth.service

bluezに含まれるサービスbluetooth.serviceを有効化する。

sudo systemctl enable bluetooth

再起動後、bluetoothが有効になっているはず。

確認

bluetoothctlを起動してbluetoothdに接続できれば成功。

[alarm@alarm ~]$ bluetoothctl 
Agent registered
[CHG] Controller B8:27:EB:EC:98:C8 Pairable: yes
[bluetooth]# 

ControllerのMACアドレスAA:AA:AA:AA:AA:AAになる場合

brcm43438.serviceの項で書いた問題がコレ。
/lib/systemd/system/brcm43438.serviceを下記のように書き換えてやる。*1
再起動してMACアドレスAA:AA:AA:AA:AA:AAでなければOK・・・でしょう。

() ExecStart=/usr/bin/hciattach -n /dev/ttyAMA0 bcm43xx 921600 noflow -
↓
() ExecStart=/usr/bin/btattach -B /dev/ttyAMA0 -P bcm -S 3000000

ペアリング

bluetoothctl起動後にscan onbluetooth機器のscanができる。

[bluetooth]# scan on

Failed to start discovery: org.bluez.Error.NotReady

こんなエラーが出た場合は、bluetoothアダプタが有効になっていない。
/etc/bluetooth/main.confを編集して自動的に有効になるように設定する。

/etc/bluetooth/main.conf
--
[Policy]
AutoEnable=true

下記のコマンドを実行してアダプタを起動する方法もあるが
現在は非推奨のこと。

sudo hciconfig hci0 up

というわけでおしまい。