デバイスツリーを変更する¶
概要¶
EDGEPLANT T1はNVIDIA L4Tをベースに開発されており、L4Tと同様にハードウェアの情報はデバイスツリー1 上に記載されています。 EDGEPLANT T1に標準搭載されているデバイスの挙動を変更したい場合や、新規にデバイスを接続する場合は、デバイスツリーを変更する必要があります。
事前準備¶
Device Tree Compiler(dtc)のインストール 2
$ sudo apt install device-tree-compiler
aptpod L4T Driver Package (BSP) の用意
詳細は OSを新規インストールする を参照してください。
- 2
EDGEPLANT T1にはデフォルトでインストールされています。
手順¶
L4TのDevice Tree Blob(DTB)ファイルは、kernel-dtbパーティションに暗号化されて配置されているため、変更する場合は以下の手順が必要です。
DTBファイルをDevice Tree Source(DTS)ファイルに変換します。
$ dtc -I dtb -O dts -o tegra186-aptpod-jb01-jasmine.dts tegra186-aptpod-jb01-jasmine.dtb
DTBファイルは以下の場所に配置されています。
対象
パス
ターゲットマシン
/boot/dtb/tegra186-aptpod-jb01-jasmine.dtb
L4T Driver Package(BSP)
Linux_for_Tegra/kernel/dtb/tegra186-aptpod-jb01-jasmine.dtb
DTSファイルに任意の変更を加えます。
変更したDTSファイルを、DTBファイルに再変換します。
$ dtc -I dts -O dtb -o tegra186-aptpod-jb01-jasmine.dtb tegra186-aptpod-jb01-jasmine.dts
暗号化されたdtbファイルを作成します。
<work directory>
は、BSPのインストール時に作成したディレクトリです。$ sudo cp tegra186-aptpod-jb01-jasmine.dtb <work directory>/Linux_for_Tegra/kernel/dtb/ $ cd <work directory>/Linux_for_Tegra $ sudo ./flash.sh --no-flash -k kernel-dtb jb01-jasmine mmcblk0p1 [ 0.0236 ] Signed file: /home/jasmine/nvidia/Linux_for_Tegra/bootloader/tegra186-aptpod-jb01-jasmine_sigheader.dtb.encrypt *** tegra186-aptpod-jb01-jasmine.dtb has been signed successfully. ***
作成した暗号化DTBファイルを用いて、ターゲット上のDTBを差し替えます。 現在のRootfsスロットに対応したパーティションに書き込んでください。
slot 0: /dev/mmcblk0p30
slot 1: /dev/mmcblk0p31
# Checking rootfs slot $ sudo nvbootctrl get-current-slot 0 # Checking partition $ ls -al /dev/disk/by-partlabel/ | grep kernel-dtb lrwxrwxrwx 1 root root 16 Jan 28 2018 kernel-dtb -> ../../mmcblk0p30 // for slot 0 lrwxrwxrwx 1 root root 16 Jan 28 2018 kernel-dtb_b -> ../../mmcblk0p31 // for slot 1 # Updating (e.g. slot 0) $ sudo dd if=./tegra186-aptpod-jb01-jasmine_sigheader.dtb.encrypt of=/dev/mmcblk0p30 698+0 records in 698+0 records out 357376 bytes (357 kB, 349 KiB) copied, 0.031662 s, 1 # Rebooting $ sudo systemctl reboot