もぐてっく

人は1つ歳をとるたび、1ビットづつ大きくなれると信じてた。

Raspberry piにDebian squeezeをインストールする

Raspbianって独自にリポジトリを持ってるみたいでちょっと気持ち悪い。
ってだけの理由で、ちょい強引な手段でRaspbian armhf 10/28版をDebain squeeze armelに塗り替えてみます。
(メリット?debian-multimediaを混ぜ込み易いとかかなぁ?)


取り敢えずクリーンインストール直後からの手順です。

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

定番のdebootstrapとスタティックリンクされたbusyboxを突っ込んどきます。

$ sudo su -
# apt-get install -y busybox-static debootstrap

debianユーザランドを取得

debootstrapでsqueeze armelのユーザランドを構築します。
debianの驚くべきポータビリティはdebootstrapの功績が非常に大きいと思います。

# cd /
# mkdir /debian
# debootstrap --arch armel --include sudo,openssh-server squeeze /debian

使えそうなファイルをコピー

# cp -p /etc/passwd /debian/etc/
# cp -p /etc/network/interfaces /debian/etc/network/
# cp -p /etc/group /debian/etc/
# cp -p /etc/shadow /debian/etc/
# cp -rp /lib/modules/* /debian/lib/modules/
# cp -p /etc/sudoers /debian/etc/ 
# cp -p /etc/hosts /debian/etc/ 
# cp -rp /home/pi /debian/home/ 

さぁ、いっくよー!

さて、こっからが強引肉食系。
何も考えずに現在動作中のRaspbianのユーザランドを別のディレクトリに退避します。
マウント中のディレクトリは移動できずにエラーが発生しますが、無視しましょう。

# mkdir /raspbian
# mv  /* /raspbian/


これにより実行ファイル・共有ライブラリが正規の場所になくなるため、ほとんどのプログラムが起動出来なります。
(ロード中のプログラム(bashとか)は継続して稼働できますが、間違って終了させると詰みます。)


ここで威力を発揮するのがbusybox-staticです。

busyboxって言うのは多数のコマンドを一つのバイナリに集約させることで、共有できるコードを共有してディスクサイズを節約しようって言う組み込みLinux御用達のプログラムです。

さらに、static版は共有ライブラリがなくても動作できるので、今回のミッションにぴったりなわけです。

呪力を再び宿らせる

と、言うわけで、busybox-staticを使ってsqueezeのユーザランドをあるべき場所に配置します。

# /raspbian/bin/busybox mv /raspbian/debian/* /


これもやっぱりマウント中のディレクトリが文句を言いますが無視しましょう。

強引にリブート

これで作業はあらかた完了なのですが、この時点ではrebootコマンドが死んでるので、祈りながら電源を引っこ抜いてリブートします。

立ち上がりましたよね?

ここからは普通に最小構成のsqueezeなので、初期設定をして行きましょう。

この時点ではeth0が死んでるので、取り敢えず上げときます。
恒久的に設定するなら、/etc/network/interfacesにauto eth0を追加ですね。

# ifup eth0

後は例えば、キーマップは元に戻ってるのでインストールするとか。

# apt-get install console-setup

syslogを入れてみるとか。

# apt-get install syslog-ng