I'm looking for the source code of a specific u-boot version.

Hello.
I'm trying to boot FreeBSD for arm32 bit as DomU on my ARM Chromebook SNOW with xen. Basically there are two ways to accomplish this task :
1) to write a patch that allows the FreeBSD kernel to boot as a zImage file. This could be accomplished applying this patch to a specific file that's on the source code of FreeBSD :
https://xenbits.xen.org/gitweb/?p=p...8;hb=0782e25d98cc1391472717035f986c979...
This patch was written by Julien Grall a lot of time ago and now it does not work anymore. This is the reason explain by the xen developers :
It appears FreeBSD-CURRENT removed the last step converting the kernel file to kernel.bin.The patch can be readily rebased, but without kernel.bin that doesn't do too much.
So,without a rebase of that patch the first option is not applicable. And I'm not able to fix it.
2) booting FreeBSD using U-Boot,as explained to me by a xen developer :
I was trying to explain why and how Julien's patch works so that you could be the one to re-do something similar or fix the patch on the FreeBSD kernel that you are working with. I am happy to help review and write patches but I don't work with the FreeBSD kernel so I wouldn't be able to help you quickly. However, I might have a suggestion. Do you know if FreeBSD can be booted by U-Boot ? Because U-Boot definitely boots as Xen on ARM guest firmware/bootloader. You should be able to build U-Boot and use the U-Boot binary as Xen guest kernel, then U-Boot could load FreeBSD from disk or network and start it. For instance as domU config file:
kernel="/home/petalinux/u-boot.bin" disk = [ '/home/petalinux/test.img,raw,xvda' ]
Actually I'm working on the idea n. 2. Basically I need to find the proper u-boot file that's able to boot the image of FreeBSD that I have installed (13.2 for arm32 bit). Maybe I found it here :
http://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/nv_ub...
I found that link inside this tutorial :
https://wiki.freebsd.org/arm/Chromebook
the version of u-boot that has been embedded in that file is the following one :
# strings nv_uboot-snow-simplefb.kpart | grep U-Boot U-Boot 2011.12-gc1f6280 (May 27 2013 - 15:06:59) for SMDK5250
So the question is easy : I need to find the source code of that old version of u-boot,because once compiled,it will give me the proper u-boot.bin kernel / bootloader file that maybe will be able to boot FreeBSD.

Hi Mario and Heinrich,
On Wed, Dec 27, 2023 at 12:23 PM Mario Marietto marietto2008@gmail.com wrote:
Hello.
I'm trying to boot FreeBSD for arm32 bit as DomU on my ARM Chromebook SNOW with xen. Basically there are two ways to accomplish this task :
- to write a patch that allows the FreeBSD kernel to boot as a zImage
file. This could be accomplished applying this patch to a specific file that's on the source code of FreeBSD :
https://xenbits.xen.org/gitweb/?p=p...8;hb=0782e25d98cc1391472717035f986c979...
This patch was written by Julien Grall a lot of time ago and now it does not work anymore. This is the reason explain by the xen developers :
It appears FreeBSD-CURRENT removed the last step converting the kernel file to kernel.bin.The patch can be readily rebased, but without kernel.bin that doesn't do too much.
So,without a rebase of that patch the first option is not applicable. And I'm not able to fix it.
- booting FreeBSD using U-Boot,as explained to me by a xen developer :
I was trying to explain why and how Julien's patch works so that you could be the one to re-do something similar or fix the patch on the FreeBSD kernel that you are working with. I am happy to help review and write patches but I don't work with the FreeBSD kernel so I wouldn't be able to help you quickly. However, I might have a suggestion. Do you know if FreeBSD can be booted by U-Boot ? Because U-Boot definitely boots as Xen on ARM guest firmware/bootloader. You should be able to build U-Boot and use the U-Boot binary as Xen guest kernel, then U-Boot could load FreeBSD from disk or network and start it. For instance as domU config file:
kernel="/home/petalinux/u-boot.bin" disk = [ '/home/petalinux/test.img,raw,xvda' ]
Actually I'm working on the idea n. 2. Basically I need to find the proper u-boot file that's able to boot the image of FreeBSD that I have installed (13.2 for arm32 bit). Maybe I found it here :
http://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/nv_ub...
I found that link inside this tutorial :
https://wiki.freebsd.org/arm/Chromebook
the version of u-boot that has been embedded in that file is the following one :
# strings nv_uboot-snow-simplefb.kpart | grep U-Boot U-Boot 2011.12-gc1f6280 (May 27 2013 - 15:06:59) for SMDK5250
So the question is easy : I need to find the source code of that old version of u-boot,because once compiled,it will give me the proper u-boot.bin kernel / bootloader file that maybe will be able to boot FreeBSD.
Yes, it can boot a 32-bit ARM board. I'm not a FreeBSD person, but I've helped a FreeBSD user booting a 32-bit ARM box with u-boot (GoFlexHome Marvell Kirkwood 6281). The u-boot version was 2017.05. I used an out-of-tree u-boot build. This u-boot executed the ubldr to boot FreeBSD.
Please see here: https://forum.doozan.com/read.php?3,49039,82059#msg-82059
It's been so long, I don't remember the details. Just to confirm what Heinrich said that u-boot can indeed boot 32-bit FreeBSD, since many years ago.
All the best, Tony
-- Mario.

Hello.
Can someone provide the right link to download u-boot-2017.0.5 , please ?
I've found it here,but I'm not sure that it's the correct version :
https://src.fedoraproject.org/repo/pkgs/uboot-tools/u-boot-2017.05.tar.bz2/s...
Can you confirm it ? thanks.
On Thu, Dec 28, 2023 at 1:14 AM Tony Dinh mibodhi@gmail.com wrote:
Hi Mario and Heinrich,
On Wed, Dec 27, 2023 at 12:23 PM Mario Marietto marietto2008@gmail.com wrote:
Hello.
I'm trying to boot FreeBSD for arm32 bit as DomU on my ARM Chromebook SNOW with xen. Basically there are two ways to accomplish this task :
- to write a patch that allows the FreeBSD kernel to boot as a zImage
file. This could be accomplished applying this patch to a specific file that's on the source code of FreeBSD :
https://xenbits.xen.org/gitweb/?p=p...8;hb=0782e25d98cc1391472717035f986c979...
This patch was written by Julien Grall a lot of time ago and now it does not work anymore. This is the reason explain by the xen developers :
It appears FreeBSD-CURRENT removed the last step converting the kernel file to kernel.bin.The patch can be readily rebased, but without kernel.bin that doesn't do too much.
So,without a rebase of that patch the first option is not applicable. And I'm not able to fix it.
- booting FreeBSD using U-Boot,as explained to me by a xen developer :
I was trying to explain why and how Julien's patch works so that you could be the one to re-do something similar or fix the patch on the FreeBSD kernel that you are working with. I am happy to help review and write patches but I don't work with the FreeBSD kernel so I wouldn't be able to help you quickly. However, I might have a suggestion. Do you know if FreeBSD can be booted by U-Boot ? Because U-Boot definitely boots as Xen on ARM guest firmware/bootloader. You should be able to build U-Boot and use the U-Boot binary as Xen guest kernel, then U-Boot could load FreeBSD from disk or network and start it. For instance as domU config file:
kernel="/home/petalinux/u-boot.bin" disk = [ '/home/petalinux/test.img,raw,xvda' ]
Actually I'm working on the idea n. 2. Basically I need to find the proper u-boot file that's able to boot the image of FreeBSD that I have installed (13.2 for arm32 bit). Maybe I found it here :
http://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/nv_ub...
I found that link inside this tutorial :
https://wiki.freebsd.org/arm/Chromebook
the version of u-boot that has been embedded in that file is the following one :
# strings nv_uboot-snow-simplefb.kpart | grep U-Boot U-Boot 2011.12-gc1f6280 (May 27 2013 - 15:06:59) for SMDK5250
So the question is easy : I need to find the source code of that old version of u-boot,because once compiled,it will give me the proper u-boot.bin kernel / bootloader file that maybe will be able to boot FreeBSD.
Yes, it can boot a 32-bit ARM board. I'm not a FreeBSD person, but I've helped a FreeBSD user booting a 32-bit ARM box with u-boot (GoFlexHome Marvell Kirkwood 6281). The u-boot version was 2017.05. I used an out-of-tree u-boot build. This u-boot executed the ubldr to boot FreeBSD.
Please see here: https://forum.doozan.com/read.php?3,49039,82059#msg-82059
It's been so long, I don't remember the details. Just to confirm what Heinrich said that u-boot can indeed boot 32-bit FreeBSD, since many years ago.
All the best, Tony
-- Mario.

