diff mbox series

board/orangepi/orangepi-zero:extlinux, refactoring

Message ID 20220116112600.28441-1-kuzminov.sergey81@gmail.com
State Superseded
Headers show
Series board/orangepi/orangepi-zero:extlinux, refactoring | expand

Commit Message

Sergey Kuzminov Jan. 16, 2022, 11:26 a.m. UTC
Changes:
- common scenarios for multiple boards to create the SD image: board/orangepi/common;
- extlinux.conf instead of boot.scr;
- exclude FAT partition;
- defconfig refactoring;
- kernel: bump to version 5.12.19, if newer then BR2_PACKAGE_XR819_XRADIO will not compile;
- u-boot: bump to version 2022.01

Signed-off-by: Sergey Kuzminov <kuzminov.sergey81@gmail.com>
---
 board/orangepi/common/extlinux.conf       |  5 ++
 board/orangepi/common/genimage.cfg        | 19 +++++++
 board/orangepi/common/post-build.sh       | 34 ++++++++++++
 board/orangepi/common/uboot-extras.config |  3 +
 board/orangepi/orangepi-zero/boot.cmd     |  9 ---
 board/orangepi/orangepi-zero/genimage.cfg | 36 ------------
 configs/orangepi_zero_defconfig           | 67 ++++++++++++++---------
 7 files changed, 102 insertions(+), 71 deletions(-)
 create mode 100644 board/orangepi/common/extlinux.conf
 create mode 100644 board/orangepi/common/genimage.cfg
 create mode 100755 board/orangepi/common/post-build.sh
 create mode 100644 board/orangepi/common/uboot-extras.config
 delete mode 100644 board/orangepi/orangepi-zero/boot.cmd
 delete mode 100644 board/orangepi/orangepi-zero/genimage.cfg

Comments

Giulio Benetti Jan. 16, 2022, 3:29 p.m. UTC | #1
Hi Sergey, Peter, All,

> Il giorno 16 gen 2022, alle ore 12:26, Sergey Kuzminov <kuzminov.sergey81@gmail.com> ha scritto:
> 
> Changes:
> - common scenarios for multiple boards to create the SD image: board/orangepi/common;
> - extlinux.conf instead of boot.scr;

I’ve seen other boards switching to extlinux.conf instead of boot.scr, but extlinux.conf doesn’t have any checksum while boot.scr does as I remember.
I’ve missed previous discussion about this.

@Peter as I recall you’ve suggested this. Sorry but I don’t remember the reason and I would still keep boot.scr. I’d prefer the system not booting than a system booting with partial bootlegs honestly.

What about that?

And…

