スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

玄箱Pro Debian Squeeze化の手順

基本的に前項で紹介した出典の丸写しなのであるが、これらのページが消滅したら自力では思い出せそうにないのでここに手順をメモっておく。

クロスコンパイル用ツールチェインの用意
mkdir -p ~/kuro
cd ~/kuro
wget 'http://buffalo.nas-central.org/download/LSPro_ARM9/DevelopmentTools/CrossToolchains/CodeSourcery/arm-2007q3-53-arm-none-eabi-i686-pc-linux-gnu.tar.bz2'
tar xjvf arm-2007q3-53-arm-none-eabi-i686-pc-linux-gnu.tar.bz2
cd arm-2007q3/bin/
wget 'http://downloads.nas-central.org/LSPro_ARM9/DevelopmentTools/CrossToolchains/mkimage'
chmod +x mkimage

環境変数の設定
export ARCH=arm
export CROSS_COMPILE=arm-none-eabi-
export PATH=~/kuro/arm-2007q3/bin/:${PATH}

カーネルソースの入手
ここでは、標準カーネルではなくてorionリポジトリの方のをいただいてきた。
cd ~/kuro
git clone git://git.kernel.org/pub/scm/linux/kernel/git/nico/orion.git
cd orion
make mrproper
make orion5x_defconfig

カーネルイメージの作成、玄箱Proへの転送
make menuconfigでは、ARMまわりの設定は既に上のdefconfigで行われているので、NFSやオートマウンタまわりの設定だけ追加した。またdevioがなければインストールしておくこと。scpは玄箱Proに転送さえできればftpであろうがsmbclientであろうがWindowsからであろうが構わない。ここでは玄箱Proのホスト名がkuroと仮定されている。

make menuconfig 
make zImage
devio > foo 'wl 0xe3a01c05,4' 'wl 0xe38110e5,4' # For kuropro/lspro
cat foo arch/arm/boot/zImage > zImage.new
mkimage -A arm -O linux -T kernel -C none -a 0x00008000 -e 0x00008000 -n 'linux' -d zImage.new uImage
scp uImage kuro:/tmp/

カーネルモジュールのコンパイルと玄箱Proへの転送
ここでは細かいことは気にせず開発マシンの方でモジュールのインストールを行っている。i686マシンにArmのバイナリモジュールがインストールされるので気持ち悪い人もいるかもしれないが、場所は/lib/modules/カーネルバージョン以下に限定されているので問題になることはあるまい。

make modules
su
make modules_install
cd /
tar czf /tmp/modules.tgz lib/modules/2.6.38-rc6-12018-g7780c80/
scp /tmp/modules.tgz kuro:/tmp/

玄箱Pro側でブートの設定
ssh kuro
cd /
tar xzvf /tmp/modules.tgz
mv /tmp/uImage /boot/uImage-2.6.38-rc6-12018-g7780c80
cd /boot
mv uImage uImage.old
ln -s uImage-2.6.38-rc6-12018-g7780c80 uImage
init 6

あくまでも上記は、すでにユーザランドのバイナリも「玄箱Proの本」などに基づいて、(アーキテクチャ名はarmのままであるにしても)EABI化されている言を前提にしている。一応はカーネルはOABIのバイナリも実行できる設定にはなっているが、基幹ライブラリまでOABIの状態で満足に動作するかどうかはわからない。

次に、ユーザーランドをarmからarmelに移行していく。

armelユーザランドの作成
debootstrap --verbose --arch armel --foreign lenny /armel-chroot http://ftp.de.debian.org/debian
chroot /armel-chroot /debootstrap/debootstrap --second-stage

基本的にはこれで/armel-chroot以下にarmelアーキテクチャのユーザランドファイルシステムツリーが構成される。要はDebianのdebootstrapというツールに全面的にお世話になっている。

バイナリのすげ替え
これはうまくいくことが保証されたプロセスではない。動作中のシステムでいきなりバイナリを入れ替えるので、メモリ上にそのバイナリのイメージが保持されていたり、スワップアウトされていたりすると不整合が起きる可能性が高くなる。そういう事態を避けるために、シングルユーザモードで作業する。しかし私の玄箱Proではランレベル1でもなぜかsambaのプロセスが動いていたりしたので、手動でkillした。
# telinit 1
# ps -ef #ユーザプロセスが動いていないか確認、動いていたらkill
# mount -o bind / /chroot-armel/mnt/
# chroot /chroot-armel/ #前のステップで作成したarmelユーザランドにchrootすることで動作確認
# cd /mnt
# mkdir old
# mv bin sbin lib usr var old # armバイナリをoldディレクトリに移動
# cp -a /bin /sbin /lib /usr /var . # armelバイナリを/以下にコピー(/は今、/mntとして見えている)
# init 6

これで無事再起動に成功したら、あとは /etc/apt/sources.list内のlenny => squeezeと書き換え、

#apt-get update
#apt-get upgrade

を実行しておく。

出典
Armel Debian for the Kurobox Pro - Manual install
Kernel-cross-compile-kurobox-pro
ArmEabiHowto
スポンサーサイト

コメントの投稿

非公開コメント

プロフィール

Author:GM3D
FC2ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
FC2カウンター
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。