2013/06/10

RaspberryPi に ownCloud で俺様専用クラウドを❝再❞構築 (1)

OSインストール編

不慮の事故(謎なスクリプトを動かしてしまい)により
活動停止に陥ってしまった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 でヘルプ): [ 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 件のコメント:

コメントを投稿