私が作成したテストカーネルを使ってLinuxカーネルを更新するプロセス

私が作成したテストカーネルを使ってLinuxカーネルを更新するプロセス

背景

私が実験しているStar Five VisionFive 2 SBCにはDebian Linuxが搭載されています。 VisionFive 2はRISC-V SBCで、Star Fiveはコアを構築するために必要なすべてのデータを含むGithubリポジトリを提供します。

SDカードに適した画像を作成する方法については、以下を参照してください。StarFive Debian イメージのビルド。実際のソースストアは次の場所にあります。Github - スターFive-tech/VisionFive2

SDカード用の画像を作成し、すべてが記事の説明に従って動作します。VisionFive 2 RISC-V - Linuxカーネルの構築、私は数ヶ月前に書いた記事です。私はApache2 Webサーバーのような他の多くの部分を追加しましたが、うまくいくようです。

私はUbuntuをビルド環境として使用し、Windows 10でWSLを使用しています。

VisionFive 2はu-boot代わりにローダーを使用しますGRUB。購入したVisionFive 2バンドルに付属のUSB / TTYアダプタを使用してVisionFive 2コンソールにアクセスできます。私はOrangePi 5 Plusgtktermに接続されている/dev/ttyUSB0Linux上でアプリケーションを使用してgtktermセッションをホストしていますrsh

明確に言えば、Windows 11システムでWSLを使用してイメージを構築して転送し、OrangePi 5でLinuxを使用してVisionFive 2のコンソール出力を表示できます。 Windows 11はUSB / TTYをサポートしていないためです。認識したいアダプタがありますが、Linuxでは認識できます。gtktermこのStackoverflowの記事に記載されているように、初期の問題に直面しました。Ubuntu 10.10(Maverick Meerkat)で端末をUSBデバイスに直列に接続するには?

Q:Linuxカーネルをテストするための次の手順は正しいですか?

いくつかの変更を加えて、現在のLinuxカーネルバージョンのソースコードで構築されたテストカーネルでLinuxカーネルを更新したいと思います。次のようなプロセスを使用しましたが、本当に良いプロセスかどうかはわかりません。

  • Linuxカーネルを編集して次に変更しますMakefileviSUBLEVEL=0SUBLEVEL=11
  • ファイルを生成したカーネルを再構築します。linux-image-5.15.11-starfive_5.15.11-starfive-8_riscv64.deb
  • このpsftpユーティリティを使用してVisionFive 2 SBCにファイルを保存します。
  • PuTTYコマンドシェルを開き、ファイルを保存したフォルダに移動します.deb
  • 使用されるsudo apt install ./linux-image-5.15.11-starfive_5.15.11-starfive-8_riscv64.deb
  • VisionFive 2を再起動してsudo reboot祈ります。

これはうまくいくようです。

フォローアップの質問:Linuxカーネルを更新するには、常にバージョン番号を変更する必要がありますか?

結果

これで、次のファイルの一覧がsudo ls -l /boot表示されます。

user@starfive:~$ sudo ls -l /boot
[sudo] password for user:
total 43672
-rwx------ 1 root root 4455561 Oct 30 05:12 System.map-5.15.0-starfive
-rwx------ 1 root root 4461300 Feb 19 14:00 System.map-5.15.11-starfive
-rwx------ 1 root root  213287 Oct 30 05:12 config-5.15.0-starfive
-rwx------ 1 root root  212806 Feb 19 14:00 config-5.15.11-starfive
drwx------ 4 root root    2048 Oct 30 06:33 dtbs
drwx------ 2 root root    2048 Feb 19 14:17 extlinux
-rwx------ 1 root root 9226555 Feb 19 13:50 initrd.img-5.15.0-starfive
-rwx------ 1 root root 9226555 Feb 19 14:17 initrd.img-5.15.11-starfive
-rwx------ 1 root root     406 Oct 30 01:21 uEnv.txt
-rwx------ 1 root root 8478959 Oct 30 05:12 vmlinuz-5.15.0-starfive
-rwx------ 1 root root 8428381 Feb 19 14:00 vmlinuz-5.15.11-starfive
user@starfive:~$

代わりにコマンドuname -aが表示されます。5.15.11-starfive5.15.0-starfive

user@starfive:~$ uname -a
Linux starfive 5.15.11-starfive #8 SMP Mon Feb 19 14:00:22 EST 2024 riscv64 GNU/Linux
user@starfive:~$

Makefile生成されたファイルで上記のプロセスを試みたときに、linux-image-5.15.11-starfive_5.15.11-starfive-8_riscv64.debSBCに記載されている内容が/bootファイルのタイムスタンプがvmlinuz-5.15.0-starfive変更されていないことがわかったため、Linuxバージョンを変更しました。System.map-5.15.0-starfiveインストール中にファイルが交換されないというインストールエラーも表示されます。

今私のディレクトリ/bootに2つのバージョンのLinuxカーネルがあるようです。

VisionFive 2を再起動してコンソールに表示されているログを観察すると、デフォルト設定に進む前に画像リストが表示されている間に数秒間一時停止することがわかりu-bootます。u-bootデフォルトは私のバージョンのように見えますが、元のバージョンを選択できます。そうすると、デバイスは完全に起動し、リモートシェルを使用しますrsh -l user starfive(VisionFive 2のホスト名がstarfive私のLANに表示されます)。unameオリジナルを表すイメージです。

user@starfive:~$ uname -a
Linux starfive 5.15.0-starfive #1 SMP Mon Oct 30 09:12:59 UTC 2023 riscv64 GNU/Linux
user@starfive:~$ 

付録I:テストLinuxのバージョンを削除する

私が最初にしたことは、VisionFive 2を再起動してgtktermコンソールにセッションを接続することで、u-boot利用可能な画像のリストが表示されたら元の画像を選択しました。その後、コマンドを使用して確認すると、デバイスはそのイメージから起動しますuname

次の手順を使用してください。最近インストールされたパッケージを削除または削除する方法インストールされたテストバージョンを削除しました。まず、apt list "*starfive*"Show Linux Image Installed Packagesコマンドを使用してパッケージ名を確認しました。その後、sudo apt removeテストバージョンのパッケージ名を指定しました。

デバイスを再起動してコンソールを確認しましたが、表示されたメニューにテストu-bootビルドが表示されなくなりました。デフォルトの起動を許可するために、どの入力も入力しませんでした。/bootでチェックすると、sudo ls -l /bootテストビルドイメージはもう存在しません。このコマンドを使用すると、元のuname-a画像名と日付が10月30日に表示されます。

関連情報