スモールイメージの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カードに書き込めば完了です。