I tried to compile it,but If failed :
/mnt/zroot2/zroot2/OS/Chromebook/freebsd-xen/domU-freebsd/bootloaders/u-boot-2017.05# ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make snow_defconfig
HOSTCC scripts/basic/fixdep HOSTCC scripts/kconfig/conf.o HOSTCC scripts/kconfig/zconf.tab.o In file included from scripts/kconfig/zconf.tab.c:2470: In function ‘dep_stack_insert’, inlined from ‘sym_check_print_recursive’ at scripts/kconfig/symbol.c:1123:3, inlined from ‘sym_check_deps’ at scripts/kconfig/symbol.c:1300:3: scripts/kconfig/symbol.c:1099:19: warning: storing the address of local variable ‘cv_stack’ in ‘check_top’ [-Wdangling-pointer=] 1099 | check_top = stack; | ~~~~~~~~~~^~~~~~~ scripts/kconfig/symbol.c: In function ‘sym_check_deps’: scripts/kconfig/symbol.c:1120:26: note: ‘cv_stack’ declared here 1120 | struct dep_stack cv_stack; | ^~~~~~~~ scripts/kconfig/symbol.c:1090:4: note: ‘check_top’ declared here 1090 | } *check_top; | ^~~~~~~~~ HOSTLD scripts/kconfig/conf # # configuration written to .config #
/mnt/zroot2/zroot2/OS/Chromebook/freebsd-xen/domU-freebsd/bootloaders/u-boot-2017.05# ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make
scripts/kconfig/conf --silentoldconfig Kconfig CHK include/config.h CFG u-boot.cfg GEN include/autoconf.mk GEN include/autoconf.mk.dep CFG spl/u-boot.cfg GEN spl/include/autoconf.mk CHK include/config/uboot.release CHK include/generated/version_autogenerated.h CHK include/generated/timestamp_autogenerated.h UPD include/generated/timestamp_autogenerated.h CC lib/asm-offsets.s arm-linux-gnueabihf-gcc: error: unrecognized -march target: armv5 arm-linux-gnueabihf-gcc: note: valid arguments are: armv4 armv4t armv5t armv5te armv5tej armv6 armv6j armv6k armv6z armv6kz armv6zk armv6t2 armv6-m armv6s-m armv7 armv7-a armv7ve armv7-r armv7-m armv7e-m armv8-a armv8.1-a armv8.2-a armv8.3-a armv8.4-a armv8.5-a armv8.6-a armv8-m.base armv8-m.main armv8-r armv8.1-m.main armv9-a iwmmxt iwmmxt2; did you mean ‘armv4’? arm-linux-gnueabihf-gcc: error: missing argument to ‘-march=’ make[1]: *** [Kbuild:44: lib/asm-offsets.s] Error 1 make: *** [Makefile:1287: prepare0] Error 2
On Thu, Dec 28, 2023 at 3:47 PM Mario Marietto marietto2008@gmail.com wrote:
Hello.
Can someone provide the right link to download u-boot-2017.0.5 , please ?
I've found it here,but I'm not sure that it's the correct version :
https://src.fedoraproject.org/repo/pkgs/uboot-tools/u-boot-2017.05.tar.bz2/s...
Can you confirm it ? thanks.
On Thu, Dec 28, 2023 at 1:14 AM Tony Dinh mibodhi@gmail.com wrote:
Hi Mario and Heinrich,
On Wed, Dec 27, 2023 at 12:23 PM Mario Marietto marietto2008@gmail.com wrote:
Hello.
I'm trying to boot FreeBSD for arm32 bit as DomU on my ARM Chromebook SNOW with xen. Basically there are two ways to accomplish this task :
- to write a patch that allows the FreeBSD kernel to boot as a zImage
file. This could be accomplished applying this patch to a specific file that's on the source code of FreeBSD :
https://xenbits.xen.org/gitweb/?p=p...8;hb=0782e25d98cc1391472717035f986c979...
This patch was written by Julien Grall a lot of time ago and now it does not work anymore. This is the reason explain by the xen developers :
It appears FreeBSD-CURRENT removed the last step converting the kernel file to kernel.bin.The patch can be readily rebased, but without kernel.bin that doesn't do too much.
So,without a rebase of that patch the first option is not applicable. And I'm not able to fix it.
- booting FreeBSD using U-Boot,as explained to me by a xen developer :
I was trying to explain why and how Julien's patch works so that you could be the one to re-do something similar or fix the patch on the FreeBSD kernel that you are working with. I am happy to help review and write patches but I don't work with the FreeBSD kernel so I wouldn't be able to help you quickly. However, I might have a suggestion. Do you know if FreeBSD can be booted by U-Boot ? Because U-Boot definitely boots as Xen on ARM guest firmware/bootloader. You should be able to build U-Boot and use the U-Boot binary as Xen guest kernel, then U-Boot could load FreeBSD from disk or network and start it. For instance as domU config file:
kernel="/home/petalinux/u-boot.bin" disk = [ '/home/petalinux/test.img,raw,xvda' ]
Actually I'm working on the idea n. 2. Basically I need to find the proper u-boot file that's able to boot the image of FreeBSD that I have installed (13.2 for arm32 bit). Maybe I found it here :
http://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/nv_ub...
I found that link inside this tutorial :
https://wiki.freebsd.org/arm/Chromebook
the version of u-boot that has been embedded in that file is the following one :
# strings nv_uboot-snow-simplefb.kpart | grep U-Boot U-Boot 2011.12-gc1f6280 (May 27 2013 - 15:06:59) for SMDK5250
So the question is easy : I need to find the source code of that old version of u-boot,because once compiled,it will give me the proper u-boot.bin kernel / bootloader file that maybe will be able to boot FreeBSD.
Yes, it can boot a 32-bit ARM board. I'm not a FreeBSD person, but I've helped a FreeBSD user booting a 32-bit ARM box with u-boot (GoFlexHome Marvell Kirkwood 6281). The u-boot version was 2017.05. I used an out-of-tree u-boot build. This u-boot executed the ubldr to boot FreeBSD.
Please see here: https://forum.doozan.com/read.php?3,49039,82059#msg-82059
It's been so long, I don't remember the details. Just to confirm what Heinrich said that u-boot can indeed boot 32-bit FreeBSD, since many years ago.
All the best, Tony
-- Mario.
-- Mario.

