07 Raspberry PiファイルシステムHDD化 その3/3 (起動SDカードを別カードに移行)

HDDにルートファイルシステムを移行 その3/3

前回までで以下の②まで実施しました。

【流れ】
①HDDを接続してパーティションを切ってフォーマット
②HDDへデータを移行
1 sda1にmmcblk0p2の中身をコピー
2 起動時の自動マウント設定を変更 その1
3 /varの内容をsda5へコピー
4 元の/varを別名保存し、/varへsda5をマウント
5 起動時の自動マウント設定を変更 その2
③/dev/mmcblk0p1の内容を別の容量が小さいSDカードへコピー

今回は、最後の③を実施します。
今まで16GのSDカードを使っていましたがブートさせるだけならもっと小さいSDカードで対応できるので勿体ないです。某お化けが出そうです。
余ってる512MのSDカードがあるのでそっちを使おうと思います。
以前確認したブート用のパーティションは60M程度だったのでもっと小さいSDカードでもたぶん大丈夫です。

必要なもの
・空のSDカード(128M程度で十分)
・USB接続のカードリーダ

参考URL
ORBIT SPACE
月と杜

いろいろとやり方はあるようですが、今回はRaspberry PiにUSB接続のカードリーダを繋いで、/bootを直接コピーしてしまいます。
(WindowsからMiniTool Partition Wizard Home Editionというソフトで行う方法もあるようですが詳細は不明なので興味がある人は調べてみてください)

RPiにUSBカードリーダを接続します。
今回は電源を切らずにそのまま繋いでみます。

接続後にデバイスの情報を確認
sudo fdisk -l

Disk /dev/mmcblk0: 15.8 GB, 15819866112 bytes
4 heads, 16 sectors/track, 482784 cylinders, total 30898176 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000981cb

Device Boot Start End Blocks Id System
/dev/mmcblk0p1 8192 122879 57344 c W95 FAT32 (LBA)
/dev/mmcblk0p2 122880 5785599 2831360 83 Linux

Disk /dev/sda: 1494.1 GB, 1494105661440 bytes
255 heads, 63 sectors/track, 181648 cylinders, total 2918175120 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x410f9b02

Device Boot Start End Blocks Id System
/dev/sda1 2048 67110911 33554432 83 Linux
/dev/sda2 67110912 2912946175 1422917632 5 Extended
/dev/sda3 2912946176 2918175119 2614472 82 Linux swap / Solaris
/dev/sda5 67112960 486543359 209715200 83 Linux

Disk /dev/sdb: 513 MB, 513277952 bytes
9 heads, 40 sectors/track, 2784 cylinders, total 1002496 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Device Boot Start End Blocks Id System
/dev/sdb1 233 1002495 501131+ 6 FAT16

今回接続したSDカードは一番下に/dev/sdbとして認識しています。

HDDの時に使ったfdskコマンドで空のSDカードに新たにパーティションを作成します。
sudo fdisk /dev/sdb

dコマンドで既存の領域削除
nコマンドで新規領域作成。パーティションタイプはp、それ以外はデフォルトで全領域を1つのパーティションにします。
tコマンドでパーティションのタイプをW95 FAT32 (LBA)に変更。コードはcです。
wコマンドで保存・終了

WARNING: If you have created or modified any DOS 6.x
partitions, please see the fdisk manual page for additional
information.
Syncing disks.
上記ワーニングが出ますが気にしない。

作成したパーティションをフォーマットします。(私はフォーマットせずにマウントしようとしててちょっと悩みました。)
ツールをインストール。(入れようとしたら調子がおかしいので一度アップデートしてから入れたら入りました。)
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install dosfstools

SDカードをフォーマット
sudo mkfs -t vfat -c -F 32 /dev/sdb1

SDカードを/mntにマウントします。
sudo mount -t vfat /dev/sdb1 /mnt

