メモ置き場

メモ置き場です.開発したものや調べたことについて書きます.

[tex: ]

ZynqのLinux kernelを更新する

ZynqのLinux kernelを更新する方法についてまとめておく.kernelのバージョンを確認するにはunameコマンドを使う.
Xilinxが提供しているkernelでは

aho@zynq:~$ uname -r
4.10.0-xilinx

となり,4.10.0のkernelが動いていることがわかる(2019年1月現在).

Kernel Sourceの取得

kernelのソースコードを取得し再ビルドしてkernelのバージョンを更新する.stable versionのkernelリポジトリからソースを取ってくる.
git.kernel.org

開発マシン上にkernelのソースを取ってくる.かなりサイズが大きいので気長に待つ.

git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git
cd linux-stable

refsに使えるバージョンのリストが表示されているので,使いたいカーネルのバージョンを確認する.今回は後々の都合のため4.14.34を使うことにした.tagをチェックアウトして作業用のブランチを作成する.

git checkout -b my-kernel refs/tags/v4.14.34

Xilinxのkernelレポジトリにあるarch/arm/configs/xilinx_zynq_defconfigをコピーし,コミットする.

cp ~/linux-xlnxarch/arm/configs/xilinx_zynq_defconfig ~/linux-stablearch/arm/configs
git add arch/arm/configs/xilinx_zynq_defconfig
git commit -m "Add zynq config file"

コミットを作成しないと,unameで確認した際にdirtyとついてしまう*1

Kernelのビルド

ビルドする.手順はXilinxのレポジトリでやる方法と同じ.
ZYBO-Z7-20でUbuntu 16.04 LTSを動かす(5) : Linux kernelとデバイスツリーの作成 - メモ置き場

export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-
make xilinx_zynq_defconfig
make bindeb-pkg  #uImageだけ欲しい場合は飛ばしても良い
make UIMAGE_LOADADDR=0x8000 uImage

これでarch/arm/bootにuImageができるので,SDカードにコピーしてリブートすれば良い.

Zynq上でkernelを起動しバージョンを確認してみると

aho@zynq:~$ uname -r
4.14.34-xilinx

カーネルのバージョンを更新することができた.

もし"xilinx"という文字列を消したい場合はxilinx_zynq_defconfigの中にあるCONFIG_LOCALVERSION="-xilinx"を削除するなり別の文字列に置き換えるなりすれば良い.