2020/05/26(火)openWRTでカーネルにパッチを当てたい
公式手順に沿って試してみる
Adding or editing kernel patches
make target/linux/clean V=s QUILT=1 make target/linux/prepare V=s QUILT=1
cd build_dir/target-aarch64_generic_glibc/linux-*/linux-4.14.108 quilt new platform/100-my-kernel-patch.patchMakefileによって 以下にファイルが生成される様子.. (findで見つけた)
FILE: build_dir/target-aarch64_generic_glibc/linux-*/linux-4.14.108/patches/platform/100-my-kernel-patch.patch
いろいろとコードを編集する.
編集・作成する前に quilt add filename してから作業すること(後述。quiltの使い方)
make target/linux/update V=s make target/linux/update package/index V=s
quiltコマンドの使い方
これはシェルスクリプトで書かれたツールです.ディレクトリを遡って、ワークディレクトリを探してくれます.
.pc/ や patches があると、そこを WORKING TREE先頭とみなすようです(要確認)
ファイルの新規作成は、存在しないファイル名を追加してから 編集をかけます.
quilt add path/to/new-file.c編集事態は quilt edit path/to/new-file.c としなくてもよいみたいですね.
どこかにファイルを置いて以下を実行すると一括登録できます.
for f in $(ls -1 /new/files/); do quilt add $f cp -af /new/filew/$f ./ donesymbolic linkの追加は現状できていません.
quilt add の処理で test -L $fname を見て、シンボリックリンクならエラーを出してくれます..
■kernel
make target/linux/clean make target/linux/prepare V=s QUILT=1 cd build_dir/target-*/linux-*/linux-4.14* TO=$PWD FROM=/path/to/patched-files/linux-4.14.108 # pathは seriesに合わせて付与した quilt new platform/920-add_dts.patch for f in $(cat /tmp/hogehoge) do quilt add $f cp -avf $FROM/$f ./$f done quilt refresh cp -avf patches/platform/920-add_dts.patch openwrt/target/linux/*/patches-4.14/予め対象のファイル名は用意しておく..
$ git diff --name-only <変更前のID> -- linux-4.14.108 | sed -e 's,^linux-4.14.108/,,' > /tmp/hogehoge
quiltコマンド覚え書き(man page見た方が詳しい)
# 次のパッチを見る quilt next # 全てのパッチを参照する $ quilt serires .... # 順番にパッチを適用する quilt push # パッチを一つ戻す quilt pop
参照先
公式のパッチの作り方ハマったヒト
ひたすらぐぐったけど symblic linkに言及したものが少ない.
OpenWRTのものは
実例が甘い気がする...更新止まっているかもしれん.
debian勉強会@東京の資料 が 良さそう.
debian wikiにもあるけれど ん-..
同じく困っているヒト