LoginSignup
0
0

More than 5 years have passed since last update.

[メモ] ラズパイの起動イメージファイル作成

Last updated at Posted at 2017-11-26

概要

  • ラズパイの起動イメージファイル作成する。
  • 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にアップデートして、ソースとして使用。

手順

  1. ソースディスクをマウントする(/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ユーザにて作業
    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に焼いて起動を確認。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0