This is the multi-page printable view of this section. Click here to print.
Reference
1 - Command line
Jumpstarter today comes as a commandline tool that allows you to interact with the test-harness via the driver architecture.
Jumpstarter CLI
Most commands accept a
device-id
. A
device-id
can be either
the
serial
number of the device, or the
device name
.
All commands accept the following flags
-d, --driver string Only devices for the specified driver
-h, --help help for jumpstarter
GENERAL COMMANDS
list-devices
This command will list all the devices that are currently available throught the various test-harness drivers.
$ jumpstarter list-devices
Device Name Serial Number Driver Version Device Tags
orin-agx-00 e6058a05 dutlink-board 0.05 /dev/ttyACM2 orin-agx, orin, 64gb
xavier-nx-00 e6058905 dutlink-board 0.04 /dev/ttyACM1 nvidia, xavier-nx, nvidia-xavier, arm64, 8gb
visionfive2-00 031da453 dutlink-board 0.04 /dev/ttyACM0 rv64gc, rv64, jh7110, visionfive2, 8gb
list-drivers
This command lists all the drivers that are currently available.
$ jumpstarter list-drivers
dutlink-board
OpenSource HIL USB harness (https://github.com/jumpstarter-dev/dutlink-board)
enables the control of Edge and Embedded devices via USB.
It has the following capabilities: power metering, power cycling, and serial console
access, and USB storage switching.
run-script script.yaml
This is probably the most useful jumpstarter command today. It runs a jumpstarter script, which will select a device based on the selector tags, and execute all the steps of the script. Once finished or if an error occurs the cleanup section of the script will be run.
$ jumpstarter run-script script.yaml
See the scripting section for a detailed guide on how to write
scripts and examples.set-control device-id
Set a control signal from the test-harness to the device. This is used to control signals on the DUT or trigger external hardware like video generators, simulated sensors, fault injectors, or other necessary devices.
$ jumpstarter set-control orin-agx-00 A LOW
The signal names and output modes depend on the test-harness being used. See the dutlink-board section for more details.
STORAGE MANAGEMENT
set-disk-image device-id
Set the disk image to be used for the DUT. This is used to write the disk image to the DUT’s attacheable storage device. Images can be a raw disk image or an ISO image.
$ jumpstarter set-disk-image orin-agx-00 my-system-image.raw
Flags:
-o, --offset-gb uint Offset in GB to write the image to in the disk
You can limit or filter the devices found by jumpstarter for image writing by using the storage_filter config. This configuration is stored into the test harness board and will be used by jumpstarter to filter the devices found.
i.e. for using only /dev/disk/by-id/usb-SanDisk_Extreme_Pro_52A456790D93-0:0
you could set:
jumpstarter set-config device-id storage_filter Extreme_Pro_52A456790D93-0:0
This is also useful if your USB disk exposes multiple sub-devices.
attach-storage device-id
This command attaches the storage device to the DUT. This is normally required to boot the DUT.
$ jumpstarter attach-storage orin-agx-00
πΎ Attaching storage for orin-agx-00 ... done
detach-storage device-id
This command detaches the storage device to the DUT.
$ jumpstarter detach-storage orin-agx-00
πΎ Detaching storage for orin-agx-00 ... done
POWER MANAGEMENT
power on|off|force-on|force-off|rescue device-id [-t] [-r] [-a]
This command manipulates the power status of a device
i.e.:
$ jumpstarter power off orin-agx-00
π Powering off orin-agx-00... done
The different power actions available are:
Action | Description |
---|---|
on | Power on the device using the power_on profile from configuration |
off | Power off the device using the power_off profile from configuration |
force-on | Power on the device using only power, ignoring the profile from configuration |
force-off | Power off the device using only power, ignoring the profile from configuration |
rescue | Power on the device using the power_rescue profile from configuration |
Flags:
-a, --attach-storage Attach storage before powering on
-t, --console Open console terminal after powering on
-r, --reset Reset device after power up
For information on how to configura the power profiles (power_on, power_off, power_rescue), please see the set-config section.
reset device-id
Use the reset signal on the device to reset it, only open drain signal is supported (pulling low + high impedance) at this time.
$ jumpstarter reset orin-agx-00
β‘ Toggling reset on orin-agx-00
DEVICE CONSOLE
console device-id
This command provides a serial console to the DUT, it will connect to the serial console of the DUT and allow you to interact with it.
$ jumpstarter console orin-agx-00
Looking up for out-of-band console: TOPOD83B461B-if01
π» Entering console: Press Ctrl-B 3 times to exit console
[0000.219] I> FUSE_OPT_PVA_DISABLE = 0x00000000
...
...
...
create-ansible-inventory device-id
This command interacts with the console of the DUT which must be logged in with a user andcreates an ansible inventory file for the DUT. This ansible inventory can be used to run ansible playbooks against the DUT.
$ jumpstarter create-ansible-inventory orin-agx-00
This command accepts the following extra flags:
Flags:
-k, --ssh-key string The ssh key to use for the ansible inventory file
-u, --user string The user for the ansible inventory file (default "root")
run device-id command
Sends a string via the serial console to the DUT and waits for a response which is then written to stdout.
$ ./jumpstarter/jumpstarter run orin-agx-00 "ls -la"
Looking up for out-of-band console: TOPOD83B461B-if01
total 24
dr-xr-x---. 6 root root 168 Sep 22 14:08 .
dr-xr-xr-x. 19 root root 248 Sep 22 14:01 ..
drwx------. 3 root root 17 Sep 22 14:06 .ansible
-rw-------. 1 root root 325 Sep 22 14:09 .bash_history
-rw-r--r--. 1 root root 18 Aug 10 2021 .bash_logout
-rw-r--r--. 1 root root 141 Aug 10 2021 .bash_profile
-rw-r--r--. 1 root root 429 Aug 10 2021 .bashrc
-rw-r--r--. 1 root root 100 Aug 10 2021 .cshrc
drwx------. 3 root root 26 Sep 22 14:08 .nv
drwx------. 2 root root 29 Sep 22 14:01 .ssh
-rw-r--r--. 1 root root 129 Aug 10 2021 .tcshrc
drwxr-xr-x. 2 root root 116 Sep 22 14:09 artifacts
[root@localhost ~]#
$
In the above example the system had already been logged in via the console.
Flags:
-w, --wait int Wait seconds before trying to get a response (default 2)
CONFIGURATION
set-name device-id name
Changes device name. This is used to set a name for the test-harness device. This should make devices easier to identify.
$ jumpstarter set-name e6058a05 orin-agx-00
β Changing device name for e6058a05 to orin-agx-00 ... done
set-tags device-id tag1 [tag2 …]
Changes device tags, pass one argument per tag. This is used to set tags for the test-harness device which can be used to select specific devices from a script or some commands.
$ jumpstarter set-name orin-agx-00 orin-agx orin 64gb
β Changing device name for orin-agx-00 to orin-agx ... done
get-config device-id [key]
Shows the device configuration parameters stored on the test-harness board. If a key is provided only the value for that key will be shown.
$ ./jumpstarter get-config orin-nx-00 power_on
p1,bL,w5,bZ
Otherwise a yaml list of all parameters will be shown.
$ ./jumpstarter get-config orin-nx-00
name: orin-nx-00
tags: orin-nx-00,orin,orin-nx,16gb
json:
usb_console:
power_on: p1,bL,w5,bZ
power_off: p1,bL,w5,bZ,w10,bL,w110,bZ
power_rescue: p1,bL,w1,bZ,w1,aL,rL,w1,rZ,w1,aZ
set-config device-id key value
Changes a device configuration config parameter (see get-config).
if values is "" the config will be deleted.
usb_console config parameter
Changes device name for out of band USB console. Some devices expose a console only via USB and the console is not accessible via pins. This command allows you to set a matching string for the USB console of the device.
Jumpstarter will try to find the USB console device by matching the string provided with this command when trying to communicate with the device via the console.
$ jumpstarter set-usb-console orin-agx-00 TOPOD83B461B-if01
β Changing usb_console name for orin-agx-00 to TOPOD83B461B-if01 ... done
power_on/off/recue parameters
These parameters are used to configure the power sequences, they are a comma separated list of commands to be executed by the test-harness board to perform the power on/off/rescue of the device.
The commands are:
- p1: power enable
- p0: power disable
- aL: pin A low
- aH: pin A high
- aZ: pin A high impedance
- bL: pin B low
- …
- rL: pin RESET low
- rH: pin RESET high
- rZ: pin RESET high impedance
- wN: wait N*100 ms, where N is a natural number.
Some examples of configuration for orin-nx/orin-agx devkit boards:
Touch power button for 500ms:
power_on: p1,bL,w5,bZ
Touch power button for 500ms (to make sure we start from ON), then touch for 11s.
power_off: p1,bL,w5,bZ,w10,bL,w110,bZ
Touch power button for 500ms (to make sure we start from ON), then assert A (recovery), then assert the reset signal, and wait 500ms, then deassert reset, wait 500ms, deassert A (recovery). This should put the jetson device into recovery mode.
power_rescue: p1,bL,w5,bZ,w1,aL,rL,w5,rZ,w5,aZ
where pin A is “REC” and pin B is “PWR” on the orin-agx/orin-nx boards.
2 - Jumpstarter scripts
Jumpstarter scripts come in yaml form. They are used to describe the steps to be taken to deploy a project into an Edge system and perform console interactions with it.
Using a script
Scripts can be executed using the run-script
command,
a script has a selector to pickup an available device connected
to the jumpstarter host. The selector
specifies all the tags the device must have.
$ jumpstarter run-script script.yaml
Jumpstarter will fail if there are no available devices with the specified tags.
i.e.:
$ jumpstarter list-devices
Device Name Serial Number Driver Version Device Tags
orin-nx-00 e605c805 dutlink-board 0.05 /dev/ttyACM2 orin-nx, orin, 16gb
xavier-nx-00 e6058905 dutlink-board 0.04 /dev/ttyACM1 nvidia, xavier-nx, nvidia-xavier, arm64, 8gb
visionfive2-00 031da453 dutlink-board 0.04 /dev/ttyACM0 rv64gc, rv64, jh7110, visionfive2, 8gb
if we run one of the examples available in the jumpstarter repository we should see:
$ sudo jumpstarter run-script script-examples/orin-agx.yaml
β Using device "orin-nx-00" with tags [orin-nx orin 16gb]
β€ Powering off and writing the image to disk
β€ Step β€ power: "off"
[β] done
β€ Step β€ set-disk-image
π Detecting USB storage device and connecting to host: done
π rhel-guest-image.raw -> /dev/disk/by-id/usb-SanDisk_Extreme_Pro_52A456790D93-0:0 offset 0x0:
πΎ 1280 MB copied 289.22 MB/s
...
Please note the call via sudo. Jumpstarter needs access to block storage devices and serial ports. While
serial port access can be granted adding the user to the dialout
group, block storage access requires
root privileges.
This command is typically used from CI scripts, storing an image building and a jumpstarter script along your software project.
Script structure
name: "Name of your script"
selector:
- tag
expect-timeout: 60
steps:
- ....
cleanup:
- ....
A script has a name, a selector, and a expect-timeout as main fields:
Field | Description |
---|---|
name | Just a descriptive name for the script |
selector | A list of tags to find a compatible board from those available on the host |
expect-timeout | This is the default timeout for expect steps |
Script step commands
- comment
This is the simplest, will print a comment into the console during execution.
steps:
- comment: "Powering off and writing the image to disk"
results in:
β€ Powering off and writing the image to disk
- pause
This command pauses execution for the specified amount of seconds.
steps:
- pause: 5
results in:
β€ Step β€ pause: 5
[β] done
- power
Enables power control of the device, accepted orders are:
- on
- off
- cycle : power off and on again
steps:
- power: "on"
results in:
β€ Step β€ power: "on"
[β] done
- reset
Toggles the /RESET line of the dutlink-board, this will reset the DUT.
steps:
- reset:
time_ms: 500
results in:
β€ Step β€ reset
Resetting device...
[β] done
- set-disk-image
Writes a disk image into the storage device attached to jumpstarter in connector J9.
It accepts multiple parameters:
Parameter | Description |
---|---|
image | The image .iso/.raw that must be in a bootable format for the DUT |
attach_storage | true/false bool, if we want to attach the storage right away |
offset_gb | if we want to store the image at an specific offset of the disk (in GB) |
i.e.:
steps:
- set-disk-image:
image: "rhel-image.raw"
results in:
β€ Step β€ set-disk-image
π Detecting USB storage device and connecting to host: done
π rhel-image.raw -> /dev/disk/by-id/usb-SanDisk_Extreme_Pro_52A456790D93-0:0 offset 0x0:
πΎ 10240 MB copied 287.80 MB/s
[β] done
- storage
Allows attaching or detaching the USB storage from the DUT.
Accepted orders are:
- attach
- detach
i.e.:
steps:
- storage: attach
results in:
β€ Step β€ storage: "attach"
[β] done
- expect
Waits for a string to be received before continuing to next steps. It accepts multiple parameters:
Parameter | Description |
---|---|
this | The string we are expecting on the console before we can continue |
echo | true/false bool, if we want to echo the received data, useful for debugging and logging |
timeout | seconds to wait for the expected string before failure, it defaults to expect-timeout from the script yaml |
debug_escapes | true/false bool, transforms ESC terminal control sequences into text to avoid terminal manipulation |
i.e.:
steps:
- expect:
this: "login: "
debug_escapes: true
timeout: 300
echo: true
could result in:
β€ Step β€ expect: "login: "
....
....
<ESC>[0;1;39mRotate log files
<ESC>[0m.
[ 44.674563] block sda: the capability attribute has been deprecated.
[ 44.678058] WARNING! power/level is deprecated; use power/control instead
Red Hat Enterprise Linux 9.3 (Plow)
Kernel 5.14.0-362.8.1.el9_3.aarch64 on an aarch64
Activate the web console with: systemctl enable --now cockpit.socket
localhost login:
β€ Step β€ ...
- send
Sends a list of strings to the device one after another with a delay between them. It accepts multiple parameters:
Parameter | Description |
---|---|
this | The list of strings to be sent to the device |
delay_ms | millisecond delay between strings. Defaults to 100ms |
echo | true/false bool, if we want to echo the received data, useful for debugging and logging; but consumes output that could be needed in a later expect command (bug) |
debug_escapes | true/false bool, transforms ESC terminal control sequences into text to avoid terminal manipulation |
i.e.:
steps:
- send:
this:
- "root\n"
- "password\n"
echo: true
could result in:
β€ Step β€ send
sent: root
root
Password:
sent: password
β€ Step ...
strings can contain any of the following sequences and they will be converted
into the corresponding control characters:
<ESC>
, <F1>
, <F2>
, <F3>
, <F4>
, <F5>
, <F6>
, <F7>
, <F8>
, <F9>
, <F10>
, <F11>
,
<UP>
, <DOWN>
, <LEFT>
, <RIGHT>
, <ENTER>
, <TAB>
, <BACKSPACE>
, <DELETE>
,
<CTRL-A>
, <CTRL-B>
, <CTRL-C>
, <CTRL-D>
, <CTRL-E>
- write-ansible-inventory
This action assumes that the serial console is past login and it is ready to be used. It will create an ansible inventory file for the DUT. This ansible inventory can be used to run ansible playbooks against the DUT, as long as the DUT is connected to a shared network with the jumpstarter host.
It accepts multiple parameters:
Parameter | Description |
---|---|
filename | The filename for the ansible inventory file, defaults to inventory |
ssh_key | The ssh key to use for the ansible inventory file, defaults to ~/.ssh/id_rsa |
user | The user for the ansible inventory file, defaults to root |
i.e.:
- write-ansible-inventory:
filename: "inventory.yaml"
ssh_key: ~/.ssh/id_rsa
would look like:
β€ Step β€ write-ansible-inventory
written : inventory.yaml
and the inventory file would look like:
---
boards:
hosts:
orin-nx-00:
ansible_host: 192.168.1.138
ansible_user: root
ansible_become: yes
ansible_ssh_common_args: '-o StrictHostKeyChecking=no'
ansible_ssh_private_key_file: ~/.ssh/id_rsa
- local-shell
This command runs scripts on the local shell where jumpstarter is running.
i.e.:
- local-shell:
script: |
ansible -m ping -i inventory.yaml all
would look like:
β€ Step β€ local-shell
+ ansible -m ping -i inventory.yaml all
orin-nx-00 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
If you had previously generated an inventory with write-ansible-inventory.
3 - Script examples
The jumpstarter scripting language allows automation of the test process.
The following example is a script that will deploy a RHEL image that has been built for the device, it contains a set of kernel modules that need testing, and an updated kernel in a local repository.
It can be ran as follows:
$ sudo jumpstarter run-script script-examples/orin-agx.yaml
name: "Test Jetson kmods"
selector:
- orin
expect-timeout: 60
steps:
- comment: "Powering off and writing the image to disk"
- power: off
- set-disk-image:
image: "rhel-guest-image.raw"
- storage: attach
- comment: "Booting up and waiting for login prompt"
- power: on
- expect:
this: "login: "
debug_escapes: true
timeout: 250
- send:
this:
- "root\n"
- "redhat\n"
- pause: 3
- expect:
this: "[root@localhost ~]#"
debug_escapes: false
- comment: "Updating kernel if necessary and installing the jetpack kmods"
- send:
echo: true
this:
- "sudo dnf update -y\n"
- expect:
timeout: 120
echo: true
debug_escapes: false
this: "Complete"
- expect:
debug_escapes: false
this: "[root@localhost ~]#"
- send:
echo: true
this:
- "sudo dnf install -y nvidia-jetpack-kmod\n"
- expect:
timeout: 120
echo: true
debug_escapes: false
this: "Complete"
- comment: "Rebooting to get latest kernel and kmods"
- send:
debug_escapes: false
this:
- "reboot\n"
- expect:
this: "login: "
debug_escapes: false
timeout: 300 # the kmod boot takes very long because of some issues with the crypto modules from nvidia
- send:
this:
- "root\n"
- "redhat\n"
- send:
echo: false # we dont want to capture any of the output so expect will catch it later
this:
- "\n"
- "\n"
- expect:
debug_escapes: false
echo: true
this: "[root@localhost ~]#"
- comment: "verifying that the kmods are loaded"
- send:
echo: false # we dont want to capture any of the output so expect will catch it
this:
- "lsmod | grep --color=never nv\n"
- expect:
echo: true
this: "nvgpu"
- comment: "Creating an inventory for this device and continuing with ansible"
- write-ansible-inventory:
filename: "inventory.yaml"
ssh_key: ~/.ssh/id_rsa
- local-shell:
script: |
ansible -m ping -i inventory.yaml all
cleanup:
- comment: "Powering off and detaching the disk"
- send:
debug_escapes: false
this:
- "poweroff\n"
- pause: 5
- power: off
- storage: detach
The output for this script would look as follows:
$ sudo ./jumpstarter set-disk-image visionfive2-00 rhel-guest-image.raw
πΎ Writing disk image for visionfive2-00
π Detecting USB storage device and connecting to host: <c^C
[gitlab-runner@localhost jumpstarter]$ ^C
[gitlab-runner@localhost jumpstarter]$ sudo ./jumpstarter run-script script-examples/orin-agx.yaml
β Using device "orin-nx-00" with tags [orin-nx-00 orin orin-nx 16gb]
β€ Powering off and writing the image to disk
β€ Step β€ power: "off"
[β] done
β€ Step β€ set-disk-image
π Detecting USB storage device and connecting to host: done
π rhel-guest-image.raw -> /dev/disk/by-id/usb-SanDisk_Extreme_Pro_52A456790D93-0:0 offset 0x0:
πΎ 10240 MB copied 272.79 MB/s
[β] done
β€ Step β€ storage: "attach"
[β] done
β€ Booting up and waiting for login prompt
β€ Step β€ power: "on"
[β] done
β€ Step β€ expect: "login: "
040000 (0xe580)
[0000.414] I> RAM_CODE 0x4000401
[0000.420] I> RAM_CODE 0x4000401
[0000.423] I> Task: Load Page retirement list (0x500115dd)
[0000.429] I> Task: SDRAM params override (0x50012279)
[0000.433] I> Task: Save mem-bct info (0x5001542d)
[0000.438] I> Task: Carveout allocate (0x50015315)
...
...
...... Booting `Red Hat Enterprise Linux (5.14.0-362.6.1.el9_3.aarch64) 9.3
(Plow)'
EFI stub: Booting Linux Kernel...
EFI stub: Using DTB from configuration table
EFI stub: Exiting boot services...
[ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd421]
[ 0.000000] Linux version 5.14.0-362.6.1.el9_3.aarch64 (mockbuild@arm64-026.build.eng.bos.redhat.com) (gcc (GCC) 11.4.1 20230605 (Red Hat 11.4.1-2), GNU ld version 2.35.2-42.el9) #1 SMP PREEMPT_DYNAMIC Fri Sep 29 13:05:29 EDT 2023
...
...
localhost login:
β€ Step β€ send
sent: root
root
Password:
sent: redhat
β€ Step β€ pause: 3
[β] done
β€ Step β€ expect: "[root@localhost ~]#"
[root@localhost ~]#
β€ Updating kernel if necessary and installing the jetpack kmods
β€ Step β€ send
sent: sudo dnf update -y
sudo dnf update -y
<ESC>[?2004l
β€ Step β€ expect: "Complete"
jetson-packages 3.1 MB/s | 519 kB 00:00
Dependencies resolved.
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
kernel aarch64 5.14.0-362.8.1.el9_3 jetson-packages 5.1 M
kernel-core aarch64 5.14.0-362.8.1.el9_3 jetson-packages 18 M
kernel-modules aarch64 5.14.0-362.8.1.el9_3 jetson-packages 23 M
kernel-modules-core aarch64 5.14.0-362.8.1.el9_3 jetson-packages 26 M
Transaction Summary
================================================================================
Install 4 Packages
Total size: 73 M
Installed size: 110 M
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : kernel-modules-core-5.14.0-362.8.1.el9_3.aarch64 1/4
Installing : kernel-core-5.14.0-362.8.1.el9_3.aarch64 2/4
Running scriptlet: kernel-core-5.14.0-362.8.1.el9_3.aarch64 2/4
Installing : kernel-modules-5.14.0-362.8.1.el9_3.aarch64 3/4
Running scriptlet: kernel-modules-5.14.0-362.8.1.el9_3.aarch64 3/4
Installing : kernel-5.14.0-362.8.1.el9_3.aarch64 4/4
Running scriptlet: kernel-modules-core-5.14.0-362.8.1.el9_3.aarch64 4/4
Running scriptlet: kernel-core-5.14.0-362.8.1.el9_3.aarch64 4/4
Running scriptlet: kernel-modules-5.14.0-362.8.1.el9_3.aarch64 4/4
Running scriptlet: kernel-5.14.0-362.8.1.el9_3.aarch64 4/4
Verifying : kernel-5.14.0-362.8.1.el9_3.aarch64 1/4
Verifying : kernel-core-5.14.0-362.8.1.el9_3.aarch64 2/4
Verifying : kernel-modules-5.14.0-362.8.1.el9_3.aarch64 3/4
Verifying : kernel-modules-core-5.14.0-362.8.1.el9_3.aarch64 4/4
Installed:
kernel-5.14.0-362.8.1.el9_3.aarch64
kernel-core-5.14.0-362.8.1.el9_3.aarch64
kernel-modules-5.14.0-362.8.1.el9_3.aarch64
kernel-modules-core-5.14.0-362.8.1.el9_3.aarch64
Complete
β€ Step β€ expect: "[root@localhost ~]#"
!
[root@localhost ~]#
β€ Step β€ send
sent: sudo dnf install -y nvidia-jetpack-kmod
sudo dnf install -y nvidia-jetpack-kmod
<ESC>[?2004l
β€ Step β€ expect: "Complete"
Last metadata expiration check: 0:01:02 ago on Wed Oct 11 09:39:12 2023.
Dependencies resolved.
==========================================================================================
Package Arch Version Repository Size
==========================================================================================
Installing:
nvidia-jetpack-kmod aarch64 6.0.0_pre_ea_5.14.0_362-3.el9_3 jetson-packages 47 M
Installing dependencies:
nvidia-jetpack-firmware aarch64 6.0.0_pre_ea-3.el9 jetson-packages 659 k
nvidia-jetpack-modprobe aarch64 6.0.0_pre_ea-3.el9 jetson-packages 12 k
Transaction Summary
==========================================================================================
Install 3 Packages
Total size: 48 M
Installed size: 318 M
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : nvidia-jetpack-modprobe-6.0.0_pre_ea-3.el9.aarch64 1/3
Installing : nvidia-jetpack-firmware-6.0.0_pre_ea-3.el9.aarch64 2/3
Installing : nvidia-jetpack-kmod-6.0.0_pre_ea_5.14.0_362-3.el9_3. 3/3
Running scriptlet: nvidia-jetpack-modprobe-6.0.0_pre_ea-3.el9.aarch64 3/3
Running scriptlet: nvidia-jetpack-kmod-6.0.0_pre_ea_5.14.0_362-3.el9_3. 3/3
Verifying : nvidia-jetpack-firmware-6.0.0_pre_ea-3.el9.aarch64 1/3
Verifying : nvidia-jetpack-kmod-6.0.0_pre_ea_5.14.0_362-3.el9_3. 2/3
Verifying : nvidia-jetpack-modprobe-6.0.0_pre_ea-3.el9.aarch64 3/3
Installed:
nvidia-jetpack-firmware-6.0.0_pre_ea-3.el9.aarch64
nvidia-jetpack-kmod-6.0.0_pre_ea_5.14.0_362-3.el9_3.aarch64
nvidia-jetpack-modprobe-6.0.0_pre_ea-3.el9.aarch64
Complete
β€ Rebooting to get latest kernel and kmods
β€ Step β€ send
sent: reboot
!
reboot
β€ Step β€ expect: "login: "
[root@localhost ~]# reboot
[root@localhost ~]#
Red Hat Enterprise Linux 9.3 (Plow)
Kernel 5.14.0-362.8.1.el9_3.aarch64 on an aarch64
Activate the web console with: systemctl enable --now cockpit.socket
localhost login:
β€ Step β€ send
sent: root
root
Password:
sent: redhat
β€ Step β€ send
sent:
sent:
β€ Step β€ expect: "[root@localhost ~]#"
Last login: Wed Oct 11 09:39:04 on ttyTCU0
[root@localhost ~]#
β€ verifying that the kmods are loaded
β€ Step β€ send
sent: lsmod | grep --color=never nv
β€ Step β€ expect: "nvgpu"
<ESC>[?2004l
<ESC>[?2004h[root@localhost ~]#
<ESC>[?2004l
<ESC>[?2004h[root@localhost ~]# lsmod | grep --color=never nv
nvgpu[?2004l
β€ Creating an inventory for this device and continuing with ansible
β€ Step β€ write-ansible-inventory
written : inventory.yaml
β€ Step β€ local-shell
+ ansible -m ping -i inventory.yaml all
orin-nx-00 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
β€ Cleanup β€ Test Jetson kmods
β€ Powering off and detaching the disk
β€ Step β€ send
sent: poweroff
poweroff
[root@localhost ~]#
Stopping Session 1 of User root...
Stopping Session 3 of User root...
β€ Step β€ pause: 5
[β] done
β€ Step β€ power: "off"
[β] done
β€ Step β€ storage: "detach"
[β] done