最終更新:2025-01-21 (火) 04:35:38 (19d)
参考図書/私はどのようにしてLinuxカーネルを学んだか Device Tree編
https://www.amazon.co.jp/dp/4907545134
カーネル
- Raspbianのカーネルは4.19.x
- rpi-5.6.yブランチを使う
git clone --depth=1 -b rpi-5.6.y https://github.com/raspberrypi/linux linux5.6
Raspbian Lite?
2020-02-13-raspbian-buster-lite.zip
2019-09-26-raspbian-buster-lite.zip
メモ
クロスコンパイラ
- arm-linux-gnueabihf-* (書いてあるのはraspberrypi/toolsの中のやつ)
aptで入れる
- gcc-arm-linux-gnueabihf (Ubuntu 20.04だとGCC 9.4?) -> arm1176はarmv6lなので起動しない
ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3
- gcc-arm-linux-gnueabi (Ubuntu 20.04だとGCC 9.4?)
ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.3
エミュレータ
- qemu-rpi-kernel
qemu-system-arm \ -M versatilepb \ -cpu arm1176 \ -m 256 \ -hda ./2019-09-26-raspbian-buster-lite.img \ -net user,hostfwd=tcp::5022-:22 \ -dtb ./versatile-pb-buster.dtb \ -kernel ./kernel-qemu-4.19.50-buster \ -append 'root=/dev/sda2 panic=1' \ -no-reboot
- Ctrl-Alt-Gでカーソルを開放
カーネルのビルド
- sudo apt install make flex bison libncurses-dev libssl-dev
- make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- bcm2835_defconfig
- make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- bzImage dtbs
メモ
- 2016-05-27-raspbian-jessieはQEMUで起動するらしい
- Linux 4.4.11
qemu-system-arm \ -M raspi2 \ ... root=/dev/mmcblk0p2 -cpu arm1176 -dtb bcm2709-rpi-2-b.dtb (imgより) -sd ../2016-0527-raspbian-jessie.img -kernel kernel7.img (imgより) -m 1G -smp 4 ...
- 2020-02-13-raspbian-busterは同様の設定では起動しないらしい