Raspberry Pi 2でDebian jessie armhf を動かす

Raspberry Pi 2のCPUはCortex A7でarmv7アーキテクチャです。RaspbianはRaspberry Pi 1との共通化のためにarmv6向けにビルドされています。Debianのarmhfはarmv7向けなので、これをRaspberry Pi 2で動かしてみました。

debootstrapを使ったDebianのルートファイルシステムの構築

NFSサーバとなっているLinuxマシン(今回はUbuntu 14.04 x86_64)の上で以下を実行しNFSディレクトリにarmhf_jessieのルートファイルシステムの元のファイルを置きます。

$ sudo apt-get install debootstrap
$ mkdir armhf_jessie
$ sudo debootstrap --foreign --arch armhf jessie ./armhf_jessie/ http://http.debian.net/debian/
$ sudo cp -a ./armhf_jessie /export/

Raspberry Pi 2のSDカードの/boot/cmdline.txt のカーネルパラメータを以下のようにNFSrootで起動するようにし、init=/bin/sh を追加します。

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 root=/dev/nfs nfsroot=192.168.0.6:/export/armhf_jessie rw ip=dhcp elevator=deadline rootwait init=/bin/sh

これでRasberry Pi 2を起動すると # のshのプロンプトが出るので、そこで以下を実行します。

# /debootstrap/debootstrap --second-stage

これは20分くらいかかります。

各種設定ファイルの編集

NFSサーバの側から以下の4つのファイルを編集します。

  • /export/armhf_jessie/etc/hostname
  • /export/armhf_jessie/etc/hosts
  • /export/armhf_jessie/etc/resolv.conf
  • /export/armhf_jessie/etc/apt/source.list

Raspberry Pi 2のホスト名をarmhf-jessie00とすると
/export/armhf_jessie/etc/hostname

armhf-jessie00

/export/armhf_jessie/etc/hosts

127.0.0.1	localhost
127.0.1.1	armhf-jessie00
1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes ff02::2 ip6-allrouters

/export/armhf_jessie/etc/resolv.conf

nameserver 8.8.8.8

/export/armhf_jessie/etc/apt/sources.list

deb http://http.debian.net/debian jessie main
#deb-src http://http.debian.net/debian jessie main
deb http://http.debian.net/debian jessie-updates main
#deb-src http://http.debian.net/debian jessie-updates main
deb http://security.debian.org jessie/updates main
#deb-src http://security.debian.org jessie/updates main

Raspberry Pi 2でユーザーの登録と初期設定

Raspberry Pi 2のシェルのプロンプトで以下を実行します。
最初に登録するユーザーアカウントをuser とすると

# export PATH=/bin:/usr/bin:/sbin:/usr/sbin
# mount -t proc proc /proc
# adduser user
# adduser user sudo
# apt-get update
# apt-get install sudo locales dialog ssh
# dpkg-reconfigure locales
# dpkg-reconfigure tzdata

完成

これで最小限の設定はできたはずなので、initスクリプトを動かしてみます。

# exec /sbin/init

これで問題なくuserのアカウントでログインできて使用することができたら、SDカードのboot/cmdline.txt の中の init=/bin/sh を外します。

Raspberry Pi 2でのDebain jessie armhfのブートログ
debootstrap --second-stageの後の細かい設定が煩雑ですが、これの面倒を見てくれる便利なスクリプトはないのかな?