【実験】Debian stretchのchroot環境構築

PaPeRo iでDebian 9 stretchのchroot環境を構築する手順を紹介します。

minibian wheezyで環境構築

Debianでは他のUnix/Linuxシステムからインストールする方法が用意されているのでこれを利用します。
OpenWRTから直接利用はできないためminibianのchroot環境から実行します。

今回もユーザランドはパペロ本体に入れるのは止め、minibianを入れたのとは別のUSBメモリ上に作成します。
(環境構築中はパペロにUSBメモリを2つ挿すことになります)

構築手順

(1) まずminibianの環境が入ったUSBメモリ(/dev/sda2とします)をマウントし、chroot環境に入り、必要であればインターネット接続のための手順を実行します。

# mount -t ext4 /dev/sda2 /mnt
# sh /Extension/test/chrootpre_minibian
# chroot /mnt /bin/bash
(minibian_whzy)# export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
(minibian_whzy)# route add default gw 192.168.x.x
(minibian_whzy)# echo nameserver 192.168.x.x > /etc/resolv.conf

(2) DebianをインストールするUSBメモリ(/dev/sdb1とします)をマウントします。USBメモリはあらかじめmkfsコマンドでext4でフォーマットしておいてください。

(minibian_whzy)# mount -t ext4 /dev/sdb1 /mnt

(3) 今回はUSBメモリ直下では無くもう一つディレクトリを作ってそこに環境を作ることにします。

(minibian_whzy)# mkdir /mnt/debian_stretch

(4) Debianの環境構築ツールdebootstrapをインストールし実行します。

(minibian_whzy)# apt-get install debootstrap
(minibian_whzy)# /usr/sbin/debootstrap --arch armhf stretch /mnt/debian_stretch http://ftp.jp.debian.org/debian

環境にも左右されるかも知れませんがこの実行には30分程度かかりました。

(5) NANDフラッシュ用のマウントポイントと、chroot後のプロンプト設定用ファイルを作成します。

(minibian_whzy)# mkdir /mnt/debian_stretch/tiny
(minibian_whzy)# mkdir /mnt/debian_stretch/java_cache
(minibian_whzy)# mkdir /mnt/debian_stretch/Extension
(minibian_whzy)# echo debian_stretch > /mnt/debian_stretch/etc/debian_chroot

(6) ここでPaPeRo iを一度再起動します。

(7) chrootのための準備用のシェルスクリプトを作成します。

# cat > /Extension/test/chrootpre_debian_stretch <<EOF
DRV=/mnt/debian_stretch
mount -o bind /dev \$DRV/dev  
mount -o bind /dev/pts \$DRV/dev/pts  
mount -o bind /tmp \$DRV/tmp 
mount -o bind /tiny \$DRV/tiny
mount -o bind /java_cache \$DRV/java_cache  
mount -o bind /Extension \$DRV/Extension  
mount -t proc none \$DRV/proc  
EOF
# chmod +x /Extension/test/chrootpre_debian_stretch

(8) USBメモリのマウント、準備用シェルスクリプト実行、stretchへのchrootを行います。

# mount -t ext4 /dev/sdb1 /mnt
# /Extension/test/chrootpre_debian_stretch
# chroot /mnt/debian_stretch /bin/bash

(9) PATHを修正し、インターネット接続できる様にします。

(debian_stretch)# export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
(debian_stretch)# ip r add default via 192.168.x.x
(debian_stretch)# echo nameserver 192.168.x.x > /etc/resolv.conf

(10) 必要であればCコンパイラなどインストールします。

(debian_stretch)# apt-get install build-essential unzip less

今回はどうせやるなら最新ということでstretchにしましたが、一つ前のDebian 8 jessieでも同じ手順で構築できます。