> - exclude FAT partition;
> - defconfig refactoring;
> - kernel: bump to version 5.12.19, if newer then BR2_PACKAGE_XR819_XRADIO will not compile;
> - u-boot: bump to version 2022.01
> 
> Signed-off-by: Sergey Kuzminov <kuzminov.sergey81@gmail.com>
> ---
> board/orangepi/common/extlinux.conf       |  5 ++
> board/orangepi/common/genimage.cfg        | 19 +++++++
> board/orangepi/common/post-build.sh       | 34 ++++++++++++
> board/orangepi/common/uboot-extras.config |  3 +
> board/orangepi/orangepi-zero/boot.cmd     |  9 ---
> board/orangepi/orangepi-zero/genimage.cfg | 36 ------------
> configs/orangepi_zero_defconfig           | 67 ++++++++++++++---------
> 7 files changed, 102 insertions(+), 71 deletions(-)
> create mode 100644 board/orangepi/common/extlinux.conf
> create mode 100644 board/orangepi/common/genimage.cfg
> create mode 100755 board/orangepi/common/post-build.sh
> create mode 100644 board/orangepi/common/uboot-extras.config
> delete mode 100644 board/orangepi/orangepi-zero/boot.cmd
> delete mode 100644 board/orangepi/orangepi-zero/genimage.cfg
> 
> diff --git a/board/orangepi/common/extlinux.conf b/board/orangepi/common/extlinux.conf
> new file mode 100644
> index 0000000000..015f29270e
> --- /dev/null
> +++ b/board/orangepi/common/extlinux.conf
> @@ -0,0 +1,5 @@
> +LABEL default
> +  kernel /boot/%LINUXIMAGE%
> +  devicetreedir /boot
> +  append root=PARTUUID=%PARTUUID% rootwait console=${console}
> +# append root=PARTUUID=%PARTUUID% rootwait console=${console} rootfstype=ext4 quiet panic=10
> diff --git a/board/orangepi/common/genimage.cfg b/board/orangepi/common/genimage.cfg
> new file mode 100644
> index 0000000000..fd250ef05d
> --- /dev/null
> +++ b/board/orangepi/common/genimage.cfg
> @@ -0,0 +1,19 @@
> +image sdcard.img {
> +    hdimage {
> +        partition-table-type = gpt
> +        gpt-no-backup = true
> +        gpt-location = 1008K # 1MB - 16KB
> +    }
> +
> +    partition u-boot {
> +        in-partition-table = false
> +        image = "u-boot-sunxi-with-spl.bin"
> +        offset = 8K
> +        size = 1000K # 1MB - 8KB - 16KB
> +    }
> +
> +    partition rootfs {
> +        image = "rootfs.ext4"
> +        partition-uuid = %PARTUUID%
> +    }
> +}
> diff --git a/board/orangepi/common/post-build.sh b/board/orangepi/common/post-build.sh
> new file mode 100755
> index 0000000000..296f94b174
> --- /dev/null
> +++ b/board/orangepi/common/post-build.sh
> @@ -0,0 +1,34 @@
> +#!/bin/sh
> +
> +linux_image()
> +{
> +    if grep -Eq "^BR2_LINUX_KERNEL_UIMAGE=y$" ${BR2_CONFIG}; then
> +        echo "uImage"
> +    elif grep -Eq "^BR2_LINUX_KERNEL_IMAGE=y$" ${BR2_CONFIG}; then
> +        echo "Image"
> +    elif grep -Eq "^BR2_LINUX_KERNEL_IMAGEGZ=y$" ${BR2_CONFIG}; then
> +        echo "Image.gz"
> +    else
> +        echo "zImage"
> +    fi
> +}
> +
> +generic_getty()
> +{
> +    if grep -Eq "^BR2_TARGET_GENERIC_GETTY=y$" ${BR2_CONFIG}; then
> +        echo ""
> +    else
> +        echo "s/\s*console=\S*//"
> +    fi
> +}
> +
> +PARTUUID="$($HOST_DIR/bin/uuidgen)"
> +
> +install -d "$TARGET_DIR/boot/extlinux/"
> +
> +sed -e "$(generic_getty)" \
> +    -e "s/%LINUXIMAGE%/$(linux_image)/g" \
> +    -e "s/%PARTUUID%/$PARTUUID/g" \
> +    "board/orangepi/common/extlinux.conf" > "$TARGET_DIR/boot/extlinux/extlinux.conf"
> +
> +sed "s/%PARTUUID%/$PARTUUID/g" "board/orangepi/common/genimage.cfg" > "$BINARIES_DIR/genimage.cfg"
> diff --git a/board/orangepi/common/uboot-extras.config b/board/orangepi/common/uboot-extras.config
> new file mode 100644
> index 0000000000..5aa97523d9
> --- /dev/null
> +++ b/board/orangepi/common/uboot-extras.config
> @@ -0,0 +1,3 @@
> +CONFIG_BOOTDELAY=0
> +CONFIG_USE_PREBOOT=y
> +CONFIG_PREBOOT="setenv preboot;"
> diff --git a/board/orangepi/orangepi-zero/boot.cmd b/board/orangepi/orangepi-zero/boot.cmd
> deleted file mode 100644
> index d094a64fe5..0000000000
> --- a/board/orangepi/orangepi-zero/boot.cmd
> +++ /dev/null
> @@ -1,9 +0,0 @@
> -setenv fdt_high ffffffff
> -
> -part uuid mmc 0:2 uuid
> -setenv bootargs console=ttyS0,115200 root=PARTUUID=${uuid} rootwait
> -
> -fatload mmc 0 $kernel_addr_r zImage
> -fatload mmc 0 $fdt_addr_r sun8i-h2-plus-orangepi-zero.dtb
> -
> -bootz $kernel_addr_r - $fdt_addr_r
> diff --git a/board/orangepi/orangepi-zero/genimage.cfg b/board/orangepi/orangepi-zero/genimage.cfg
> deleted file mode 100644
> index 32f5454ae6..0000000000
> --- a/board/orangepi/orangepi-zero/genimage.cfg
> +++ /dev/null
> @@ -1,36 +0,0 @@
> -# Minimal SD card image for the OrangePi Zero
> -#
> -image boot.vfat {
> -    vfat {
> -        files = {
> -            "zImage",
> -            "sun8i-h2-plus-orangepi-zero.dtb",
> -            "boot.scr"
> -        }
> -    }
> -    size = 10M
> -}
> -
> -image sdcard.img {
> -    hdimage {
> -    }
> -
> -    partition u-boot {
> -        in-partition-table = "no"
> -        image = "u-boot-sunxi-with-spl.bin"
> -        offset = 8K
> -        size = 1016K # 1MB - 8KB
> -    }
> -
> -    partition boot {
> -        partition-type = 0xC
> -        bootable = "true"
> -        image = "boot.vfat"
> -    }
> -
> -    partition rootfs {
> -        partition-type = 0x83
> -        image = "rootfs.ext4"
> -        size = 512M
> -    }
> -}
> diff --git a/configs/orangepi_zero_defconfig b/configs/orangepi_zero_defconfig
> index 1c107b10e6..908bcea893 100644
> --- a/configs/orangepi_zero_defconfig
> +++ b/configs/orangepi_zero_defconfig
> @@ -1,49 +1,64 @@
> +# Architecture
> BR2_arm=y
> BR2_cortex_a7=y
> BR2_ARM_FPU_VFPV4=y

…Here ^^^ you can enable VFP+NEON. It’s working on all Olimex boards with sunxi A7 and can speed things up.

