概要
- ラズパイの起動イメージファイル作成する。
- 2つパーティション作って、1つ目をvfat(boot関係のファイルをコピー)、2つめをext4(rootfs)にして、
/boot/cmdline.txt
とか、/etc/fstab
をうまく設定すれば、起動するはず。 -
dd
でイメージファイルを作成、losetupでオフセット指定して、ループバックデバイスとして、使用する。
環境
- Raspberry Pi 3 model B
- Raspbian: なんでもできるはず. 今回は、以下にてテスト。
-
2017-09-07-raspbian-stretch.img
にて、イメージ作成作業 -
2016-03-12-jessie-minibian
をSD焼いて、stretchにアップデートして、ソースとして使用。
-
手順
-
ソースディスクをマウントする(
/mnt/boot_src
と/mnt/root_src
)例
sudo mkdir /mnt/{boot,root}_src
sudo mount /dev/sda1 /mnt/boot_src
sudo mount /dev/sda2 /mnt/root_src
2. rootユーザにて作業<br>`sudo bash`
3. 以下、こんな感じ。
```
# イメージファイル
IMG_FILE=/mnt/rpi_sd.img
# イメージファイルを作成 768MBytes
dd if=/dev/zero of=${IMG_FILE} bs=1M count=768
# パーティション作成 1st:vfat / 2nd:ext4
fdisk ${IMG_FILE}
n
p
1
8192
93814
n
p
2
94208
t
1
c
t
2
83
p
w
# イメージファイルの中身を見る
fdisk -lu ${IMG_FILE}
# (表示例)
# pi@raspberrypi:~ $ fdisk -lu ${IMG_FILE}
# Disk /mnt/rpi_sd.img: 768 MiB, 805306368 bytes, 1572864 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
# Disklabel type: dos
# Disk identifier: 0x8170d656
# Device Boot Start End Sectors Size Id Type
# /mnt/rpi_sd.img1 8192 93814 85623 41.8M c W95 FAT32 (LBA)
# /mnt/rpi_sd.img2 94208 1572863 1478656 722M 83 Linux
# pi@raspberrypi:~ $
# !!! 環境依存 !!!
# それぞれのパーティションを /dev/loopX として、設定する。
# Partition1は、Start 8192 で、Sectors=85623なので、こんな感じ
losetup --offset $((512*8192)) --sizelimit $((512*85623)) --show --find ${IMG_FILE}
# /dev/loop0 と表示されるはず
# Partition2は、Start 94208 で、Sectors=1478656なので、こんな感じ
losetup --offset $((512*94208)) --sizelimit $((512*1478656)) --show --find ${IMG_FILE}
# /dev/loop1 と表示されるはず
# それぞれフォーマット
mkfs -t vfat -n boot /dev/loop0
mkfs -t ext4 -L rootfs /dev/loop1
# マウントフォルダを作って、マウント。
mkdir /tmp/{boot,root}
mount /dev/loop0 /tmp/boot
mount /dev/loop1 /tmp/root
#
# ファイルをコピーする
cp -r /mnt/boot_src/* /tmp/boot/
cp -a /mnt/root_src/* /tmp/root/
# 必要あれば、以下を編集する。
# /tmp/boot/cmdline.txt で root= の指定
# /tmp/root/etc/fstab の ファイルシステムの指定
#
sync
# アンマウント
umount /dev/loop{0,1}
losetup -d /dev/loop0
losetup -d /dev/loop1
```
4. 作成した、`rpi_sd.img`をEtcherなどで、SDに焼いて起動を確認。