カーネルをビルド(konalinux 7)
某氏の猫空 に詳しく書かれているので、そちらを参照していただくとして、大まかな流れと遭遇したトラブルについて記します。なお、当方ではビルドに「konalinux7」を使用しました。
・GitHubで BPI-W2-bsp-w2-4.9-v1.0.zip と [KTS31] .config for linux-rt を入手
・前者を ~/qua に展開、後者を.configにリネーム、前者のlinux-rtフォルダにコピー
・$ cd ~/qua/BPI-W2-bsp-w2-4.9-v1.0/
◉《不足するパケージがあったので》
$ sudo apt-get install libncurses-dev
◉《ビルドエラー発生》 ⇒下記参照◉
・$ ./build.sh →「4. kernel configure」を選択
・$ ./build.sh →「1. build all …」を選択
非力なマシンだったのでビルドに2時間以上かかった。
起動用USBメモリを作成する
起動用USBメモリは16GB以上のものを用意し、最低2個のパーティションに分ける。先頭にはカーネルが入るだけの容量のパーティション(100MB程度でもよいが、カーネルモジュールをここに入れる場合にはもう少し大きくする)を置き、FAT32でフォーマットする。そのうしろのルートファイルシステム用パーティションはExt4でフォーマットする。ルートファイルシステムはいくつあってもよいが、各々があまりに小さいと起動後に問題が発生する。
・USBメモリのFAT32領域に bpi-w2.dtb、uImage をコピー
・USBメモリのExt4領域に、
ルートファイルシステム(ArchLinuxARM-aarch64-latest.tar.gz)を展開
・カーネルモジュールをコピーする。
Ext4領域の場合、
/lib/modules 以下にカーネル名ごとコピー
(カーネル名: 4.9.119-BPI-W2-Kernel)
ビルドエラー(multiple definition of `yylloc’)
……………error……………
/usr/bin/ld: scripts/dtc/dtc-parser.tab.o:(.bss+0x10): multiple definition of `yylloc'; scripts/dtc/dtc-lexer.lex.o:(.bss+0x0): first defined here
collect2: error: ld returned 1 exit status
Build failed!
……………error……………
◉ビルドに際して上記エラーが出て進まなくなったが、下記サイトを参考に、
/linux-rt/scripts/dtc/dtc-lexer.lex.c_shipped (記事では ./linux-rtk/scripts/dtc/dtc-lexer-lex.c )に「YYLTYPE yylloc → extern YYLTYPE yylloc」なる変更を加え、ビルドは成功した。GCC 10 以降がインストールされている環境ではビルドに失敗するらしい。
→次ページへ Boot~eMMC~無線LAN
参考にしたサイト
コメント