不慮の事故(謎なスクリプトを動かしてしまい)により
活動停止に陥ってしまったRaspberry Pi
修復よりも、迷わず再構築をしようと考えるあたり、自分はドMなんだなぁ、と。
ついでにこのブログも人様に読んでもらえるものに書きなおす。
なお、ホストマシンはUbuntu
・前回同様、HDDでの運用(BootのみSD、システムをHDD)とする。
・OSのイメージファイルをSDに一旦展開するのではなく、
イメージのマウント → ブート環境構築、とする。
準備するもの
1.SDカード
ブート領域だけなので、128MB以上でOK。余ってるカードで十分。
2.USB-HDD
必要なだけ。余ってるHDDで問題なし。
手順
1.OSイメージのダウンロード
http://www.raspberrypi.org/downloads から
「Raspbian "wheezy"」をダウンロード。展開しておく。
2.イメージファイルのマウント
◎オフセット値などを自動で調べる
$ sudo kpartx -av wheezy-raspbian.img
add map loop0p1 (252:0): 0 114688 linear /dev/loop0 8192
add map loop0p2 (252:1): 0 3665920 linear /dev/loop0 122880
◎マウント
$ sudo mkdir /mnt/sd1$ sudo mkdir /mnt/sd2
$ sudo mount /dev/mapper/loop0p1 /mnt/sd1
$ sudo mount /dev/mapper/loop0p2 /mnt/sd2
これで /mnt/sd1 にブート領域、 /mnt/sd2 にシステム領域がマウントされる。
3.ブート領域のコピー
SDカードを差し込み、dmesgなどでデバイス名を調べる。
(自動マウントされた場合はアンマウントする)
fdisk でパーティションを設定、mkfs.vfatでFat32フォーマットする。
$ sudo fdisk /dev/mmcblk0
コマンド (m でヘルプ): [ d ] ← パーティション削除
コマンド (m でヘルプ): [ n ] ← パーティション作成
Partition type: [ ]
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): [ ]
Using default response p
パーティション番号 (1-4, 初期値 1): [ ]
初期値 1 を使います
最初 セクタ (2048-1987583, 初期値 2048): [ ]
初期値 2048 を使います
Last セクタ, +セクタ数 or +size{K,M,G} (2048-1987583, 初期値 1987583): [ ]
初期値 1987583 を使います
コマンド (m でヘルプ): [ t ]
選択したパーティション 1
16進数コード (L コマンドでコードリスト表示): [ c ]
パーティションのシステムタイプを 1 から c (W95 FAT32 (LBA)) に変更しました
コマンド (m でヘルプ): [ t ]
選択したパーティション 1
16進数コード (L コマンドでコードリスト表示): [ c ]
パーティションのシステムタイプを 1 から c (W95 FAT32 (LBA)) に変更しました
コマンド (m でヘルプ): [ w ]
パーティションテーブルは変更されました!
$ sudo mkfs.vfat -F 32 /dev/mmcblk0p1
$ sudo mkdir /mnt/sdboot
$ sudo mount -t vfat /dev/mmcblk0p1 /mnt/sdboot
$ sudo cp /mnt/sd1/* /mnt/sdboot
$ sudo umount /mnt/sdboot
4.システム領域のコピー
◎USB-HDDを挿し、fdisk等でパーティションを作成。
1.システム領域 16GB程度(お好みで)
2.データ領域 好きなだけ
3.swap領域 2GB程度(お任せで)
◎mkfs.ext4でext4フォーマットする。
$ sudo mkfs.ext4 /dev/sdb1
$ sudo mkfs.ext4 /dev/sdb2
$ sudo cp -a /mnt/sd2/* /media/SYSTEM/ (コピー先は環境によって異なる)
5.システムを書き換えて起動できるようにする
◎ブート手順を書き換え
$ sudo vi /mnt/sd1/cmdline.txt
root=/dev/mmcblk0p2 と定義してあるところを
root=/dev/sda1 に書き換える。
◎固定IPの設定
$ sudo vi /media/SYSTEM/etc/network/interfaces
iface eth0 inet dhcp
と定義してあるところを
iface eth0 inet static
address 192.168.xxx.yyy
network 192.168.xxx.0
netmask 255.255.255.0
broadcast 192.168.xxx.255
gateway 192.168.xxx.yyy
dns-nameservers 192.168.xxx.yyy
に書き換える。(xxx,yyyは環境による)
◎データ領域をマウントするように
$ sudo vi /media/SYSTEM/etc/fstab
#/dev/mmcblk0p2 / ext4 defaults,noatime 0 1
/dev/sda1 / ext4 defaults 0 0
/dev/sda2 /var/www ext4 defaults 0 0
mmcblk0p2の定義をコメントアウト
sda1,2の定義を追加
◎tty2〜6を起動させないように
$ sudo vi /media/SYSTEM/etc/inittab
#
1:2345:respawn:/sbin/getty --noclear 38400 tty1
# 2:23:respawn:/sbin/getty 38400 tty2
# 3:23:respawn:/sbin/getty 38400 tty3
# 4:23:respawn:/sbin/getty 38400 tty4
# 5:23:respawn:/sbin/getty 38400 tty5
# 6:23:respawn:/sbin/getty 38400 tty6
2〜6をコメントアウト
◎アクセス制限の設定
$ sudo vi /media/SYSTEM/etc/hosts.deny
ALL: ALL
$ sudo vi /media/SYSTEM/etc/hosts.allow
ALL: 127.0.0.1
ALL: 192.168.0.0/255.255.255.0
6.後始末
◎USB-HDDのアンマウント
◎SDカードのアンマウント
$ sudo umount /mnt/sdboot
$ sudo rm -rf /mnt/sdboot
◎イメージファイルのアンマウント
$ sudo umount /mnt/sd1
$ sudo umount /mnt/sd2
$ sudo kpartx -dv wheezy-raspbian.img
del devmap : loop0p2
del devmap : loop0p1
loop deleted : /dev/loop0
$ sudo rm -rf /mnt/sd1
$ sudo rm -rf /mnt/sd2
Raspberry Pi を起動して、SSHで接続できればOK
0 件のコメント:
コメントを投稿