Hi Mario,
On Thu, Dec 28, 2023 at 3:48 PM Mario Marietto marietto2008@gmail.com wrote:
I tried to compile it,but If failed :
/mnt/zroot2/zroot2/OS/Chromebook/freebsd-xen/domU-freebsd/bootloaders/u-boot-2017.05# ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make snow_defconfig
HOSTCC scripts/basic/fixdep HOSTCC scripts/kconfig/conf.o HOSTCC scripts/kconfig/zconf.tab.o In file included from scripts/kconfig/zconf.tab.c:2470: In function ‘dep_stack_insert’, inlined from ‘sym_check_print_recursive’ at scripts/kconfig/symbol.c:1123:3, inlined from ‘sym_check_deps’ at scripts/kconfig/symbol.c:1300:3: scripts/kconfig/symbol.c:1099:19: warning: storing the address of local variable ‘cv_stack’ in ‘check_top’ [-Wdangling-pointer=] 1099 | check_top = stack; | ~~~~~~~~~~^~~~~~~ scripts/kconfig/symbol.c: In function ‘sym_check_deps’: scripts/kconfig/symbol.c:1120:26: note: ‘cv_stack’ declared here 1120 | struct dep_stack cv_stack; | ^~~~~~~~ scripts/kconfig/symbol.c:1090:4: note: ‘check_top’ declared here 1090 | } *check_top; | ^~~~~~~~~ HOSTLD scripts/kconfig/conf # # configuration written to .config #
/mnt/zroot2/zroot2/OS/Chromebook/freebsd-xen/domU-freebsd/bootloaders/u-boot-2017.05# ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make
scripts/kconfig/conf --silentoldconfig Kconfig CHK include/config.h CFG u-boot.cfg GEN include/autoconf.mk GEN include/autoconf.mk.dep CFG spl/u-boot.cfg GEN spl/include/autoconf.mk CHK include/config/uboot.release CHK include/generated/version_autogenerated.h CHK include/generated/timestamp_autogenerated.h UPD include/generated/timestamp_autogenerated.h CC lib/asm-offsets.s arm-linux-gnueabihf-gcc: error: unrecognized -march target: armv5 arm-linux-gnueabihf-gcc: note: valid arguments are: armv4 armv4t armv5t armv5te armv5tej armv6 armv6j armv6k armv6z armv6kz armv6zk armv6t2 armv6-m armv6s-m armv7 armv7-a armv7ve armv7-r armv7-m armv7e-m armv8-a armv8.1-a armv8.2-a armv8.3-a armv8.4-a armv8.5-a armv8.6-a armv8-m.base armv8-m.main armv8-r armv8.1-m.main armv9-a iwmmxt iwmmxt2; did you mean ‘armv4’? arm-linux-gnueabihf-gcc: error: missing argument to ‘-march=’ make[1]: *** [Kbuild:44: lib/asm-offsets.s] Error 1 make: *** [Makefile:1287: prepare0] Error 2
You might need to compile with an old toolchain, e.g. gcc 4?
Regards, Simon
On Thu, Dec 28, 2023 at 3:47 PM Mario Marietto marietto2008@gmail.com wrote:
Hello.
Can someone provide the right link to download u-boot-2017.0.5 , please ?
I've found it here,but I'm not sure that it's the correct version :
https://src.fedoraproject.org/repo/pkgs/uboot-tools/u-boot-2017.05.tar.bz2/s...
Can you confirm it ? thanks.
On Thu, Dec 28, 2023 at 1:14 AM Tony Dinh mibodhi@gmail.com wrote:
Hi Mario and Heinrich,
On Wed, Dec 27, 2023 at 12:23 PM Mario Marietto marietto2008@gmail.com wrote:
Hello.
I'm trying to boot FreeBSD for arm32 bit as DomU on my ARM Chromebook SNOW with xen. Basically there are two ways to accomplish this task :
- to write a patch that allows the FreeBSD kernel to boot as a zImage
file. This could be accomplished applying this patch to a specific file that's on the source code of FreeBSD :
https://xenbits.xen.org/gitweb/?p=p...8;hb=0782e25d98cc1391472717035f986c979...
This patch was written by Julien Grall a lot of time ago and now it does not work anymore. This is the reason explain by the xen developers :
It appears FreeBSD-CURRENT removed the last step converting the kernel file to kernel.bin.The patch can be readily rebased, but without kernel.bin that doesn't do too much.
So,without a rebase of that patch the first option is not applicable. And I'm not able to fix it.
- booting FreeBSD using U-Boot,as explained to me by a xen developer :
I was trying to explain why and how Julien's patch works so that you could be the one to re-do something similar or fix the patch on the FreeBSD kernel that you are working with. I am happy to help review and write patches but I don't work with the FreeBSD kernel so I wouldn't be able to help you quickly. However, I might have a suggestion. Do you know if FreeBSD can be booted by U-Boot ? Because U-Boot definitely boots as Xen on ARM guest firmware/bootloader. You should be able to build U-Boot and use the U-Boot binary as Xen guest kernel, then U-Boot could load FreeBSD from disk or network and start it. For instance as domU config file:
kernel="/home/petalinux/u-boot.bin" disk = [ '/home/petalinux/test.img,raw,xvda' ]
Actually I'm working on the idea n. 2. Basically I need to find the proper u-boot file that's able to boot the image of FreeBSD that I have installed (13.2 for arm32 bit). Maybe I found it here :
http://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/nv_ub...
I found that link inside this tutorial :
https://wiki.freebsd.org/arm/Chromebook
the version of u-boot that has been embedded in that file is the following one :
# strings nv_uboot-snow-simplefb.kpart | grep U-Boot U-Boot 2011.12-gc1f6280 (May 27 2013 - 15:06:59) for SMDK5250
So the question is easy : I need to find the source code of that old version of u-boot,because once compiled,it will give me the proper u-boot.bin kernel / bootloader file that maybe will be able to boot FreeBSD.
Yes, it can boot a 32-bit ARM board. I'm not a FreeBSD person, but I've helped a FreeBSD user booting a 32-bit ARM box with u-boot (GoFlexHome Marvell Kirkwood 6281). The u-boot version was 2017.05. I used an out-of-tree u-boot build. This u-boot executed the ubldr to boot FreeBSD.
Please see here: https://forum.doozan.com/read.php?3,49039,82059#msg-82059
It's been so long, I don't remember the details. Just to confirm what Heinrich said that u-boot can indeed boot 32-bit FreeBSD, since many years ago.
All the best, Tony
-- Mario.
-- Mario.
-- Mario.

On Thu, Dec 28, 2023 at 11:48 AM Simon Glass sjg@chromium.org wrote:
Hi Mario,
On Thu, Dec 28, 2023 at 3:48 PM Mario Marietto marietto2008@gmail.com wrote:
I tried to compile it,but If failed :
/mnt/zroot2/zroot2/OS/Chromebook/freebsd-xen/domU-freebsd/bootloaders/u-boot-2017.05# ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make snow_defconfig
HOSTCC scripts/basic/fixdep HOSTCC scripts/kconfig/conf.o HOSTCC scripts/kconfig/zconf.tab.o In file included from scripts/kconfig/zconf.tab.c:2470: In function ‘dep_stack_insert’, inlined from ‘sym_check_print_recursive’ at scripts/kconfig/symbol.c:1123:3, inlined from ‘sym_check_deps’ at scripts/kconfig/symbol.c:1300:3: scripts/kconfig/symbol.c:1099:19: warning: storing the address of local variable ‘cv_stack’ in ‘check_top’ [-Wdangling-pointer=] 1099 | check_top = stack; | ~~~~~~~~~~^~~~~~~ scripts/kconfig/symbol.c: In function ‘sym_check_deps’: scripts/kconfig/symbol.c:1120:26: note: ‘cv_stack’ declared here 1120 | struct dep_stack cv_stack; | ^~~~~~~~ scripts/kconfig/symbol.c:1090:4: note: ‘check_top’ declared here 1090 | } *check_top; | ^~~~~~~~~ HOSTLD scripts/kconfig/conf # # configuration written to .config #
/mnt/zroot2/zroot2/OS/Chromebook/freebsd-xen/domU-freebsd/bootloaders/u-boot-2017.05# ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make
scripts/kconfig/conf --silentoldconfig Kconfig CHK include/config.h CFG u-boot.cfg GEN include/autoconf.mk GEN include/autoconf.mk.dep CFG spl/u-boot.cfg GEN spl/include/autoconf.mk CHK include/config/uboot.release CHK include/generated/version_autogenerated.h CHK include/generated/timestamp_autogenerated.h UPD include/generated/timestamp_autogenerated.h CC lib/asm-offsets.s arm-linux-gnueabihf-gcc: error: unrecognized -march target: armv5 arm-linux-gnueabihf-gcc: note: valid arguments are: armv4 armv4t armv5t armv5te armv5tej armv6 armv6j armv6k armv6z armv6kz armv6zk armv6t2 armv6-m armv6s-m armv7 armv7-a armv7ve armv7-r armv7-m armv7e-m armv8-a armv8.1-a armv8.2-a armv8.3-a armv8.4-a armv8.5-a armv8.6-a armv8-m.base armv8-m.main armv8-r armv8.1-m.main armv9-a iwmmxt iwmmxt2; did you mean ‘armv4’? arm-linux-gnueabihf-gcc: error: missing argument to ‘-march=’ make[1]: *** [Kbuild:44: lib/asm-offsets.s] Error 1 make: *** [Makefile:1287: prepare0] Error 2
You might need to compile with an old toolchain, e.g. gcc 4?
I think Simon is right. I could not rebuild that 2017.05 u-boot with gcc 12 now. So I looked at the old log, and it was built with gcc 6.3.
gcc -Wp,-MD,disk/.part_efi.o.d -nostdinc -isystem /usr/lib/gcc/arm-linux-gnueabi/6/include -Iinclude -I./arch/arm/include -include ./include/linux/kconfig.h -D__KERNEL__ -D__UBOOT__ -Wall -Wstrict-prototypes -Wno-format-security -fno-builtin -ffreestanding -Os -fno-stack-protector -fno-delete-null-pointer-checks -g -fstack-usage -Wno-format-nonliteral -Werror=date-time -D__ARM__ -marm -mno-thumb-interwork -mabi=aapcs-linux -mword-relocations -fno-pic -ffunction-sections -fdata-sections -fno-common -ffixed-r9 -msoft-float -pipe -march=armv5te -D__LINUX_ARM_ARCH__=5 -I./arch/arm/mach-kirkwood/include -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(part_efi)" -D"KBUILD_MODNAME=KBUILD_STR(part_efi)" -c -o disk/part_efi.o disk/part_efi.c
# ll /usr/lib/gcc/arm-linux-gnueabi/6* -d drwxr-xr-x 5 root root 4096 Apr 14 2019 /usr/lib/gcc/arm-linux-gnueabi/6 lrwxrwxrwx 1 root root 1 May 16 2017 /usr/lib/gcc/arm-linux-gnueabi/6.3.0 -> 6
Hope this helps.
All the best, Tony
Regards, Simon
On Thu, Dec 28, 2023 at 3:47 PM Mario Marietto marietto2008@gmail.com wrote:
Hello.
Can someone provide the right link to download u-boot-2017.0.5 , please ?
I've found it here,but I'm not sure that it's the correct version :
https://src.fedoraproject.org/repo/pkgs/uboot-tools/u-boot-2017.05.tar.bz2/s...
Can you confirm it ? thanks.
On Thu, Dec 28, 2023 at 1:14 AM Tony Dinh mibodhi@gmail.com wrote:
Hi Mario and Heinrich,
On Wed, Dec 27, 2023 at 12:23 PM Mario Marietto marietto2008@gmail.com wrote:
Hello.
I'm trying to boot FreeBSD for arm32 bit as DomU on my ARM Chromebook SNOW with xen. Basically there are two ways to accomplish this task :
- to write a patch that allows the FreeBSD kernel to boot as a zImage
file. This could be accomplished applying this patch to a specific file that's on the source code of FreeBSD :
https://xenbits.xen.org/gitweb/?p=p...8;hb=0782e25d98cc1391472717035f986c979...
This patch was written by Julien Grall a lot of time ago and now it does not work anymore. This is the reason explain by the xen developers :
It appears FreeBSD-CURRENT removed the last step converting the kernel file to kernel.bin.The patch can be readily rebased, but without kernel.bin that doesn't do too much.
So,without a rebase of that patch the first option is not applicable. And I'm not able to fix it.
- booting FreeBSD using U-Boot,as explained to me by a xen developer :
I was trying to explain why and how Julien's patch works so that you could be the one to re-do something similar or fix the patch on the FreeBSD kernel that you are working with. I am happy to help review and write patches but I don't work with the FreeBSD kernel so I wouldn't be able to help you quickly. However, I might have a suggestion. Do you know if FreeBSD can be booted by U-Boot ? Because U-Boot definitely boots as Xen on ARM guest firmware/bootloader. You should be able to build U-Boot and use the U-Boot binary as Xen guest kernel, then U-Boot could load FreeBSD from disk or network and start it. For instance as domU config file:
kernel="/home/petalinux/u-boot.bin" disk = [ '/home/petalinux/test.img,raw,xvda' ]
Actually I'm working on the idea n. 2. Basically I need to find the proper u-boot file that's able to boot the image of FreeBSD that I have installed (13.2 for arm32 bit). Maybe I found it here :
http://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/nv_ub...
I found that link inside this tutorial :
https://wiki.freebsd.org/arm/Chromebook
the version of u-boot that has been embedded in that file is the following one :
# strings nv_uboot-snow-simplefb.kpart | grep U-Boot U-Boot 2011.12-gc1f6280 (May 27 2013 - 15:06:59) for SMDK5250
So the question is easy : I need to find the source code of that old version of u-boot,because once compiled,it will give me the proper u-boot.bin kernel / bootloader file that maybe will be able to boot FreeBSD.
Yes, it can boot a 32-bit ARM board. I'm not a FreeBSD person, but I've helped a FreeBSD user booting a 32-bit ARM box with u-boot (GoFlexHome Marvell Kirkwood 6281). The u-boot version was 2017.05. I used an out-of-tree u-boot build. This u-boot executed the ubldr to boot FreeBSD.
Please see here: https://forum.doozan.com/read.php?3,49039,82059#msg-82059
It's been so long, I don't remember the details. Just to confirm what Heinrich said that u-boot can indeed boot 32-bit FreeBSD, since many years ago.
All the best, Tony
-- Mario.
-- Mario.
-- Mario.

