search
LoginSignup
12

More than 5 years have passed since last update.

posted at

updated at

Raspbianをdebootstrapから作る

スモールイメージのRaspbianが欲しく、debootstrapで構築してみました。
Minibianというディストリもあったんですが、ディスクサイズ変更やパッケージ導入が上手くできなかったので、
debootstrapで行うことにしています。

多分、Ubuntu、debianで構築できると思います(私は、Docker上のubuntuで行っております)。

参考

インストール

  • Docker for Windows上でUbuntuコンテナを作成して構築
  • 最終的なSDカードイメージはCentOS上で作業
前提パッケージの導入
sudo apt-get install -y qemu-user-static binfmt-support debootstrap git
インストール(jessie)
sudo mkdir /raspi-root
cd /raspi-root
sudo debootstrap --include=ca-certificates,apt,wget --foreign --arch=armhf jessie . http://archive.raspbian.org/raspbian
sudo cp $(which qemu-arm-static) ./usr/bin/
sudo chroot . debootstrap/debootstrap --second-stage --verbose
chroot準備
sudo mount -t sysfs sysfs sys/ 
sudo mount -t proc  proc  proc/
sudo mount -o bind /dev  dev/
sudo mount -o bind /dev/pts dev/pts
ホスト名、hosts設定
sudo echo raspberry >./etc/hostname
sudo echo 127.0.0.1\traspberry >>./etc/host

ファイル編集

/raspi-root/etc/apt/sources.list
deb http://ftp.jaist.ac.jp/raspbian jessie main firmware non-free
deb http://mirrordirector.raspbian.org/raspbian jessie main firmware non-free
deb http://archive.raspberrypi.org/debian jessie main
/raspi-root/etc/fstab
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp
/raspi-root/etc/fstab
proc           /proc    proc  defaults         0 0
/dev/mmcblk0p1 /boot    vfat  defaults,noatime 0 0
/dev/mmcblk0p2 /        ext4  defaults,noatime 0 0
tmpfs          /tmp     tmpfs defaults         0 0
tmpfs          /var/tmp tmpfs defaults         0 0

パッケージインストール

リポジトリ認証の鍵情報追加
sudo chroot . wget http://archive.raspbian.org/raspbian.public.key -O - | chroot . apt-key add -
sudo chroot . wget http://archive.raspberrypi.org/debian/raspberrypi.gpg.key -O - | chroot . apt-key add -
最低限のパッケージ導入
sudo chroot . apt-get update
sudo chroot . apt-get -y upgrade
sudo chroot . apt-get install -y \
sudo \
openssh-server \
usbmount \
patch \
less \
console-common \
console-data \
console-setup \
tzdata \
most \
locales \
keyboard-configuration \
raspi-config rpi-update
piユーザの作成
sudo chroot . useradd -m -s /bin/bash pi
sudo chroot . usermod -a -G sudo,staff,kmem,plugdev,audio pi
sudo chroot . passwd pi

bootパーティションファイル作成

firmware導入
git clone https://github.com/raspberrypi/firmware.git ~/firmware
bootディレクトリ作成
sudo mkdir /raspi-boot
sudo mount --bind /raspi-boot /raspi-root/boot
sudo cp -R ~/firmware/boot/* /raspi-root/boot/
sudo mkdir /raspi-root/lib/modules/
sudo cp -R ~/firmware/modules/* /raspi-root/lib/modules/

ディスクイメージ作成

最終工程
sudo chroot . apt-get clean
sudo chroot . apt-get autoclean
sudo chroot . apt-get autoremove -y
sudo chroot . raspi-update
sudo umount ./dev/pts
sudo umount ./dev
sudo umount ./proc
sudo umount ./sys
sudo umount ./boot
SDイメージ作成
dd if=/dev/zero bs=1M count=3839 > ~/root.img
sudo losetup -f ~/root.img
sudo losetup -a
sudo parted -s /dev/loop0 mklabel msdos
sudo parted -s /dev/loop0 unit cyl mkpart primary fat16 -- 0 16
sudo parted -s /dev/loop0 set 1 boot on
sudo parted -s /dev/loop0 unit cyl mkpart primary ext2 -- 16 -2
sudo losetup -d /dev/loop0
sudo losetup -f -P ~/root.img
sudo mkfs.vfat -n System /dev/loop0p1
sudo mkfs.ext4 -L Storage /dev/loop0p4
sudo mount /dev/loop0p1 -o rw /mnt
sudo cp -R /raspi-boot/* /mnt/
sudo umount /mnt
sudo mount /dev/loop0p2 -o rw /mnt
sudo cp -R /raspi-root/* /mnt/
sudo umount /mnt
sudo losetup -d /dev/loop0

~/root.imgをddまたは、Win32DiskImagerでmicro sdカードに書き込めば完了です。

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
What you can do with signing up
12