概要
- ラズパイの起動イメージファイル作成する。
- 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
rootユーザにて作業
sudo bash
-
以下、こんな感じ。
# イメージファイル 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
作成した、
rpi_sd.img
をEtcherなどで、SDに焼いて起動を確認。