I've just built it with Ubuntu 18.04 / gcc 7.5.0 ; I have my u-boot.bin and I tried to see if it worked,but unfortunately it doesn't.
root@devuan-bunsen:/mnt/zroot2/zroot2/OS/Chromebook/freebsd-xen/domU-freebsd# ./start-freebsd
Parsing config from freebsd.cfg xc: error: panic: xg_dom_core.c:689: xc_dom_find_loader: no loader found: Invalid kernel libxl: error: libxl_dom.c:571:libxl__build_dom: xc_dom_parse_image failed libxl: error: libxl_create.c:1640:domcreate_rebuild_done: Domain 1:cannot (re-)build domain: -3 libxl: error: libxl_domain.c:1183:libxl__destroy_domid: Domain 1:Non-existent domain libxl: error: libxl_domain.c:1137:domain_destroy_callback: Domain 1:Unable to destroy guest libxl: error: libxl_domain.c:1064:domain_destroy_cb: Domain 1:Destruction of domain failed freebsd is an invalid domain identifier (rc=-6)
start-freebsd :
xl create freebsd.cfg xl console freebsd
freebsd.cfg :
name="freebsd" kernel="/mnt/zroot2/zroot2/OS/Chromebook/freebsd-xen/domU-freebsd/bootloaders/u-boot.bin" extra = "console=hvc0" memory=512 vcpus=1 disk = [ 'FreeBSD-13.2-RELEASE-armv7.img,raw,xvda' ]
On Thu, Dec 28, 2023 at 10:54 PM Tony Dinh mibodhi@gmail.com wrote:
On Thu, Dec 28, 2023 at 11:48 AM Simon Glass sjg@chromium.org wrote:
Hi Mario,
On Thu, Dec 28, 2023 at 3:48 PM Mario Marietto marietto2008@gmail.com wrote:
I tried to compile it,but If failed :
/mnt/zroot2/zroot2/OS/Chromebook/freebsd-xen/domU-freebsd/bootloaders/u-boot-2017.05# ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make snow_defconfig
HOSTCC scripts/basic/fixdep HOSTCC scripts/kconfig/conf.o HOSTCC scripts/kconfig/zconf.tab.o In file included from scripts/kconfig/zconf.tab.c:2470: In function ‘dep_stack_insert’, inlined from ‘sym_check_print_recursive’ at scripts/kconfig/symbol.c:1123:3, inlined from ‘sym_check_deps’ at scripts/kconfig/symbol.c:1300:3: scripts/kconfig/symbol.c:1099:19: warning: storing the address of local variable ‘cv_stack’ in ‘check_top’ [-Wdangling-pointer=] 1099 | check_top = stack; | ~~~~~~~~~~^~~~~~~ scripts/kconfig/symbol.c: In function ‘sym_check_deps’: scripts/kconfig/symbol.c:1120:26: note: ‘cv_stack’ declared here 1120 | struct dep_stack cv_stack; | ^~~~~~~~ scripts/kconfig/symbol.c:1090:4: note: ‘check_top’ declared here 1090 | } *check_top; | ^~~~~~~~~ HOSTLD scripts/kconfig/conf # # configuration written to .config #
/mnt/zroot2/zroot2/OS/Chromebook/freebsd-xen/domU-freebsd/bootloaders/u-boot-2017.05# ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make
scripts/kconfig/conf --silentoldconfig Kconfig CHK include/config.h CFG u-boot.cfg GEN include/autoconf.mk GEN include/autoconf.mk.dep CFG spl/u-boot.cfg GEN spl/include/autoconf.mk CHK include/config/uboot.release CHK include/generated/version_autogenerated.h CHK include/generated/timestamp_autogenerated.h UPD include/generated/timestamp_autogenerated.h CC lib/asm-offsets.s arm-linux-gnueabihf-gcc: error: unrecognized -march target: armv5 arm-linux-gnueabihf-gcc: note: valid arguments are: armv4 armv4t armv5t armv5te armv5tej armv6 armv6j armv6k armv6z armv6kz armv6zk armv6t2 armv6-m armv6s-m armv7 armv7-a armv7ve armv7-r armv7-m armv7e-m armv8-a armv8.1-a armv8.2-a armv8.3-a armv8.4-a armv8.5-a armv8.6-a armv8-m.base armv8-m.main armv8-r armv8.1-m.main armv9-a iwmmxt iwmmxt2; did you mean ‘armv4’? arm-linux-gnueabihf-gcc: error: missing argument to ‘-march=’ make[1]: *** [Kbuild:44: lib/asm-offsets.s] Error 1 make: *** [Makefile:1287: prepare0] Error 2
You might need to compile with an old toolchain, e.g. gcc 4?
I think Simon is right. I could not rebuild that 2017.05 u-boot with gcc 12 now. So I looked at the old log, and it was built with gcc 6.3.
gcc -Wp,-MD,disk/.part_efi.o.d -nostdinc -isystem /usr/lib/gcc/arm-linux-gnueabi/6/include -Iinclude -I./arch/arm/include -include ./include/linux/kconfig.h -D__KERNEL__ -D__UBOOT__ -Wall -Wstrict-prototypes -Wno-format-security -fno-builtin -ffreestanding -Os -fno-stack-protector -fno-delete-null-pointer-checks -g -fstack-usage -Wno-format-nonliteral -Werror=date-time -D__ARM__ -marm -mno-thumb-interwork -mabi=aapcs-linux -mword-relocations -fno-pic -ffunction-sections -fdata-sections -fno-common -ffixed-r9 -msoft-float -pipe -march=armv5te -D__LINUX_ARM_ARCH__=5 -I./arch/arm/mach-kirkwood/include -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(part_efi)" -D"KBUILD_MODNAME=KBUILD_STR(part_efi)" -c -o disk/part_efi.o disk/part_efi.c
# ll /usr/lib/gcc/arm-linux-gnueabi/6* -d drwxr-xr-x 5 root root 4096 Apr 14 2019 /usr/lib/gcc/arm-linux-gnueabi/6 lrwxrwxrwx 1 root root 1 May 16 2017 /usr/lib/gcc/arm-linux-gnueabi/6.3.0 -> 6
Hope this helps.
All the best, Tony
Regards, Simon
On Thu, Dec 28, 2023 at 3:47 PM Mario Marietto marietto2008@gmail.com wrote:
Hello.
Can someone provide the right link to download u-boot-2017.0.5 , please ?
I've found it here,but I'm not sure that it's the correct version :
https://src.fedoraproject.org/repo/pkgs/uboot-tools/u-boot-2017.05.tar.bz2/s...
Can you confirm it ? thanks.
On Thu, Dec 28, 2023 at 1:14 AM Tony Dinh mibodhi@gmail.com wrote:
Hi Mario and Heinrich,
On Wed, Dec 27, 2023 at 12:23 PM Mario Marietto marietto2008@gmail.com wrote:
Hello.
I'm trying to boot FreeBSD for arm32 bit as DomU on my ARM Chromebook SNOW with xen. Basically there are two ways to accomplish this task :
- to write a patch that allows the FreeBSD kernel to boot as a zImage
file. This could be accomplished applying this patch to a specific file that's on the source code of FreeBSD :
https://xenbits.xen.org/gitweb/?p=p...8;hb=0782e25d98cc1391472717035f986c979...
This patch was written by Julien Grall a lot of time ago and now it does not work anymore. This is the reason explain by the xen developers :
It appears FreeBSD-CURRENT removed the last step converting the kernel file to kernel.bin.The patch can be readily rebased, but without kernel.bin that doesn't do too much.
So,without a rebase of that patch the first option is not applicable. And I'm not able to fix it.
- booting FreeBSD using U-Boot,as explained to me by a xen developer :
I was trying to explain why and how Julien's patch works so that you could be the one to re-do something similar or fix the patch on the FreeBSD kernel that you are working with. I am happy to help review and write patches but I don't work with the FreeBSD kernel so I wouldn't be able to help you quickly. However, I might have a suggestion. Do you know if FreeBSD can be booted by U-Boot ? Because U-Boot definitely boots as Xen on ARM guest firmware/bootloader. You should be able to build U-Boot and use the U-Boot binary as Xen guest kernel, then U-Boot could load FreeBSD from disk or network and start it. For instance as domU config file:
kernel="/home/petalinux/u-boot.bin" disk = [ '/home/petalinux/test.img,raw,xvda' ]
Actually I'm working on the idea n. 2. Basically I need to find the proper u-boot file that's able to boot the image of FreeBSD that I have installed (13.2 for arm32 bit). Maybe I found it here :
http://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/nv_ub...
I found that link inside this tutorial :
https://wiki.freebsd.org/arm/Chromebook
the version of u-boot that has been embedded in that file is the following one :
# strings nv_uboot-snow-simplefb.kpart | grep U-Boot U-Boot 2011.12-gc1f6280 (May 27 2013 - 15:06:59) for SMDK5250
So the question is easy : I need to find the source code of that old version of u-boot,because once compiled,it will give me the proper u-boot.bin kernel / bootloader file that maybe will be able to boot FreeBSD.
Yes, it can boot a 32-bit ARM board. I'm not a FreeBSD person, but I've helped a FreeBSD user booting a 32-bit ARM box with u-boot (GoFlexHome Marvell Kirkwood 6281). The u-boot version was 2017.05. I used an out-of-tree u-boot build. This u-boot executed the ubldr to boot FreeBSD.
Please see here: https://forum.doozan.com/read.php?3,49039,82059#msg-82059
It's been so long, I don't remember the details. Just to confirm what Heinrich said that u-boot can indeed boot 32-bit FreeBSD, since many years ago.
All the best, Tony
-- Mario.
-- Mario.
-- Mario.
-- Mario.