> +
> +# System
> +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the Orange Pi Zero"
> +BR2_TARGET_GENERIC_HOSTNAME="OrangePi_Zero"
> BR2_GLOBAL_PATCH_DIR="board/orangepi/orangepi-zero/patches"
> BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y
> -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_12=y
> -BR2_TARGET_GENERIC_HOSTNAME="OrangePi_Zero"
> -BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the Orange Pi Zero"
> BR2_SYSTEM_DHCP="eth0"
> -BR2_LINUX_KERNEL=y
> -BR2_LINUX_KERNEL_CUSTOM_VERSION=y
> -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.12.2"
> -BR2_LINUX_KERNEL_DEFCONFIG="sunxi"
> -BR2_LINUX_KERNEL_DTS_SUPPORT=y
> -BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun8i-h2-plus-orangepi-zero"
> -BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/orangepi/orangepi-zero/linux-extras.config"
> -BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
> -BR2_TARGET_ROOTFS_EXT2=y
> -BR2_TARGET_ROOTFS_EXT2_4=y
> -# BR2_TARGET_ROOTFS_TAR is not set
> +BR2_GCC_ENABLE_LTO=y
> +
> +# Bootloader
> BR2_TARGET_UBOOT=y
> BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
> BR2_TARGET_UBOOT_CUSTOM_VERSION=y
> -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2021.04"
> +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2022.01"
> BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_zero"
> BR2_TARGET_UBOOT_NEEDS_DTC=y
> BR2_TARGET_UBOOT_NEEDS_PYTHON3=y
> BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y
> BR2_TARGET_UBOOT_SPL=y
> BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin"
> -BR2_PACKAGE_HOST_UBOOT_TOOLS=y
> -BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT=y
> -BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE="board/orangepi/orangepi-zero/boot.cmd"
> -BR2_PACKAGE_HOST_DOSFSTOOLS=y
> -BR2_PACKAGE_HOST_GENIMAGE=y
> -BR2_PACKAGE_HOST_MTOOLS=y
> -BR2_PACKAGE_HOST_UBOOT_TOOLS=y
> +BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="board/orangepi/common/uboot-extras.config"
> +
> +# Kernel
> +BR2_LINUX_KERNEL=y
> +BR2_LINUX_KERNEL_DEFCONFIG="sunxi"
> +BR2_LINUX_KERNEL_DTS_SUPPORT=y
> +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun8i-h2-plus-orangepi-zero"
> +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/orangepi/orangepi-zero/linux-extras.config"
> +BR2_LINUX_KERNEL_INSTALL_TARGET=y
> +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
> +BR2_LINUX_KERNEL_CUSTOM_VERSION=y
> +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.12.19"
> +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_12=y
> +
> +# Filesystem
> +BR2_TARGET_ROOTFS_EXT2=y
> +BR2_TARGET_ROOTFS_EXT2_4=y
> +BR2_TARGET_ROOTFS_EXT2_SIZE="63M"
> +BR2_TARGET_ROOTFS_EXT2_MKFS_OPTIONS="-O ^64bit,fast_commit"
> +BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW=y
> +BR2_TARGET_ROOTFS_TAR=n
> +
> +# Image
> +BR2_ROOTFS_POST_BUILD_SCRIPT="board/orangepi/common/post-build.sh"
> BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh"
> -BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/orangepi/orangepi-zero/genimage.cfg"
> +BR2_ROOTFS_POST_SCRIPT_ARGS="-c $(BINARIES_DIR)/genimage.cfg"
> +
> +# Required tools to create the SD image
> +BR2_PACKAGE_HOST_GENIMAGE=y
> 
> -# wireless driver and firmware
> +# Wireless driver and firmware
> +# [16.01.2022] Doesn't compile with newer kernels > 5.12.x
> BR2_PACKAGE_XR819_XRADIO=y
> BR2_PACKAGE_ARMBIAN_FIRMWARE=y
> BR2_PACKAGE_ARMBIAN_FIRMWARE_XR819=y

Can you point a test case? This way I could try to fix building and you could test if it works.

Thank you
Best regards
—-
Giulio Benetti
Benetti Engineering sas

> 
> -# wireless support
> +# Wireless support
> BR2_PACKAGE_IW=y
> BR2_PACKAGE_WIRELESS_TOOLS=y
> BR2_PACKAGE_WIRELESS_TOOLS_LIB=y
> @@ -51,5 +66,5 @@ BR2_PACKAGE_WPA_SUPPLICANT=y
> BR2_PACKAGE_WPA_SUPPLICANT_NL80211=y
> BR2_PACKAGE_WPA_SUPPLICANT_CLI=y
> 
> -# spi flash support
> +# Spi flash support
> BR2_PACKAGE_MTD=y
> -- 
> 2.34.1
> 
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
Giulio Benetti Jan. 16, 2022, 7:35 p.m. UTC | #2
Add Peter in Cc.

Can you please check below about extlinux?

Giulio

