Professional Documents
Culture Documents
Wind River Linux Distro Quick Start 2024 01 2024-06-05-19-44-24
Wind River Linux Distro Quick Start 2024 01 2024-06-05-19-44-24
Wind River Linux Distro Quick Start 2024 01 2024-06-05-19-44-24
01
All rights reserved. No part of this publication may be reproduced or transmitted in any form or by any means without the
prior written permission of Wind River Systems, Inc.
Wind River, Simics, Tornado, and VxWorks are registered trademarks of Wind River Systems, Inc. Helix, Pulsar, Rocket,
Titanium Cloud, Titanium Control, Titanium Core, Titanium Edge, Titanium Edge SX, Titanium Server, and the Wind River logo
are trademarks of Wind River Systems, Inc. Any third-party trademarks referenced are the property of their respective owners.
For further information regarding Wind River trademarks, please see:
www.windriver.com/company/terms/trademark.html
This product may include software licensed to Wind River by third parties. Relevant notices (if any) are provided for your
product on the Wind River download and installation portals:
https://delivers.windriver.com/
https://windshare.usa.windriver.com/
Wind River may refer to third-party documentation by listing publications or providing links to third-party websites for
informational purposes. Wind River accepts no responsibility for the information provided in such third-party documentation.
Corporate Headquarters
Wind River
500 Wind River Way
Alameda, CA 94501-1153
U.S.A.
Toll free (U.S.A.): +1-800-545-WIND
Telephone: +1-510-748-4100
Facsimile: +1-510-749-2010
www.windriver.com
www.windriver.com/support
TABLE OF CONTENTS
5. Release Information. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Wind River Linux Distro is a binary Linux distribution intended for users that want a predefined distribution and the convenience of
binary images and packages. It brings together two open-source projects, CoreOS Project and Yocto Project technology.
The Yocto Project through Wind River Linux LTS 23 is used to build software packages, and the application development SDK.
Generic hardware support is defined for x86-64 and Aarch64 now, and Risc-V in a future release, providing one user space for each
supported architecture.
Tools from the CoreOS project are used to assemble packages into images, install images to targets, provide the ability to customize
installed software on targets, and to keep targets up to date.
CoreOS is part of the Fedora project. CoreOS tools are used to secure, simplify, and automate a user's infrastructure. The following is
a list of tools used with Wind River Linux Distro:
• rpm-ostree - Hybrid image / package system. Combines libostree and libdnf which allows for users to either use ostree images
or package management approaches to expand or upgrade systems.
• ignition - Low level tool to manipulate disks and the initramfs during install and first boot. Ignition configuration can be applied
in a wide variety of ways.
• butane - Translates human readable Butane configurations into machine readable Ignition configurations. Butane is typically
available as a container for ease of use.
• bootupd - Distribution-independent updates for bootloaders.
• coreos-installer - CoreOS installer. This is typically run in a container or from a live image. In addition to completing installs, it
can also:
- Download and verify an operating system image.
- List images available for download.
- Embed an Ignition config in a live ISO image to customize the running system that boots from it.
- Wrap an Ignition config in an initrd image that can be appended to the live PXE initramfs to customize the running
system that boots from it.
For product details and changes specific to this release, see Release Information on page 15.
This document assists in getting your device or virtual machine booted with Wind River Linux Distro. Once your Wind River Linux
Distro target system or virtual machine is up and running, you can optionally install and use the SDK for application development.
Prerequisites
Before you get started, you must have:
• A Linux host with Docker Engine installed and configured to allow non-privileged users to run Docker commands.
• If running Distro in a virtual machine a minimum of 16GB of RAM and QEMU installed, preferably with support for non-
privileged users to access /dev/kvm.
• Internet access to download the images and perform updates on the deployed system.
• Intermediate knowledge of Linux and the command line. This includes running commands, installing packages, and editing
project configuration files.
Workflow
The workflow for getting your Wind River Linux Distro binary images up and running is as follows:
• Download the image file. For details, see Downloading Wind River Linux Distro and the CoreOS Installer on page 3.
• Generate the Ignition configuration file. For details, see Generating Ignition Configuration on page 6.
• Boot the Wind River Linux Distro image on hardware or with QEMU.
- Booting Up the Target System Image on Hardware on page 7
For Aarch64 images, you will also need to create a bootloader to boot the image as described in Creating a Bootloader
for Aarch64 Images on page 10.
- Booting Up the x86-64 Target System Image with QEMU on page 9
- Prepare the image for updates with the DNF Pakage Manager. For details, see Preparing Distro Images for Package
Updates on page 13.
This step is required for all Wind River Linux Distro images, regardless of architecture.
You must have a supported Linux development host with Docker installed.
Procedure
2. Download Wind River Linux Distro with a Wind River coreos-installer container.
Option Description
3| Documentation Downloading Wind River Linux Distro and the CoreOS Installer
Wind River Linux Distro Quick Start 2024.01
Option Description
3. Optionally verify the raw image file and signature file exist.
Both the raw image file and its matching signature file must be present.
Option Description
x86-64
$ ls -1
wr-distro-23.20240109.3.0-metal.x86_64.raw.xz
wr-distro-23.20240109.3.0-metal.x86_64.raw.xz.sig
Aarch64
$ ls -1
wr-distro-23.20240109.3.0-metal.aarch64.raw.xz
wr-distro-23.20240109.3.0-metal.aarch64.raw.xz.sig
4| Documentation Downloading Wind River Linux Distro and the CoreOS Installer
Wind River Linux Distro Quick Start 2024.01
What To Do Next
Now that you have the container installer image and architecture-specific system image, you will need to create the ignition
configuration necessary for booting your image. For details, see Generating Ignition Configuration on page 6.
5| Documentation Downloading Wind River Linux Distro and the CoreOS Installer
Wind River Linux Distro Quick Start 2024.01
Ignition configuration process consists of two steps, producing a Butane configuration and then converting the Butane configuration
into a JSON Ignition config.
You must have the coreos-installer and architecture-specific Distro images. For details, see Downloading Wind River Linux Distro and
the CoreOS Installer on page 3.
Procedure
This example uses 123456 as the password example. Wind River recommends using a much more secure password.
2. Add the password hash to a text file for the installer to use.
Use one of the following configurations based on your target console option.
Option Description
Serial-based console,
connected to physical, $ cat <<-ENDOF> sample.bu
internal serial pins variant: fcos
version: 1.4.0
passwd:
users:
- name: root
Option Description
If your console is different than ttyUSB0 in the following example, edit your file
accordingly.
3. Invoke the Butane container to convert the Butane configuration to an Ignition configuration.
Assuming that the USB or SD flash device takes device /dev/sdX, in this procedure you will use the coreos-installer to copy the
image to it. You can use an image you downloaded locally as described in Downloading Wind River Linux Distro and the CoreOS
Installer on page 3, or download the image directly as part of this procedure. For Aarch64 images, you will also need to create a
bootloader as described in Creating a Bootloader for Aarch64 Images on page 10. Then insert the USB or SD device into a bootable
socket on the target, and power on to boot the system to the Grub boot menu.
You must have an ignition configuration and architecture-specific system image as described in Generating Ignition Configuration on
page 6.
Procedure
1. Insert the USB or SD flash device into the development host system.
If your development host automatically mounts flash devices, you will need to unmount it in the next step.
2. Unmount the USB or SD flash device before burning the Ignition configuration file onto it.
Find all the mounted partitions. For example, for the USB device /dev/sdX:
$ umount /dev/sdX1
$ umount /dev/sdX2
Note: Some Linux distros may automatically mount an external drive when it is plugged in.
3. Burn the Ignition configuration file onto the USB or SD flash device using the coreos-installer.
You must bind-mount to /dev, /run/udev and to the data directory, in order to access files on the host.
For example, use Wind River coreos-installer container as follows to create the bootable flash device.
Option Description
x86-64
$ sudo docker run --privileged --rm \
-v /dev:/dev -v /run/udev:/run/udev -v $(pwd):/data -w /data
\
windriver/wrdistro23:coreos-installer \
install /dev/sdX \
--ignition-file ./sample.ign \
--insecure-ignition
Aarch64
$ sudo docker run --privileged --rm \
-v /dev:/dev -v /run/udev:/run/udev -v $(pwd):/data -w /data
\
windriver/wrdistro23:coreos-installer \
install /dev/sdX \
--ignition-file ./sample.ign \
--append-karg fdt_file=imx8mq-evk.dtb \
--insecure-ignition \
--architecture aarch64
In these examples, the coreos-installer will automatically download the latest image. To specify the location for a local image,
include the following option:
4. For Aarch64 targets, you must create a bootloader for your system image.
For this purpose, you will use the flash drive from the previous step to add the bootloader image to. For details, see Creating a
Bootloader for Aarch64 Images on page 10.
5. Insert the USB flash device into a bootable USB socket on the target, and power on.
Note: You can run coreos-installer from the live image to install the image onto other disks.
Once the image boots, if you require on-target package updates, you can prepare it using the DNF Package Manager. This will
allow you to install, update, or remove packages. For details, see Preparing Distro Images for Package Updates on page 13.
Note:
This procedure applies to x86-64 targets only.
• Your Linux host system has the /usr/bin/qemu-system-arch binaries, with a minimum version of 2.11, installed.
• You have downloaded and extracted the Wind River Linux Distro target system image to your Linux host system. For details, see
Downloading Wind River Linux Distro and the CoreOS Installer on page 3.
• You have Internet access.
Procedure
$ wget https://distro.windriver.com/dist/distro23/x86-64/OVMF_CODE.fd
$ wget https://distro.windriver.com/dist/distro23/x86-64/OVMF_VARS.fd
The example commands in the following table reference QEMU binaries on the Linux host system.
Note: This example uses the kvm option to speed-up boot times and make the
target more responsive. To use this option, you must have access rights
to /dev/kvm on the Linux host system. For additional information, see
https://wiki.yoctoproject.org/wiki/How_to_enable_KVM_for_Poky_qemu.
For additional information on the QEMU commands and their meanings, see the respective README file, for example, intel-
x86-64-README.md, located at the root of https://distro.windriver.com/dist/distro23/x86-64.
Once the image boots, if you require on-target package updates, you can prepare it using the DNF Package Manager. This will
allow you to install, update, or remove packages. For details, see Preparing Distro Images for Package Updates on page 13.
The Aarch64 image requires a custom bootloader for use with Wind River Linux. To create this bootloader, you will use the
bootloader-imx8mq.sh script provided by Wind River along with the Wind River Linux Distro bootloader artifacts and NXP firmware
files.
• You must have generated a bootable flash device as described in Booting Up the Target System Image on Hardware on page 7.
• You must have downloaded the Wind River Linux Distro image files as described in Downloading Wind River Linux Distro and
the CoreOS Installer on page 3.
• You must have the mkimage package on your development host.
• You must have sudo access.
Procedure
1. Navigate to the directory where you downloaded the Wind River Linux Distro files in Downloading Wind River Linux Distro and the
CoreOS Installer on page 3.
2. Download and prepare the bootloader-imx8mq.sh script.
When you run the script, you will specify the location of the installer image from Downloading Wind River Linux Distro and the
CoreOS Installer on page 3.
Note: You must read and accept the NXP license agreement to complete this step.
Fetch https://www.nxp.com/lgfiles/NMG/MAD/YOCTO//firmware-imx-8.20.bin
--2024-01-22 13:18:58-- https://www.nxp.com/lgfiles/NMG/MAD/YOCTO//firmware-imx-8.20.bin
Resolving www.nxp.com (www.nxp.com)... 23.196.120.217
Connecting to www.nxp.com (www.nxp.com)|23.196.120.217|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1430668 (1.4M) [application/octet-stream]
Saving to: ‘firmware.sh’
Unpack Firmware
Welcome to NXP firmware-imx-8.20.bin
You need to read and accept the EULA before you can continue.
...
/home/mmorton/distro23_arm64/imx-boot-aarch64-mx8mqevk.bin-flash_evk
Assumes board has been set booting from external SD card (/dev/sdX), burn bootloader to SD card
Once the build completes, it generates the bootloader image for use with the system image created in Booting Up the Target
System Image on Hardware on page 7.
4. Copy the bootloader image to the USB flash drive from Booting Up the Target System Image on Hardware on page 7.
5. Go to Booting Up the Target System Image on Hardware on page 7, Step 4, to use the bootloader and system images to boot the
device.
Wind River Linux Distro images, including container and bare metal (system), support on-target updates with the DNF Package
Manager. For bare metal images, Wind River Linux Distro supports DNF and rpm-ostree. This allows you to install packages from the
Wind River Linux Distro repository and perform system updates as described in this procedure.
To perform updates on a Wind River Linux Distro binary image, you must boot a target system image as described in Booting Up the
Target System Image on Hardware on page 7 or Booting Up the x86-64 Target System Image with QEMU on page 9.
Procedure
1. Ensure that the Wind River Linux Distro binary image is up and running and you are logged in as root.
2. Unlock the image.
By default, the images are locked and do not allow any updates. You must run the following command to ensure your package
updates are successful.
This step is required for DNF to work properly. By default, rpm-ostree splits /etc/passwd to /usr/lib/passwd and /etc/group
to /usr/lib/group, then uses the NSS module to read user information from files with the same format as /etc/passwd and /etc/
group stored in /usr/lib, an alternate location. For details, see https://github.com/coreos/rpm-ostree/blob/main/rust/src/
passwd.rs#L107 and https://github.com/aperezdc/nss-altfiles#building.
Since the useradd and groupadd commands do not support alternate locations, this can cause package preinstallation scripts to
fail if the package requires the groupadd or useradd commands. To prevent this, you must manually merge /usr/lib/passwd
to /etc/passwd, /usr/lib/group to /etc/group and empty /usr/lib/passwd and /usr/lib/group to avoid duplication.
Run the following commands to merge group and passwd for successful DNF use.
Note: Package updates with DNF are supported in both system and container images.
Multiple packages:
Remove
$ dnf remove packageName
Update the package The DNF package manager caches package feed indices locally. This command is
indices required to load the new feed indicies. Although the package management tools
periodically update these indices, you need to explicitly update the cache to see
changes in the package feeds immediately.
$ dnf update
Upgrade a package
$ dnf upgrade packageName
Note: Package updates with rpm-ostree are supported in system images only.
Multiple packages:
$ rpm-ostree upgrade
$ systemctl reboot
5. RELEASE INFORMATION
Review the available features and support information for each Wind River Linux Distro image.
Package Information
Each image includes package management with rpm-ostree by default, which allows you to add, update, and remove packages and
also include additional package feeds.
SPDX data with detailed information on the included packages is available with Wind River Linux Distro open source software
compliance artifacts, which also includes license information, and third-party notices. This Intellectual Property (IP) content is located
online at https://open.windriver.com/env/Linux/Distro/23/index.html.
Hardware Features
Wind River Linux Distro support for the following architectures.
• AArch64
- i.MX8 platform for the NXP MX8QM SoC
• x86-64
- Intel NUC Platform: KabyLake-U Processor, Sunrise Point-LP PCH, (NUC7i5DNK1E)
- qemux86-64
Note:
For other device-specific information, refer to the device manufacturer's documentation.
Update 2024.01
• Add support for ARM64 architecture (aarch64), starting with the i.MX8 MQuad hardware board
• New package feed to support aarch64
Initial release.
For additional general product information including supported BSPs, workflows, and product updates, see the Wind River Linux
Getting Started.
To subscribe to the Wind River Linux RSS feed, point your RSS reader to https://support2.windriver.com/feeds/wrlinux_lts.xml.
External Documentation
Wind River Linux shares the same build system as the Yocto Project, based on the OpenEmbedded Core Project. As a result, you can
use the Yocto Project documentation as a reference to further develop your platform project image.
A good place to start is to understand the terms used when using the Yocto Project build system to develop your platform project
builds. For details, see the Yocto Project Mega Manual: Yocto Project Terms.