2014/02/08

RaspberryPi をUSBフラッシュで構築するの巻 (1)

Raspbianインストール編

アクセスランプ点灯は謎のままだけど、気にしないことにする。
1年くらい保てばいいでしょ。

いつもどおりRaspbianイメージから、ブートSDとシステムUSBを構築する。
1.SDカード
2.システム用USBフラッシュ
3.データ用USBフラッシュ

手順
1.OSイメージのダウンロード
 「Raspbian "wheezy"」をダウンロードし、解凍。

2.イメーファイルのマウント
 $ su - (rootで作業)
 # kpartx -av wheezy-raspbian.img
 add map loop0p1 (252:0): 0 114688 linear /dev/loop0 8192
 add map loop0p2 (252:1): 0 5662720 linear /dev/loop0 122880

 # mkdir /mnt/sd1
 # mkdir /mnt/sd2
 # mount /dev/mapper/loop0p1 /mnt/sd1
 # mount /dev/mapper/loop0p2 /mnt/sd2

 これで /mnt/sd1 にブート領域、 /mnt/sd2 にシステム領域がマウント。

3.ブート領域のコピー
 SDカードを差し込み、dmesgなどでデバイス名を調べる。
 fdisk でパーティションを設定、mkfs.vfatでFat32フォーマットする。
 (自動マウントされた場合はアンマウントする)

 # umount /dev/mmcblk0p1
 # fdisk /dev/mmcblk0
 コマンド (m でヘルプ): [ p ] ← パーティションテーブル表示

 コマンド (m でヘルプ): [ d ] ← パーティション削除(パーティションが存在する場合)
 選択したパーティション 1

 コマンド (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 を使います
 最初 セクタ (nnn-nnn, 初期値 nnn): [ ] ← デフォルト値
 初期値 nnn を使います
 Last セクタ, +セクタ数 or +size{K,M,G} (nnn-nnn, 初期値 nnn): [ ] ← デフォルト値
 初期値 nnn を使います

 コマンド (m でヘルプ): [ t ] ← パーティションID変更
 選択したパーティション 1
 16進数コード (L コマンドでコードリスト表示): [ c ] ← 「W95 FAT32 (LBA)」を選択
 パーティションのシステムタイプを 1 から c (W95 FAT32 (LBA)) に変更しました

 コマンド (m でヘルプ): [ w ] ← テーブル書き込み
 パーティションテーブルは変更されました!

 # mkfs.vfat -F 32 /dev/mmcblk0p1

 # mkdir /mnt/bootsd
 # mount -t vfat /dev/mmcblk0p1 /mnt/bootsd

 # cd /mnt/sd1
 # tar cfpv - . | tar xfpv - -C /mnt/bootsd/
 # sync

 ブート手順書き換え
 # vi /mnt/bootsd/cmdline.txt
  「root=/dev/mmcblk0p2」 ⇛ 「root=/dev/sda1」

 # umount /dev/mmcblk0p1
 # rmdir /mnt/bootsd

4.システム領域のコピー & 初期設定
 USBフラッシュを差し込み、dmesgなどでデバイス名を調べる。
 fdisk でパーティションを設定、mkfs.ext4でext4フォーマットする。
 (自動マウントされた場合はアンマウントする)

 # umount /dev/sdb1
 # fdisk /dev/sdb
 コマンド (m でヘルプ): [ p ] ← パーティションテーブル表示

 コマンド (m でヘルプ): [ d ] ← パーティション削除(パーティションが存在する場合)
 選択したパーティション 1

 コマンド (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 を使います
 最初 セクタ (nnn-nnn, 初期値 nnn): [ ] ← デフォルト値
 初期値 nnn を使います
 Last セクタ, +セクタ数 or +size{K,M,G} (nnn-nnn, 初期値 nnn): [ ] ← デフォルト値
 初期値 nnn を使います

 コマンド (m でヘルプ): [ t ] ← パーティションID変更
 選択したパーティション 1
 16進数コード (L コマンドでコードリスト表示): [ 83 ] ← 「Linux」を選択

 コマンド (m でヘルプ): [ w ] ← テーブル書き込み
 パーティションテーブルは変更されました!

 # mkfs.ext4 /dev/sdb1

 # mkdir /mnt/sysusb
 # mount -t ext4 /dev/sdb1 /mnt/sysusb

 # cd /mnt/sd2
 # tar cfpv - --exclude=./lost+found --exclude=./sys --exclude=./proc . | tar xfpv - -C /mnt/sysusb/
 # sync
 # mkdir /mnt/sysusb/sys
 # mkdir /mnt/sysusb/proc
 # mkdir /mnt/sysusb/var/www

 マウント情報書き換え
 # vi /mnt/sysusb/etc/fstab
  [ /dev/mmcblk0p2 ] の定義行を以下2行に変更
  /dev/sda1    /               ext4    defaults,noatime  0       1
  /dev/sdb1    /var/www        ext4    defaults          0       0

 固定IPの設定
 # vi /mnt/sysusb/etc/network/interfaces
  [ iface eth0 inet dhcp ]の定義行を以下に変更(xxx,yyy,zzzは環境に合わせる)
  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.zzz
    dns-nameservers 192.168.xxx.zzz

 ttyの起動抑制
 # vi /mnt/sysusb/etc/inittab
  2〜6の定義をコメントアウト
  1:2345:respawn:/bin/login -f root 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

 アクセス制限の設定
 # vi /mnt/sysusb/etc/hosts.deny
  以下を追加
  ALL: ALL

 # vi /mnt/sysusb/etc/hosts.allow
  以下を追加(xxxは環境に合わせる)
  ALL: 127.0.0.1
  ALL: 192.168.xxx.0/255.255.255.0


 # umount /dev/sdb1
 # rmdir /mnt/sysusb

5.イメージファイルのアンマウント
 # umount /mnt/sd1
 # umount /mnt/sd2
 # kpartx -dv wheezy-raspbian.img
  del devmap : loop0p2
  del devmap : loop0p1
  loop deleted : /dev/loop0
 # rm -r /mnt/sd1
 # rm -r /mnt/sd2

SDとフラッシュメモリを差し込んでRaspberry Pi を起動してみよう!

母艦から
$ ssh pi@192.168.xxx.yyy
パスワードは「raspberry」

ただし、、、
フラッシュメモリの差し込むポートによってデバイス名が決まるので、
Raspbianが起動しない場合がある。
慌てず騒がず差し込むポートを入れ替えて試してみよう。

0 件のコメント:

コメントを投稿

フォロワー