> Il giorno 16 gen 2022, alle ore 16:30, Giulio Benetti <giulio.benetti@benettiengineering.com> ha scritto:
> 
> Hi Sergey, Peter, All,
> 
>> Il giorno 16 gen 2022, alle ore 12:26, Sergey Kuzminov <kuzminov.sergey81@gmail.com> ha scritto:
>> 
>> Changes:
>> - common scenarios for multiple boards to create the SD image: board/orangepi/common;
>> - extlinux.conf instead of boot.scr;
> 
> I’ve seen other boards switching to extlinux.conf instead of boot.scr, but extlinux.conf doesn’t have any checksum while boot.scr does as I remember.
> I’ve missed previous discussion about this.
> 
> @Peter as I recall you’ve suggested this. Sorry but I don’t remember the reason and I would still keep boot.scr. I’d prefer the system not booting than a system booting with partial bootlegs honestly.
> 
> What about that?
> 
> And…
> 
>> - exclude FAT partition;
>> - defconfig refactoring;
>> - kernel: bump to version 5.12.19, if newer then BR2_PACKAGE_XR819_XRADIO will not compile;
>> - u-boot: bump to version 2022.01
>> 
>> Signed-off-by: Sergey Kuzminov <kuzminov.sergey81@gmail.com>
>> ---
>> board/orangepi/common/extlinux.conf       |  5 ++
>> board/orangepi/common/genimage.cfg        | 19 +++++++
>> board/orangepi/common/post-build.sh       | 34 ++++++++++++
>> board/orangepi/common/uboot-extras.config |  3 +
>> board/orangepi/orangepi-zero/boot.cmd     |  9 ---
>> board/orangepi/orangepi-zero/genimage.cfg | 36 ------------
>> configs/orangepi_zero_defconfig           | 67 ++++++++++++++---------
>> 7 files changed, 102 insertions(+), 71 deletions(-)
>> create mode 100644 board/orangepi/common/extlinux.conf
>> create mode 100644 board/orangepi/common/genimage.cfg
>> create mode 100755 board/orangepi/common/post-build.sh
>> create mode 100644 board/orangepi/common/uboot-extras.config
>> delete mode 100644 board/orangepi/orangepi-zero/boot.cmd
>> delete mode 100644 board/orangepi/orangepi-zero/genimage.cfg
>> 
>> diff --git a/board/orangepi/common/extlinux.conf b/board/orangepi/common/extlinux.conf
>> new file mode 100644
>> index 0000000000..015f29270e
>> --- /dev/null
>> +++ b/board/orangepi/common/extlinux.conf
>> @@ -0,0 +1,5 @@
>> +LABEL default
>> +  kernel /boot/%LINUXIMAGE%
>> +  devicetreedir /boot
>> +  append root=PARTUUID=%PARTUUID% rootwait console=${console}
>> +# append root=PARTUUID=%PARTUUID% rootwait console=${console} rootfstype=ext4 quiet panic=10
>> diff --git a/board/orangepi/common/genimage.cfg b/board/orangepi/common/genimage.cfg
>> new file mode 100644
>> index 0000000000..fd250ef05d
>> --- /dev/null
>> +++ b/board/orangepi/common/genimage.cfg
>> @@ -0,0 +1,19 @@
>> +image sdcard.img {
>> +    hdimage {
>> +        partition-table-type = gpt
>> +        gpt-no-backup = true
>> +        gpt-location = 1008K # 1MB - 16KB
>> +    }
>> +
>> +    partition u-boot {
>> +        in-partition-table = false
>> +        image = "u-boot-sunxi-with-spl.bin"
>> +        offset = 8K
>> +        size = 1000K # 1MB - 8KB - 16KB
>> +    }
>> +
>> +    partition rootfs {
>> +        image = "rootfs.ext4"
>> +        partition-uuid = %PARTUUID%
>> +    }
>> +}
>> diff --git a/board/orangepi/common/post-build.sh b/board/orangepi/common/post-build.sh
>> new file mode 100755
>> index 0000000000..296f94b174
>> --- /dev/null
>> +++ b/board/orangepi/common/post-build.sh
>> @@ -0,0 +1,34 @@
>> +#!/bin/sh
>> +
>> +linux_image()
>> +{
>> +    if grep -Eq "^BR2_LINUX_KERNEL_UIMAGE=y$" ${BR2_CONFIG}; then
>> +        echo "uImage"
>> +    elif grep -Eq "^BR2_LINUX_KERNEL_IMAGE=y$" ${BR2_CONFIG}; then
>> +        echo "Image"
>> +    elif grep -Eq "^BR2_LINUX_KERNEL_IMAGEGZ=y$" ${BR2_CONFIG}; then
>> +        echo "Image.gz"
>> +    else
>> +        echo "zImage"
>> +    fi
>> +}
>> +
>> +generic_getty()
>> +{
>> +    if grep -Eq "^BR2_TARGET_GENERIC_GETTY=y$" ${BR2_CONFIG}; then
>> +        echo ""
>> +    else
>> +        echo "s/\s*console=\S*//"
>> +    fi
>> +}
>> +
>> +PARTUUID="$($HOST_DIR/bin/uuidgen)"
>> +
>> +install -d "$TARGET_DIR/boot/extlinux/"
>> +
>> +sed -e "$(generic_getty)" \
>> +    -e "s/%LINUXIMAGE%/$(linux_image)/g" \
>> +    -e "s/%PARTUUID%/$PARTUUID/g" \
>> +    "board/orangepi/common/extlinux.conf" > "$TARGET_DIR/boot/extlinux/extlinux.conf"
>> +
>> +sed "s/%PARTUUID%/$PARTUUID/g" "board/orangepi/common/genimage.cfg" > "$BINARIES_DIR/genimage.cfg"
>> diff --git a/board/orangepi/common/uboot-extras.config b/board/orangepi/common/uboot-extras.config
>> new file mode 100644
>> index 0000000000..5aa97523d9
>> --- /dev/null
>> +++ b/board/orangepi/common/uboot-extras.config
>> @@ -0,0 +1,3 @@
>> +CONFIG_BOOTDELAY=0
>> +CONFIG_USE_PREBOOT=y
>> +CONFIG_PREBOOT="setenv preboot;"
>> diff --git a/board/orangepi/orangepi-zero/boot.cmd b/board/orangepi/orangepi-zero/boot.cmd
>> deleted file mode 100644
>> index d094a64fe5..0000000000
>> --- a/board/orangepi/orangepi-zero/boot.cmd
>> +++ /dev/null
>> @@ -1,9 +0,0 @@
>> -setenv fdt_high ffffffff
>> -
>> -part uuid mmc 0:2 uuid
>> -setenv bootargs console=ttyS0,115200 root=PARTUUID=${uuid} rootwait
>> -
>> -fatload mmc 0 $kernel_addr_r zImage
>> -fatload mmc 0 $fdt_addr_r sun8i-h2-plus-orangepi-zero.dtb
>> -
>> -bootz $kernel_addr_r - $fdt_addr_r
>> diff --git a/board/orangepi/orangepi-zero/genimage.cfg b/board/orangepi/orangepi-zero/genimage.cfg
>> deleted file mode 100644
>> index 32f5454ae6..0000000000
>> --- a/board/orangepi/orangepi-zero/genimage.cfg
>> +++ /dev/null
>> @@ -1,36 +0,0 @@
>> -# Minimal SD card image for the OrangePi Zero
>> -#
>> -image boot.vfat {
>> -    vfat {
>> -        files = {
>> -            "zImage",
>> -            "sun8i-h2-plus-orangepi-zero.dtb",
>> -            "boot.scr"
>> -        }
>> -    }
>> -    size = 10M
>> -}
>> -
>> -image sdcard.img {
>> -    hdimage {
>> -    }
>> -
>> -    partition u-boot {
>> -        in-partition-table = "no"
>> -        image = "u-boot-sunxi-with-spl.bin"
>> -        offset = 8K
>> -        size = 1016K # 1MB - 8KB
>> -    }
>> -
>> -    partition boot {
>> -        partition-type = 0xC
>> -        bootable = "true"
>> -        image = "boot.vfat"
>> -    }
>> -
>> -    partition rootfs {
>> -        partition-type = 0x83
>> -        image = "rootfs.ext4"
>> -        size = 512M
>> -    }
>> -}
>> diff --git a/configs/orangepi_zero_defconfig b/configs/orangepi_zero_defconfig
>> index 1c107b10e6..908bcea893 100644
>> --- a/configs/orangepi_zero_defconfig
>> +++ b/configs/orangepi_zero_defconfig
>> @@ -1,49 +1,64 @@
>> +# Architecture
>> BR2_arm=y
>> BR2_cortex_a7=y
>> BR2_ARM_FPU_VFPV4=y
> 
> …Here ^^^ you can enable VFP+NEON. It’s working on all Olimex boards with sunxi A7 and can speed things up.
> 
>> +
>> +# System
>> +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the Orange Pi Zero"
>> +BR2_TARGET_GENERIC_HOSTNAME="OrangePi_Zero"
>> BR2_GLOBAL_PATCH_DIR="board/orangepi/orangepi-zero/patches"
>> BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y
>> -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_12=y
>> -BR2_TARGET_GENERIC_HOSTNAME="OrangePi_Zero"
>> -BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the Orange Pi Zero"
>> BR2_SYSTEM_DHCP="eth0"
>> -BR2_LINUX_KERNEL=y
>> -BR2_LINUX_KERNEL_CUSTOM_VERSION=y
>> -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.12.2"
>> -BR2_LINUX_KERNEL_DEFCONFIG="sunxi"
>> -BR2_LINUX_KERNEL_DTS_SUPPORT=y
>> -BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun8i-h2-plus-orangepi-zero"
>> -BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/orangepi/orangepi-zero/linux-extras.config"
>> -BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
>> -BR2_TARGET_ROOTFS_EXT2=y
>> -BR2_TARGET_ROOTFS_EXT2_4=y
>> -# BR2_TARGET_ROOTFS_TAR is not set
>> +BR2_GCC_ENABLE_LTO=y
>> +
>> +# Bootloader
>> BR2_TARGET_UBOOT=y
>> BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
>> BR2_TARGET_UBOOT_CUSTOM_VERSION=y
>> -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2021.04"
>> +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2022.01"
>> BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_zero"
>> BR2_TARGET_UBOOT_NEEDS_DTC=y
>> BR2_TARGET_UBOOT_NEEDS_PYTHON3=y
>> BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y
>> BR2_TARGET_UBOOT_SPL=y
>> BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin"
>> -BR2_PACKAGE_HOST_UBOOT_TOOLS=y
>> -BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT=y
>> -BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE="board/orangepi/orangepi-zero/boot.cmd"
>> -BR2_PACKAGE_HOST_DOSFSTOOLS=y
>> -BR2_PACKAGE_HOST_GENIMAGE=y
>> -BR2_PACKAGE_HOST_MTOOLS=y
>> -BR2_PACKAGE_HOST_UBOOT_TOOLS=y
>> +BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="board/orangepi/common/uboot-extras.config"
>> +
>> +# Kernel
>> +BR2_LINUX_KERNEL=y
>> +BR2_LINUX_KERNEL_DEFCONFIG="sunxi"
>> +BR2_LINUX_KERNEL_DTS_SUPPORT=y
>> +BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun8i-h2-plus-orangepi-zero"
>> +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/orangepi/orangepi-zero/linux-extras.config"
>> +BR2_LINUX_KERNEL_INSTALL_TARGET=y
>> +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
>> +BR2_LINUX_KERNEL_CUSTOM_VERSION=y
>> +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.12.19"
>> +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_12=y
>> +
>> +# Filesystem
>> +BR2_TARGET_ROOTFS_EXT2=y
>> +BR2_TARGET_ROOTFS_EXT2_4=y
>> +BR2_TARGET_ROOTFS_EXT2_SIZE="63M"
>> +BR2_TARGET_ROOTFS_EXT2_MKFS_OPTIONS="-O ^64bit,fast_commit"
>> +BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW=y
>> +BR2_TARGET_ROOTFS_TAR=n
>> +
>> +# Image
>> +BR2_ROOTFS_POST_BUILD_SCRIPT="board/orangepi/common/post-build.sh"
>> BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh"
>> -BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/orangepi/orangepi-zero/genimage.cfg"
>> +BR2_ROOTFS_POST_SCRIPT_ARGS="-c $(BINARIES_DIR)/genimage.cfg"
>> +
>> +# Required tools to create the SD image
>> +BR2_PACKAGE_HOST_GENIMAGE=y
>> 
>> -# wireless driver and firmware
>> +# Wireless driver and firmware
>> +# [16.01.2022] Doesn't compile with newer kernels > 5.12.x
>> BR2_PACKAGE_XR819_XRADIO=y
>> BR2_PACKAGE_ARMBIAN_FIRMWARE=y
>> BR2_PACKAGE_ARMBIAN_FIRMWARE_XR819=y
> 
> Can you point a test case? This way I could try to fix building and you could test if it works.
> 
> Thank you
> Best regards
> —-
> Giulio Benetti
> Benetti Engineering sas
> 
>> 
>> -# wireless support
>> +# Wireless support
>> BR2_PACKAGE_IW=y
>> BR2_PACKAGE_WIRELESS_TOOLS=y
>> BR2_PACKAGE_WIRELESS_TOOLS_LIB=y
>> @@ -51,5 +66,5 @@ BR2_PACKAGE_WPA_SUPPLICANT=y
>> BR2_PACKAGE_WPA_SUPPLICANT_NL80211=y
>> BR2_PACKAGE_WPA_SUPPLICANT_CLI=y
>> 
>> -# spi flash support
>> +# Spi flash support
>> BR2_PACKAGE_MTD=y
>> -- 
>> 2.34.1
>> 
>> _______________________________________________
>> buildroot mailing list
>> buildroot@buildroot.org
>> https://lists.buildroot.org/mailman/listinfo/buildroot
> 
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
Giulio Benetti Jan. 17, 2022, 9:06 p.m. UTC | #3
Hi Sergey,

