モノは、これ↓
https://www.aliexpress.com/item/32241163286.html
SPI 4インチ 480x320 だけど、SPI 3.5インチ 480x320とコントローラー的には同じみたい。
まずは、Raspiosで作業
①OSイメージ作成
# wget http://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2020-08-24/2020-08-20-raspios-buster-arm64.zip
# unzip 2020-08-20-raspios-buster-arm64.zip
# dd if=2020-08-20-raspios-buster-arm64.img of=/dev/sdX status=progress
②OS起動、初期設定
$ sudo apt update
...
$ sudo apt full-upgrade
...
$ sudo reboot
③LCD設定
$ git clone https://github.com/waveshare/LCD-show.git
$ cd LCD-show
$ ./LCD35-show
■勝手に再起動
■タッチパネルのキャリブレーション
$ sudo apt-get remove xinput-calibrator:armhf
$ sudo apt-get install xinput-calibrator
$ xinput_calibrator
(結果が出力される)
$ sudo vi /etc/X11/xorg.conf.d/99-calibration.conf
$ sudo reboot
次に、Fedora33で作業
① LCD設定
$ git clone https://github.com/waveshare/LCD-show.git
$ cd LCD-show
$ ./LCD35-show
■エラーでるけどとりあえず無視 (debian系のコマンド実行してるため)
■勝手に再起動
② Raspiosで使用したイメージからファイルを吸い上げ
# mount /dev/sdX2 /mnt/work
# mkdir /usr/lib64/aarch64-linux-gnu
# cd /usr/lib64/aarch64-linux-gnu
# cp -pr /mnt/work/usr/lib/aarch64-linux-gnu/libbcm_host.so.0 .
# ln -s libbcm_host.so.0 libbcm_host.so
# cp -pr /mnt/work/usr/lib/aarch64-linux-gnu/libvchiq_arm.so.0 .
# cp -pr /mnt/work/usr/lib/aarch64-linux-gnu/libvcos.so.0 .
# cd /usr/local/bin
# cp -pr /mnt/work/usr/local/bin/fbcp .
# cd /usr/share/X11/xorg.conf.d
# rm -rf *.conf
# cp /mnt/work/usr/share/X11/xorg.conf.d/*.conf .
③ファイル修正
# vi /etc/rc.d/rc.local
/usr/local/bin/fbcp >/dev/null 2>&1 &
以上!
まとめると、
①Raspios上で正常に動作するようにする
②Fedora33上のkernel overlayドライバの設定
③Fedora33へfbcpとそれに必要なライブラリのコピー
Raspios上でやらないとヘッダーとかライブラリとかないので。。。
できたバイナリファイルをコピーして使う。
④Fedora33の自動実行設定(fbcp)
⑤Fedora33のX11の設定(タッチパネルのキャリブレーション)
ですね。
以前(kernel 4.x時代)は、kernel moduleのfbtft_deviceを使うしかなかったのですが、これが、kernel 5.xでは廃止になってたようで。
久々に、waveshareのLCD35-showしたら、方式が変わってた。
fbcpで無理やりですが。。。
まぁ、でも、kernel 5.xでも、表示&タッチがちゃんと動いてよかった。^^
■おまけ
Fedora は、ちょっと前から正式に、Raspberry Pi2/Pi3/Pi4はサポートしている。
arm-image-installer
でイメージを作成できるのですが、
Rpi4+aarch64な場合、
UEFI bootなイメージだった。
それは、それでいいのですけど、ブートに若干時間がかかるんですよね。。。
efi起動してそれからgrub2起動して、そんでもってkernelなので、、
というわけで、最新なRaspiosのファイルシステム上書きが結構いい感じな環境かなと。
具体的には、
01. Raspiosのイメージを作る
02. ↑で起動する
03. シャットダウン
04. Fedoraのイメージを作る
05. ↑で起動する
06. シャットダウン
07. Fedoraのイメージを適当なLinuxマシンへマウント
# mkdir /mnt/fedora
# mount /mnt/fedora
08. etc usr varをバックアップ
# cd /fedora
# tar cvzpf /etc.tgz etc
# tar cvzpf /usr.tgz usr
# tar cvzpf /var.tfz var
09. Raspiosのお目ー時を適当なLinuxマシンへマウント
# mkdir /mnt/raspios
# mount /dev/sdX2 /mnt/raspios
10. ファイルを上書き
# cd /mnt/raspios
# mv etc _etc
# mv usr _usr
# mv lib _lib
# mv var _var
# mv bin _bin
# mv sbin _sbin
# tar xvzpf /etc.tgz
# tar xvzpf /usr.tgz
# tar xvzpf /var.tgz
# ln -s usr/lib lib
# ln -s usr/lib64 lib64
# ln -s usr/bin bin
# ln -s usr/sbin sbin
# cd _lib/modules
# tar cpf - .|(cd ../../usr/lib/modules; tar xvzpf - )
# cd ../../
# cp -p _etc/fstab etc/fstab
# rm -rf etc/ssh/ssh_*key*
11. アンマウント
# cd /
# umount /mnt/fedora
# umount /mnt/raspios
これで、bootloader回りとkernelとmodulesはRaspiosのもので、他のファイルは、Fedoraになったイメージのできあがり。
以上!