録画らずぱいとメインPCのHDDが同時に逝った話
経緯
ぼく「さーて録画したものでも見るかぁ」
ブラウザ「Chinachuくん死んでるで」
ぼく「あー、仕方ないSSHで見に行くか」
ハードディスクくん「」
ぼく「あーっ!SSHスクリプトが入ったストレージくんがーっ!」
ぼく「HDMI出力でとりあえずコンソールだけでも出そう…」
らずぱい「kernel panicニキーwwwwwwwwww」
ここで意識が途切れる
今回やったこと
今回のお買い物
- Seagate製ハードディスク
- 3TB
- 7700円
- ノンブランドのUSBメモリ
- Linuxブータブルメディア作成用
- 8GB
- 1000円くらい
- MicroSDカード
- らずぱい復活用
- 32GB
- 1000円くらい
では、張り切って修復した話をしましょう。。
死んでしまった2TBのHDDからデータ救出
Win側作業
Winで認識するかしないかギリギリの戦いをしていたため、一度CHKDSKを掛けた。
CHKDSK後は安定するが、1時間もしないうちにすぐ不安定に。。
しまいには007Aストップ(HDD等の物理的エラーストップ)。。。
こりゃダメだと駅前にあるドスパラへ駆け込み3TBのストレージを購入。
WD製は1年半持ったか持たないか…いやおそらくロット的な問題でしょう。それでも早い気はするけど。
HDDにTEMPディレクトリを作っていたんで、どんなダウンロードも失敗する。
仕方ないので、CentOS LiveCDのURLだけをコピーして現在正常稼働中のらずぱいで落としてもらう。
くっそ重たいから何か無いかと調べていたら、axel
というパッケージがあることを知る。
どうやら分割ダウンロードに特化したものらしい。糞重たいisoがものの10分位で落ちてきた。
それを使ってVMを起動し、LiveCDからUSBメモリへ起動ディスクを作成。
「あえてのCentOS 6」というツイートですが、落としてきたのが6.8だっただけなんですよねぇ。。
別にLiveCDで落ちてくれれば何でも良かった()
Linuxへ移動
ブータブルメディアが出来たところで即座にUSBからLinuxを起動。
よーし張り切って移動しよう!
買ったHDD「いやお前俺のフォーマット忘れてない?」
僕「あっ」
ここで念のためWinに戻る(ここに気付くまででほぼ土曜終了)
気を取り直してWinへ戻る
ハードディスク管理から3TBのドライブをフォーマット。
ドライブレターは壊れてしまったものと同じにしてパス変更を必要としない状態へ。
いざ!フォーマット開始!
5時間くらいかかってようやくフォーマット終了。
とりあえずWin側で認識したことを確認してLinuxへ移ります。
再びLinuxへ
yumでntfs-3g
をインストール。
yum install ntfs-3g
これでCentOSでNTFSがマウントできるようになった。
あとはcpコマンドをドライブ間で叩いて、終わり!
(rsyncとかでも良かったんだけど、指定をミスって消えたりなんかしたら面倒くさいのでやりませんでした)
これで土日のほとんどを終了。まだらずぱいの復活が残ってるよ〜〜〜〜(午前1時)
死んでしまった録画鯖の復活
まずはwin32DiskImagerを使って購入したSDカードにraspbianを導入。
初期設定(主にIP固定)を早々に済ましSSHで入れることを確認したら、sudo halt
でらずぱい電源OFF。
BSドングル(PX-BCUD)を使えるようにカーネルのクロスコンパイルをする。
手順については、
http://k-pi.hatenablog.com/entry/2016/04/23/210541
と
http://qiita.com/Nao1215/items/f4cf7988281fd807951c
を参考にした。
qiitaのほうは、環境がraspberry pi3じゃなかったこともありコンパイル適用が微妙に違いそうだったので。
はてブロの方はraspberry pi1と3で試しているため、必要な方はそちらをご確認ください。
クロスコンパイル環境
詳細手順
1. gitパッケージインストール
* え?まだしてない? sudo apt-get -y install git
で今すぐ取得!
らずぱいカーネルデータを取得
git clone --depth=1 https://github.com/raspberrypi/tools
git clone --depth=1 https://github.com/raspberrypi/linux
--depth=1は、リビジョンの最初の履歴しか取得しないこと。
「歴史はいらねえ!俺は今だけを追うんだ!」というトラディショナルな方向け。
基本はホームディレクトリ下においてあればOK
ドングルドライバパッチを取得する
Sat's Space様が作ったパッチをありがたく使わせてもらう。
wget http://www13.plala.or.jp/sat/px-bcud/px-bcud.patch
パッチ処理だ!
patch -p1 < px-bcud.patch
クロスコンパイルまで行う
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2709_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage modules dtbs
- 完了までマジで時間がかかる。ゲストPCのCPUコア数とかクロスコンパイル時のコア数指定で改善可能?
出来上がったモジュールやカーネルをラズベリーパイにトッピング
難しいことが書いてあるけどそんなに深く考えなくていい
/mnt配下に
fat32
とext4
というディレクトリを用意
sudo mkdir /mnt/fat32
sudo mkdir /mnt/ext4
らずぱいが入っているSDカードをPCに接続
VMがSDを認識するようにする
df -l
で、FAT32とEXT4のパーティションがどのスペシャルデバイスが当てられたかを探る(/dev/???ってなってるやつ)各デバイスをマウントする
sudo mount {FAT32のパス} /mnt/fat32
sudo mount {EXT4のパス} /mnt/ext4
を叩くモジュールインストールコマンドを叩く
sudo make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=/mnt/ext4 modules_install
カーネルを置き換えたりdtbやoverlaysを書き換える
sudo cp /mnt/fat32/$KERNEL.img /mnt/fat32/$KERNEL-backup.img
sudo scripts/mkknlimg arch/arm/boot/zImage /mnt/fat32/$KERNEL.img
sudo cp arch/arm/boot/dts/*.dtb /mnt/fat32/
sudo cp arch/arm/boot/dts/overlays/*.dtb* /mnt/fat32/overlays/
sudo cp arch/arm/boot/dts/overlays/README /mnt/fat32/overlays/
起動の確認
ここまで行って、
dmesg | grep PX-BCUD
かなんかでドライバが読み込んでいることを確認して完了。ここからはすべてSSH越しのらずぱいで作業を行う。
recdvbのインストール
こちらもSat's Space様を参照。
Chinachuインストール
git clone https://github.com/Chinachu/Chinachu.git
cd Chinachu
./Chinachu installer
フルインストールだとNode.jsのコンパイルあり。これがクソ時間掛かる。
以上で復活完了。
だいたい2日掛けて全部修復できました。