please keep ML in Cc(reply to all), thank you
I follow with another e-mail
Giulio Benetti Jan. 17, 2022, 9:08 p.m. UTC | #4
Hi Sergey,

please keep ML in Cc,

On 17/01/22 21:56, Sergey Kuzminov wrote:
> Hi, Giulio. Wifi is working, thanks.
> 
> # uname -a
> Linux OrangePi_Zero 5.16.1 #1 SMP Mon Jan 17 21:46:45 MSK 2022 armv7l
> GNU/Linux
> # iwconfig
> lo        no wireless extensions.
> 
> eth0      no wireless extensions.
> 
> wlan0     IEEE 802.11  ESSID:"AFD7DF"
>             Mode:Managed  Frequency:2.452 GHz  Access Point:
> 2C:C8:1B:4C:E1:F3
>             Bit Rate=26 Mb/s   Tx-Power=20 dBm
>             Retry short limit:7   RTS thr:off   Fragment thr:off
>             Encryption key:off
>             Power Management:on
>             Link Quality=28/70  Signal level=-82 dBm
>             Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
>             Tx excessive retries:4  Invalid misc:0   Missed beacon:0
> 
> # ifconfig
> eth0      Link encap:Ethernet  HWaddr 02:42:FD:46:1D:D3
>             UP BROADCAST MULTICAST  MTU:1500  Metric:1
>             RX packets:0 errors:0 dropped:0 overruns:0 frame:0
>             TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
>             collisions:0 txqueuelen:1000
>             RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
>             Interrupt:43
> 
> lo        Link encap:Local Loopback
>             inet addr:127.0.0.1  Mask:255.0.0.0
>             UP LOOPBACK RUNNING  MTU:65536  Metric:1
>             RX packets:0 errors:0 dropped:0 overruns:0 frame:0
>             TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
>             collisions:0 txqueuelen:1000
>             RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
> 
> wlan0     Link encap:Ethernet  HWaddr 12:42:FD:46:1D:D3
>             inet addr:192.168.10.240  Bcast:192.168.10.255 Mask:255.255.255.0
>             UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
>             RX packets:88 errors:0 dropped:34 overruns:0 frame:0
>             TX packets:14 errors:0 dropped:0 overruns:0 carrier:0
>             collisions:0 txqueuelen:1000
>             RX bytes:13516 (13.1 KiB)  TX bytes:1927 (1.8 KiB)
> 
> # ping google.com
> PING google.com (216.239.38.120): 56 data bytes
> 64 bytes from 216.239.38.120: seq=0 ttl=102 time=54.890 ms
> 64 bytes from 216.239.38.120: seq=1 ttl=102 time=54.102 ms
> 64 bytes from 216.239.38.120: seq=2 ttl=102 time=51.583 ms
> ^C
> --- google.com ping statistics ---
> 3 packets transmitted, 3 packets received, 0% packet loss
> round-trip min/avg/max = 51.583/53.525/54.890 ms
> 