Maybe some parameter is wrong inside the snow_defconfig file ? Can you give a look ?
CONFIG_ARM=y CONFIG_SKIP_LOWLEVEL_INIT=y CONFIG_SPL_SKIP_LOWLEVEL_INIT=y CONFIG_ARCH_CPU_INIT=y # CONFIG_SPL_USE_ARCH_MEMCPY is not set # CONFIG_SPL_USE_ARCH_MEMSET is not set CONFIG_ARCH_EXYNOS=y CONFIG_TEXT_BASE=0x43E00000 CONFIG_SYS_MALLOC_LEN=0x5004000 CONFIG_SYS_MALLOC_F_LEN=0x400 CONFIG_ARCH_EXYNOS5=y CONFIG_TARGET_SNOW=y CONFIG_NR_DRAM_BANKS=8 CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x2050000 CONFIG_SF_DEFAULT_SPEED=50000000 CONFIG_ENV_SIZE=0x4000 CONFIG_ENV_OFFSET=0x3FC000 CONFIG_ENV_SECT_SIZE=0x4000 CONFIG_DEFAULT_DEVICE_TREE="exynos5250-snow" CONFIG_SPL_TEXT_BASE=0x02023400 CONFIG_SPL=y CONFIG_DEBUG_UART_BASE=0x12c30000 CONFIG_DEBUG_UART_CLOCK=100000000 CONFIG_IDENT_STRING=" for snow" CONFIG_SYS_LOAD_ADDR=0x43e00000 CONFIG_DEBUG_UART=y CONFIG_FIT=y CONFIG_FIT_BEST_MATCH=y CONFIG_BOOTSTD_FULL=y CONFIG_BOOTMETH_CROS=y CONFIG_DISTRO_DEFAULTS=y CONFIG_SILENT_CONSOLE=y CONFIG_BLOBLIST=y # CONFIG_SPL_BLOBLIST is not set CONFIG_BLOBLIST_ADDR=0x43d00000 # CONFIG_SPL_FRAMEWORK is not set CONFIG_SPL_FOOTPRINT_LIMIT=y CONFIG_SPL_MAX_FOOTPRINT=0x3800 CONFIG_SYS_PROMPT="snow # " CONFIG_SYS_PBSIZE=1024 CONFIG_CMD_GPIO=y CONFIG_CMD_I2C=y CONFIG_CMD_MMC=y CONFIG_CMD_SPI=y CONFIG_CMD_USB=y # CONFIG_CMD_SETEXPR is not set CONFIG_CMD_CACHE=y CONFIG_CMD_TIME=y CONFIG_CMD_SOUND=y CONFIG_CMD_PMIC=y CONFIG_CMD_REGULATOR=y CONFIG_CMD_TPM=y CONFIG_CMD_TPM_TEST=y CONFIG_CMD_EXT4_WRITE=y CONFIG_ENV_OVERWRITE=y CONFIG_ENV_IS_IN_SPI_FLASH=y CONFIG_ENV_SPI_BUS=1 CONFIG_SYS_RELOC_GD_ENV_ADDR=y CONFIG_I2C_CROS_EC_LDO=y CONFIG_SYS_I2C_S3C24X0=y CONFIG_I2C_MUX=y CONFIG_I2C_ARB_GPIO_CHALLENGE=y CONFIG_CROS_EC_KEYB=y CONFIG_CROS_EC=y CONFIG_CROS_EC_I2C=y CONFIG_SUPPORT_EMMC_BOOT=y CONFIG_MMC_DW=y CONFIG_MMC_SDHCI=y CONFIG_MMC_SDHCI_S5P=y CONFIG_MTD=y CONFIG_SPI_FLASH_GIGADEVICE=y CONFIG_SPI_FLASH_WINBOND=y CONFIG_SMC911X=y CONFIG_DM_PMIC=y CONFIG_DM_PMIC_MAX77686=y CONFIG_PMIC_S5M8767=y CONFIG_PMIC_TPS65090=y CONFIG_DM_REGULATOR=y CONFIG_DM_REGULATOR_MAX77686=y CONFIG_REGULATOR_S5M8767=y CONFIG_REGULATOR_TPS65090=y CONFIG_DM_PWM=y CONFIG_PWM_EXYNOS=y CONFIG_SOUND=y CONFIG_I2S=y CONFIG_I2S_SAMSUNG=y CONFIG_SOUND_MAX98095=y CONFIG_SOUND_WM8994=y CONFIG_EXYNOS_SPI=y CONFIG_TPM_TIS_INFINEON=y CONFIG_USB=y CONFIG_USB_XHCI_HCD=y CONFIG_USB_XHCI_DWC3=y CONFIG_USB_EHCI_HCD=y CONFIG_USB_HOST_ETHER=y CONFIG_USB_ETHER_ASIX88179=y CONFIG_VIDEO=y # CONFIG_VIDEO_BPP8 is not set CONFIG_VIDCONSOLE_AS_LCD=y CONFIG_DISPLAY=y CONFIG_VIDEO_EXYNOS=y CONFIG_EXYNOS_DP=y CONFIG_EXYNOS_FB=y CONFIG_VIDEO_BRIDGE=y CONFIG_VIDEO_BRIDGE_PARADE_PS862X=y CONFIG_VIDEO_BRIDGE_NXP_PTN3460=y CONFIG_TPM=y CONFIG_ERRNO_STR=y CONFIG_UNIT_TEST=y # CONFIG_UT_LIB_ASN1 is not set
On Thu, Dec 28, 2023 at 11:26 PM Mario Marietto marietto2008@gmail.com wrote:
I've just built it with Ubuntu 18.04 / gcc 7.5.0 ; I have my u-boot.bin and I tried to see if it worked,but unfortunately it doesn't.
root@devuan-bunsen:/mnt/zroot2/zroot2/OS/Chromebook/freebsd-xen/domU-freebsd# ./start-freebsd
Parsing config from freebsd.cfg xc: error: panic: xg_dom_core.c:689: xc_dom_find_loader: no loader found: Invalid kernel libxl: error: libxl_dom.c:571:libxl__build_dom: xc_dom_parse_image failed libxl: error: libxl_create.c:1640:domcreate_rebuild_done: Domain 1:cannot (re-)build domain: -3 libxl: error: libxl_domain.c:1183:libxl__destroy_domid: Domain 1:Non-existent domain libxl: error: libxl_domain.c:1137:domain_destroy_callback: Domain 1:Unable to destroy guest libxl: error: libxl_domain.c:1064:domain_destroy_cb: Domain 1:Destruction of domain failed freebsd is an invalid domain identifier (rc=-6)
start-freebsd :
xl create freebsd.cfg xl console freebsd
freebsd.cfg :
name="freebsd" kernel="/mnt/zroot2/zroot2/OS/Chromebook/freebsd-xen/domU-freebsd/bootloaders/u-boot.bin" extra = "console=hvc0" memory=512 vcpus=1 disk = [ 'FreeBSD-13.2-RELEASE-armv7.img,raw,xvda' ]
On Thu, Dec 28, 2023 at 10:54 PM Tony Dinh mibodhi@gmail.com wrote:
On Thu, Dec 28, 2023 at 11:48 AM Simon Glass sjg@chromium.org wrote:
Hi Mario,
On Thu, Dec 28, 2023 at 3:48 PM Mario Marietto marietto2008@gmail.com wrote:
I tried to compile it,but If failed :
/mnt/zroot2/zroot2/OS/Chromebook/freebsd-xen/domU-freebsd/bootloaders/u-boot-2017.05# ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make snow_defconfig
HOSTCC scripts/basic/fixdep HOSTCC scripts/kconfig/conf.o HOSTCC scripts/kconfig/zconf.tab.o In file included from scripts/kconfig/zconf.tab.c:2470: In function ‘dep_stack_insert’, inlined from ‘sym_check_print_recursive’ at scripts/kconfig/symbol.c:1123:3, inlined from ‘sym_check_deps’ at scripts/kconfig/symbol.c:1300:3: scripts/kconfig/symbol.c:1099:19: warning: storing the address of local variable ‘cv_stack’ in ‘check_top’ [-Wdangling-pointer=] 1099 | check_top = stack; | ~~~~~~~~~~^~~~~~~ scripts/kconfig/symbol.c: In function ‘sym_check_deps’: scripts/kconfig/symbol.c:1120:26: note: ‘cv_stack’ declared here 1120 | struct dep_stack cv_stack; | ^~~~~~~~ scripts/kconfig/symbol.c:1090:4: note: ‘check_top’ declared here 1090 | } *check_top; | ^~~~~~~~~ HOSTLD scripts/kconfig/conf # # configuration written to .config #
/mnt/zroot2/zroot2/OS/Chromebook/freebsd-xen/domU-freebsd/bootloaders/u-boot-2017.05# ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make
scripts/kconfig/conf --silentoldconfig Kconfig CHK include/config.h CFG u-boot.cfg GEN include/autoconf.mk GEN include/autoconf.mk.dep CFG spl/u-boot.cfg GEN spl/include/autoconf.mk CHK include/config/uboot.release CHK include/generated/version_autogenerated.h CHK include/generated/timestamp_autogenerated.h UPD include/generated/timestamp_autogenerated.h CC lib/asm-offsets.s arm-linux-gnueabihf-gcc: error: unrecognized -march target: armv5 arm-linux-gnueabihf-gcc: note: valid arguments are: armv4 armv4t armv5t armv5te armv5tej armv6 armv6j armv6k armv6z armv6kz armv6zk armv6t2 armv6-m armv6s-m armv7 armv7-a armv7ve armv7-r armv7-m armv7e-m armv8-a armv8.1-a armv8.2-a armv8.3-a armv8.4-a armv8.5-a armv8.6-a armv8-m.base armv8-m.main armv8-r armv8.1-m.main armv9-a iwmmxt iwmmxt2; did you mean ‘armv4’? arm-linux-gnueabihf-gcc: error: missing argument to ‘-march=’ make[1]: *** [Kbuild:44: lib/asm-offsets.s] Error 1 make: *** [Makefile:1287: prepare0] Error 2
You might need to compile with an old toolchain, e.g. gcc 4?
I think Simon is right. I could not rebuild that 2017.05 u-boot with gcc 12 now. So I looked at the old log, and it was built with gcc 6.3.
gcc -Wp,-MD,disk/.part_efi.o.d -nostdinc -isystem /usr/lib/gcc/arm-linux-gnueabi/6/include -Iinclude -I./arch/arm/include -include ./include/linux/kconfig.h -D__KERNEL__ -D__UBOOT__ -Wall -Wstrict-prototypes -Wno-format-security -fno-builtin -ffreestanding -Os -fno-stack-protector -fno-delete-null-pointer-checks -g -fstack-usage -Wno-format-nonliteral -Werror=date-time -D__ARM__ -marm -mno-thumb-interwork -mabi=aapcs-linux -mword-relocations -fno-pic -ffunction-sections -fdata-sections -fno-common -ffixed-r9 -msoft-float -pipe -march=armv5te -D__LINUX_ARM_ARCH__=5 -I./arch/arm/mach-kirkwood/include -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(part_efi)" -D"KBUILD_MODNAME=KBUILD_STR(part_efi)" -c -o disk/part_efi.o disk/part_efi.c
# ll /usr/lib/gcc/arm-linux-gnueabi/6* -d drwxr-xr-x 5 root root 4096 Apr 14 2019 /usr/lib/gcc/arm-linux-gnueabi/6 lrwxrwxrwx 1 root root 1 May 16 2017 /usr/lib/gcc/arm-linux-gnueabi/6.3.0 -> 6
Hope this helps.
All the best, Tony
Regards, Simon
On Thu, Dec 28, 2023 at 3:47 PM Mario Marietto marietto2008@gmail.com wrote:
Hello.
Can someone provide the right link to download u-boot-2017.0.5 , please ?
I've found it here,but I'm not sure that it's the correct version :
https://src.fedoraproject.org/repo/pkgs/uboot-tools/u-boot-2017.05.tar.bz2/s...
Can you confirm it ? thanks.
On Thu, Dec 28, 2023 at 1:14 AM Tony Dinh mibodhi@gmail.com wrote:
Hi Mario and Heinrich,
On Wed, Dec 27, 2023 at 12:23 PM Mario Marietto marietto2008@gmail.com wrote: > > Hello. > > I'm trying to boot FreeBSD for arm32 bit as DomU on my ARM Chromebook > SNOW with xen. Basically there are two ways to accomplish this task : > > > 1) to write a patch that allows the FreeBSD kernel to boot as a zImage > file. This could be accomplished applying this patch to a specific > file that's on the source code of FreeBSD : > > > https://xenbits.xen.org/gitweb/?p=p...8;hb=0782e25d98cc1391472717035f986c979... > > > > This patch was written by Julien Grall a lot of time ago and now it > does not work anymore. This is the reason explain by the xen > developers : > > > > It appears FreeBSD-CURRENT removed the last step converting the kernel > file to kernel.bin.The patch can be readily rebased, but without > kernel.bin that doesn't do too much. > > > > So,without a rebase of that patch the first option is not applicable. > And I'm not able to fix it. > > > 2) booting FreeBSD using U-Boot,as explained to me by a xen developer : > > > I was trying to explain why and how Julien's patch works so that you > could be the one to re-do something similar or fix the patch on the > FreeBSD kernel that you are working with. I am happy to help review > and write patches but I don't work with the FreeBSD kernel so I > wouldn't be able to help you quickly. However, I might have a > suggestion. Do you know if FreeBSD can be booted by U-Boot ? > Because > U-Boot definitely boots as Xen on ARM guest firmware/bootloader. You > should be able to build U-Boot and use the U-Boot binary as Xen guest > kernel, then U-Boot could load FreeBSD from disk or network and start > it. For instance as domU config file: > > kernel="/home/petalinux/u-boot.bin" > disk = [ '/home/petalinux/test.img,raw,xvda' ] > > > Actually I'm working on the idea n. 2. Basically I need to find the > proper u-boot file that's able to boot the image of FreeBSD that I > have installed (13.2 for arm32 bit). Maybe I found it here : > > > http://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/nv_ub... > > > I found that link inside this tutorial : > > > https://wiki.freebsd.org/arm/Chromebook > > > the version of u-boot that has been embedded in that file is the following one : > > > # strings nv_uboot-snow-simplefb.kpart | grep U-Boot > U-Boot 2011.12-gc1f6280 (May 27 2013 - 15:06:59) for SMDK5250 > > > So the question is easy : I need to find the source code of that old > version of u-boot,because once compiled,it will give me the proper > u-boot.bin kernel / bootloader file that maybe will be able to boot > FreeBSD.
Yes, it can boot a 32-bit ARM board. I'm not a FreeBSD person, but I've helped a FreeBSD user booting a 32-bit ARM box with u-boot (GoFlexHome Marvell Kirkwood 6281). The u-boot version was 2017.05. I used an out-of-tree u-boot build. This u-boot executed the ubldr to boot FreeBSD.
Please see here: https://forum.doozan.com/read.php?3,49039,82059#msg-82059
It's been so long, I don't remember the details. Just to confirm what Heinrich said that u-boot can indeed boot 32-bit FreeBSD, since many years ago.
All the best, Tony
> > > -- > Mario.
-- Mario.
-- Mario.
-- Mario.

