目次
Raspberry Pi 4のセットアップ
はじめに
今回、私が普段使用しているJetsonシリーズとOSを合わせてUbuntuを導入。 また、今、ラズパイ4単体よりもセットになっているものが入手しやすかったということで、以下のものを購入。
TRASKIT Raspberry Pi 4 Model B
下の画像は、ケースを組み立てて電源を入れたところ。
セットアップ
SD Card Formatterでクイックフォーマットをした上で、ImagerでUbuntu Server 21.10を書き込んでブート。 ユーザ情報(UIDと初期パスワード)はubuntu/ubuntuで、パスワードを変更するように言われ変更。
最初に、ネットにつながらないと話にならないので、Wifiを設定。 netplanの設定ファイル50-cloud-init.yamlに記述。 その際、キーボードで:が入らないので、探して、; + SHIFTで入力できることがわかり、ひとまずそれで対応。
$ sudo netplan apply
で設定を反映。ifconfigすらないので、
$ sudo apt install net-tools
とnet-toolsをインストールして、ifconfigでネットワークの設定状況を確認してOK。 そして、キーボードがちゃんとしていないと不便なので、先に、
$ sudo dpkg-reconfigure keyboard-configuration
でキーボードのセットアップ。GUIで、Generic 105-key PC (intl.)→Japanese→Japanese→The default for the keyboard layout→No compose keyと選択。
結構時間がかかったが、終わったらリブート。
さて、これからの作業で、やはり、ちょっと日本語やGUIが使えた方が便利なので、先にGUIをセットアップする。
GUIの導入
Serverとして使用するのに、常時、GUIをあげているのはリソースがもったいないが、環境構築などの作業時に一時的にGUIを起動して作業する、というスタイルで考える。 大昔は、コンソールでも日本語表示させて、コンソールでも日本語かな漢字変換システム入れて、、などとやっていたが、今の時代はとっととGUI入れるのが楽だろう。
$ sudo apt install lxde
ちょっと時間がかかった後、デフォルトのディスプレイマネージャを選択する画面として、gdm3かlightdmかを選択させられるので、lightdmを選択してみる。
インストールが完了してリブートするとGUIが上がる。LXDEを選択して、パスワードを入力すると、、あれ、待っても何も出てこない。。
仕方ないので強制的に再起動して、もう一度同じことをやると、初期のGUI画面っぽい状態になった。ただし、まだ日本語も使えないし、デスクトップもちょっとどこに何があるかわからない状態。
ひとまず、CUIをデフォルトとする。
$ sudo systemctl set-default multi-user.target
GUI使いたいときは、以下のようにディスプレイマネージャを起動する。
$ sudo systemctl start lightdm.service
どこから何が実行できるか、まだいまいちわかっていないが、ひとまず、GUI画面の左下から、System Tools→LXTerminalでターミナルを起動すると、何とかやりたいことができる。
これで、ひとまず、デフォルトはCUIで起動しておいて、必要に応じてGUIを起動する形になった。
日本語化
$ sudo apt install language-pack-ja-base language-pack-ja ibus-mozc $ localectl set-locale LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja" $ source /etc/default/locale
update-localeを使うように書いてあるページもあるが、localectlを使っているページの方が多い感じがするので、localectlを使っておく。
この後、Language Support→Language Supportを選択してみると、“The language support is not installed completely”などと言われるので、Installを選択すると。。。
日本語環境のインストールが完了したみたいなので、Language for menus and windows:のところに並んでいるEnglishと日本語で、日本語を上にまわしてみた。
一度再起動すると、標準フォルダの名前を日本語にするかどうか尋ねられますが、フォルダが日本語になると不便なので、「古い名前のままにする」を選択。
メニューが日本語に変わって、、、設定→言語サポートを選択して、タブ「地域フォーマット」を選んで、ここも日本語に変更して、「システム全体に適用」ボタンを押す。日時表示の方も、設定→時刻と日付の設定を選択して、タイムゾーンにAsia/Tokyoを選択する。
ibus-mozcだとダメなのか、fcitx-mozcもインストールしてみる。 日本語入力がまだできないが、ひとまず、また別途か。
SSH
$ sudo apt install openssh-server
で、sshdをインストールする。
CPU温度やI/Oのモニタリング
を参考に、Monitonixというツールをインストールしてみた。
HALCONのインストール
インストーラを動かすと、gccやg++のバージョンがどうのこうのと言われたから、先に、build-essentialをインストールする。
スワップの設定
$ sudo fallocate -l 8G /swapfile $ sudo chmod 600 /swapfile $ sudo mkswap /swapfile $ sudo swapon /swapfile $ sudo swapon --show $ echo '/swapfile swap swap defaults 0 0' | sudo tee -a /etc/fstab $ sudo reboot $ sudo swapon --show
カメラの導入
ラズパイの蓋を外して、OV5647カメラモジュールをCAMERAスロットに接続して起動。 raspistillやraspividでカメラを使う前に、カメラを使えるようにコンフィグする必要あり。 sudo raspi-configを実行してもコマンドが見つからないと最初は言われる。
$ sudo apt install raspi-config $ sudo raspi-config
で、3.Interface Options→P1⃣ Cameraを選択すると、F/Wがout of dateと言われた。ひとまず、updateとupgrade。
$ sudo apt update $ sudo apt upgrade
もう一度、raspi-configでP1 Cameraを選択してEnableにしようとしたら、同じようにout of dateと言われる。 raspi-configは使えないのか?(後で調べる)
どこかのサイトで書いてあったように、/boot/firmware/config.txtを自分で編集して、最後のところに、
gpu_mem=256 start_x=1
と書いてリブートすると、無事、/dev/video0が出現。
$ raspistill -o image.jpg -t 10000
などと実行すると、image.jpgの画像ファイルが生成する。-t 10000は10秒間プレービューするためのオプション。 Jetsonでよく使っているgeeqieをインストールして画像を表示。ちゃんと撮れている。
$ sudo apt install v4l-utils
でV4L2系ツールをインストールして、
$ v4l2-ctl --list-devices
bcm2835-codec-decode (platform:bcm2835-codec): /dev/video10 /dev/video11 /dev/video12 /dev/media1 bcm2835-isp (platform:bcm2835-isp): /dev/video13 /dev/video14 /dev/video15 /dev/video16 /dev/media0 mmal service 16.1 (platform:bcm2835-v4l2-0): /dev/video0
カーネルのビルド
https://forums.raspberrypi.com/viewtopic.php?t=284556
に従って、おそるおそる試してみた。まず、/etc/apt/sources.listを編集した。オリジナルとのdiffは以下の通り。
root@raspi4-02:/usr/src/linux-raspi-5.13.0# diff /etc/apt/sources.list /etc/apt/sources.list.bak 12c12 < deb-src http://ports.ubuntu.com/ubuntu-ports impish main restricted --- > # deb-src http://ports.ubuntu.com/ubuntu-ports impish main restricted 17c17 < deb-src http://ports.ubuntu.com/ubuntu-ports impish-updates main restricted --- > # deb-src http://ports.ubuntu.com/ubuntu-ports impish-updates main restricted
$ sudo apt update $ sudo apt source linux-image-5.13.0.1026-raspi
などとしたら、したからか、/usr/src/linux-raspi-5.13.0ができていた。
https://www.raspberrypi.com/documentation/computers/linux_kernel.html#building
に従って、試しに、おそるおそる、そのままセルフビルドしてみた。
$ sudo apt install bc bison flex libssl-dev make
make bcm2709_defconfigで権限なしと言われたので、sudo suして再度実行。
export KERNEL=kernel8 make bcm2711_defconfig
そして、vi .configで、
CONFIG_LOCALVERSION=-v8-MY_CUSTOM_KERNEL"
に変更した上で、
$ make -j4 Image.gz modules dtbs
とすると、、、
HOSTCC scripts/extract-cert HOSTCC scripts/genksyms/parse.tab.o scripts/Makefile.build:44: arch/arm64/boot/dts/overlays/Makefile: そのようなファイルやディレクトリはありません make[2]: *** ターゲット 'arch/arm64/boot/dts/overlays/Makefile' を make するルールがありません. 中止. make[1]: *** [scripts/Makefile.build:524: arch/arm64/boot/dts/overlays] エラー 2 make: *** [Makefile:1428: dtbs] エラー 2 make: *** 未完了のジョブを待っています.... HOSTCC scripts/genksyms/lex.lex.o HOSTLD scripts/genksyms/genksyms
ひとまず、
$ make -j4 Image.gz
などとすると、ひとまず、コンパイルはできた。modulesも。dtbsをmakeすると結果は同じ。 /usr/src/の下にソース一式のzipファイルがおかれていたので、これをUbuntu PCに移して、クロスビルドを実施してみた。 こちらは、Image、modules、dtbs一式makeできたみたい。詳細未確認。
また、ローカルのビルド、試行錯誤を試していたところ、なぜか、SDが壊れたか、ブート時に、fsckを手動で実行せよ、 と言われ、実行してもリカバーできない、という状況になった。
ひとまず、別のラズパイ(こちらはRAMが2GBのやつ)でも、もう一度詳細の記録を残しながらローカルビルドを試してみる。
/etc/apt/sources.listを編集して、impishとimpish-updatesの2行のdeb-srcをコメントアウト。
root@raspi4-02:/usr/src/linux-raspi-5.13.0# diff /etc/apt/sources.list /etc/apt/sources.list.bak 12c12 < deb-src http://ports.ubuntu.com/ubuntu-ports impish main restricted --- > # deb-src http://ports.ubuntu.com/ubuntu-ports impish main restricted 17c17 < deb-src http://ports.ubuntu.com/ubuntu-ports impish-updates main restricted --- > # deb-src http://ports.ubuntu.com/ubuntu-ports impish-updates main restricted
次に、アップデートとソース取得。
$ sudo apt update $ sudo apt source linux-image-5.13.0.1017-raspi
これだと、
Unable to find a source package for linux-image-5.13.0.1017-raspi
と言われた。とりあえず、8GB版のときもやったような気がする、sudo apt upgradeしてみると、、、。8GB版のときと同じ、5.13.0.1026にアップデートされると言われた。ひとまず、言われるがままに実行。終了したみたいなので、とりあえずリブート。
でも、ソースパッケージが見つからないと言われるのは同じ。 apt updateのときにエラーが出ていたのは、外部リポジトリを外してみた。
$ sudo add-apt-repository --remove ppa:deadsnakes/ppa
apt updateのときのエラーはなくなったが、上記のソースパッケージが見つからないという状況は変わらず。 再度見直して、、、
sudo apt-get source linux-image-$(uname -r)
と、参照サイトと全く同じやり方をしたら、、、linux-imageの代わりにlinux-raspiを、、、などと対応してくれたみたい。
ubuntu@raspi4-01:~$ sudo apt-get source linux-image-$(uname -r) Reading package lists... Done Picking 'linux-raspi' as source package instead of 'linux-image-5.13.0-1026-raspi' NOTICE: 'linux-raspi' packaging is maintained in the 'Git' version control system at: git://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux-raspi/+git/impish Please use: git clone git://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux-raspi/+git/impish to retrieve the latest (possibly unreleased) updates to the package. Skipping already downloaded file 'linux-raspi_5.13.0-1026.28.dsc' Skipping already downloaded file 'linux-raspi_5.13.0.orig.tar.gz' Skipping already downloaded file 'linux-raspi_5.13.0-1026.28.diff.gz' Need to get 0 B of source archives. Skipping unpack of already unpacked source in linux-raspi-5.13.0
Gitでとれと言われた。 8GBのときと振る舞いが違うのがちょっと納得いかないが。。。 あとで、ホームディレクトリの下に落ちてることに気づいた。
git clone --depth=1 git://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux-raspi/+git/impish cd impish export KERNEL=kernel8 sudo make bcm2711_defconfig sudo vi .config // CONFIG_LOCALVERSION="-v8-MY_CUSTOM_KERNEL" sudo make -j4 Image.gz modules dtbs
今回は、make bcm2711_defconfigのときにおこられたり、make dtbsのときにエラーになったりはしなかった。。。が、それを期待したので、このまま進めてみる。
無事、make完了。この後は、システム領域へのコピー。
sudo make modules_install sudo cp arch/arm64/boot/dts/broadcom/*.dtb /boot/ sudo cp arch/arm64/boot/dts/overlays/*.dtb* /boot/overlays/ sudo cp arch/arm64/boot/dts/overlays/README /boot/overlays/ sudo cp arch/arm64/boot/Image.gz /boot/$KERNEL.img
と、Raspberry Pi Documentationに書いてある通りにひとまずやってみたが、やはり、これでは新しくビルドしたカーネルにはならなかった。Ubuntuでは参照されているファイルが違うはず。
多分、make modules_installは/lib/modules/の下にコピーしてそうで、これはこれでよいと推測。 /boot/の下に.dtbをだらだら、/boot/overlays/の下にoverlays/.dtb*を置くのも、それでよいのか。
https://forums.raspberrypi.com/viewtopic.php?t=312338
の、
# copy kernel and dtb Code: Select all sudo cp mnt/fat32/vmlinuz mnt/fat32/vmlinuz.old sudo cp arch/arm64/boot/Image mnt/fat32/vmlinuz sudo cp arch/arm64/boot/dts/broadcom/*.dtb mnt/fat32/ sudo cp arch/arm64/boot/dts/overlays/*.dtb* mnt/fat32/overlays/ sudo cp arch/arm64/boot/dts/overlays/README mnt/fat32/overlays/ sudo umount mnt/fat32 sudo umount mnt/ext4
というところをみて、そう思った。で、Imageを/bootに置いて、/boot/vmlinuzをそれへのシンボリックリンクにしてみたが、、 ブートしてuname -aしてみても、変わってなさそう。
ひとまず、今日はここまでか(2022/5/19 16:21)。/boot/の下はこのままにしておく。
(2022/5/20 17:59) さっき、sudo apt install x11-apps などとやってインストール中に、突如?、昨日ビルドした、 -v8MYCUSTOM_KERNEL へのアップデートをするためにどうちゃらこうちゃらというメッセージが 表示された。なぜ?
ラズパイ(8GB RAM版)で再セットアップ
使っていたmicro SDが完全に死んだみたい(fsckで復旧できない、Windows PCでSD Formatter使ってもフォーマットに失敗)なので、別のSDを確保。
今度は、Raspberry Pi Imager (今、アップデートしたv1.7.2)で、Imagerから直接OS(今回は、Ubuntu Desktop 22.04 LTS 64-bit版)を指定してSDに書き込みしてみた。
ラズパイ4にSDを装着して起動して初期セットアップ実施。無事、Ubuntuが起動した。
gpartedインストール。 初期状態のSDのパーティションを確認。
- /dev/mmcblk0p1がfat32で256MiB。/boot/firmwareにマウント。
- /dev/mmcblk0p2がext4で残り全部/にマウント。
/bootと/boot/firmwareの両方に、同じものがおかれている? 二重化?
また、このラズパイ(こちらはRAMが8GBのやつ)でも、もう一度詳細の記録を残しながらローカルビルドを試してみる。 /etc/apt/sources.listを編集して、jammyとjammy-updatesの2行のdeb-srcをコメントアウト。
ソースパッケージを取得。今回は、~/work/kernel-build/の下で以下を実行。
$ sudo apt source linux-image-5.15.0-1006-raspi
とすると、カレントディレクトリの下に、
- linux-raspi-5.15.0
- linux-raspi-5.15.0-1006.6.dsc
- linux-raspi-5.15.0-1006.6.diff.gz
- linux-raspi-5.15.0.orig.tar.gz
が得られた。linux-raspi-5.15.0が最新のソースディレクトリだと思われる(1006のパッチが当たってそう)ので、そのディレクトリ内でビルドすればよいと思う(前回もそうした)。
$ cd linux-raspi-5.15.0 $ export KERNEL=kernel8 (ownerがrootになっているので普通のユーザにchown -Rで変更したり、*.shにxが立ってなかったので立てたり) $ make bcm2711_defconfig $ vi .config // CONFIG_LOCALVERSION="-v8-MY_CUSTOM_KERNEL" $ make -j4 Image.gz modules dtbs
とやると、以前になったことのある、arch/arm64/boot/dts/overlays/Makefileがない、とか言われてしまった。
$ make -j4 Image.gz modules
と実行して席を立っていたが、戻ってくると、モニタはOFFで、キーボード&マウスに反応なし。 やむなく、強制リブートしたが、makeは終わっていたのかな、生成されるべきファイルは生成されているっぽい、というところ。
あと、git cloneでビルドツリーを落としてきてみた。
$ git clone --depth=1 git://git.launch.net/~ubuntu-kernel/ubuntu/+source/linux-raspi/+git/jammy cd jammy export KERNEL=kernel8 make bcm2711_defconfig vi .config // CONFIG_LOCALVERSION="-v8-MY_CUSTOM_KERNEL" make -j4 Image.gz modules dtbs
このようにgitで落とすと大丈夫。今後、これ(gitで落とす方)を標準にしておこう。
途中で多分熱くて落ちてしまうことが数回あったが、なんとか最後まで終わった。 ここからは、自分のビルドした結果をコピーしてシステムが参照するように設定してそのカーネルでブートするようにする。
まず先に、modulesだけ先にコピー。
$ sudo make modules_install
とすると、/lib/modules/5.13.14-v8-MY_CUSTOM_KERNELへのコピーが流れた。5.15.0-xxxにならなかったのがおかしいが。。
自分でビルドした領域から、/boot/に対応するファイル(ビルドツリーのトップからの相対パス)、
- System-map-5.15.0-custom-raspi ← System.map
- config-5.15.0-custom-raspi ← .config
- vmlinuz-5.15.0-custom-raspi ← arch/arm64/boot/Image.gz
- dtbs/5.15.0-custom-raspi/bcm2711-rpi-4-b.dtb ← arch/arm64/boot/dts/broadcom/bcm2711-rpi-4-b.dtb
をコピー。あと、initrd.imgを作るために、/lib/modulesにコピーされたバージョン番号を使って、
$ sudo update-initramfs -c -k 5.13.14-v8-MY_CUSTOM_KERNEL
と実行すると、
update-initramfs: Generating /boot/initrd.img-5.13.14-v8-MY_CUSTOM_KERNEL Using DTB: bcm2711-rpi-4-b.dtb Couldn't find DTB bcm2711-rpi-4-b.dtb on the following paths: /etc/flash-kernel/dtbs /usr/lib/linux-image-5.13.14-v8-MY_CUSTOM_KERNEL /lib/firmware/5.13.14-v8-MY_CUSTOM_KERNEL/device-tree/ Installing into /boot/dtbs/5.13.14-v8-MY_COSTOM_KERNEL/./bcm2711-rpi-4-b.dtb cp: cannot stat '': No such file or directory run-parts: /etc/initramfs/post-update.d//flash-kernel exited with return code 1
などと言われたが、一応、initrd.img-5.13.14-v8-MY_CUSTOM_KERNELが生成された。 ということで、これで、ビルドした成果物を一通り用意できたと思うので、自分のこのビルドしたものをブートしてみる。 /bootの下で、5.15.0-1006だったかと同じような感じで、シンボリックリンクなどもはるなどした。/boot/firmwareの方も、overlaysは手を出していないが、それ以外、Raspberry Pi4Bに関係しそうなところを整えて、、、。
リブートすると、無事、自分のビルドした日時と、config時に指定した、v8-MYCUSTOMEKERNELという文字列が現れた。 ということで、ひとまず、自分のビルドしたカーネルでブートできたと考える。この次のステップは、新しいドライバなどを作成し、カーネルをコントロールできることを確認していく。
と思って、今日、ラズパイ4を起動してみると、カラフルなスプラッシュスクリーンが出っぱなしで、緑LEDが7回点滅を繰り返す。。。kernel.imgが見つからないとか?またSD関連のトラブルか?
ちょっと悩んだが、
- 3度目の正直
- ケースを下側だけにしてみる
として、再度セットアップして動かしてみることにした。
ラズパイ(8GB RAM版)で再々セットアップ
ということで、またまた再セットアップ。 Raspberry Pi Imager v1.7.2で、Imagerから、既にPCにキャッシュされているOS(Ubuntu Desktop 22.04 LTS 64-bit版)を選択してSDに書き込みする。
初期セットアップ完了。 日本語化はしない(∵またトラブルかもしれないし)。 まず、カーネルのビルドのみ試す。
$ 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というのがフルのバージョン番号 $ make -j4 Image.gz modules dtbs $ sudo make modules_install
I tried using “make install” for now, so, the result is the following:
sirius@raspi4-02:~/git/jammy$ sudo make install [sudo] password for sirius: Sorry, try again. [sudo] password for sirius: sh ./arch/arm64/boot/install.sh 5.13.14-v8-CUSTOM \ arch/arm64/boot/Image System.map "/boot" run-parts: executing /etc/kernel/postinst.d/initramfs-tools 5.13.14-v8-CUSTOM /boot/vmlinuz-5.13.14-v8-CUSTOM update-initramfs: Generating /boot/initrd.img-5.13.14-v8-CUSTOM Using DTB: bcm2711-rpi-4-b.dtb Couldn't find DTB bcm2711-rpi-4-b.dtb on the following paths: /etc/flash-kernel/dtbs /usr/lib/linux-image-5.13.14-v8-CUSTOM /lib/firmware/5.13.14-v8-CUSTOM/device-tree/ Installing into /boot/dtbs/5.13.14-v8-CUSTOM/./bcm2711-rpi-4-b.dtb cp: cannot stat '': No such file or directory run-parts: /etc/initramfs/post-update.d//flash-kernel exited with return code 1 run-parts: /etc/kernel/postinst.d/initramfs-tools exited with return code 1 make[1]: *** [arch/arm64/boot/Makefile:40: install] Error 1 make: *** [arch/arm64/Makefile:170: install] Error 2
この後、/bootの下を確認してみると、
- System.map
- config
- vmlinuz
- initrd.img
が/bootにコピーあるいは生成されているみたい。そして、DTBは、エラーも出ているように、コピーできていない。 手動でコピーした。また、/boot/firmwareに、
- vmlinuz
- bcm2711-rpi-4-b.dtb
を手動でコピーした。 リブートしてみると、最新のものになっていない。確認すると、、make installだと、Image.gzがコピーできていない。 手動でImage.gzをvmlinuzにコピー。
なんか、ログイン時に固まる。。。make installは使わず、手動で慎重に再現するか。。
ラズパイ(8GB RAM版)で再々々セットアップ
$ 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というのがフルのバージョン番号
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 cp arch/arm64/boot/dts/broadcom/bcm2711-rpi-4-b.dtb /boot/dtbs/5.13.14-v8-custom/ $ sudo chmod 755 /boot/dtbs/5.13.14-v8-custom/bcm2711-rpi-4-b.dtb $ 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
To create “initrd.img”, I did the following command:
$ 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)
$ 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
$ 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
これだと、ログイン時に固まる。 /boot/firmware内のvmlinuzとbcm2711-rpi-4-b.dtbに.bakからコピーすると、復活するので、やはり、その/boot/firmwareへのコピーがまだだめ(コピーするファイルが足らない?など)、ということみたい。
initrd.imgも/boot/firmwareの下にある。これか?
$ sudo cp ../initrd.img-5.13.14-v8-custom initrd.img
CUIで確認するとログインでき、uname -aで、自分でビルドしたカーネルで起動したことが確認できた。 GUIでログインできないのは、元のバージョンからそうだったので、その問題が発症したものと推測。
その他
なぜか、あとで作成したユーザではGUIでログインできなかった。別途解決したい。
$ sudo apt reinstall ubuntu-desktop
で改善したような感じもする。要経過観察。