Yocto Flash From Net: Difference between revisions
No edit summary |
|||
(41 intermediate revisions by 6 users not shown) | |||
Line 1: | Line 1: | ||
<!-- Set release according to "release" parameter in URL and use | <!-- Set release according to "release" parameter in URL and use MORTY_V1.0_DART-6UL as default | ||
--> {{# | --> {{INIT_RELEASE_PARAM|RELEASE_MORTY_V1.0_DART-6UL}}<!-- | ||
--> {{#lst: | --> {{#lst:Yocto_Platform_Customization|{{#var:RELEASE_PARAM}}}} <!-- | ||
--> {{PageHeader|{{#var:HARDWARE_NAME}}-Flash | --> {{#lst:Debian_Platform_Customization|{{#var:RELEASE_PARAM}}}} <!-- | ||
--> {{#lst:B2QT_Platform_Customization|{{#var:RELEASE_PARAM}}}} <!-- | |||
--> {{#vardefine:BUILD_PAGE|Yocto_Build_Release}} {{#vardefine:PLATFORM_OS|Yocto}} {{#vardefine:INSTALL_SCRIPT|install_yocto.sh}} <!-- Default to Yocto | |||
--> {{#varexists:DEBIAN_NAME | {{#vardefine:BUILD_PAGE|Yocto_Debian_Build_Release}} {{#vardefine:PLATFORM_OS|Debian}} {{#vardefine:INSTALL_SCRIPT|install_debian.sh}} | }} <!-- Debian | |||
--> {{#varexists:B2QT_BSP_VERSION | {{#vardefine:BUILD_PAGE|B2QT_Build_Release}} {{#vardefine:PLATFORM_OS|Boot2Qt}} | }} <!-- B2Qt | |||
--> {{COMMON_YOCTO_VARS}} <!-- | |||
--> {{PageHeader|{{#var:HARDWARE_NAME}} - Flash Yocto images from network}} {{DocImage|category1={{#var:HARDWARE_NAME}}|category2=Yocto}} __toc__ | |||
= Flashing a complete Yocto system from Network using TFTP & NFS = | = Flashing a complete Yocto system from Network using TFTP & NFS = | ||
{{note| NOTES:<br> | {{note| NOTES:<br> | ||
#Please make sure your host system is ready to use TFTP/NFS. Use our | #Please make sure your host system is ready to use TFTP/NFS. Use our Wiki if required: {{Varlink2|Yocto Setup TFTP/NFS|{{#var:RELEASE_LINK}}}} | ||
#This is a concept Wiki. Please adapt it to your system and your requirements. | |||
#This is a concept Wiki. Please | #Android and Debian can be flashed in the same way. | ||
#Android can be flashed in the same way. | |||
|info}} | |info}} | ||
== Build minimal file system== | == Build minimal file system == | ||
< | To setup a build environment follow steps 1 & 3 of the {{Varlink|{{#var:BUILD_PAGE}}|{{#var:RELEASE_LINK}}|Build {{#var:PLATFORM_OS}} from source code}} guide.<br> | ||
Then, append the following to the conf/local.conf file in your Yocto build directory: | |||
{{#switch: {{#var:SOC_SERIES}} | am6 | imx8 | imx9= | |||
IMAGE_INSTALL{{#var:YOCTO_OVERRIDE_PREFIX}}append = " bash e2fsprogs-mke2fs tar dosfstools zstd" | |||
|#default= | |||
IMAGE_INSTALL{{#var:YOCTO_OVERRIDE_PREFIX}}append = " bash e2fsprogs-mke2fs tar mtd-utils imx-kobs mtd-utils-ubifs" | |||
}} | |||
And build the image: | |||
{{#switch: {{#var:SOC_SERIES}} | |||
| am6=<br> | |||
< | $ MACHINE={{#var:MACHINE_NAME}} bitbake core-image-minimal | ||
$ bitbake core-image-minimal | | #default=<br> | ||
$ bitbake core-image-minimal | |||
}} | |||
Create a root file system and copy files: | |||
{{#switch: {{#var:SOC_SERIES}} | imx8 | imx9= | |||
<br> | |||
$ mkdir ~/flash_rootfs | |||
$ sudo tar xf tmp/deploy/images/{{#var:MACHINE_NAME}}/core-image-minimal-{{#var:MACHINE_NAME}}.{{#var:ROOTFS_COMP_TARBALL_EXT}} -C ~/flash_rootfs | |||
$ sudo cp -a ~/flash_rootfs/boot/*.dtb /tftpboot | |||
$ sudo cp ~/flash_rootfs/boot/{{#var:KERNEL_IMAGE}} /tftpboot | |||
| am6= | |||
<br> | |||
$ mkdir ~/flash_rootfs | |||
$ sudo tar xf {{#var:DEPLOY_DIR}}/images/{{#var:MACHINE_NAME}}/core-image-minimal-{{#var:MACHINE_NAME}}.tar.zst -C ~/flash_rootfs | |||
$ sudo cp -a ~/flash_rootfs/boot/* /tftpboot/ | |||
|#default= | |||
<br> | |||
$ mkdir ~/flash_rootfs | $ mkdir ~/flash_rootfs | ||
$ sudo tar | $ sudo tar xf tmp/deploy/images/{{#var:MACHINE_NAME}}/core-image-minimal-{{#var:MACHINE_NAME}}.{{#var:ROOTFS_COMP_TARBALL_EXT}} -C ~/flash_rootfs | ||
$ sudo cp tmp/deploy/images/{{#var:MACHINE_NAME}}/{{#var:KERNEL_IMAGE}} /tftpboot | $ sudo cp tmp/deploy/images/{{#var:MACHINE_NAME}}/{{#var:KERNEL_IMAGE}} /tftpboot | ||
$ | $ for f in tmp/deploy/images/{{#var:MACHINE_NAME}}/*.dtb; do if <nowiki>[[ -L $f ]] && [[</nowiki> $f != *{{#var:MACHINE_NAME}}.dtb <nowiki>]]</nowiki>; then sudo cp $f /tftpboot/; fi done | ||
$ sudo rename 's/{{#var:KERNEL_IMAGE}}-imx/imx/' /tftpboot/{{#var:KERNEL_IMAGE}}-*.dtb | $ sudo rename 's/{{#var:KERNEL_IMAGE}}-imx/imx/' /tftpboot/{{#var:KERNEL_IMAGE}}-*.dtb | ||
}} | |||
Edit /etc/exports. E.g. | |||
$ sudo gedit /etc/exports | |||
...and add the following line to it (replace <uname> with the actual username): | |||
/home/<uname>/flash_rootfs *(rw,sync,no_root_squash,no_all_squash,no_subtree_check) | |||
Restart the NFS server: | |||
$ sudo /etc/init.d/nfs-kernel-server restart | |||
{{#switch: {{#var:SOC_SERIES}} | |||
| am6= | |||
Insert the recovery SD card into your host PC and copy the following files from it (assuming it is mounted at /media): | |||
$ sudo mkdir ~/flash_rootfs/opt/ | |||
$ sudo cp -a /media/$USER/root/opt/images ~/flash_rootfs/opt/images | |||
$ sudo cp /media/$USER/root/usr/bin/*.sh ~/flash_rootfs/usr/bin/ | |||
| #default= | |||
Insert the recovery SD card into your host PC and copy the following files from it (assuming it is mounted at /media): | Insert the recovery SD card into your host PC and copy the following files from it (assuming it is mounted at /media): | ||
$ sudo cp -a /media/rootfs/opt/images ~/flash_rootfs/opt/ | |||
$ sudo cp /media/rootfs/usr/bin/*.sh ~/flash_rootfs/usr/bin/ | |||
}} | |||
Boot the board, stop the autoboot to get to the U-Boot command line, and set the following environment variables: | |||
{{#ifeq: {{#var:HARDWARE_NAME}} | VAR-SOM-AM62 | | |||
<pre> | <pre> | ||
=> setenv serverip <HOST_IP_ADDRESS> (replace <HOST_IP_ADDRESS> with the actual IP address of your host - run 'ifconfig' on the host to get it) | |||
$ | => setenv ipaddr <TARGET_IP_ADDRESS> (replace <TARGET_IP_ADDRESS> with the IP address for the target) | ||
=> setenv image Image | |||
=> setenv fdtfile k3-am625-var-som-symphony.dtb | |||
=> setenv rootpath "/home/<user>/rootfs" (replace <user> with the username on your host computer) | |||
=> setenv netargs 'setenv bootargs console=${console} ${optargs} root=/dev/nfs nfsroot=${serverip}:${rootpath},nolock,v3 rw ip=${ipaddr}:::::eth0' | |||
=> setenv netboot 'tftp ${loadaddr} ${image}; tftp ${fdtaddr} ${fdtfile}; run netargs; booti ${loadaddr} - ${fdtaddr}' | |||
=> setenv bootcmd 'run netboot' | |||
=> saveenv | |||
=> boot | |||
</pre> | </pre> | ||
| <br> | |||
=> setenv serverip <your host ip address> | => setenv serverip <your host ip address> | ||
=> setenv nfsroot /home/<your username>/flash_rootfs | => setenv nfsroot /home/<your username>/flash_rootfs | ||
If you want to set the fdt file yourself, instead of using the default auto detection: | # If you want to set the fdt file yourself, instead of using the default auto detection: | ||
=> setenv fdt_file <relevant device tree> | => setenv fdt_file <relevant device tree> | ||
=> setenv bootcmd 'run netboot' | => setenv bootcmd 'run netboot' | ||
=> saveenv | => saveenv | ||
=> boot | => boot | ||
}} | |||
On the target flash your system: | On the target flash your system: | ||
# {{#var:INSTALL_SCRIPT}} | |||
A complete system is flashed into the SOMs internal storage (NAND flash/eMMC). | A complete system is flashed into the SOMs internal storage (NAND flash/eMMC).<br> | ||
Once the file system is built you can use it again and again to flash your {{#var:HARDWARE_NAME}}. | Once the file system is built you can use it again and again to flash your {{#var:HARDWARE_NAME}}.<br> | ||
You can update the images to use your images or | You can update the images to use your images and/or customize install_yocto.sh to your requirements. |
Latest revision as of 15:21, 24 July 2024
This page is using the default release RELEASE_MORTY_V1.0_DART-6UL.
To view this page for a specific Variscite SoM and software release, please follow these steps:
- Visit variwiki.com
- Select your SoM
- Select the software release
Flashing a complete Yocto system from Network using TFTP & NFS
- Please make sure your host system is ready to use TFTP/NFS. Use our Wiki if required: Yocto Setup TFTP/NFS
- This is a concept Wiki. Please adapt it to your system and your requirements.
- Android and Debian can be flashed in the same way.
Build minimal file system
To setup a build environment follow steps 1 & 3 of the Build Yocto from source code guide.
Then, append the following to the conf/local.conf file in your Yocto build directory:
IMAGE_INSTALL_append = " bash e2fsprogs-mke2fs tar mtd-utils imx-kobs mtd-utils-ubifs"
And build the image:
$ bitbake core-image-minimal
Create a root file system and copy files:
$ mkdir ~/flash_rootfs $ sudo tar xf tmp/deploy/images/imx6ul-var-dart/core-image-minimal-imx6ul-var-dart. -C ~/flash_rootfs $ sudo cp tmp/deploy/images/imx6ul-var-dart/zImage /tftpboot $ for f in tmp/deploy/images/imx6ul-var-dart/*.dtb; do if [[ -L $f ]] && [[ $f != *imx6ul-var-dart.dtb ]]; then sudo cp $f /tftpboot/; fi done $ sudo rename 's/zImage-imx/imx/' /tftpboot/zImage-*.dtb
Edit /etc/exports. E.g.
$ sudo gedit /etc/exports
...and add the following line to it (replace <uname> with the actual username):
/home/<uname>/flash_rootfs *(rw,sync,no_root_squash,no_all_squash,no_subtree_check)
Restart the NFS server:
$ sudo /etc/init.d/nfs-kernel-server restart
Insert the recovery SD card into your host PC and copy the following files from it (assuming it is mounted at /media):
$ sudo cp -a /media/rootfs/opt/images ~/flash_rootfs/opt/ $ sudo cp /media/rootfs/usr/bin/*.sh ~/flash_rootfs/usr/bin/
Boot the board, stop the autoboot to get to the U-Boot command line, and set the following environment variables:
=> setenv serverip <your host ip address> => setenv nfsroot /home/<your username>/flash_rootfs # If you want to set the fdt file yourself, instead of using the default auto detection: => setenv fdt_file <relevant device tree> => setenv bootcmd 'run netboot' => saveenv => boot
On the target flash your system:
# install_yocto.sh
A complete system is flashed into the SOMs internal storage (NAND flash/eMMC).
Once the file system is built you can use it again and again to flash your DART-6UL.
You can update the images to use your images and/or customize install_yocto.sh to your requirements.