/bootの内容をSDカードにコピー
sudo cp -rpf /boot/* /mnt

SDカードのマウント解除
sudo umount /mnt

ここで一度電源を落とします。
sudo shutdown -h now

電源を抜いた後UBSカードリーダを外してSDカードを差し替えて再度電源を入れます。
暫くしてターミナルでアクセスできれば完了です。

以上でHDDへのファイルシステム移行は終了です。いや~長かった。
お付き合いいただきありがとうございました。

2014年4月5日作成
2014年5月4日草稿公開

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

コメント

  1. 山下達也 より:

    「3/3 (起動SDカードを別カードに移行) 」は何の目的で行うのでしょうか。2/3で止めておけばHDDが壊れてもすぐにRasPiに刺さっているSDカードで復旧できるメリットがあると思うのですが。

    • camelinsect より:

      こんばんは。コメントありがとうございます。
      記事にもありますが、16GのSDカードを起動のみに使うのが勿体無かったからです。
      当時も安かったですが、今の記憶媒体の価格低下も考えると、安全サイドに振ってそのまま使っても良いと思います。
      今思い付いたので出来る分からないですが、HDDとSDカードでRAIDの様な冗長系が作れたら面白いですね。

  2. 山下達也 より:

    こんにちは、素早いコメント頂きありがとうございます。確かにSDの内容はHDDと同期していないので古い内容で復旧してもありがたくありません。私のRaspiはServerとして常時通電して使っており何度SDが壊れたかわかりませんので、冗長系の記事には期待しています。なお、この3回シリーズの記事を教科書にしてRaspiをUSB SSDで起動するようにしてかなり快適に動くようになりました。ありがとうございます。

    • camelinsect より:

      こんばんは。お役に立てている様で嬉しいです。
      常時使用のサーバーでSDが頻繁に死んでいたのだとすると、フラッシュメモリの書き込み回数の限界が原因かもしれないですね。
      だとするとSSDもフラッシュメモリなので、ちょっと注意が必要かと思います。(SDと違って書き込みを分散して寿命を延ばすようになってるはずなので、すぐに逝くことはないと思いますが)
      確かファイルシステムをROM化する手法があるので、頻繁に読み書きするストレージ部分以外をROM化する事で書き込み回数によるクラッシュを避けられるようになると思います。
      ↓↓こんなやつです。
      https://qiita.com/ma2shita/items/45818f0872472ecacac1

      • 山下達也 より:

        こんにちは。紹介していただいた記事をもとにシステムのROM化を試みてますがなかなかうまくいきません。またSSD化したシステムが使い込んでいるうちにキーを打っても数秒間エコーバックが返ってこない症状がたまに出るようになってきました。….といろいろ問題はありますが連休で時間はありますのでじっくりと取り組みたいと思ってます。それとlinuxはコンシューマ製品で多く採用されてますが、その裏ではエンジニアの多くの努力があると実感してます。
        なお、私の目標はraspi上でWordPressを稼働させることですが、今年中くらいには動かしたいです。

    • camelinsect より:

      こんにちは。以前ご質問に回答しましたが、このGWにラズパイサーバーの再構築をしてて少し考えが変わりました。

      SDカードの環境をそのまま残しておくことで、HDDからの起動に失敗するようになった場合やセットアップのやり直しを行いたい時に、SDカード自体がレスキューディスクになるという利点があると思います。
      というか今回の再構築でそういう使い方をしました。

      特にパーティションをいじる際に、HDDから起動しなくなり、SDカードだけ取り出してWINで/boot/cmdline.txtをバックアップを戻してやるとSDカードの環境で立ち上げられます。
      これでHDDのエラーを修正するなどが可能でした。

      また、再インストールする場合でも、途中まで構築した環境からHDD化を実施できるので結構便利。
      LITEのイメージだと最低2Gのメディアでインストールはできますが、それなりのサイズのSDにある程度環境を作ってからHDD化するというのは、メンテナンスを考えると良さそうです。