Android Customizing IMX8 U-Boot: Difference between revisions

From Variscite Wiki
(Created page with "<!-- Set release according to "release" parameter in URL and use RELEASE_N7.1.1_1.0.0_VAR-SOM-MX6 as default --> {{#vardefine:RELEASE_PARAM|{{#urlget:release}}}} <!-- --> {{#l...")
 
 
(10 intermediate revisions by 3 users not shown)
Line 7: Line 7:


=Making changes to U-boot=
=Making changes to U-boot=
==Setting the permission in Boot image==
==Making Changes to U-boot config==
===Edit U-Boot command line arguments===
$ cd {{#var:BUILD_FOLDER}}/{{#var:BUILD_FOLDER_ANDROID}}/vendor/variscite/uboot-imx/
$ make mrproper
$ make {{#var:U-BOOT_SD_DEFCONFIG}}
$ make menuconfig
Navigate the menu and select the desired u-boot functionalities, save the new configuration and exit.<br>
Then, save the new configuration as the default configuration:<br>
$ make savedefconfig
$ cp configs/{{#var:U-BOOT_SD_DEFCONFIG}} cp configs/{{#var:U-BOOT_SD_DEFCONFIG}}.orig
$ cp defconfig configs/{{#var:U-BOOT_SD_DEFCONFIG}}
Clean the u-boot source code as Android build the u-boot in out/target/product/{{#var:ANDROID_MACHINE_NAME}}/obj/UBOOT_OBJ/
 
==Edit U-Boot command line arguments to kernel==
https://github.com/varigit/uboot-imx/blob/{{#var:U-BOOT_BRANCH}}/{{#var:U-BOOT_ANDROID_CONFIG_FILE}}
https://github.com/varigit/uboot-imx/blob/{{#var:U-BOOT_BRANCH}}/{{#var:U-BOOT_ANDROID_CONFIG_FILE}}
Change following macro <br>
Change following macro <br>
Line 14: Line 26:
  #define CONFIG_EXTRA_ENV_SETTINGS \
  #define CONFIG_EXTRA_ENV_SETTINGS \
  "bootargs=" \
  "bootargs=" \
  .......
  ...
        ....\0"  
...\0"  
And append "androidboot.selinux=permissive\0" to the kernel
And append "androidboot.selinux=permissive\0" to the kernel


  #define CONFIG_EXTRA_ENV_SETTINGS \
  #define CONFIG_EXTRA_ENV_SETTINGS \
  "bootargs=" \
  "bootargs=" \
  .......
  ...
        androidboot.selinux=permissive\0"
androidboot.selinux=permissive\0"
Here above is example adding "androidboot.selinux=permissive" to the kernel command line,


===Compile U-Boot===
==Compile U-Boot==
Compile the new U-Boot  
Compile the new U-Boot  
When you perform changes to the u-boot, you may build {{#var:U-BOOT_SD_IMAGE_NAME}} solely instead of building the whole Android.
$ cd {{#var:BUILD_FOLDER}}/{{#var:BUILD_FOLDER_ANDROID}}
$ source build/envsetup.sh
$ lunch {{#var:ANDROID_MACHINE_NAME}}-userdebug
$ make bootloader


===Update U-Boot===
After build is complete it should generate {{#var:U-BOOT_SD_IMAGE_NAME}} in out/target/product/{{#var:ANDROID_MACHINE_NAME}}
Flash the binaries following {{Varlink|Android_Recovery_SD_card|{{#var:RELEASE_LINK}}|Android Recovery SD card}} and replacing your binaries in /opt/images/Android/
$ ls -l out/target/product/{{#var:ANDROID_MACHINE_NAME}}/*.imx
You should see {{#var:U-BOOT_SD_IMAGE_NAME}} correctly.


The updated U-Boot should have the SeLinux in permissive mode.
==Update U-Boot==
There are two methods from which you can update bootloader,
Flash the binaries following {{Varlink|Android_Recovery_SD_card|{{#var:RELEASE_LINK}}|Android Recovery SD card}} and replacing your binaries in /opt/images/Android/ <br>
Boot from Yocto, and run install_android.sh.
* Note: This erases everything and installs everything <br>
or <br>
If you wish to just update u-boot, and your platform already has the bootloader and adb running use below commands to flash directly to eMMC.  
$ cd {{#var:BUILD_FOLDER}}/{{#var:BUILD_FOLDER_ANDROID}}
$ adb root;sleep 3;
$ adb push out/target/product/{{#var:ANDROID_MACHINE_NAME}}/{{#var:U-BOOT_SD_IMAGE_NAME}} /data/
$ adb shell 'dd if=/data/{{#var:U-BOOT_SD_IMAGE_NAME}} of=/dev/block/{{#var:EMMC_ROOTFS_DEV}} bs=1k seek={{#var:U-BOOT_OFFSET}} conv=fsync'
$ adb shell sync
$ adb reboot

Latest revision as of 15:39, 11 September 2023

Android - Customizing U-boot

Overview

This section explains how to customize bootloader and update it on VAR-SOM-MX6 platform via adb.

Making changes to U-boot

Making Changes to U-boot config

$ cd ~/var_n_711_100/n_711_100_build/vendor/variscite/uboot-imx/
$ make mrproper
$ make mx6var_som_sd_android_defconfig
$ make menuconfig

Navigate the menu and select the desired u-boot functionalities, save the new configuration and exit.
Then, save the new configuration as the default configuration:

$ make savedefconfig
$ cp configs/mx6var_som_sd_android_defconfig cp configs/mx6var_som_sd_android_defconfig.orig 
$ cp defconfig configs/mx6var_som_sd_android_defconfig

Clean the u-boot source code as Android build the u-boot in out/target/product//obj/UBOOT_OBJ/

Edit U-Boot command line arguments to kernel

https://github.com/varigit/uboot-imx/blob/n7.1.1_1.0.0_ga_var01/ Change following macro

#define CONFIG_EXTRA_ENV_SETTINGS \
	"bootargs=" \
	...
	...\0" 

And append "androidboot.selinux=permissive\0" to the kernel

#define CONFIG_EXTRA_ENV_SETTINGS \
	"bootargs=" \
	...
	androidboot.selinux=permissive\0"

Here above is example adding "androidboot.selinux=permissive" to the kernel command line,

Compile U-Boot

Compile the new U-Boot When you perform changes to the u-boot, you may build u-boot.img-sd solely instead of building the whole Android.

$ cd ~/var_n_711_100/n_711_100_build
$ source build/envsetup.sh
$ lunch -userdebug
$ make bootloader

After build is complete it should generate u-boot.img-sd in out/target/product/

$ ls -l out/target/product//*.imx

You should see u-boot.img-sd correctly.

Update U-Boot

There are two methods from which you can update bootloader, Flash the binaries following Android Recovery SD card and replacing your binaries in /opt/images/Android/
Boot from Yocto, and run install_android.sh.

  • Note: This erases everything and installs everything

or
If you wish to just update u-boot, and your platform already has the bootloader and adb running use below commands to flash directly to eMMC.

$ cd ~/var_n_711_100/n_711_100_build
$ adb root;sleep 3;
$ adb push out/target/product//u-boot.img-sd /data/
$ adb shell 'dd if=/data/u-boot.img-sd of=/dev/block/mmcblk0 bs=1k seek= conv=fsync'
$ adb shell sync
$ adb reboot