ZFS support in custom u-boot build...

Stacey Pellegrino stacey.pellegrino at gmail.com
Mon Oct 23 18:53:09 CEST 2023


Hey (again) Alex,

As a follow up to my previous email (see below) the following has been
achieved...

spellegrino at orangepi-build-sys:~/src/orangepi-build/u-boot/v2017.09-rk3588$
*sudo
make distclean*
spellegrino at orangepi-build-sys:~/src/orangepi-build/u-boot/v2017.09-rk3588$
*sudo
make orangepi_5_plus_defconfig*
  HOSTCC  scripts/basic/fixdep
  HOSTCC  scripts/kconfig/conf.o
  SHIPPED scripts/kconfig/zconf.tab.c
  SHIPPED scripts/kconfig/zconf.lex.c
  SHIPPED scripts/kconfig/zconf.hash.c
  HOSTCC  scripts/kconfig/zconf.tab.o
  HOSTLD  scripts/kconfig/conf
#
# configuration written to .config
#
spellegrino at orangepi-build-sys:~/src/orangepi-build/u-boot/v2017.09-rk3588$
*grep
ZFS .config*
# CONFIG_CMD_ZFS is not set
spellegrino at orangepi-build-sys:~/src/orangepi-build/u-boot/v2017.09-rk3588$
*sudo
vi .config*
spellegrino at orangepi-build-sys:~/src/orangepi-build/u-boot/v2017.09-rk3588$
*grep
ZFS .config*
CONFIG_CMD_ZFS=y

spellegrino at orangepi-build-sys:~/src/orangepi-build/u-boot/v2017.09-rk3588$
*sudo
make CROSS_COMPILE=aarch64-linux-gnu- all*

...

  CC      cmd/zfs.o
cmd/zfs.c: In function ‘do_zfs_load’:
cmd/zfs.c:43:14: error: unused variable ‘buf’ [-Werror=unused-variable]
   43 |         char buf[12];
      |              ^~~
cc1: all warnings being treated as errors
make[1]: *** [scripts/Makefile.build:281: cmd/zfs.o] Error 1
make: *** [Makefile:1307: cmd] Error 2


spellegrino at orangepi-build-sys:~/src/orangepi-build/u-boot/v2017.09-rk3588$
*grep
Werror Makefile*
KBUILD_CFLAGS += -fshort-wchar -Werror
KBUILD_CFLAGS   += $(call cc-option,-Werror=date-time)
spellegrino at orangepi-build-sys:~/src/orangepi-build/u-boot/v2017.09-rk3588$
*sudo
vi Makefile* (remove the -Werror flag)
spellegrino at orangepi-build-sys:~/src/orangepi-build/u-boot/v2017.09-rk3588$
*grep
Werror Makefile*
KBUILD_CFLAGS   += $(call cc-option,-Werror=date-time)


spellegrino at orangepi-build-sys:~/src/orangepi-build/u-boot/v2017.09-rk3588$
*sudo
make CROSS_COMPILE=aarch64-linux-gnu- all*

spellegrino at orangepi-build-sys:~/src/orangepi-build/u-boot/v2017.09-rk3588$ *ls
-lrt*
total 20348
-rw-rw-r--   1 root root      34 Oct  4 22:13 PREUPLOAD.cfg
-rw-rw-r--   1 root root   14626 Oct  4 22:13 MAINTAINERS
drwxrwxr-x   2 root root    4096 Oct  4 22:13 Licenses
-rw-rw-r--   1 root root   16071 Oct  4 22:13 Kconfig
-rw-rw-r--   1 root root    1863 Oct  4 22:13 Kbuild
drwxrwxr-x   3 root root    4096 Oct  4 22:13 Documentation
-rw-rw-r--   1 root root  187683 Oct  4 22:13 README
drwxrwxr-x   2 root root    4096 Oct  4 22:13 api
drwxrwxr-x  14 root root    4096 Oct  4 22:13 arch
drwxrwxr-x 181 root root    4096 Oct  4 22:13 board
-rw-rw-r--   1 root root    2260 Oct  4 22:13 config.mk
drwxrwxr-x   2 root root   61440 Oct  4 22:13 configs
drwxrwxr-x  10 root root   12288 Oct  4 22:13 doc
drwxrwxr-x   4 root root    4096 Oct  4 22:13 examples
-rwxrwxr-x   1 root root   21097 Oct  4 22:13 make.sh
drwxrwxr-x   5 root root    4096 Oct  4 22:13 post
-rw-rw-r--   1 root root      17 Oct  4 22:13 snapshot.commit
drwxrwxr-x   6 root root    4096 Oct  4 22:13 scripts
drwxr-xr-x   3 root root    4096 Oct 23 15:16 tmp
-rw-r--r--   1 root root   57653 Oct 23 16:01 Makefile.ORIGINAL
-rw-rw-r--   1 root root   57645 Oct 23 16:29 Makefile
drwxrwxr-x  18 root root   12288 Oct 23 16:29 tools
drwxrwxr-x   6 root root   12288 Oct 23 16:29 cmd
drwxrwxr-x   6 root root   12288 Oct 23 16:30 common
drwxrwxr-x   2 root root    4096 Oct 23 16:30 disk
drwxrwxr-x  57 root root    4096 Oct 23 16:30 drivers
drwxrwxr-x   2 root root    4096 Oct 23 16:31 env
drwxrwxr-x  12 root root    4096 Oct 23 16:31 fs
drwxrwxr-x  15 root root   12288 Oct 23 16:31 lib
drwxrwxr-x   2 root root    4096 Oct 23 16:31 net
drwxrwxr-x  12 root root    4096 Oct 23 16:31 test
-rw-r--r--   1 root root    1304 Oct 23 16:31 u-boot.lds
-rw-r--r--   1 root root  936894 Oct 23 16:31 u-boot.map
-rwxr-xr-x   1 root root 9549784 Oct 23 16:31 u-boot
-rwxr-xr-x   1 root root 3273004 Oct 23 16:31 u-boot.srec
-rwxr-xr-x   1 root root 1138400 Oct 23 16:31 u-boot-nodtb.bin
drwxrwxr-x   2 root root    4096 Oct 23 16:31 dts
-rw-r--r--   1 root root 1150948 Oct 23 16:31 u-boot-dtb.bin
-rw-r--r--   1 root root 1150952 Oct 23 16:31 u-boot.bin
-rw-r--r--   1 root root  365877 Oct 23 16:31 u-boot.sym
-rw-r--r--   1 root root  188951 Oct 23 16:31 System.map
drwxr-xr-x  13 root root    4096 Oct 23 16:32 spl
-rw-r--r--   1 root root 1233408 Oct 23 16:32 u-boot.img
drwxr-xr-x  10 root root    4096 Oct 23 16:32 tpl
-rw-r--r--   1 root root   12548 Oct 23 16:32 u-boot.dtb
-rw-r--r--   1 root root 1233408 Oct 23 16:32 u-boot-dtb.img
drwxrwxr-x  34 root root   20480 Oct 23 16:32 include
-rw-r--r--   1 root root   18126 Oct 23 16:32 u-boot.cfg
-rw-r--r--   1 root root   11596 Oct 23 16:32 u-boot.cfg.configs

