カーネルにコマンドライン引数をどのようにuboot
渡すことができますか?私はいくつかグーグルを行い、それがbootargs
環境変数を使用していることを知りました。そこでsetenv bootargs key=value
。 bash
を使用していて、setenv
がないため、export bootargs="value"
。しかし、それは何にも影響を与えていません。チェックインしました/proc/cmdline
引数は同じままです。私が間違っていることは何か考えていますか?
カーネルに引数を渡すには2つの方法があります。1.内部でそれらをコンパイルします。 2.ブートローダーを使用する
したがって、まず引数がカーネルにコンパイルされていないかどうかを確認します。 bashコマンドではなく、ブートローダーコマンドで見つかった2番目のsetenvコマンド。それは特定のデバイスがどのように作成されたかに依存しますが、通常、ブートローダーがファイルシステムのパラメーターまたはファイルを読み取り、そこからu-bootが構成を取得する内部ストレージ(ホストではなくデバイスのフラッシュメモリ)にパーティションがあります。
他の方法は、ケーブルを介してデバイスを接続し、デバイス固有の方法を使用してブートローダーのプロンプトを取得し、インタラクティブに設定を変更することです。
特定のデバイスのブートスキームに慣れていない場合、それはそれほど簡単ではありません。デバイスに名前を付けます。質問への回答に役立つ場合があります。
ブートパーティションのuEnv.txt
ファイルを使用して、ブートの引数を指定できます。これは、yocto meta-zyboレイヤーのザイリンクスzynq-7000デバイスの例です。
kernel_image=uImage
devicetree_image=zybo-zynq7.dtb
bootargs=console=ttyPS0,115200 root=/dev/mmcblk0p2 rw rootwait earlyprintk
uenvcmd=echo Copying Linux from SD to RAM... && fatload mmc 0 0x3000000 ${kernel_image} && fatload mmc 0 0x2A00000 ${devicetree_image} && bootm 0x3000000 - 0x2A00000
使用するデバイスツリーを指定します(がdevice_tree.dtb
と呼ばれている場合、これを行う必要はありません)。その後にカーネルの引数のセットが続きます。
uEnv.txt
の使用に関する詳細情報 ここ
sDカード上のファイルに加えて、uEnv.txtファイルを介してブートファイルを渡すことができます。
ブートには次のファイルが必要です:BOOT.bin
(fsblとubootをロード)、bitstream.bit
(PLにロードするビットストリーム、uImage
(コンパイル済みLinuxカーネル)、devicetree.dtb
( linuxが読み取るドライバーのアドレス)、uramdisk.image.gz
(起動後のlinuxファイル)。
次のコマンドでこれらをDDRにロードできます。
bootargs=console=ttyPS0,115200 root=/dev/ram rw earlyprintk
load_image=fatload mmc 0 ${kernel_load_address} ${kernel_image} &&
fatload mmc 0 ${devicetree_load_address} ${devicetree_image} &&
fatload mmc 0 ${ramdisk_load_address} ${ramdisk_image} uenvcmd=run mmc_loadbit_fat &&
echo Copying Linux from SD to RAM... &&
run load_image &&
bootm ${kernel_load_address} ${ramdisk_load_address} ${devicetree_load_address}
また、SDのext4パーティションから他のLinuxファイルをロードする場合は、uEnv.txt
で次のコマンドを使用できます。
bootargs=console=ttyPS0,115200 root=/dev/mmcblk0p2 rw earlyprintk rootfstype=ext4 rootwait devtmpfs.mount=0
load_image=fatload mmc 0 ${kernel_load_address} ${kernel_image} &&
fatload mmc 0 ${devicetree_load_address} ${devicetree_image} uenvcmd=run mmc_loadbit_fat &&
echo Copying Linux from SD to RAM... &&
mmcinfo && run load_image &&
bootm ${kernel_load_address} - ${devicetree_load_address}