Eclipseのプラグインばかり開発しているのも、疲れたので、玄箱のカーネルソースのコンパイルに挑んでみる。
まず、initrd イメージが必要なので、フラッシュメモリから抽出する。
フラッシュメモリにアクセスするためにまず、デバイスを作成する。
mknod /dev/fl0 b 250 0
mknod /dev/fl1 b 250 1
mknod /dev/fl2 b 250 2
mknod /dev/fl3 b 250 3
mknod /dev/fl4 b 250 4
イメージの取り出し。
cp /dev/fl1 image
フラッシュメモリー解析スクリプト(showflash.pl)。
以下のサイトからそのままいただきました。
ねぎ式
#! /usr/bin/perl
#
read(STDIN, $tmp, 108, 0);
@tmp = unpack("LLA32A32SSSC6LLLLLL", $tmp);
print "version ". $tmp[0]."\n";
print "firm ID ". $tmp[1]."\n";
print "firm name ". $tmp[2]."\n";
print "sub Ver ". $tmp[3]."\n";
print "Maj Ver ". $tmp[4]."\n";
print "Min Ver ". $tmp[5]."\n";
print "build No ". $tmp[6]."\n";
printf "build day %d/%d/%d %d:%d:%d\n",
$tmp[7] + 1900, $tmp[8], $tmp[9], $tmp[10], $tmp[11], $tmp[12];
print "firmimg.bin size ". $tmp[13]."\n";
print "sum ". $tmp[14]."\n";
print "vmlinux.gz offset ". $tmp[15]."\n";
print "vmlinux.gz size ". $tmp[16]."\n";
print "ramdisk.image.gz offset ". $tmp[17]."\n";
print "ramdisk.image.gz size ". $tmp[18]."\n";
スクリプト実行。
perl showflash.pl < /dev/fl1
出力結果
version 1
firm ID 4097
firm name KURO-BOX(IETSUNA)
sub Ver FLASH 1.1
Maj Ver 1
Min Ver 2
build No 0
build day 2004/4/16 11:46:41
firmimg.bin size 2847034
sum 1277192449
vmlinux.gz offset 108
vmlinux.gz size 719495
ramdisk.image.gz offset 719603
ramdisk.image.gz size 2127431
firmimg.binの取り出し。
head -c 2847034 /dev/fl1 > firmimg.bin
ramdisk.image.gzの取り出し。
tail -c 2127431 firmimg.bin > ramdisk.image.gz
結果の確認
file ramdisk.image.gz
メッセージ
ramdisk.image.gz: gzip compressed data, was "loopfile", from Unix,
max compression
以下のサイトからソースコードをダウンロードする。
Kernel_source
コンパイル方法は以下を参考にする。
Kernel_source/Compile
ざーっとやったことメモ。
cp ramdisk.image.gz ${TOPDIR}/arch/ppc/boot/images
Makefileの変更
EXTRAVERSION = _kuro-box
cd ${TOPDIR}
rm .hhl_cross_compile
cp firminfo.txt.kurobox firmimg.txt
make kurobox_config
make oldconfig
make menuconfig
ここで、USB音源を使えるようにコンフィギュレーションする。
Sound --->
<M> Sound card support
<M> OSS sound modules
USB support --->
<M> EHCI HCD (USB 2.0) support (EXPERIMENTAL)
<M> USB Audio support
<M> EMI 2|6 USB Audio interface support
<M> USB MIDI support
そしてコンパイル。
make dep
make firmimg.bin
make bootcode
make modules
これで、カーネルと、モジュールが作成されるはずです。。。
mail
コメントする