OpenBlockS 600D - 開発環境の構築
クロス開発 (VMware等のx86環境上での開発)
- ベースとなる環境の用意 タイトル通り squeeze (amd64) で
- emdebian のリポジトリを追加します
- sources.list の準備
-
/etc/apt/sources.list.d に以下emdebian.list というファイルを追加# cat /etc/apt/sources.list.d/emdebian.list deb http://www.emdebian.org/debian/ squeeze main deb-src http://www.emdebian.org/debian/ squeeze main
- アップデート
$ sudo aptitude update
- キーリングを追加
-
$ sudo aptitude install emdebian-archive-keyring
- 必要なパッケージを追加します
- カーネルのソースコードを展開します ありがたいことに SSDLinux のパッチもあるので上記通り linux-source-2.6.32 で。
- 開発用ディレクトリの作成と SSD/Linux のソース取得、展開
- テンポラリディレクトリ作成
$ mkdir -p $HOME/obs600/tmp
- src.tgz の取得
$ wget -nd -N -P $HOME/obs600/tmp \ > http://ftp.plathome.co.jp/pub/ssdlinux/0.5-LATEST/source/src.tgz
- 各種展開
$ cd $HOME/obs600 $ tar xzf tmp/src.tgz -C tmp $ tar xjf /usr/src/linux-source-2.6.32.tar.bz2 -C .
- カーネルパッケージ作成
- カーネルパッチあて
- SSD/Linux のソース usr/src/mkdist/kernel/2.6.32/patches/ に各種パッチあり
$ cd linux-source-2.6.32 $ for i in ../tmp/usr/src/mkdist/kernel/2.6.32/patches/*.patch; do > patch -p1 $i > done ... patching file Makefile Reversed (or previously applied) patch detected! Assume -R? [n] Apply anyway? [n] (ここはエンター。デフォルトの n で OK) Skipping patch. 4 out of 4 hunks ignored -- saving rejects to file Makefile.rej patching file scripts/Makefile.modinst
- ごめんなさい -
scripts.patch
なので make 時に -D NOGZIP する+ifdef NOGZIP cmd_modules_install = mkdir -p $(2); cp $@ $(2) ; $(mod_strip_cmd) $(2)/$(notdir $@) +else + cmd_modules_install = mkdir -p $(2); cp $@ $(2) ; $(mod_strip_cmd) $(2)/$(notdir $@) ;gzip -9 $(2)/$(notdir $@) +endif
- .config などのコピー
- ワーキングディレクトリは
$HOME/obs600/linux-source-2.6.32 のままで$ cp ../tmp/usr/src/mkdist/kernel/2.6.32/dot.config.powerpc-obs600 dot.config $ cp dot.config .config $ cp ../tmp/usr/src/mkdist/kernel/2.6.32/obs600.dts arch/powerpc/boot/dt $ cp ../tmp/usr/src/mkdist/kernel/2.6.32/obs600.dts arch/powerpc/boot/dts/
- menuconfig
menuconfig はお好みで gconfig とか。DRBD 使ってみるので$ make-kpkg -j4 --arch powerpc --config menuconfig configure
その他お好みで。個人的には cgroup と namespace veth など。diff 取ると- Device Drivers ---> Connector を M に
- Device Drivers ---> Block Devices ---> DRBD も M に
といったあたり。削除されてる$ diff -uw dot.config .config +CONFIG_CONNECTOR=m +CONFIG_BLK_DEV_DRBD=m
は http://download.filesystems.org/unionfs/unionfs-2.x/-CONFIG_UNION_FS=y
あたりからパッチ持ってきてあてる必要あり。でも CF ブートなので割愛。- kernel_image
$ MAKEFLAGS="NOGZIP=1" make-kpkg -j4 --rootcmd=fakeroot --arch=powerpc \ > --revision 0.91 --initrd kernel_image
- その他 uImage に必要なもの
- dtb
- 参照:
$SSDSRC/usr/src/contrib/debootstrap/post-debootstrap $SSDSRC/usr/src/contrib/developers/kimura/lenny_based_firmware/uimage/create_uImage.sh
$ make ARCH=powerpc obs600.dtb /home/chamaken/obs600/linux-source-2.6.32/scripts/dtc/dtc -O dtb -o arch/powerpc/boot/obs600.dtb -b 0 -p 1024 /home/chamaken/obs600/linux-source-2.6.32/arch/powerpc/boot/dts/obs600.dts DTC: dts->dtb on file "/home/chamaken/obs600/linux-source-2.6.32/arch/powerpc/boot/dts/obs600.dts" $ cp arch/powerpc/boot/obs600.dtb ../
- vmlinux.bin.gz
$ powerpc-linux-gnu-objcopy -O binary vmlinux ../vmlinux.bin $ cd .. $ gzip vmlinux.bin $ ls -1 linux-image-2.6.32_0.91_powerpc.deb linux-source-2.6.32 obs600.dtb tmp vmlinux.bin.gz
- (何と言えばよいのか) 開発機側で OBS600 バイナリのファイルツリー準備 include のパッケージは最低限。お好みで... drbb8-utils も
最後の二行は今後のモロモロのために$ sudo aptitude install \ > build-essential u-boot libc6-powerpc-cross \ > libc6-dev-powerpc-cross binutils-powerpc-linux-gnu gcc-4.4-powerpc-linux-gnu \ > g++-4.4-powerpc-linux-gnu \ > autoconf dpkg-cross linux-headers-2.6.32-5-common linux-source-2.6.32 \ > kernel-package libncurses5-dev
ここまでやっておくと次回 obs600 側になるので
最後の chmod 忘れずに$ su # debootstrap --foreign --arch=powerpc \ > --include "ssh less u-boot initramfs-tools" \ > squeeze rootfs http://ftp.jp.debian.org/debian I: Retrieving Release I: Retrieving Packages I: Validating Packages ... I: Extracting xz-utils... I: Extracting zlib1g... # ls -1 linux-image-2.6.32_0.91_powerpc.deb linux-source-2.6.32 obs600.dtb rootfs tmp vmlinux.bin.gz # cp linux-image-2.6.32_0.91_powerpc.deb obs600.dtb vmlinux.bin.gz rootfs/root/ # chmod 0755 rootfs/root
0 件のコメント:
コメントを投稿