# ラズベリーパイ4の再セットアップ ## カーネルのビルド 2022/5/25実施。 Ubuntu Server 21.10から、GUIを入れてセットアップしたもの(raspi4-01)を用いて、カーネルビルド環境を再構築する。 ``` $ sudo apt update $ sudo apt upgrade ``` impishが21.10、jammyが22.04。なのに、gitで取って来てmake bcm2711_defconfigした時の.configの先頭に現れるコメントが、impishが5.13.19、jammyが5.13.14、となっているのはなぜ? ちなみに、git clone先は、以下の通り。 ``` git://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux-raspi/+git/impish git://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux-raspi/+git/jammy ``` 両方 git cloneして調べてみよう。 あれ、今回は、jammyの下でmake bcm2711_defconfigすると、5.15.30という数字になった。 impishの下で改めてmake bcm2711_defconfigすると、、、5.13.19のまま。 raspi4-02 (8GB RAM版の方、Ubuntu Desktop 22.04でセットアップしたもの)で、make cleanしてmake bcm2711_defconfigしなおしてみると、、5.13.14となる。なぜ? git cloneからやりなおしてみると、、5.13.30になった。jammyとして小さい数字から上げて行っているのかな?そして、バージョンが古かったから、例えば、GUIでフリーズするなどの問題がある、などということはあるのだろうか? 新しくgitから取り直した環境、5.13.30の環境で、また、ビルドしてみる。 LOCALVERSIONをv8-custom2としてビルド。 ``` $ sudo apt update $ sudo apt upgrade $ sudo apt install git bc bison flex libssl-dev make $ git clone --depth=1 git://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux-raspi/+git/jammy $ cd jammy $ export KERNEL=kernel8 $ make bcm2711_defconfig $ vi .config // CONFIG_LOCALVERSION="-v8-CUSTOM" と指定する→5.13.14-v8-CUSTOMというのがフルのバージョン番号 ``` このラズパイ4(RAM 8GB版)では、今、普通にカーネルをビルドすると、発熱によって落ちてしまっているので、ここではCPUクロックを1000MHzに制限する。 ``` $ sudo apt install cpufrequtils $ sudo vi /etc/default/cpufrequtils # ファイルを作成 ENABLE="true" GOVERNOR="userspace" MAX_SPEED=1000000 MIN_SPEED=1000000 $ sudo reboot ``` cpufrequtilsが効いているかどうかは以下のコマンドで確認できる。 ``` $ cpufreq-info ``` クロック周波数を制限した上で、以下を実施。 ``` $ make -j4 Image.gz modules dtbs $ sudo make modules_install ``` ``` $ sudo cp .config /boot/config-5.13.14-v8-custom $ sudo cp System.map /boot/System.map-5.13.14-v8-custom $ sudo chmod 600 /boot/System.map-5.13.14-v8-custom $ sudo cp arch/arm64/boot/Image.gz /boot/vmlinuz-5.13.14-v8-custom $ sudo chmod 600 /boot/vmlinuz-5.13.14-v8-custom $ sudo mkdir /boot/dtbs/5.13.14-v8-custom $ sudo mkdir /lib/firmware/5.15.30-v8-custom2 $ sudo mkdir /lib/firmware/5.15.30-v8-custom2/device-tree $ sudo cp arch/arm64/boot/dts/broadcom/bcm2711-rpi-4-b.dtb /lib/firmware/5.15.30-v8-custom2/device-tree/ $ sudo chmod 755 /lib/firmware/5.15.30-v8-custom2/device-tree/bcm2711-rpi-4-b.dtb ``` 多分、/lib/firmware/の下に置いておけば、update-initramfsで、DTBも/boot/にコピーされるのではないか。 その上で、initrd.imgが生成されたのだと推測。 ``` $ sudo update-initramfs -c -k 5.15.30-v8-custom2 update-initramfs: Generating /boot/initrd.img-5.15.30-v8-custom2 Using DTB: bcm2711-rpi-4-b.dtb Installing /lib/firmware/5.15.30-v8-custom2/device-tree/bcm2711-rpi-4-b.dtb into /boot/dtbs/5.15.30-v8-custom2/./bcm2711-rpi-4-b.dtb Taking backup of bcm2711-rpi-4-b.dtb. Installing new bcm2711-rpi-4-b.dtb. Ignoring old or unknown version 5.15.30-v8-custom2 (latest is 5.15.0-1008-raspi) ``` 先にDTBをコピーしてたから、最後のメッセージが出たのだろう。 .bakに二重化するのもやってくれてそう。 ``` $ cd /boot $ sudo rm initrd.img.old $ sudo ln -s initrd.img-5.15.0-1006-raspi initrd.img.old $ sudo rm initrd.img $ sudo ln -s initrd.img-5.13.14-v8-custom initrd.img $ sudo rm vmlinuz.old $ sudo ln -s vmlinuz-5.15.0-1006-raspi vmlinuz.old $ sudo rm vmlinuz $ sudo ln -s vmlinuz-5.13.14-v8-custom vmlinuz $ sudo rm dtb $ sudo ln -s dtbs/5.13.14-v8-custom/./bcm2711-rpi-4-b.dtb dtb-5.13.14-v8-custom $ sudo ln -s dtb-5.13.14-v8-custom dtb ``` ``` $ cd firmware $ sudo cp ../vmlinuz-5.13.14-v8-custom vmlinuz $ sudo cp ../dtbs/5.13.14-v8-custom/./bcm2711-rpi-4-b.dtb bcm2711-rpi-4-b.dtb $ sudo cp ../initrd.img-5.13.14-v8-custom initrd.img ``` CUIで確認するとログインでき、uname -aで、自分でビルドしたカーネルで起動したことが確認できた。 GUIでログインできないのは、元のバージョンからそうだったので、その問題が発症したものと推測。 ## 日本語化 以前のバージョンと、若干、見え方が異なったが、同じような感じで設定すると、日本語入力もできるようになった。