2014年11月9日日曜日

玄箱HG用Kernel(u-boot対応)をビルドし導入する(1)

USBオーディオを鳴らすためにカーネルをビルドする。


玄箱実機上でカーネルビルドすると時間がかかる。
とは言っても普段Windowsしか触っておらず、LinuxをインストールするのもCygwinでpowerpcのクロスコンパイル環境を構築するのも手間がかかりそうなので、LinuxLive USB Createrを使い、USBメモリからubuntu-14.04を立ち上げ、クロスコンパイル環境を整えてみた。
USBメモリからubuntuが起動したら試用を選び、ターミナルから必要なパッケージを導入する。
# sudo su
# apt-get install aptitude
# aptitude install build-essential ncurses-dev libc6-dev-powerpc-cross gcc-powerpc-linux-gnu u-boot-tools
"/usr/src"へ移動し、カーネルソースをダウンロードする。
今回はThe Linux Kernel Archivesより"stable 3.16.7 [EOL]"を選択した。
# cd /usr/src
# wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.16.7.tar.xz
そのまま進めると空き容量が厳しいので、解凍したらアーカイブファイルは削除する。
# tar xvJf linux-3.16.7.tar.xz
# rm linux-3.16.7.tar.gz
# cd linux-3.16.7
玄箱/Linkstationに用意されたテンプレートから".config"を生成し、menuconfigから詳細な設定をする。
# make ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnu- linkstation_defconfig
# make ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnu- menuconfig

不要なドライバを外す

"Device Drivers" => "Network device support" => "Ethernet driver support"と進み"Realtek devices"の"Realtek 8169 gigabit..."以外のチェックを外す。
("Y"でチェック、"N"でチェックが外れる。)

MTDドライバ設定

"Device Drivers" => "Memory Technology Device (MTD) support" => "Mapping drivers for chip access"と進み、"Physmap compat support"にチェックを入れ、"Physical start address of flash mapping"の値を"0xffc00000"、"Physical length of flash mapping"の値を"0x400000"、"Bank width in octets"の値を"1"とする。

USBオーディオドライバ組み込み

"Device Drivers" => "Sound card support"(チェックを入れる) => "Advanced Linux Sound Architecture"(チェックを入れる) => "USB sound devices"と進み、"USB Audio/MIDI driver"にチェックを入れる。

ext4に対応させる

一応対応させてみる。
"File systems"
"The Extend 4 (ext4) filesystem"と"Ext4 POSIX Access Control Lists"にチェックを入れる。

.configに保存

"< Save >"を選択し、".config"に設定を保存。
"< Exit >"を何度か押してコンソールに戻る。

コンパイル開始

# make ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnu- uImage modules

必要なファイルをまとめる

# mkdir ../boot/root
# cp -p System.map ../root/boot/
# cp -p .config ../root/boot/config-kurobox-3.16.7
# cp -p arch/powerpc/boot/uImage ../root/boot/uImage-3.16.7
# scripts/dtc/dtc -f -I dts -O dtb -o ../root//boot/kuroboxHD.dtb -V 16 arch/powerpc/boot/dts/kuroboxHD.dts
# scripts/dtc/dtc -f -I dts -O dtb -o ../root//boot/kuroboxHG.dtb -V 16 arch/powerpc/boot/dts/kuroboxHG.dts
# cd ../root/boot
# ln -s uImage-3.16.7 uImage
# ln -s uImage vmlinux.UBoot

tar.gzでまとめる

# tar czvf ../kernel-3.16.7-kurobox.tar.gz ./
# cd ../../linux-3.16.7/

モジュールをまとめる

# make ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnu- INSTALL_MOD_PATH=../root  modules_install
# cd ../root
# tar czvf modules-3.16.7-kurobox.tar.gz lib

続けてそのままftpで玄箱にアップロード出来るよう玄箱側でftpdの設定を行う。
既にsambaなど設定が終わって他の手段があるのならば、ファイルキャビネットからsamba経由などで適当にファイルを玄箱にアップロードする。

玄箱にftpdをインストールし出来上がったファイルを転送出来るようにする

玄箱にログインし、ftpdをインストール、設定を行う。
# su
# aptitude install vsftpd
# vi /etc/vsftpd.conf
コメントを外し、"/etc/passwd"に記述されているユーザーをftpユーザとして利用出来るようにし、書き込みを許可する。
# Uncomment this to allow local users to log in.
local_enable=YES
#
# Uncomment this to enable any form of FTP write command.
write_enable=YES
ftpdを再起動する。
# /etc/init.d/vsftpd restart
ftpで"kernel-3.16.7-kurobox.tar.gz"と"modules-3.16.7-kurobox.tar.gz"をubuntuから玄箱へアップロードする。
実際の導入は次の記事で。

LinkStation/TeraStation/玄箱/PPC/kernel/2.6.30.5 - PukiWiki
今回上記サイト様を大いに参考にさせていただきました。

0 件のコメント:

コメントを投稿