Thanks a lot for trying. So please bump linux version to latest(5.16.1) 
and send V2 patch. In the meanwhile I've just sent a patch for rx819-radio:
https://patchwork.ozlabs.org/project/buildroot/patch/20220117210739.2022551-1-giulio.benetti@benettiengineering.com/

So when you send V2, please create a cover-letter where you state my 
patch for rx819-radio is needed to work.

Thank you!
Best regards
Sergey Kuzminov Jan. 17, 2022, 9:19 p.m. UTC | #5
Ok. I'll make a v2 patch tomorrow, I want to check something else 
(BR2_ARM_EABIHF, BR2_ARM_FPU_NEON_VFPV4).

18.01.2022 00:08, Giulio Benetti пишет:
> Hi Sergey,
>
> please keep ML in Cc,
>
> On 17/01/22 21:56, Sergey Kuzminov wrote:
>> Hi, Giulio. Wifi is working, thanks.
>>
>> # uname -a
>> Linux OrangePi_Zero 5.16.1 #1 SMP Mon Jan 17 21:46:45 MSK 2022 armv7l
>> GNU/Linux
>> # iwconfig
>> lo        no wireless extensions.
>>
>> eth0      no wireless extensions.
>>
>> wlan0     IEEE 802.11  ESSID:"AFD7DF"
>>             Mode:Managed  Frequency:2.452 GHz  Access Point:
>> 2C:C8:1B:4C:E1:F3
>>             Bit Rate=26 Mb/s   Tx-Power=20 dBm
>>             Retry short limit:7   RTS thr:off   Fragment thr:off
>>             Encryption key:off
>>             Power Management:on
>>             Link Quality=28/70  Signal level=-82 dBm
>>             Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
>>             Tx excessive retries:4  Invalid misc:0   Missed beacon:0
>>
>> # ifconfig
>> eth0      Link encap:Ethernet  HWaddr 02:42:FD:46:1D:D3
>>             UP BROADCAST MULTICAST  MTU:1500  Metric:1
>>             RX packets:0 errors:0 dropped:0 overruns:0 frame:0
>>             TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
>>             collisions:0 txqueuelen:1000
>>             RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
>>             Interrupt:43
>>
>> lo        Link encap:Local Loopback
>>             inet addr:127.0.0.1  Mask:255.0.0.0
>>             UP LOOPBACK RUNNING  MTU:65536  Metric:1
>>             RX packets:0 errors:0 dropped:0 overruns:0 frame:0
>>             TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
>>             collisions:0 txqueuelen:1000
>>             RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
>>
>> wlan0     Link encap:Ethernet  HWaddr 12:42:FD:46:1D:D3
>>             inet addr:192.168.10.240  Bcast:192.168.10.255 
>> Mask:255.255.255.0
>>             UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
>>             RX packets:88 errors:0 dropped:34 overruns:0 frame:0
>>             TX packets:14 errors:0 dropped:0 overruns:0 carrier:0
>>             collisions:0 txqueuelen:1000
>>             RX bytes:13516 (13.1 KiB)  TX bytes:1927 (1.8 KiB)
>>
>> # ping google.com
>> PING google.com (216.239.38.120): 56 data bytes
>> 64 bytes from 216.239.38.120: seq=0 ttl=102 time=54.890 ms
>> 64 bytes from 216.239.38.120: seq=1 ttl=102 time=54.102 ms
>> 64 bytes from 216.239.38.120: seq=2 ttl=102 time=51.583 ms
>> ^C
>> --- google.com ping statistics ---
>> 3 packets transmitted, 3 packets received, 0% packet loss
>> round-trip min/avg/max = 51.583/53.525/54.890 ms
>>
>
> Thanks a lot for trying. So please bump linux version to 
> latest(5.16.1) and send V2 patch. In the meanwhile I've just sent a 
> patch for rx819-radio:
> https://patchwork.ozlabs.org/project/buildroot/patch/20220117210739.2022551-1-giulio.benetti@benettiengineering.com/ 
>
>
> So when you send V2, please create a cover-letter where you state my 
> patch for rx819-radio is needed to work.
>
> Thank you!
> Best regards
diff mbox series

