【システム移植】Linuxカーネルのネットワークダウンロードを実現するuboot構成

ハードウェア環境: 100ask stm32mp157 開発ボード

Ubootで設定する

ルーターから IP アドレスを取得するには、サーバーと開発ボードが同じネットワーク セグメントにあることを確認する必要があります。

dhcp

nfs コマンドを使用して、nfs サービス フォルダーの Linux カーネルをダウンロードします。

nfs C2000000 192.168.31.143:/home/book/nfs_rootfs/uImage  

DDRのC2000000のデータを確認する

md.b C2000000 100

nfsコマンドを使用してデバイスツリーファイルをダウンロードします。

nfs   c4000000  192.168.31.143:/home/book/nfs_rootfs/stm32mp157c-100ask-512d-lcd-v1.dtb

Linuxシステムを起動します

bootm c2000000 - c4000000  

[外部リンク画像の転送に失敗しました。ソース サイトにはリーチ防止メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-WoF2duc8-1681999522761)(image/system移植/1681999426146.png)]

  • 電源投入後にネットワークを自動的に使用して、Linux カーネルとデバイス ツリー ファイルをリモートでダウンロードします。

bootcmd コマンドを設定する必要があります。bootcmd は非常に重要な環境変数です。名前は「boot」と「cmd」、つまり「
bootこの環境変数にはブートコマンドが格納されており、実際には複数のブートコマンドをまとめたものであることがわかります。コマンドは変更できますbootcmd は uboot のデフォルトのコマンドを保存し、bootcmd 内のコマンドは uboot のカウントダウンが終了した後に実行されます。これらのコマンドは通常、EMMC または NAND フラッシュの Linux カーネル イメージ ファイルとデバイス ツリー ファイルを DRAM に読み取ってから、Linux カーネルを起動するなど、Linux カーネルを起動するために使用されます。

setenv bootcmd 'nfs C2000000 192.168.31.143:/home/book/nfs_rootfs/uImage;
				nfs c4000000  192.168.31.143:/home/book/nfs_rootfs/stm32mp157c-100ask-512d-lcd-v1.dtb;
				bootm c2000000 - c4000000'
 
saveenv  

次回電源を入れるか、bootcmd を実行すると、bootcmd 内のコマンドが実行され、Linux カーネルが自動的にダウンロードされ、ロードされます。

ファイル システムがマウントされていないため、カーネルを起動するとKernel panic最後にエラーが表示されます。

Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

おすすめ

転載: blog.csdn.net/m0_61737429/article/details/130276944