
Am 27. Dezember 2023 19:54:06 MEZ schrieb Mario Marietto marietto2008@gmail.com:
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.
Hello Mario,
U-Boot supports booting EFI binaries since 2016. I don't know if some arm32 bits are still missing in FreeBSD (see https://wiki.freebsd.org/UEFI). But looking at https://cgit.freebsd.org/src/plain/stand/efi/loader/Makefile.depend.arm and https://cgit.freebsd.org/src/plain/stand/efi/loader/arch/arm/start.S arm32 should be supported. I guess the wiki needs an update.
The U-Boot documentation only describes arm64 Xen support: https://docs.u-boot.org/en/latest/board/xen/xenguest_arm64.html .
I have CCed the U-Boot Xen maintainers hoping they can indicate the missing pieces for arm32.
Best regards
Heinrich