開発メモ
クロス開発環境の構築
簡単なクロス開発環境の構築について順に説明します。
VMware Playerインストール
クライアント(仮想PC)にVine Linuxインストール
- Ring ServerからISOイメージをダウンロード
- 元ファイルのディレクトリは/archives/linux/Vine/Vine-xxx/CDIMAGE/
- クライアント(仮想PC)を作る(qemuを使うのだったかな?)
- ISOイメージファイルをVMware上の仮想PCに食わせる
- 面倒ならこちら→
- .vmxファイルを開いて仮想PCを起動し、VineLinuxをインストールする
- インストール種類:デスクトップ
- firewall有り(あとで設定しなおす)
- 標準ログインはテキスト
- 一般ユーザを追加しておく
- 例:ユーザー名z3、パスワード11111111
Vine Linux設定
- startxでX-Window起動
- メニューから、デスクトップ→システム管理→synapticパッケージマネージャ
- パッケージ追加
- システム環境/デーモン telnet-server-0.17.x-30vl2.i386.rpm
- 開発/ライブラリ ncurses-devel-5.4-0vl3.i386.rpm
- パッケージ追加
- デスクトップ→システム管理→セキュリティレベルとファイアウォールの設定
- telnetを許可
buildroot構築
- 先にRing ServerからGNUツールをダウンロードしておく
- 元ファイルのディレクトリは/archives/GNU/、/archives/linux/kernel.org/kernel/v2.6/
- mkdir dl_doneでディレクトリ作成して、ダウンロードしたファイルを置いておく
必要なファイル(余分なものもありますw)時々バージョンが上がってるので、何もしないで自動ダウンロードに任せるのが楽- binutils-2.17.tar.bz2
- gcc-4.2.0.tar.bz2
- bash-3.2.tar.gz
- autoconf-2.61.tar.bz2
- automake-1.10.tar.bz2
- linux-2.6.20.4.tar.bz2 (最新ではない)
- 公式サイトからbuildroot-snapshot.tar.bz2をダウンロード
- ファイルを展開、ディレクトリ移動
- bzcat buildroot-snapshot.tar.bz2 | tar xf -
- cd buildroot/
- ln -s ../dl_done dl
- 設定
- make menuconfig
- arm - xscaleサポート(iWMMXt pxa270ではない)
- USE_BXはデフォルトのまま
- rootfs cpio形式
- 面倒な人はこちら→buildroot-base.zip(1223)
- make menuconfig
- 構築
- make
- ~/buildroot/build_arm/staging_dir/binにクロス開発用のコマンドが作られるので、ここにpathを通す
Linux
- Ring Serverからカーネルソースをダウンロード
- 元ファイルのディレクトリは/archives/linux/kernel.org/kernel/v2.6/
- 必要なファイル
- linux-2.6.21.5.tar.bz2
- ファイルを展開、ディレクトリ移動
- bzcat linux-2.6.21.5.tar.bz2 | tar xf -
- ln -s linux-2.6.21.5 linux
- cd linux
- パッチを当てる
- 設定
- make -j2 ARCH=arm CROSS_COMPILE=arm-linux- mrproper
- make -j2 ARCH=arm CROSS_COMPILE=arm-linux- allnoconfig
- make -j2 ARCH=arm CROSS_COMPILE=arm-linux- menuconfig
- arm - pxa2xxサポート
- initramfsサポート、rootfsはbuildrootで作成したrootfs.arm.cpioを指定
- ELF形式サポート
- pxa FrameBufferサポート
- 構築
- make -j2 ARCH=arm CROSS_COMPILE=arm-linux-
- モジュール作成
- make -j2 ARCH=arm CROSS_COMPILE=arm-linux- INSTALL_MOD_PATH=mod modules_install
- tar czf modules.tgz -C mod .
自前のinitramfs
- rootfs圧縮
- mkinitramfs rootfsdir rootfs.cpio
- mkinitramfsの中身(カーネルソース参照:Documentation/filesystems/ramfs-rootfs-initramfs.txt)
#!/bin/sh
# Copyright 2006 Rob Landley <rob@landley.net> and TimeSys Corporation.
# Licensed under GPL version 2
if [ $# -ne 2 ]
then
echo "usage: mkinitramfs directory imagename.cpio.gz"
exit 1
fi
if [ -d "$1" ]
then
echo "creating $2 from $1"
# (cd "$1"; find . | cpio -o -H newc | gzip) > "$2"
(cd "$1"; find . | cpio -o -H newc ) > "$2"
else
echo "First argument must be a directory"
exit 1
fi
- rootfs展開
- cat rootfs.cpio | cpio -id
(・ω・)趣味でやってるサイトですよ。