Patch

diff --git a/board/orangepi/common/extlinux.conf b/board/orangepi/common/extlinux.conf
new file mode 100644
index 0000000000..015f29270e
--- /dev/null
+++ b/board/orangepi/common/extlinux.conf
@@ -0,0 +1,5 @@ 
+LABEL default
+  kernel /boot/%LINUXIMAGE%
+  devicetreedir /boot
+  append root=PARTUUID=%PARTUUID% rootwait console=${console}
+# append root=PARTUUID=%PARTUUID% rootwait console=${console} rootfstype=ext4 quiet panic=10
diff --git a/board/orangepi/common/genimage.cfg b/board/orangepi/common/genimage.cfg
new file mode 100644
index 0000000000..fd250ef05d
--- /dev/null
+++ b/board/orangepi/common/genimage.cfg
@@ -0,0 +1,19 @@ 
+image sdcard.img {
+	hdimage {
+		partition-table-type = gpt
+		gpt-no-backup = true
+		gpt-location = 1008K # 1MB - 16KB
+	}
+
+	partition u-boot {
+		in-partition-table = false
+		image = "u-boot-sunxi-with-spl.bin"
+		offset = 8K
+		size = 1000K # 1MB - 8KB - 16KB
+	}
+
+	partition rootfs {
+		image = "rootfs.ext4"
+		partition-uuid = %PARTUUID%
+	}
+}
diff --git a/board/orangepi/common/post-build.sh b/board/orangepi/common/post-build.sh
new file mode 100755
index 0000000000..296f94b174
--- /dev/null
+++ b/board/orangepi/common/post-build.sh
@@ -0,0 +1,34 @@ 
+#!/bin/sh
+
+linux_image()
+{
+	if grep -Eq "^BR2_LINUX_KERNEL_UIMAGE=y$" ${BR2_CONFIG}; then
+		echo "uImage"
+	elif grep -Eq "^BR2_LINUX_KERNEL_IMAGE=y$" ${BR2_CONFIG}; then
+		echo "Image"
+	elif grep -Eq "^BR2_LINUX_KERNEL_IMAGEGZ=y$" ${BR2_CONFIG}; then
+		echo "Image.gz"
+	else
+		echo "zImage"
+	fi
+}
+
+generic_getty()
+{
+	if grep -Eq "^BR2_TARGET_GENERIC_GETTY=y$" ${BR2_CONFIG}; then
+		echo ""
+	else
+		echo "s/\s*console=\S*//"
+	fi
+}
+
+PARTUUID="$($HOST_DIR/bin/uuidgen)"
+
+install -d "$TARGET_DIR/boot/extlinux/"
+
+sed -e "$(generic_getty)" \
+	-e "s/%LINUXIMAGE%/$(linux_image)/g" \
+	-e "s/%PARTUUID%/$PARTUUID/g" \
+	"board/orangepi/common/extlinux.conf" > "$TARGET_DIR/boot/extlinux/extlinux.conf"
+
+sed "s/%PARTUUID%/$PARTUUID/g" "board/orangepi/common/genimage.cfg" > "$BINARIES_DIR/genimage.cfg"
diff --git a/board/orangepi/common/uboot-extras.config b/board/orangepi/common/uboot-extras.config
new file mode 100644
index 0000000000..5aa97523d9
--- /dev/null
+++ b/board/orangepi/common/uboot-extras.config
@@ -0,0 +1,3 @@ 
+CONFIG_BOOTDELAY=0
+CONFIG_USE_PREBOOT=y
+CONFIG_PREBOOT="setenv preboot;"
diff --git a/board/orangepi/orangepi-zero/boot.cmd b/board/orangepi/orangepi-zero/boot.cmd
deleted file mode 100644
index d094a64fe5..0000000000
--- a/board/orangepi/orangepi-zero/boot.cmd
+++ /dev/null
@@ -1,9 +0,0 @@ 
-setenv fdt_high ffffffff
-
-part uuid mmc 0:2 uuid
-setenv bootargs console=ttyS0,115200 root=PARTUUID=${uuid} rootwait
-
-fatload mmc 0 $kernel_addr_r zImage
-fatload mmc 0 $fdt_addr_r sun8i-h2-plus-orangepi-zero.dtb
-
-bootz $kernel_addr_r - $fdt_addr_r
diff --git a/board/orangepi/orangepi-zero/genimage.cfg b/board/orangepi/orangepi-zero/genimage.cfg
deleted file mode 100644
index 32f5454ae6..0000000000
--- a/board/orangepi/orangepi-zero/genimage.cfg
+++ /dev/null
@@ -1,36 +0,0 @@ 
-# Minimal SD card image for the OrangePi Zero
-#
-image boot.vfat {
-	vfat {
-		files = {
-			"zImage",
-			"sun8i-h2-plus-orangepi-zero.dtb",
-			"boot.scr"
-		}
-	}
-	size = 10M
-}
-
-image sdcard.img {
-	hdimage {
-	}
-
-	partition u-boot {
-		in-partition-table = "no"
-		image = "u-boot-sunxi-with-spl.bin"
-		offset = 8K
-		size = 1016K # 1MB - 8KB
-	}
-
-	partition boot {
-		partition-type = 0xC
-		bootable = "true"
-		image = "boot.vfat"
-	}
-
-	partition rootfs {
-		partition-type = 0x83
-		image = "rootfs.ext4"
-		size = 512M
-	}
-}
diff --git a/configs/orangepi_zero_defconfig b/configs/orangepi_zero_defconfig
index 1c107b10e6..908bcea893 100644
--- a/configs/orangepi_zero_defconfig
+++ b/configs/orangepi_zero_defconfig
@@ -1,49 +1,64 @@ 
+# Architecture
 BR2_arm=y
 BR2_cortex_a7=y
 BR2_ARM_FPU_VFPV4=y
