«前の日記(2011-03-08(火)) 最新 次の日記(2011-03-18(金))» 編集
RSS feed

からっぽの日記


2011-03-17(木) [長年日記]

PowerPC クロスコンパイル環境(Ubuntu + Debian)

玄箱HG の kernel コンパイルをする必要が出たので、Ubuntu 10.10 上にクロスコンパイル環境を作ってみたのでメモ。とは言え、Ubuntu 上に emdebian のパッケージは用意されているけど、そのまま使って大丈夫なのかよくわからなかったので、Ubuntu 上に Debian を作って chroot する。玄箱HG は Debian Squeeze になってますし。

参考にさせて頂いたサイト - D: Tips - Debian GNU/Linux スレッドテンプレ

Ubuntu 上に Debian Squeeze を作成

% sudo  apt-get install cdebootstrap
% sudo mkdir -p /home/bootstrap/squeeze
% cdebootstrap squeeze /home/bootstrap/squeeze http://ftp.jp.debian.org/debian
% sudo cp /etc/resolv.conf /home/bootstrap/squeeze/etc/

Debian Squeeze に chroot

% sudo mount -t proc proc /home/bootstrap/squeeze/proc
% sudo mount -o bind /dev /home/bootstrap/squeeze/dev
% sudo mount -t devpts devpts /home/bootstrap/squeeze/dev/pts
% sudo chroot /home/bootstrap/squeeze /bin/bash

ここから chroot した環境上での作業

ロケール、タイムゾーンの設定

# apt-get update
# apt-get install locale
# dpkg-reconfigure tzdata

よくわかっていないパッケージをインストール^^;

# apt-get install emdebian-crush emdebian-grip emdebian-archive-keyring

/etc/apt/sources.list に emdebian を追加

deb http://www.emdebian.org/debian/ squeeze main
deb-src http://www.emdebian.org/debian/ squeeze main

PowerPC用gcc をインストール

# apt-get install binutils-powerpc-linux-gnu gcc-4.3-powerpc-linux-gnu

テスト用ソース(hello.c)

#include <stdio.h>

int main()
{
    printf("Hello cross-compiling world!\n");
    return 0;
}

コンパイル

# powerpc-linux-gnu-gcc -static hello.c -o hello
# file hello
hello: ELF 32-bit MSB executable, PowerPC or cisco 4500, version 1 (SYSV), statically linked, for GNU/Linux 2.6.18, with unknown capability 0x41000000 = 0x13676e75, with unknown capability 0x10000 = 0xb0401, not stripped

玄箱HG用 Kernel(2.6.32) コンパイルのメモ

ついでに、Kernel コンパイルのメモも書いておく。玄箱HG は下記のサイトを参考に loader.o から uBoot RAM版を起動してます(合ってるかな^^;)。感謝。とすごい!

玄箱HG_kernel2.6.30の選択起動|Blog≒公開日記

LinkStation/玄箱/kernel - PukiWiki

Kernel コンパイル用のパッケージをインストール

# apt-get install libncurses5-dev uboot-mkimage

Kernel ソースを取得

# wget http://www.kernel.org/pub/linux/kernel/v2.6/longterm/v2.6.32/linux-2.6.32.33.tar.bz2
# wget http://www.kernel.org/pub/linux/kernel/v2.6/longterm/v2.6.32/linux-2.6.32.33.tar.bz2.sign
# gpg --home /root --keyserver wwwkeys.pgp.net --recv-keys 0x517D0F0E
# gpg --home /root --verify linux-2.6.32.33.tar.bz2.sign

コンフィギュレーション

# tar jxf linux-2.6.32.33.tar.bz2
# cd linux-2.6.32.33
# cp arch/powerpc/configs/linkstation_defconfig .config
# ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnu- make menuconfig

変更箇所

General setup  --->
 (-kuroboxHG-20110317) Local version - append to kernel release
 [ ] enable deprecated sysfs features which may confuse old userspace tools     n に変更

Networking support  --->
 [ ]   Wireless  --->]

Device Drivers  --->
 <*> Memory Technology Device (MTD) support  ---> )
  Mapping drivers for chip access  --->
   [*]   Physmap compat support     y に変更
   (0xffc00000) Physical start address of flash mapping)     0xffc00000 に変更
   (0x400000) Physical length of flash mapping)              0x400000 に変更
   (1)     Bank width in octets)                             1 に変更

 [*] Multiple devices driver support (RAID and LVM)  ---)]     y に変更
  <*>   Device mapper support     y に変更

File systems  --->
 <*> The Extended 4 (ext4) filesystem      y に変更
 [*]   Ext4 extended attributes            y に変更
 [*]   Ext4 POSIX Access Control Lists     y に変更

Device Drivers  ---
 [*] USB support  --->]
  <M>   Support for Host-side USB
  [ ]     USB device class-devices (DEPRECATED)
  [*]     Dynamic USB minor allocation

 [*] HID Devices  --->
  <M>   USB Human Interface Device (full HID) support    M に変更
  [*]   /dev/hiddev raw HID device support               y に変更

コンパイル

# ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnu- make uImage modules
# mkdir ../kernel_2.6.32.33_20110317
# ARCH=powerpc CROSS_COMPILE=powerpc-linux- INSTALL_MOD_PATH=../kernel_2.6.32.33_20110317 make modules_install
# cp System.map ../kernel_2.6.32.33_20110317/System.map-2.6.32.33-kuroboxHG-20110317
# cp arch/powerpc/boot/uImage ../kernel_2.6.32.33_20110317/vmlinux.UBoot-2.6.32.33-kuroboxHG-20110317
# scripts/dtc/dtc -f -I dts -O dtb -o ../kernel_2.6.32.33_20110317/kuroboxHG.dtb-2.6.32.33-kuroboxHG-20110317 -V 16 arch/powerpc/boot/dts/kuroboxHG.dts
# cp .config ../kernel_2.6.32.33_20110317/config-2.6.32.33-kuroboxHG-20110317

«前の日記(2011-03-08(火)) 最新 次の日記(2011-03-18(金))» 編集
RSS feed