Is my version the correct one ?
root@devuan-bunsen:/mnt/zroot2/zroot2/OS/Chromebook/freebsd-xen/domU-freebsd/bootloaders# strings u-boot.bin | grep U-Boot
** Invalid partition type "%.32s" (expect "U-Boot") scan_dev_for_scripts=for script in ${boot_scripts}; do if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${script}; then echo Found U-Boot script ${prefix}${script}; run boot_a_script; echo SCRIPT FAILED: continuing...; fi; done U-Boot.armv7 MU-Boot EFI: Relocation at %p is out of range (%lx) No valid device tree binary found - please append one to U-Boot binary, use u-boot-dtb.bin or define CONFIG_OF_EMBED. For sandbox, use -d <file.dtb> U-Boot U-Boot 2017.05 (Dec 28 2023 - 22:52:29 +0100) for snow
On Thu, Dec 28, 2023 at 11:44 PM Mario Marietto marietto2008@gmail.com wrote:
Maybe some parameter is wrong inside the snow_defconfig file ? Can you give a look ?
CONFIG_ARM=y CONFIG_SKIP_LOWLEVEL_INIT=y CONFIG_SPL_SKIP_LOWLEVEL_INIT=y CONFIG_ARCH_CPU_INIT=y # CONFIG_SPL_USE_ARCH_MEMCPY is not set # CONFIG_SPL_USE_ARCH_MEMSET is not set CONFIG_ARCH_EXYNOS=y CONFIG_TEXT_BASE=0x43E00000 CONFIG_SYS_MALLOC_LEN=0x5004000 CONFIG_SYS_MALLOC_F_LEN=0x400 CONFIG_ARCH_EXYNOS5=y CONFIG_TARGET_SNOW=y CONFIG_NR_DRAM_BANKS=8 CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x2050000 CONFIG_SF_DEFAULT_SPEED=50000000 CONFIG_ENV_SIZE=0x4000 CONFIG_ENV_OFFSET=0x3FC000 CONFIG_ENV_SECT_SIZE=0x4000 CONFIG_DEFAULT_DEVICE_TREE="exynos5250-snow" CONFIG_SPL_TEXT_BASE=0x02023400 CONFIG_SPL=y CONFIG_DEBUG_UART_BASE=0x12c30000 CONFIG_DEBUG_UART_CLOCK=100000000 CONFIG_IDENT_STRING=" for snow" CONFIG_SYS_LOAD_ADDR=0x43e00000 CONFIG_DEBUG_UART=y CONFIG_FIT=y CONFIG_FIT_BEST_MATCH=y CONFIG_BOOTSTD_FULL=y CONFIG_BOOTMETH_CROS=y CONFIG_DISTRO_DEFAULTS=y CONFIG_SILENT_CONSOLE=y CONFIG_BLOBLIST=y # CONFIG_SPL_BLOBLIST is not set CONFIG_BLOBLIST_ADDR=0x43d00000 # CONFIG_SPL_FRAMEWORK is not set CONFIG_SPL_FOOTPRINT_LIMIT=y CONFIG_SPL_MAX_FOOTPRINT=0x3800 CONFIG_SYS_PROMPT="snow # " CONFIG_SYS_PBSIZE=1024 CONFIG_CMD_GPIO=y CONFIG_CMD_I2C=y CONFIG_CMD_MMC=y CONFIG_CMD_SPI=y CONFIG_CMD_USB=y # CONFIG_CMD_SETEXPR is not set CONFIG_CMD_CACHE=y CONFIG_CMD_TIME=y CONFIG_CMD_SOUND=y CONFIG_CMD_PMIC=y CONFIG_CMD_REGULATOR=y CONFIG_CMD_TPM=y CONFIG_CMD_TPM_TEST=y CONFIG_CMD_EXT4_WRITE=y CONFIG_ENV_OVERWRITE=y CONFIG_ENV_IS_IN_SPI_FLASH=y CONFIG_ENV_SPI_BUS=1 CONFIG_SYS_RELOC_GD_ENV_ADDR=y CONFIG_I2C_CROS_EC_LDO=y CONFIG_SYS_I2C_S3C24X0=y CONFIG_I2C_MUX=y CONFIG_I2C_ARB_GPIO_CHALLENGE=y CONFIG_CROS_EC_KEYB=y CONFIG_CROS_EC=y CONFIG_CROS_EC_I2C=y CONFIG_SUPPORT_EMMC_BOOT=y CONFIG_MMC_DW=y CONFIG_MMC_SDHCI=y CONFIG_MMC_SDHCI_S5P=y CONFIG_MTD=y CONFIG_SPI_FLASH_GIGADEVICE=y CONFIG_SPI_FLASH_WINBOND=y CONFIG_SMC911X=y CONFIG_DM_PMIC=y CONFIG_DM_PMIC_MAX77686=y CONFIG_PMIC_S5M8767=y CONFIG_PMIC_TPS65090=y CONFIG_DM_REGULATOR=y CONFIG_DM_REGULATOR_MAX77686=y CONFIG_REGULATOR_S5M8767=y CONFIG_REGULATOR_TPS65090=y CONFIG_DM_PWM=y CONFIG_PWM_EXYNOS=y CONFIG_SOUND=y CONFIG_I2S=y CONFIG_I2S_SAMSUNG=y CONFIG_SOUND_MAX98095=y CONFIG_SOUND_WM8994=y CONFIG_EXYNOS_SPI=y CONFIG_TPM_TIS_INFINEON=y CONFIG_USB=y CONFIG_USB_XHCI_HCD=y CONFIG_USB_XHCI_DWC3=y CONFIG_USB_EHCI_HCD=y CONFIG_USB_HOST_ETHER=y CONFIG_USB_ETHER_ASIX88179=y CONFIG_VIDEO=y # CONFIG_VIDEO_BPP8 is not set CONFIG_VIDCONSOLE_AS_LCD=y CONFIG_DISPLAY=y CONFIG_VIDEO_EXYNOS=y CONFIG_EXYNOS_DP=y CONFIG_EXYNOS_FB=y CONFIG_VIDEO_BRIDGE=y CONFIG_VIDEO_BRIDGE_PARADE_PS862X=y CONFIG_VIDEO_BRIDGE_NXP_PTN3460=y CONFIG_TPM=y CONFIG_ERRNO_STR=y CONFIG_UNIT_TEST=y # CONFIG_UT_LIB_ASN1 is not set
On Thu, Dec 28, 2023 at 11:26 PM Mario Marietto marietto2008@gmail.com wrote:
I've just built it with Ubuntu 18.04 / gcc 7.5.0 ; I have my u-boot.bin and I tried to see if it worked,but unfortunately it doesn't.
root@devuan-bunsen:/mnt/zroot2/zroot2/OS/Chromebook/freebsd-xen/domU-freebsd# ./start-freebsd
Parsing config from freebsd.cfg xc: error: panic: xg_dom_core.c:689: xc_dom_find_loader: no loader found: Invalid kernel libxl: error: libxl_dom.c:571:libxl__build_dom: xc_dom_parse_image failed libxl: error: libxl_create.c:1640:domcreate_rebuild_done: Domain 1:cannot (re-)build domain: -3 libxl: error: libxl_domain.c:1183:libxl__destroy_domid: Domain 1:Non-existent domain libxl: error: libxl_domain.c:1137:domain_destroy_callback: Domain 1:Unable to destroy guest libxl: error: libxl_domain.c:1064:domain_destroy_cb: Domain 1:Destruction of domain failed freebsd is an invalid domain identifier (rc=-6)
start-freebsd :
xl create freebsd.cfg xl console freebsd
freebsd.cfg :
name="freebsd" kernel="/mnt/zroot2/zroot2/OS/Chromebook/freebsd-xen/domU-freebsd/bootloaders/u-boot.bin" extra = "console=hvc0" memory=512 vcpus=1 disk = [ 'FreeBSD-13.2-RELEASE-armv7.img,raw,xvda' ]
On Thu, Dec 28, 2023 at 10:54 PM Tony Dinh mibodhi@gmail.com wrote:
On Thu, Dec 28, 2023 at 11:48 AM Simon Glass sjg@chromium.org wrote:
Hi Mario,
On Thu, Dec 28, 2023 at 3:48 PM Mario Marietto marietto2008@gmail.com wrote:
I tried to compile it,but If failed :
/mnt/zroot2/zroot2/OS/Chromebook/freebsd-xen/domU-freebsd/bootloaders/u-boot-2017.05# ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make snow_defconfig
HOSTCC scripts/basic/fixdep HOSTCC scripts/kconfig/conf.o HOSTCC scripts/kconfig/zconf.tab.o In file included from scripts/kconfig/zconf.tab.c:2470: In function ‘dep_stack_insert’, inlined from ‘sym_check_print_recursive’ at scripts/kconfig/symbol.c:1123:3, inlined from ‘sym_check_deps’ at scripts/kconfig/symbol.c:1300:3: scripts/kconfig/symbol.c:1099:19: warning: storing the address of local variable ‘cv_stack’ in ‘check_top’ [-Wdangling-pointer=] 1099 | check_top = stack; | ~~~~~~~~~~^~~~~~~ scripts/kconfig/symbol.c: In function ‘sym_check_deps’: scripts/kconfig/symbol.c:1120:26: note: ‘cv_stack’ declared here 1120 | struct dep_stack cv_stack; | ^~~~~~~~ scripts/kconfig/symbol.c:1090:4: note: ‘check_top’ declared here 1090 | } *check_top; | ^~~~~~~~~ HOSTLD scripts/kconfig/conf # # configuration written to .config #
/mnt/zroot2/zroot2/OS/Chromebook/freebsd-xen/domU-freebsd/bootloaders/u-boot-2017.05# ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make
scripts/kconfig/conf --silentoldconfig Kconfig CHK include/config.h CFG u-boot.cfg GEN include/autoconf.mk GEN include/autoconf.mk.dep CFG spl/u-boot.cfg GEN spl/include/autoconf.mk CHK include/config/uboot.release CHK include/generated/version_autogenerated.h CHK include/generated/timestamp_autogenerated.h UPD include/generated/timestamp_autogenerated.h CC lib/asm-offsets.s arm-linux-gnueabihf-gcc: error: unrecognized -march target: armv5 arm-linux-gnueabihf-gcc: note: valid arguments are: armv4 armv4t armv5t armv5te armv5tej armv6 armv6j armv6k armv6z armv6kz armv6zk armv6t2 armv6-m armv6s-m armv7 armv7-a armv7ve armv7-r armv7-m armv7e-m armv8-a armv8.1-a armv8.2-a armv8.3-a armv8.4-a armv8.5-a armv8.6-a armv8-m.base armv8-m.main armv8-r armv8.1-m.main armv9-a iwmmxt iwmmxt2; did you mean ‘armv4’? arm-linux-gnueabihf-gcc: error: missing argument to ‘-march=’ make[1]: *** [Kbuild:44: lib/asm-offsets.s] Error 1 make: *** [Makefile:1287: prepare0] Error 2
You might need to compile with an old toolchain, e.g. gcc 4?
I think Simon is right. I could not rebuild that 2017.05 u-boot with gcc 12 now. So I looked at the old log, and it was built with gcc 6.3.
gcc -Wp,-MD,disk/.part_efi.o.d -nostdinc -isystem /usr/lib/gcc/arm-linux-gnueabi/6/include -Iinclude -I./arch/arm/include -include ./include/linux/kconfig.h -D__KERNEL__ -D__UBOOT__ -Wall -Wstrict-prototypes -Wno-format-security -fno-builtin -ffreestanding -Os -fno-stack-protector -fno-delete-null-pointer-checks -g -fstack-usage -Wno-format-nonliteral -Werror=date-time -D__ARM__ -marm -mno-thumb-interwork -mabi=aapcs-linux -mword-relocations -fno-pic -ffunction-sections -fdata-sections -fno-common -ffixed-r9 -msoft-float -pipe -march=armv5te -D__LINUX_ARM_ARCH__=5 -I./arch/arm/mach-kirkwood/include -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(part_efi)" -D"KBUILD_MODNAME=KBUILD_STR(part_efi)" -c -o disk/part_efi.o disk/part_efi.c
# ll /usr/lib/gcc/arm-linux-gnueabi/6* -d drwxr-xr-x 5 root root 4096 Apr 14 2019 /usr/lib/gcc/arm-linux-gnueabi/6 lrwxrwxrwx 1 root root 1 May 16 2017 /usr/lib/gcc/arm-linux-gnueabi/6.3.0 -> 6
Hope this helps.
All the best, Tony
Regards, Simon
On Thu, Dec 28, 2023 at 3:47 PM Mario Marietto marietto2008@gmail.com wrote:
Hello.
Can someone provide the right link to download u-boot-2017.0.5 , please ?
I've found it here,but I'm not sure that it's the correct version :
https://src.fedoraproject.org/repo/pkgs/uboot-tools/u-boot-2017.05.tar.bz2/s...
Can you confirm it ? thanks.
On Thu, Dec 28, 2023 at 1:14 AM Tony Dinh mibodhi@gmail.com wrote: > > Hi Mario and Heinrich, > > On Wed, Dec 27, 2023 at 12:23 PM Mario Marietto marietto2008@gmail.com wrote: > > > > Hello. > > > > I'm trying to boot FreeBSD for arm32 bit as DomU on my ARM Chromebook > > SNOW with xen. Basically there are two ways to accomplish this task : > > > > > > 1) to write a patch that allows the FreeBSD kernel to boot as a zImage > > file. This could be accomplished applying this patch to a specific > > file that's on the source code of FreeBSD : > > > > > > https://xenbits.xen.org/gitweb/?p=p...8;hb=0782e25d98cc1391472717035f986c979... > > > > > > > > This patch was written by Julien Grall a lot of time ago and now it > > does not work anymore. This is the reason explain by the xen > > developers : > > > > > > > > It appears FreeBSD-CURRENT removed the last step converting the kernel > > file to kernel.bin.The patch can be readily rebased, but without > > kernel.bin that doesn't do too much. > > > > > > > > So,without a rebase of that patch the first option is not applicable. > > And I'm not able to fix it. > > > > > > 2) booting FreeBSD using U-Boot,as explained to me by a xen developer : > > > > > > I was trying to explain why and how Julien's patch works so that you > > could be the one to re-do something similar or fix the patch on the > > FreeBSD kernel that you are working with. I am happy to help review > > and write patches but I don't work with the FreeBSD kernel so I > > wouldn't be able to help you quickly. However, I might have a > > suggestion. Do you know if FreeBSD can be booted by U-Boot ? > > Because > > U-Boot definitely boots as Xen on ARM guest firmware/bootloader. You > > should be able to build U-Boot and use the U-Boot binary as Xen guest > > kernel, then U-Boot could load FreeBSD from disk or network and start > > it. For instance as domU config file: > > > > kernel="/home/petalinux/u-boot.bin" > > disk = [ '/home/petalinux/test.img,raw,xvda' ] > > > > > > Actually I'm working on the idea n. 2. Basically I need to find the > > proper u-boot file that's able to boot the image of FreeBSD that I > > have installed (13.2 for arm32 bit). Maybe I found it here : > > > > > > http://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/nv_ub... > > > > > > I found that link inside this tutorial : > > > > > > https://wiki.freebsd.org/arm/Chromebook > > > > > > the version of u-boot that has been embedded in that file is the following one : > > > > > > # strings nv_uboot-snow-simplefb.kpart | grep U-Boot > > U-Boot 2011.12-gc1f6280 (May 27 2013 - 15:06:59) for SMDK5250 > > > > > > So the question is easy : I need to find the source code of that old > > version of u-boot,because once compiled,it will give me the proper > > u-boot.bin kernel / bootloader file that maybe will be able to boot > > FreeBSD. > > Yes, it can boot a 32-bit ARM board. I'm not a FreeBSD person, but > I've helped a FreeBSD user booting a 32-bit ARM box with u-boot > (GoFlexHome Marvell Kirkwood 6281). The u-boot version was 2017.05. I > used an out-of-tree u-boot build. This u-boot executed the ubldr to > boot FreeBSD. > > Please see here: > https://forum.doozan.com/read.php?3,49039,82059#msg-82059 > > It's been so long, I don't remember the details. Just to confirm what > Heinrich said that u-boot can indeed boot 32-bit FreeBSD, since many > years ago. > > All the best, > Tony > > > > > > > -- > > Mario.
-- Mario.
-- Mario.
-- Mario.
-- Mario.
-- Mario.
participants (3)
-
Mario Marietto
-
Simon Glass
-
Tony Dinh