+
+# System
+BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the Orange Pi Zero"
+BR2_TARGET_GENERIC_HOSTNAME="OrangePi_Zero"
 BR2_GLOBAL_PATCH_DIR="board/orangepi/orangepi-zero/patches"
 BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y
-BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_12=y
-BR2_TARGET_GENERIC_HOSTNAME="OrangePi_Zero"
-BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the Orange Pi Zero"
 BR2_SYSTEM_DHCP="eth0"
-BR2_LINUX_KERNEL=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.12.2"
-BR2_LINUX_KERNEL_DEFCONFIG="sunxi"
-BR2_LINUX_KERNEL_DTS_SUPPORT=y
-BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun8i-h2-plus-orangepi-zero"
-BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/orangepi/orangepi-zero/linux-extras.config"
-BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
-BR2_TARGET_ROOTFS_EXT2=y
-BR2_TARGET_ROOTFS_EXT2_4=y
-# BR2_TARGET_ROOTFS_TAR is not set
+BR2_GCC_ENABLE_LTO=y
+
+# Bootloader
 BR2_TARGET_UBOOT=y
 BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
 BR2_TARGET_UBOOT_CUSTOM_VERSION=y
-BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2021.04"
+BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2022.01"
 BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_zero"
 BR2_TARGET_UBOOT_NEEDS_DTC=y
 BR2_TARGET_UBOOT_NEEDS_PYTHON3=y
 BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y
 BR2_TARGET_UBOOT_SPL=y
 BR2_TARGET_UBOOT_SPL_NAME="u-boot-sunxi-with-spl.bin"
-BR2_PACKAGE_HOST_UBOOT_TOOLS=y
-BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT=y
-BR2_PACKAGE_HOST_UBOOT_TOOLS_BOOT_SCRIPT_SOURCE="board/orangepi/orangepi-zero/boot.cmd"
-BR2_PACKAGE_HOST_DOSFSTOOLS=y
-BR2_PACKAGE_HOST_GENIMAGE=y
-BR2_PACKAGE_HOST_MTOOLS=y
-BR2_PACKAGE_HOST_UBOOT_TOOLS=y
+BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="board/orangepi/common/uboot-extras.config"
+
+# Kernel
+BR2_LINUX_KERNEL=y
+BR2_LINUX_KERNEL_DEFCONFIG="sunxi"
+BR2_LINUX_KERNEL_DTS_SUPPORT=y
+BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun8i-h2-plus-orangepi-zero"
+BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/orangepi/orangepi-zero/linux-extras.config"
+BR2_LINUX_KERNEL_INSTALL_TARGET=y
+BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.12.19"
+BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_12=y
+
+# Filesystem
+BR2_TARGET_ROOTFS_EXT2=y
+BR2_TARGET_ROOTFS_EXT2_4=y
+BR2_TARGET_ROOTFS_EXT2_SIZE="63M"
+BR2_TARGET_ROOTFS_EXT2_MKFS_OPTIONS="-O ^64bit,fast_commit"
+BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW=y
+BR2_TARGET_ROOTFS_TAR=n
+
+# Image
+BR2_ROOTFS_POST_BUILD_SCRIPT="board/orangepi/common/post-build.sh"
 BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh"
-BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/orangepi/orangepi-zero/genimage.cfg"
+BR2_ROOTFS_POST_SCRIPT_ARGS="-c $(BINARIES_DIR)/genimage.cfg"
+
+# Required tools to create the SD image
+BR2_PACKAGE_HOST_GENIMAGE=y
 
-# wireless driver and firmware
+# Wireless driver and firmware
+# [16.01.2022] Doesn't compile with newer kernels > 5.12.x
 BR2_PACKAGE_XR819_XRADIO=y
 BR2_PACKAGE_ARMBIAN_FIRMWARE=y
 BR2_PACKAGE_ARMBIAN_FIRMWARE_XR819=y
 
-# wireless support
+# Wireless support
 BR2_PACKAGE_IW=y
 BR2_PACKAGE_WIRELESS_TOOLS=y
 BR2_PACKAGE_WIRELESS_TOOLS_LIB=y
@@ -51,5 +66,5 @@  BR2_PACKAGE_WPA_SUPPLICANT=y
 BR2_PACKAGE_WPA_SUPPLICANT_NL80211=y
 BR2_PACKAGE_WPA_SUPPLICANT_CLI=y
 
-# spi flash support
+# Spi flash support
 BR2_PACKAGE_MTD=y