備忘録代わりのブログ

タイトル通りの私用備忘録。適当に残しておきたいことを書いておくブログ

録画らずぱいとメインPCのHDDが同時に逝った話

経緯

ぼく「さーて録画したものでも見るかぁ」

ブラウザ「Chinachuくん死んでるで」

ぼく「あー、仕方ないSSHで見に行くか」

ハードディスクくん「」

ぼく「あーっ!SSHスクリプトが入ったストレージくんがーっ!」

ぼく「HDMI出力でとりあえずコンソールだけでも出そう…」

らずぱい「kernel panicニキーwwwwwwwwww」

ここで意識が途切れる

今回やったこと

  • 死んでしまった2TBのHDDからデータ救出
  • らずぱい環境の再構築

今回のお買い物

  • 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

yumntfs-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で今すぐ取得!

  1. らずぱいカーネルデータを取得

    • git clone --depth=1 https://github.com/raspberrypi/tools

    • git clone --depth=1 https://github.com/raspberrypi/linux

      • --depth=1は、リビジョンの最初の履歴しか取得しないこと。

      • 「歴史はいらねえ!俺は今だけを追うんだ!」というトラディショナルな方向け。

    • 基本はホームディレクトリ下においてあればOK

  2. linuxディレクトリへ移動

  3. ドングルドライバパッチを取得する

    • Sat's Space様が作ったパッチをありがたく使わせてもらう。

    • wget http://www13.plala.or.jp/sat/px-bcud/px-bcud.patch

  4. パッチ処理だ!

    • patch -p1 < px-bcud.patch
  5. ロスコンパイルまで行う

    • make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2709_defconfig

    • make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage modules dtbs

      • 完了までマジで時間がかかる。ゲストPCのCPUコア数とかクロスコンパイル時のコア数指定で改善可能?
  6. 出来上がったモジュールやカーネルラズベリーパイにトッピング

    • 難しいことが書いてあるけどそんなに深く考えなくていい

    • /mnt配下にfat32ext4というディレクトリを用意
      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/

  7. 起動の確認

    ここまで行って、dmesg | grep PX-BCUDかなんかでドライバが読み込んでいることを確認して完了。

    ここからはすべてSSH越しのらずぱいで作業を行う。

  8. recdvbのインストール

    こちらもSat's Space様を参照。

  9. Chinachuインストール

    git clone https://github.com/Chinachu/Chinachu.git

    cd Chinachu

    ./Chinachu installer

    フルインストールだとNode.jsのコンパイルあり。これがクソ時間掛かる。

以上で復活完了。

だいたい2日掛けて全部修復できました。