偉大なる先達に敬意を表しつつ、この投稿の手順を確認していきたいと思う。
https://communities.intel.com/message/261307
※投稿ではリアルタイムカーネルパッチを当てているが今回はカーネルコンフィグを弄るのみとしたい。
目標
ubilinuxで提供されているカーネルは非常にスリム、それはもうほとんどサポートというサポートがごっそりナイ。ので自分でフルフルファットな各種サポート満載のカーネルイメージをビルドして各種デバイス(主にUSB周り)をEdisonに接続したい。
大まかに
- ビルドする
- カーネルを所定の場所に置く
- 再起動
の手順である。
ちなみにDebianの64bitカーネル3.2.0は起動しなかったことを書いておく。
用意するもの
- Edison@Debian(ubilinux)でもビルド自体は可能(/home配下で行う)なので其れより速いマシン、今回はAMD A10 7850Kなマシンを使用。
- メモリも1GB以上の空きががあれば良い模様。
- 1GBぐらいの空き容量。SSDであれば尚良し。
- DebianかUbuntuなどのOS環境、今回はUbuntu14.04@AMD64。
- SSHできるubilinuxが導入されているEdison
では実施
所要時間は2時間は覚悟すること。Edisonで行う場合は4時間ぐらいかかる。
ビルドに必要なパッケージをインストール
次のパッケージを入れる
くれぐれも一度にすまそうとしてはいけない。この3回のインストールを順番に行わないと失敗する。
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install devscripts debhelper dh-kpatches findutils
sudo apt-get install kernel-package libncurses-dev fakeroot zlib1g-dev
sudo apt-get install bc
ビルド会場を用意してカーネルファイルをGET
ビルド会場を設営
mkdir -p ~/root/src
そして移動
cd ~/root/src
カーネルソースGET
wget -O - https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.10.17.tar.bz2 | tar -jxf -
あとで使うため、フレッシュなママのものをコピーしておく。
cp -R linux-3.10.17 linux-3.10.17-orig
Intelさんが用意したEdisonパッチを当てる
パッチを取得
wget -O - http://downloadmirror.intel.com/24389/eng/edison-src-rel1-maint-rel1-ww42-14.tgz#_ga=1.225557722.1979370645.1410536481 | tar -zxf -
実際のビルドディレクトリへ移動
cd ./linux-3.10.17
パッチを適用する。
patch -p1 < ../edison-src/device-software/meta-edison/recipes-kernel/linux/files/upstream_to_edison.patch
コンフィグファイルをコピー
cp ../edison-src/device-software/meta-edison/recipes-kernel/linux/files/defconfig .config
cp drivers/tty/serial/mfd_trace.h include/trace/
kernelコンフィグ
このメニューで64bitサポートが最初に来ているから64bit版カーネルが欲しかったらそこチェックしたらいいんじゃないのか?Intelの手順書にもスクリーンショットがあるし。と思ったら大間違いで、上記のパッチ適用のログを見ればわかるがx86配下のファイルだらけでありどこにも64の文字はない。そうこれは罠であり無視するしかないのだ。
現時点でEdisonに64bit版カーネルを入れる方法を私はまだ知らない。
コンフィグを開く
make menuconfig
ここでUSB関連のいろいろなサポートを追加する、WebCamとかDisplayLinkとかとか
そしてビルド
いらないかもしれないけどとりあえずデバッグを吐かないようにする。
scripts/config --disable DEBUG_INFO
クリーン
make clean
ビルド!
make deb-pkg
終わったら~/root/srcに以下のファイルができているはず
linux-headers-3.10.17-poky-edison_3.10.17-poky-edison-1_i386.deb
linux-image-3.10.17-poky-edison_3.10.17-poky-edison-1_i386.deb
linux-libc-dev_3.10.17-poky-edison-1_i386.deb
Edison本体にコピー
scpで転送,アドレスは適当に、パーティーションが異なる/home直下に置く。
cd ~/root/src
scp *.deb root@192.168.x.x:/home
配置
元の投稿ではいろいろバックアップをやっているが、最悪焼き直せばいいのでここは気にせずバックアップなど取らずに置き換えることにする。
Edisonにsshでログインしてカーネルを置換、再起動する。
元のやつはどっかに置いておく
mv /boot/vmlinuz /root
/bootパーティションをアンマウント、フォーマットで最大限に拡大する。
mkdir /tmp/boot
cp -R /boot/* /tmp/boot
umount /boot
mkfs.vfat /dev/mmcblk0p7
mount /boot
cp -R /tmp/boot/* /boot
再マウント後の容量確認
df -h
Filesystem Size Used Avail Use% Mounted on
rootfs 1.4G 1.1G 245M 82% /
/dev/root 1.4G 1.1G 245M 82% /
devtmpfs 481M 0 481M 0% /dev
tmpfs 97M 308K 96M 1% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 193M 0 193M 0% /run/shm
tmpfs 481M 180K 481M 1% /tmp
/dev/mmcblk0p10 1.6G 15M 1.5G 1% /home
/dev/mmcblk0p7 32M 0 32M 0% /boot
ここでインストール
cd /home
dpkg -i *.deb
mv /boot/vmlinuz-3.10.17-poky-edison /boot/vmlinuz
reboot
以上で起動する。きっと、きっと大丈夫、きっとだよ!
確認
以下のコマンドでコンパイルしたマシンの情報が見れたら置き換わっている。
dmesg | grep "Linux version"
※のんきにコンフィグしてビルドしたらWifiが使えなくなってしまった・・
失敗して起動しなくなってしまったら・・・
駄目な場合はこちらを参照してください。
http://qiita.com/ryunosinfx@github/items/6d014dc9cfd615ac076e
多分/boot配下は上書きしてくれるので起動するはずです。