カーネルイメージを変更する¶
概要¶
カーネルイメージは nvidia-l4t-bootloader
のdebパッケージで配布される bl_update_payload
の中に含まれています。
そのため、カーネルイメージは通常はこのdebパッケージによって更新されます 1 が、独自の修正を加えたい場合は、以下の手順で更新作業を行う必要があります。
- 1
nvidia-l4t-bootloaderのpostinstスクリプト https://forums.developer.nvidia.com/t/unable-to-update-kernel-image-with-nv-update-engine/163726
事前準備¶
BUP(Bootloader Update Payload)の生成に必要になりますので、 OSを新規インストールする に沿ってOSイメージを用意してください。
必要となるのは ./build_l4t_bup.sh
だけですので、ここではEDGEPLANT T1への書込みを行う必要はありません。
手順¶
カーネルをカスタマイズしてビルドします。 手順については ソースコードからカーネルをビルドする を参照してください。
カーネルをカスタマイズしてビルドしたイメージをもとに、BUPを作成します。 以下は、EDGEPLANT T1用にBUPを作成する場合のコマンドです。
$ cp <tegra_kernel_out>/arch/arm64/boot/Image <install_work_dir>/Linux_for_Tegra/kernel/Image $ cd <install_work_dir>/Linux_for_Tegra $ sudo FAB=300 BOARDID=3489 FUSELEVEL=fuselevel_production ./build_l4t_bup.sh --clean-up jb01-jasmine mmcblk0p1 $ sudo FAB=300 BOARDID=3489 FUSELEVEL=fuselevel_production ./build_l4t_bup.sh --multi-spec jb01-jasmine mmcblk0p1
<tegra_kernel_out>: カーネルビルドの成果物の生成先のディレクトリ
<install_work_dir>: インストール用のイメージを展開したディレクトリ
Linux_for_Tegra/bootloader/payloads_t18x/bl_update_payload
に作成されたBUPをコピーし、所定のフォルダーに格納します。$ sudo cp bl_update_payload /opt/ota_package/
アップデートを実施します。
# Enabling A/B redundancy $ sudo /usr/sbin/nv_update_engine --enable-ab Nvidia A/B-Redundancy Update tool Version 1.2 enabling A/B redundancy A/B Redundancy has been enabled. # Installation $ sudo /usr/sbin/nv_update_engine --install no-reboot Nvidia A/B-Redundancy Update tool Version 1.2 current slot 0 Start updating slot 1 Tegra User Block Device: /dev/disk/by-partlabel Tegra Boot Block Device: /dev/mmcblk0boot0 HEADER: MAGIC NVIDIA__BLOB__V2 HEX_VALUE 131072 BLOB_SIZE 39628682 HEADER_SIZE 48 NUMBER_OF_ELEMENTS 17 HEADER_TYPE 0 UNCOMP_SIZE 39628682 MB1_RATCHET_LV 0 MTS_RATCHET_LV 0 ROLLBACK_FUSE_LV 0 config COMPATIBLE_SPEC not found in /etc/nv_boot_control.conf Device TN Spec: 3489-300-0888-K.0-1-0-jb01-jasmine-mmcblk0p1 config COMPATIBLE_SPEC not found in /etc/nv_boot_control.conf Device TN Spec: 3489-300-0888-K.0-1-0-jb01-jasmine-mmcblk0p1 Device is fused board. ENTRY_TABLE: PART POS LEN VER TNSPEC TYPE UPDATABLE bpmp-fw 2088 533904 2 1 1 sce-fw 535992 125568 2 1 1 cpu-bootloader 661560 285232 2 1 1 mb2 946792 117600 2 0 1 spe-fw 1064392 95984 2 0 1 secure-os 1160376 366400 2 1 1 mb1 1526776 99664 2 2 1 mts-bootpack 1626440 2082144 2 1 1 mts-preboot 3708584 63104 2 0 1 sc7 3771688 23632 2 1 1 bpmp-fw-dtb 3795320 315392 2 3489-300---1-0-jb01-jasmine-mmcblk0p1 1 1 bootloader-dtb 4110712 357440 2 3489-300---1-0-jb01-jasmine-mmcblk0p1 1 1 VER 4468152 98 2 3489-300---1-0-jb01-jasmine-mmcblk0p1 0 1 BCT 4468250 3584 2 3489-300---1-0-jb01-jasmine-mmcblk0p1 2 1 MB1_BCT 4471834 50592 2 3489-300---1-0-jb01-jasmine-mmcblk0p1 0 1 kernel 4522426 34748816 2 1 1 kernel-dtb 39271242 357440 2 3489-300---1-0-jb01-jasmine-mmcblk0p1 1 1 Saving Entry table to /opt/ota_package/entry_table Writing 533904 bytes to /dev/disk/by-partlabel/bpmp-fw_b for bpmp-fw Writing 125568 bytes to /dev/disk/by-partlabel/sce-fw_b for sce-fw Writing 285232 bytes to /dev/disk/by-partlabel/cpu-bootloader_b for cpu-bootloader mb2 write: slot = 1 offset = 1276928 bytes = 117600 spe-fw write: slot = 1 offset = 883712 bytes = 95984 Writing 366400 bytes to /dev/disk/by-partlabel/secure-os_b for secure-os Writing 2082144 bytes to /dev/disk/by-partlabel/mts-bootpack_b for mts-bootpack mts-preboot write: slot = 1 offset = 1801216 bytes = 63104 Writing 23632 bytes to /dev/disk/by-partlabel/sc7_b for sc7 Writing 315392 bytes to /dev/disk/by-partlabel/bpmp-fw-dtb_b for bpmp-fw-dtb Writing 357440 bytes to /dev/disk/by-partlabel/bootloader-dtb_b for bootloader-dtb VER write: slot = 1 offset = 4063232 bytes = 98 MB1_BCT write: slot = 1 offset = 622592 bytes = 50592 Writing 34748816 bytes to /dev/disk/by-partlabel/kernel_b for kernel Writing 357440 bytes to /dev/disk/by-partlabel/kernel-dtb_b for kernel-dtb Update successful Setting slot 1 as active boot slot