So I can now cross-compile. With this directory listing do I just dd
u-boot.bin to the NVMe card? Thank you and kindest regards, -Stacey
Pellegrino


On Mon, 23 Oct 2023 at 15:52, Stacey Pellegrino <stacey.pellegrino at gmail.com>
wrote:

> Hey Alex,
>
> Many thanks for your email response! Updated compilation configuration to
> enable CONFIG_CMD_ZFS with make menuconfig. However, when using the
> build.sh script it tends to overwrite the .config file for the u-boot
> compile in question. Steven (CCed on this email) from Orange Pi is looking
> into this for me (so I believe)? Upon getting ZFS compiled into u-boot will
> then be the options needed to pass for booting a root ZFS partition
> accordingly. All supporting information regarding this would be so much
> appreciated! Kindest regards, -Stacey Pellegrino
>
> On Tue, 10 Oct 2023 at 12:01, Alexander Dahl <ada at thorsis.com> wrote:
>
>> Hello Stacey,
>>
>> Am Thu, Oct 05, 2023 at 11:22:14AM +0100 schrieb Stacey Pellegrino:
>> > To all those of concern,
>> >
>> > I am in need of help regarding building u-boot with ZFS support for the
>> > Orange Pi 5 Plus.
>> >
>> > I have tried working out the following...
>> >
>> >
>> https://github.com/u-boot/u-boot/blob/22ad69b7987eb4b10221330661db4427e40174fb/doc/README.zfs
>> >
>> > The URL link above specifies using the board specific config file, which
>> > for the Orange Pi 5 Plus is (so I believe)
>> > orangepi-build/userpatches/config-default.conf.
>> > I therefore edited this file in question with CONFIG_CMD_ZFS="yes" and
>> > uncommenting the line install_zfs="yes".
>>
>> In that regard this README.zfs is somewhat outdated.  You should set
>> CMD_ZFS through Kconfig instead.  Which means: pick the matching
>> defconfig from configs/ subfolder, then run menuconfig and enable
>> CMD_ZFS, and build that.
>>
>> Not sure if that Orange Pi 5 Plus is already supported by U-Boot
>> mainline already.  From a quick glance at the defconfig filenames I
>> would not know which to pick.
>>
>> > However, it still does not allow me to boot with root ZFS on the NVMe
>> SSD
>> > with the official Orange Pi Debian v12 (Bookwork) ARM image. ZFS does
>> not
>> > seem to be referenced in the custom u-boot source code build output as
>> > well. I followed the build instructions located at the following URL
>> link...
>> >
>> >
>> http://www.orangepi.org/orangepiwiki/index.php/Orange_Pi_5_Plus#Compile_u-boot
>>
>> Oh you should have told before.  This uses a custom build script not
>> part of U-Boot, probably to call U-Boot build.  Please contact that
>> project on how to change U-Boot config instead.  Or look at their
>> build.sh and figure out how it configures and builds U-Boot.
>>
>> > ...but am I required to apply a patch to the u-boot source for ZFS
>> support?
>> > If so, then that could be my problem. If a patch is required, then how
>> > would I go about applying this accordingly?
>>
>> Although they seem to use an outdated and patched version v2017.09 of
>> u-boot: probably not.  Please try with enabling CMD_ZFS in your U-Boot
>> config first.  It's in the menuconfig, also in v2017.09 already.
>>
>> Greets
>> Alex
>>
>> >
>> > Thank you in advance for help in this matter. Kindest regards, -Stacey
>> > Pellegrino
>>
>


More information about the U-Boot mailing list