LoginSignup
1
1

More than 1 year has passed since last update.

ラズパイ用Devuan (Debianじゃないよ) SDカードイメージを自作する

Last updated at Posted at 2020-10-03

更新: おおむね以下の方法で作成したSDカードが http://114.150.218.139:63873/RPi-boot-images/ にあります

systemd が嫌いな人たちが作っているDebian forkの Devuan のSDカードイメージを自作する手順です。SDカードイメージは https://arm-files.devuan.org/ で配布してますが、自作するメリットは

  • ラズパイ4用SDカードを作成できる
  • btrfs にできる (Raspberry Pi OSでこれをやるのはちょっとむずかしい印象)
  • swap パーティションも作れる
  • インストールするパッケージを自分で決めることができて、使わないものを最初から入れないようにできる

などがあります。以下の手順はSDカードを作るパソコンではDevuanかUbuntuかDebianが稼働している必要があります。SDカードにインストールするDevuanのバージョンは4 (Chimaera)です。Raspberry Pi OSではないです。だいたい以下のことを自動でやるスクリプトが https://github.com/emojifreak/debian-rpi-image-script にあります

必要パッケージインストール

パソコンのほうで sudo apt-get install qemu-user-static binfmt-support btrfs-progs として必要パッケージをインストールして下さい。またDevuanの署名鍵のインストールを行って下さい。

SDカードのパーティション切りとフォーマット

  • パソコンに空のSDカードを挿入して、sudo gparted /dev/mmcblk0 としてgpartedを起動します。
  • 必要なら「デバイス」→「パーティションテーブルの作成」を選んでパーティションテーブルを作成します(以下スクリーンショット) スクリーンショット 2020-10-02 20-36-40.png
  • 以下のように起動パーティションを256MB程度でつくります。ファイルシステムをfat32にしてラベルをRASPIFIRMとします。 スクリーンショット 2020-10-02 20-39-39.png
  • 以下のようにルートファイルシステムを作ります。btrfsでもそうでなくてもいいですが、ラベルをRASPIROOTにします。大きさもなんでもいいです。 スクリーンショット 2020-10-02 20-43-32.png
  • スワップパーティションを以下のように作ります。大きさはラズパイの実メモリ量よりも少し大きめにするとよいと思います。ラベルをRASPISWAPとします。 スクリーンショット 2020-10-02 20-50-26.png

上記の作業を終えると、SDカードのパーティションとファイルシステムは下記のようになるはずです。問題なくできていたらgpartedを終了します。
スクリーンショット 2020-10-02 20-54-41.png

mmdebstrap によるルートファイルシステムへのラズパイ用パッケージ

基本作業(ラズパイ3または4)

sudo bash などとしてパソコンのrootプロンプトで以下を実行して下さい。

  1. mount -o async,discard,lazytime,noatime /dev/mmcblk0p2
  2. mmdebstrap --architectures=arm64 --variant=apt --components="main contrib non-free" --include=linux-image-arm64,eudev,kmod,e2fsprogs,btrfs-progs,sysvinit-core,locales,tzdata,openssh-server,bash,apt-utils,whiptail,vim-tiny,less,man-db,ifupdown,isc-dhcp-client,wpasupplicant,crda,raspi-firmware,firmware-brcm80211,firmware-linux-free,firmware-misc-nonfree,keyboard-configuration,console-setup,fake-hwclock chimaera /mnt http://deb.devuan.org/merged/

ラズパイ2の場合の変更

--architectures=arm64--architectures=armhf に変更し linux-image-arm64linux-image-armmp に変更します

ラズパイ0または1の場合の変更

--architectures=arm64--architectures=armel に変更し linux-image-arm64linux-image-rpi に変更します

ラズパイ3または4でメモリ節約のために実行ファイルを32bit版にする場合

--architectures=arm64--architectures=armhf,arm64 に変更します。カーネルは linux-image-arm64 のままにします。(これうまく動作してません)

不要なパッケージ

以下のような場合には mmdebstrap の引数に渡すパッケージから以下のものを除くことができます。

  • キーボードを使わないなら keyboard-configuration,console-setup は不要
  • 無線LANを使わないなら wpasupplicant,crda は不要
  • btrfs を使わないなら btrfs-progs は不要
  • SSHによるリモートログインをしないなら openssh-server は不要

標準的なパッケージの追加

mmdebstrap の --variant=apt--variant=important または --variant=standard に置き換えることで、重要なパッケージや標準的なパッケージがインストールされるようになります。

ブートパーティションの作成

  1. mount -o async,discard,lazytime,noatime /dev/mmcblk0p1 /mnt2
  2. cp -Rp /mnt/boot/firmware/* /mnt2
  3. rm -rf /mnt/boot/firmware/*
  4. umount /mnt2
  5. mount -o async,discard,lazytime,noatime /dev/mmcblk0p1 /mnt/boot/firmware
  6. /mnt/boot/firmware/cmdline.txt 内の root= の部分を root=LABEL=RASPIROOT に変更します
  7. ラズパイ3または4でarmhf (32ビット実行ファイル) を動かす場合 /mnt/boot/firmware/config.txt の先頭に arm_64bit=1 を加え、cp /mnt/usr/lib/linux-image-*-arm64/broadcom/bcm*rpi*.dtb /mnt/boot/firmware して下さい。

諸々の設定

SDカード上のルートファイルシステムが/mntにあるとして、以下のファイルを適切に設定します。ssh でリモートログインする場合 /mnt/root/.ssh/authorized_keys に適切な公開鍵を置くか、/mnt/etc/ssh/sshd_config を編集してパスワードによるrootログインを許可します。

/mnt/etc/hostname
raspi-devuan  (好きなように)
/mnt/etc/fstab
LABEL=RASPIROOT / btrfs rw,async,lazytime,discard 0 1
LABEL=RASPIFIRM /boot/firmware vfat rw,async,lazytime,discard 0 2
LABEL=RASPISWAP none swap sw,discard 0 0
/mnt/etc/resolv.conf
options inet6 edns0
nameserver 192.168.1.2
/mnt/etc/environment
http_proxy=http://192.168.1.2:3128/
https_proxy=http://192.168.1.2:3128/
/mnt/etc/default/crda
REGDOMAIN=JP
/mnt/etc/network/interfaces
auto wlan0
iface wlan0 inet dhcp
    wpa-ssid あなたのSSID
    wpa-psk あなたのパスフレーズ

ARMエミュレーターによる最後の仕上げ

パソコン上で chroot /mnt としてARMエミュレーターを起動します。ラズパイのルートプロンプトが出てくるので以下の作業をします

  1. passwd root
  2. dpkg-reconfigure tzdata でタイムゾーンの設定をします
  3. dpkg-reconfigure locales でロケールの設定をします
  4. dpkg-reconfigure keyboard-configuration でキーボード配列を設定します。「Generic 105-key PC (intl.)」→「Japanese」と選びます。
  5. fake-hwclock save で時刻を保存します
  6. exit でARMエミュレーターから脱出します

SDカードのアンマウント

  1. umount /mnt/boot/firmware
  2. umount /mnt

以上で、SDカードを抜いてラズパイに挿して電源入れると自家製Devuan 4 Chimaeraが起動します。

1
1
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
1
1