Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 18 Dec 2023 12:35:51 +0100
From:      Mario Marietto <marietto2008@gmail.com>
To:        Stanislav Silnicki <stanislav.silnicki@mailgate.us>
Cc:        freebsd-arm@freebsd.org
Subject:   Re: How to boot FreeBSD for arm 32 bit as DomU with u-boot on my ARM Chromebook
Message-ID:  <CA%2B1FSih7C0HEun99LHEwvyYRiH0PaLwwgnoQLHB69TWz2ykDZg@mail.gmail.com>
In-Reply-To: <da024d1687f3a.2f0c601bba502@mailgate.us>
References:  <CA%2B1FSiit5NJ_W7f5mssivkGGLevXh_XmSB7ZxZbQe1dgev0_Pg@mail.gmail.com> <97aa980b9b44.6eb7f9d5c54e7@mailgate.us> <CA%2B1FSiheSwrO7Tz3F3Nmu4vcC2E=ONRX8nF3bhQGV0UDOFTrww@mail.gmail.com> <da024d1687f3a.2f0c601bba502@mailgate.us>

next in thread | previous in thread | raw e-mail | index | archive | help
--000000000000285706060cc729f7
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

---> There are no specific options in u-boot devoted to FreeBSD

This is an important factor. So,what about if,instead of compiling a new
version of u-boot on the partition 2,I will recompile the u-boot customized
version created by the virtual open system in 2014,that should be installed
on the first partition ? It could work if there are no differences between
the u-boot that should boot Linux and the u-boot that should boot FreeBSD.

Can you give a look at the u-boot source code created by virtual open
systems ? You can find it on my google drive :

https://drive.google.com/file/d/1eAaZMfd6CU0xiqQfH7sq5wGVzzO09BRm/view?usp=
=3Dsharing

I need to understand if I can recompile it without problem so that it can
satisfy my needs (the ability of the file u-boot.bin to boot FreeBSD as
domU under Xen,as explained by Stefano Stabellini,the xen developer that
suggested to me what I could do to have FreeBSD virtualized under Xen on my
Arm Chromebook) ; otherwise the risk is to find later problems that will
make me troubles and that I will not able to fix.

I gave a look at the virtual open system u-boot and I didn't see any
arndale_defconfig
inside. So,If I have understood correctly,I should put that file inside the
root of the u-boot source code,let's say here :

marietto:/home/marietto/Desktop/Files/u-boot_FreeBSD/u-boot-vos # ls

.checkpatch.conf        README                  doc                     net
.git                    api                     drivers
                onenand_ipl
.gitignore              arch                    dts
                    post
COPYING                 board                   examples
rules.mk
CREDITS                 boards.cfg              fs
                     scripts
MAINTAINERS             common                  include
                snapshot.commit
MAKEALL                 config.mk               lib                     spl
Makefile                cros                    mkconfig
               test
PRESUBMIT.cfg           disk                    nand_spl
               tools

and I should do : make and make install ? and the file I need,u-boot.bin
will be generated ?

I didn't find any pre made configuration file inside :

u-boot-vos # find . -type f -name "exynos*"

./include/exynos-fb.h
./include/configs/exynos5-common.h
./doc/device-tree-bindings/spi/exynos-spi.txt
./doc/device-tree-bindings/usb/exynos-usb.txt
./drivers/power/exynos-tmu.c
./drivers/power/exynos-cpufreq.c
./drivers/video/exynos-fb.c
./drivers/spi/exynos_spi.c
./board/samsung/dts/exynos5250-spring.dts
./board/samsung/dts/exynos5250-smdk5250.dts
./board/samsung/dts/exynos5250-snow.dts
./board/samsung/dts/exynos5250-daisy.dts
./arch/arm/include/asm/arch-exynos5/exynos-cpufreq.h
./arch/arm/include/asm/arch-exynos5/exynos-tmu.h
./arch/arm/dts/exynos5250.dtsi
./arch/arm/dts/exynos-periph-id.dtsi
./arch/arm/cpu/armv7/exynos5/exynos_cache.c

u-boot-vos # find . -type f -name "arndale*"

For sure I can't use a newer version of u-boot because otherwise the
patches needed to bypass the bootloader protections of the Arm Chromebook
(such as a lot of different patches needed to boot correctly Linux) will be
broken ; anyway,since it works,I don't need to use an updated version of
u-boot.

----> As per my experience, you have to respect these two options,
compiling u-boot for FreeBSD:
https://github.com/freebsd/freebsd-ports/blob/main/sysutils/u-boot-master/f=
iles/FreeBSD_Fragment

It says that I should use these parameters :

CONFIG_ARMV7_NONSEC=3Dn
CONFIG_EFI_GRUB_ARM32_WORKAROUND=3Dy

These are the parameters used to configure a Linux kernel. I don't
understand what's the relation between the compilation of a linux kernel
and u-boot. In the past I tried to recompile u-boot,but I didn't have the
need to set up those parameters,so I don't know how to do it (but I know
how to recompile a Linux kernel).


---> I'm not sure that I'm getting you right, as I don't understand what
you mean under "the first u-boot".


I'm talking about first u-boot because the whole procedure to boot Linux on
the ARM Chromebook,that's explained here :

http://www.virtualopensystems.com/en/solutions/guides/kvm-on-chromebook/


at some point they say :


To be able to run KVM on ARM platforms, the kernel has to be booted in
hypervisor mode. Because of this relatively recent requirement (due to the
introduction of the virtualization extensions), up until now all booting
methods would boot the kernel in the standard Supervisor mode.

For the ARM Chromebook the default boot procedure doesn't allow us to boot
in hypervisor mode. Although the laptop's boot mechanism is based on the
frequently used u-boot, the binary is located in RO memory. Fortunately, a
chained u-boot mechanism can be used (i.e. starting another u-boot after
the original). We can then enter hypervisor mode from our custom iteration
of u-boot and subsequently load our kernel and userspace.

So,the first u-boot is the u-boot provided by virtual open systems,that's
able to chainload the "u-boot binary located in RO memory" , that does not
boot Chrome OS in hypervisor mode. We don't need it if we want to boot
Linux with kvm or xen enabled.

On Sun, Dec 17, 2023 at 1:28=E2=80=AFAM Stanislav Silnicki <
stanislav.silnicki@mailgate.us> wrote:

> I'm not an expert in the topic, I only know, that ARM has divided hardwar=
e
> into two worlds - Secure and Not-So, strictly limiting any software,
> running in non-secure world with access to functions and resources.
> https://developer.arm.com/documentation/den0013/d/Security/TrustZone-hard=
ware-architecture?lang=3Den
>
> I'm not sure, that I'm getting you right, as I don't understand what you
> mean under "the first u-boot".
>
> As I understand, virtualization (HYP) is running in non-secure world (
> https://developer.arm.com/documentation/ddi0406/c/System-Level-Architectu=
re/The-System-Level-Programmers--Model/The-Virtualization-Extensions),
> so my guess (only guess!!!), virtualization software has to prepare
> (configure) HW platform in the way, that FreeBSD kernel will not lack any
> resources, required to configure MPU, VA, etc.
> So, if you lucky to boot virtualizer, which is aware of target OS, that
> maybe you can boot the kernel. Although, I doubt, that you need to boot
> 'second' u-boot to boot the kernel - there is simply ubldr, which you can
> hook somehow from virtualizer....
>
> Stan
>
>
>
> Mario Marietto wrote:
>
>
> ---> As I understand, it makes sure that u-boot keeps in secure mode
> during boot and passes control to ubldr, which boots FreeBSD kernel, in
> that mode.
>
> Can you elaborate your sentence more ? I know that the bootloader secure
> mode is bypassed by the virtual open systems u-boot. Are you saying that
> when the control passes to the second u-boot,it will happen in secure
> mode,so that the bypass that happened loading the first u-boot,is annulle=
d
> ? If this is true,maybe can I boot FreeBSD using the virtual-open-system
> custom u-boot ? Is this compatible with FreeBSD ? Where can I find the
> u-boot.bin that the xen developer talked about ? thanks bro'.
>
>
>
> On Sun, Dec 17, 2023 at 12:35=E2=80=AFAM Stanislav Silnicki <
> stanislav.silnicki@mailgate.us> wrote:
>
>> Hi Mario,
>>
>> U-Boot  beast is hiding in this den:
>> https://source.denx.de/u-boot/u-boot.git
>> I took a brief look at your post and it seems to me, that option
>> CONFIG_CMO_BY_VA_ONLY is irrelevant to your target armv7 32 bit
>> platform:
>> https://source.denx.de/u-boot/u-boot/-/blob/master/arch/arm/cpu/armv8/Kc=
onfig?ref_type=3Dheads#L3
>>
>> As for compiling the u-boot, it is a doable task, given that you
>> understand what you are doing. There are no specific options in u-boot
>> devoted to FreeBSD. It is a boot loader, whose mission to make basic
>> hardware initialization, read you kernel file from some media into RAM a=
nd
>> then pass it control.
>>
>> Basically, you can grab some defconfig, prepared for any other Exynos525=
0
>> based board  (say, this one:
>> https://source.denx.de/u-boot/u-boot/-/blob/master/configs/arndale_defco=
nfig?ref_type=3Dheads)
>> and adopt it somehow.
>>
>> As per my experience, you have to respect these two options, compiling
>> u-boot for FreeBSD:
>> https://github.com/freebsd/freebsd-ports/blob/main/sysutils/u-boot-maste=
r/files/FreeBSD_Fragment
>>
>> As I understand, it makes sure, that u-boot keeps in secure mode during
>> boot and passes control to ubldr, which boots FreBSD kernel, in that mod=
e.
>> Otherwise, there a lot of surprises you may realize.
>>
>> Hope, this will help to progress you tasks
>> Stan
>>
>> Mario Marietto wrote:
>>
>>
>> Hello.
>>
>> I'm trying to boot FreeBSD for arm32 bit as DomU on my ARM Chromebook.
>> 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=3Dp...8;hb=3D0782e25d98cc1391472717035=
f986c979edef0c9
>> <https://xenbits.xen.org/gitweb/?p=3Dpeople/julieng/freebsd.git;a=3Dblob=
_plain;f=3Dsys/arm/conf/XENVIRT;h=3Dff6433392e6fc2d5fa7c1ad1f7c40155003af9a=
8;hb=3D0782e25d98cc1391472717035f986c979edef0c9>
>>
>>
>> This patch was written by Julien Grall a lot of time ago and now it does
>> not work anymore. This is the reason :
>>
>>
>> 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. An=
d
>> 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 Free=
BSD
>> 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 t=
o
>> 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 us=
e
>> the U-Boot binary as Xen guest kernel, then U-Boot could load FreeBSD fr=
om
>> disk or network and start it. For instance as domU config file:
>>
>> kernel=3D"/home/petalinux/u-boot.bin"
>> disk =3D [ '/home/petalinux/test.img,raw,xvda' ]
>>
>> I know it is important to build u-boot with the following config to make
>> it work on Xen.
>>
>> CONFIG_CMO_BY_VA_ONLY=3Dy
>>
>>
>>
>> This option seems more doable to me according to my knowledge. But I nee=
d
>> to understand how to do it.
>>
>> Well,let's say that on the ARM Chromebook I'm forced to use and install =
a
>> customized version of u-boot,created by virtual open systems,because it =
is
>> the only one that allows bypassing its bootloader protection. You can fi=
nd
>> more information here :
>>
>>
>> http://www.virtualopensystems.com/en/solutions/guides/kvm-on-chromebook/=
?vos=3Dtech
>>
>> This is the relevant section to read :
>>
>>
>> Bootloader :
>>
>> If you wish to skip this chapter you can download a pre-compiled binary
>> of the bootloader:
>>
>>
>> $ wget
>> http://www.virtualopensystems.com/downloads/guides/kvm_on_chromebook/nv_=
u-boot-snow.kpart
>>
>>
>> To be able to run KVM on ARM platforms, the kernel has to be booted in
>> hypervisor mode. Because of this relatively recent requirement (due to t=
he
>> introduction of the virtualization extensions), up until now all booting
>> methods would boot the kernel in the standard Supervisor mode. For the A=
RM
>> Chromebook the default boot procedure doesn't allow us to boot in
>> hypervisor mode. Although the laptop's boot mechanism is based on the
>> frequently used u-boot, the binary is located in RO memory. Fortunately,=
 a
>> chained u-boot mechanism can be used (i.e. starting another u-boot after
>> the original). We can then enter hypervisor mode from our custom iterati=
on
>> of u-boot and subsequently load our kernel and userspace.
>>
>> Checkout the needed u-boot code :
>>
>>
>> $ git clone git://github.com/virtualopensystems/u-boot.git$ cd u-boot$
>> ./scripts/build.sh
>>
>>
>> If successful, a message about how to copy the bootloader on the USB
>> flash disk or SD card will appear. We will use it later when preparing t=
he
>> boot medium to start our system. If you have followed the Setting up the
>> boot medium chapter and you have a prepared boot device, then you can
>> update u-boot by running :
>>
>>
>> $ sudo dd if=3Dnv_uboot-snow.kpart of=3D/dev/sdX1
>>
>>
>>
>> so,the needed u-boot that we must use should be installed on the first
>> partition of the sd card.
>>
>> There is another relevant section to read :
>>
>>
>> Setting up the boot medium
>>
>> Now it is time to copy all the relevant files that we created in the
>> previous chapters,and use them to boot Chromebook with a different kerne=
l
>> and OS. In all these examples the device /dev/sdX is used. Take extra ca=
re
>> to change the examples to the device that you have attached. Insert the
>> boot medium on your workstation and carefully execute the following step=
.
>> First we need to properly format the boot medium.
>>
>> In the uboot source directory :
>>
>>
>> $ sudo ./scripts/sdcard.sh /dev/sdX
>>
>>
>> This will erase all data and create 4 partitions in the medium, along
>> with copying the u-boot binary to the first partition:
>>
>>
>> Partition 1 =3D ChromeOS signed binary (V.O.S chained u-boot)
>> Partition 2 =3D not used
>> Partition 3 =3D EXT2 partition for u-boot files (uImage and
>> exynos5250-snow.dtb)
>> Partition 4 =3D EXT4 partition for userspace files
>>
>>
>> With u-boot being copied, next is the kernel image and DTB file. From th=
e
>> kernel source execute :
>>
>>
>> $ mkdir ../mnt/
>> $ sudo mount /dev/sdX3 ../mnt/
>> $ sudo cp arch/arm/boot/uImage ../mnt/
>> $ sudo cp arch/arm/boot/dts/exynos5250-snow.dtb ../mnt/
>> $ sudo umount /dev/sdX3
>>
>>
>> Finally, we have to copy the Ubuntu userspace filesystem that we created
>> earlier:
>>
>>
>> $ sudo mount /dev/sdX4 mnt/$ sudo cp -a ./precise/* mnt/$ sudo umount
>> /dev/sdX4
>>
>>
>>
>> Now,my idea is to chainload the already chain loaded u-boot created by
>> V.O.S to the new u-boot that we need for booting FreeBSD and that can be
>> installed in the partition n.2,as shown in this scheme,because it is not
>> used :
>>
>>
>> Partition 1 =3D ChromeOS signed binary (V.O.S chained u-boot)
>> Partition 2 =3D not used (maybe we can install the u-boot for arm 32
>> bit,compatible with FreeBSD on this partition)
>> Partition 3 =3D EXT2 partition for u-boot files (uImage and
>> exynos5250-snow.dtb)
>> Partition 4 =3D EXT4 partition for userspace files
>>
>>
>> Take in consideration that default boot string is hardcoded here,in the
>> snow.h file of the custom u-boot created by VOS :
>>
>>
>>
>> https://github.com/virtualopensyste...18a39b6c177dff58a/include/configs/=
snow.h#L101
>> <https://github.com/virtualopensystems/u-boot/blob/eecfeb578e296ef3b739a=
c918a39b6c177dff58a/include/configs/snow.h#L101>
>>
>>
>> and it needs to be recompiled because it should point to the partition
>> n.2,where I will install the u-boot files as explained here :
>>
>>
>> https://wiki.freebsd.org/arm/Chromebook
>>
>>
>> I have some questions to ask before I start working on this.
>>
>> 1) The xen developer said :
>>
>>
>> You should be able to build U-Boot and use the U-Boot binary as Xen gues=
t
>> kernel...
>>
>>
>>
>> where is the u-boot binary,according to this document ?
>>
>> https://wiki.freebsd.org/arm/Chromebook
>>
>> I don't see it.
>>
>>
>> 2) where is the source code of the file that I can get here :
>>
>>
>> http://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/n=
v_uboot-snow-simplefb.kpart.bz2
>>
>> I need the source code if I want to recompile u-boot so that it can poin=
t
>> to the partition 4.
>>
>> Maybe it can be found on this link :
>>
>> http://linux-exynos.org/dist/chromebook/nv_uboot/
>>
>> but it can't be opened....
>>
>>
>> 3) in this specific scenario the source code of u-boot should run on arm
>> 32 bit,not on arm 64,because I have the Samsung Chromebook "SNOW" model
>> XE303C12,that's powered by a Samsung Exynos 5250 (ARMv7 32 bit Cortex A1=
5)
>> Soc.
>>
>>
>> 4) I'm not sure if I can chainload the customized u-boot created by V.O.=
S
>> that should be installed on the first partition with the u-boot tailored
>> for booting FreeBSD that should be installed on the partition 2....
>>
>>
>> 5) the xen developer said that u-boot should be compiled enabling this
>> option :
>>
>>
>> Code:
>>
>> CONFIG_CMO_BY_VA_ONLY=3Dy
>>
>>
>>
>> Well,can you provide some good source that can help me to understand how
>> I can recompile u-boot for FreeBSD ? thanks.
>>
>> --
>> Mario.
>>
>>
>
> --
> Mario.
>
>

--=20
Mario.

--000000000000285706060cc729f7
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div>---&gt; There are no specific options in u-boot devot=
ed to=20
FreeBSD <br></div><div><br></div><div>This is an important factor. So,what =
about if,instead of compiling a new version of u-boot on the partition 2,I =
will recompile the u-boot customized version created by the virtual open sy=
stem in 2014,that should be installed on the first partition ? It could wor=
k if there are no differences between the u-boot that should boot Linux and=
 the u-boot that should boot FreeBSD.</div><div><br></div><div>Can you give=
 a look at the u-boot source code created by virtual open systems ? You can=
 find it on my google drive :<br></div><div><br></div><div><a href=3D"https=
://drive.google.com/file/d/1eAaZMfd6CU0xiqQfH7sq5wGVzzO09BRm/view?usp=3Dsha=
ring">https://drive.google.com/file/d/1eAaZMfd6CU0xiqQfH7sq5wGVzzO09BRm/vie=
w?usp=3Dsharing</a></div><div><br></div><div>I need to understand if I can =
recompile it without problem so that it can satisfy my needs (the ability o=
f the file u-boot.bin to boot FreeBSD as domU under Xen,as explained by Ste=
fano Stabellini,the xen developer that suggested to me what I could do to h=
ave FreeBSD virtualized under Xen on my Arm Chromebook) ; otherwise the ris=
k is to find later problems that will make me troubles and that I will not =
able to fix. <br></div><div><br></div><div>I gave a look at the virtual ope=
n system u-boot and I didn&#39;t see any <span class=3D"gmail-file-title-na=
me gmail-mr-1 gmail-js-blob-header-filepath">arndale_defconfig inside. So,I=
f I have understood correctly,I should put that file inside the root of the=
 u-boot source code,let&#39;s say here :</span></div><div><strong class=3D"=
gmail-file-title-name gmail-mr-1 gmail-js-blob-header-filepath"><br></stron=
g></div><div><font style=3D"font-family:arial,sans-serif" size=3D"2"><span =
style=3D"color:rgb(0,0,0);background-color:rgb(255,255,255)">marietto:/home=
/marietto/Desktop/Files/u-boot_FreeBSD/u-boot-vos # ls</span></font></div><=
div><font style=3D"font-family:arial,sans-serif" size=3D"2"><span style=3D"=
color:rgb(0,0,0);background-color:rgb(255,255,255)">=C2=A0</span><br>.check=
patch.conf =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0README =C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0doc =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0net
<br>.git =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0api =C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0drivers =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0onenand_ipl
<br>.gitignore =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0arch =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0dts =C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0post
<br>COPYING =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0board =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0exa=
mples =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0<a href=3D"http://rules.mk">rules.mk</a>;
<br>CREDITS =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0boards.cfg =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0fs =C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0scripts
<br>MAINTAINERS =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0common =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0include =C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0snapshot.commit
<br>MAKEALL =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0<a href=3D"http://config.mk">config.mk</a>=
 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0lib =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0spl
<br>Makefile =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0cros =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
mkconfig =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0test
<br>PRESUBMIT.cfg =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0disk =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0nand_spl =C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0too=
ls</font></div><div><font style=3D"font-family:arial,sans-serif" size=3D"2"=
><br></font></div><div><font style=3D"font-family:arial,sans-serif" size=3D=
"2">and I should do : make and make install ? and the file I need,u-boot.bi=
n will be generated ?=C2=A0</font></div><div><font style=3D"font-family:ari=
al,sans-serif" size=3D"2"><br></font></div><div><font style=3D"font-family:=
arial,sans-serif" size=3D"2">I didn&#39;t find any pre made configuration f=
ile inside :<br></font></div><div><span style=3D"color:rgb(0,0,0);backgroun=
d-color:rgb(255,255,255);font-family:arial,sans-serif"><br></span></div><di=
v><span style=3D"color:rgb(0,0,0);background-color:rgb(255,255,255);font-fa=
mily:arial,sans-serif">u-boot-vos # find . -type f -name &quot;exynos*</spa=
n><span style=3D"font-family:arial,sans-serif">&quot;=C2=A0</span></div><di=
v><span style=3D"font-family:arial,sans-serif"><br></span></div><div><span =
style=3D"font-family:arial,sans-serif">./include/exynos-fb.h
<br>./include/configs/exynos5-common.h
<br>./doc/device-tree-bindings/spi/exynos-spi.txt
<br>./doc/device-tree-bindings/usb/exynos-usb.txt
<br>./drivers/power/exynos-tmu.c
<br>./drivers/power/exynos-cpufreq.c
<br>./drivers/video/exynos-fb.c
<br>./drivers/spi/exynos_spi.c
<br>./board/samsung/dts/exynos5250-spring.dts
<br>./board/samsung/dts/exynos5250-smdk5250.dts
<br>./board/samsung/dts/exynos5250-snow.dts
<br>./board/samsung/dts/exynos5250-daisy.dts
<br>./arch/arm/include/asm/arch-exynos5/exynos-cpufreq.h
<br>./arch/arm/include/asm/arch-exynos5/exynos-tmu.h
<br>./arch/arm/dts/exynos5250.dtsi
<br>./arch/arm/dts/exynos-periph-id.dtsi
<br>./arch/arm/cpu/armv7/exynos5/exynos_cache.c=C2=A0</span></div><div><spa=
n style=3D"font-family:arial,sans-serif"><br></span></div><div><span style=
=3D"font-family:arial,sans-serif">u-boot-vos # find . -type f -name &quot;a=
rndale*&quot;</span><span style=3D"font-family:monospace"><br>
<br></span></div><div><font style=3D"font-family:arial,sans-serif" size=3D"=
2">For sure I can&#39;t use a newer version of u-boot because otherwise the=
 patches needed to bypass the bootloader protections of the Arm Chromebook =
(such as a lot of different patches needed to boot correctly Linux) will be=
 broken ; anyway,since it works,I don&#39;t need to use an updated version =
of u-boot.</font></div><div><font style=3D"font-family:arial,sans-serif" si=
ze=3D"2"><br></font></div><div><div dir=3D"auto" id=3D"m_-22259042928438964=
52tmjah_g_1299">----&gt; As per my experience, you have to respect=20
these two options, compiling u-boot for FreeBSD:=C2=A0<a href=3D"https://gi=
thub.com/freebsd/freebsd-ports/blob/main/sysutils/u-boot-master/files/FreeB=
SD_Fragment" target=3D"_blank">https://github.com/freebsd/freebsd-ports/blo=
b/main/sysutils/u-boot-master/files/FreeBSD_Fragment</a></div><font style=
=3D"font-family:arial,sans-serif" size=3D"2"></font></div><div><font size=
=3D"4"><span style=3D"font-family:monospace"><br></span></font></div><div><=
font size=3D"4"><span style=3D"font-family:monospace"></span></font></div><=
div>It says that I should use these parameters :</div><div><br></div><div>C=
ONFIG_ARMV7_NONSEC=3Dn<br>CONFIG_EFI_GRUB_ARM32_WORKAROUND=3Dy<font size=3D=
"4"><br></font></div><div><font size=3D"4"><br></font></div><div><font size=
=3D"2">These are the parameters used to configure a Linux kernel. I don&#39=
;t understand what&#39;s the relation between the compilation of a linux ke=
rnel and u-boot. In the past I tried to recompile u-boot,but I didn&#39;t h=
ave the need to set up those parameters,so I don&#39;t know how to do it (b=
ut I know how to recompile a Linux kernel).</font><div dir=3D"auto" id=3D"m=
_-962663937491960362tmjah_g_1299"><br></div><div dir=3D"auto"><br></div><di=
v dir=3D"auto">---&gt; I&#39;m not sure that I&#39;m getting you right, as =
I don&#39;t understand what you mean under &quot;the first u-boot&quot;.<p>=
</p><p><br></p><p>I&#39;m talking about first u-boot because the whole proc=
edure to boot Linux on the ARM Chromebook,that&#39;s explained here :<br></=
p><p><a href=3D"http://www.virtualopensystems.com/en/solutions/guides/kvm-o=
n-chromebook/">http://www.virtualopensystems.com/en/solutions/guides/kvm-on=
-chromebook/</a></p><p><br></p><p>at some point they say :</p><p><br></p><p=
>To be able to run KVM on ARM platforms, the kernel has to be booted in
 hypervisor mode. Because of this relatively recent requirement (due to=20
the introduction of the virtualization extensions), up until now all=20
booting methods would boot the kernel in the standard Supervisor mode.</p>
<p>For the ARM Chromebook the default boot procedure doesn&#39;t allow us t=
o
 boot in hypervisor mode. Although the laptop&#39;s boot mechanism is based=
=20
on the frequently used u-boot, the binary is located in RO memory.=20
Fortunately, a chained u-boot mechanism can be used (i.e. starting=20
another u-boot after the original). We can then enter hypervisor mode=20
from our custom iteration of u-boot and subsequently load our kernel
 and userspace.</p><p>So,the first u-boot is the u-boot provided by virtual=
 open systems,that&#39;s able to chainload the &quot;u-boot binary located =
in RO memory&quot; , that does not boot Chrome OS in hypervisor mode. We do=
n&#39;t need it if we want to boot Linux with kvm or xen enabled.</p></div>=
</div></div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_=
attr">On Sun, Dec 17, 2023 at 1:28=E2=80=AFAM Stanislav Silnicki &lt;<a hre=
f=3D"mailto:stanislav.silnicki@mailgate.us" target=3D"_blank">stanislav.sil=
nicki@mailgate.us</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote"=
 style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);p=
adding-left:1ex"><div><div>
                  =20
   =20
   =20
     =20
       =20
     =20
     =20
        <div id=3D"m_-5077711917547611557m_-962663937491960362compose-body-=
wrapper" dir=3D"auto"><div dir=3D"auto">I&#39;m not an expert in the topic,=
 I only know, that ARM has divided hardware into two worlds - Secure and No=
t-So, strictly limiting any software, running in non-secure world with acce=
ss to functions and resources.=C2=A0<a href=3D"https://developer.arm.com/do=
cumentation/den0013/d/Security/TrustZone-hardware-architecture?lang=3Den" t=
arget=3D"_blank">https://developer.arm.com/documentation/den0013/d/Security=
/TrustZone-hardware-architecture?lang=3Den</a></div><div dir=3D"auto" id=3D=
"m_-5077711917547611557m_-962663937491960362tmjah_g_1299"><br></div><div di=
r=3D"auto" id=3D"m_-5077711917547611557m_-962663937491960362tmjah_g_1299">I=
&#39;m not sure, that I&#39;m getting you right, as I don&#39;t understand =
what you mean under &quot;the first u-boot&quot;.</div><div dir=3D"auto" id=
=3D"m_-5077711917547611557m_-962663937491960362tmjah_g_1299"><br></div><div=
 dir=3D"auto" id=3D"m_-5077711917547611557m_-962663937491960362tmjah_g_1299=
">As I understand, virtualization (HYP) is running in non-secure world (<a =
href=3D"https://developer.arm.com/documentation/ddi0406/c/System-Level-Arch=
itecture/The-System-Level-Programmers--Model/The-Virtualization-Extensions"=
 target=3D"_blank">https://developer.arm.com/documentation/ddi0406/c/System=
-Level-Architecture/The-System-Level-Programmers--Model/The-Virtualization-=
Extensions</a>), so my guess (only guess!!!), virtualization software has t=
o prepare (configure) HW platform in the way, that FreeBSD kernel will not =
lack any resources, required to configure MPU, VA, etc.</div><div dir=3D"au=
to" id=3D"m_-5077711917547611557m_-962663937491960362tmjah_g_1299">So, if y=
ou lucky to boot virtualizer, which is aware of target OS, that maybe you c=
an boot the kernel. Although, I doubt, that you need to boot &#39;second&#3=
9; u-boot to boot the kernel - there is simply ubldr, which you can hook so=
mehow from virtualizer....</div><div dir=3D"auto" id=3D"m_-5077711917547611=
557m_-962663937491960362tmjah_g_1299"><br></div><div dir=3D"auto" id=3D"m_-=
5077711917547611557m_-962663937491960362tmjah_g_1299">Stan</div><div dir=3D=
"auto" id=3D"m_-5077711917547611557m_-962663937491960362tmjah_g_1299"><br><=
/div><div dir=3D"auto" id=3D"m_-5077711917547611557m_-962663937491960362tmj=
ah_g_1299"><br></div><br></div><div dir=3D"auto">Mario Marietto wrote:</div=
><br><br><div><blockquote type=3D"cite" style=3D"margin:0px 0px 0px 0.8ex;b=
order-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><d=
iv>---&gt; As=20
I understand, it makes sure that u-boot keeps in secure mode during boot=20
and passes control to ubldr, which boots FreeBSD kernel, in that mode.</div=
><div><br></div><div>Can you elaborate your sentence more ? I know that the=
 bootloader secure mode is bypassed by the virtual open systems u-boot. Are=
 you saying that when the control passes to the second u-boot,it will happe=
n in secure mode,so that the bypass that happened loading the first u-boot,=
is annulled ? If this is true,maybe can I boot FreeBSD using the virtual-op=
en-system custom u-boot ? Is this compatible with FreeBSD ? Where can I fin=
d the u-boot.bin that the xen developer talked about ? thanks bro&#39;. </d=
iv><div><br></div><div><br></div></div><br><div class=3D"gmail_quote"><div =
dir=3D"ltr" class=3D"gmail_attr">On Sun, Dec 17, 2023 at 12:35=E2=80=AFAM S=
tanislav Silnicki &lt;<a href=3D"mailto:stanislav.silnicki@mailgate.us" tar=
get=3D"_blank">stanislav.silnicki@mailgate.us</a>&gt; wrote:<br></div><bloc=
kquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:=
1px solid rgb(204,204,204);padding-left:1ex"><div><div>=20
    =20
    =20
      =20
        =20
      =20
      =20
         <div>
                   =20
    =20
    =20
      =20
        =20
      =20
      =20
         <div id=3D"m_-5077711917547611557m_-962663937491960362m_5085590471=
051268986compose-body-wrapper" dir=3D"auto"><div dir=3D"auto">Hi=20
Mario,</div><div dir=3D"auto"><br></div><div dir=3D"auto">U-Boot=C2=A0 beas=
t is=20
hiding in this den: <a href=3D"https://source.denx.de/u-boot/u-boot.git" ta=
rget=3D"_blank">https://source.denx.de/u-boot/u-boot.git</a></div><div dir=
=3D"auto">I took a brief look at your post and it seems to me, that=20
option=C2=A0<span style=3D"font-family:SFMono-Regular,Menlo,Monaco,Consolas=
,&quot;Liberation Mono&quot;,&quot;Courier New&quot;,monospace;font-size:in=
herit">CONFIG_CMO_BY_VA_ONLY</span>=C2=A0is irrelevant to=20
your target armv7 32 bit=20
platform:=C2=A0<a href=3D"https://source.denx.de/u-boot/u-boot/-/blob/maste=
r/arch/arm/cpu/armv8/Kconfig?ref_type=3Dheads#L3" target=3D"_blank">https:/=
/source.denx.de/u-boot/u-boot/-/blob/master/arch/arm/cpu/armv8/Kconfig?ref_=
type=3Dheads#L3</a></div><div dir=3D"auto" id=3D"m_-5077711917547611557m_-9=
62663937491960362m_5085590471051268986tmjah_g_1299"><br></div><div dir=3D"a=
uto" id=3D"m_-5077711917547611557m_-962663937491960362m_5085590471051268986=
tmjah_g_1299">As=20
for compiling the u-boot, it is a doable task, given that you understand=20
what you are doing. There are no specific options in u-boot devoted to=20
FreeBSD. It is a boot loader, whose mission to make basic hardware=20
initialization, read you kernel file from some media into RAM and then pass=
=20
it control. </div><div dir=3D"auto" id=3D"m_-5077711917547611557m_-96266393=
7491960362m_5085590471051268986tmjah_g_1299"><br></div><div dir=3D"auto" id=
=3D"m_-5077711917547611557m_-962663937491960362m_5085590471051268986tmjah_g=
_1299">Basically, you can grab some defconfig,=20
prepared for any other Exynos5250 based board=C2=A0 (say, this one: <a href=
=3D"https://source.denx.de/u-boot/u-boot/-/blob/master/configs/arndale_defc=
onfig?ref_type=3Dheads)" target=3D"_blank">https://source.denx.de/u-boot/u-=
boot/-/blob/master/configs/arndale_defconfig?ref_type=3Dheads)</a>=20
and adopt it somehow.</div><div dir=3D"auto" id=3D"m_-5077711917547611557m_=
-962663937491960362m_5085590471051268986tmjah_g_1299"><br></div><div dir=3D=
"auto" id=3D"m_-5077711917547611557m_-962663937491960362m_50855904710512689=
86tmjah_g_1299">As per my experience, you have to respect=20
these two options, compiling u-boot for FreeBSD:=C2=A0<a href=3D"https://gi=
thub.com/freebsd/freebsd-ports/blob/main/sysutils/u-boot-master/files/FreeB=
SD_Fragment" target=3D"_blank">https://github.com/freebsd/freebsd-ports/blo=
b/main/sysutils/u-boot-master/files/FreeBSD_Fragment</a></div><div dir=3D"a=
uto" id=3D"m_-5077711917547611557m_-962663937491960362m_5085590471051268986=
tmjah_g_1299"><br></div><div dir=3D"auto" id=3D"m_-5077711917547611557m_-96=
2663937491960362m_5085590471051268986tmjah_g_1299">As=20
I understand, it makes sure, that u-boot keeps in secure mode during boot=
=20
and passes control to ubldr, which boots FreBSD kernel, in that mode.=20
Otherwise, there a lot of surprises you may realize.</div><div dir=3D"auto"=
 id=3D"m_-5077711917547611557m_-962663937491960362m_5085590471051268986tmja=
h_g_1299"><br></div><div dir=3D"auto" id=3D"m_-5077711917547611557m_-962663=
937491960362m_5085590471051268986tmjah_g_1299">Hope, this=20
will help to progress you tasks</div><div dir=3D"auto" id=3D"m_-50777119175=
47611557m_-962663937491960362m_5085590471051268986tmjah_g_1299">Stan</div><=
div dir=3D"auto" id=3D"m_-5077711917547611557m_-962663937491960362m_5085590=
471051268986tmjah_g_1299"><br></div></div><div dir=3D"auto">Mario=20
Marietto wrote:</div><br><br><div><blockquote type=3D"cite" style=3D"margin=
:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"=
><div dir=3D"ltr"><div><div><div><div id=3D"m_-5077711917547611557m_-962663=
937491960362m_5085590471051268986gmail-:1fg"><div id=3D"m_-5077711917547611=
557m_-962663937491960362m_5085590471051268986gmail-:1ay"><div dir=3D"ltr">H=
ello.<br>
<br>
I&#39;m trying to boot FreeBSD for arm32 bit as DomU on my ARM Chromebook.=
=20
Basically there are two ways to accomplish this task :<br>
<br>
1) to write a patch that allows the FreeBSD kernel to boot as a zImage=20
file. This could be accomplished applying this patch to a specific file=20
that&#39;s on the source code of FreeBSD :<br>
<br>
<br>
<a href=3D"https://xenbits.xen.org/gitweb/?p=3Dpeople/julieng/freebsd.git;a=
=3Dblob_plain;f=3Dsys/arm/conf/XENVIRT;h=3Dff6433392e6fc2d5fa7c1ad1f7c40155=
003af9a8;hb=3D0782e25d98cc1391472717035f986c979edef0c9" rel=3D"nofollow ugc=
 noopener" target=3D"_blank">https://xenbits.xen.org/gitweb/?p=3Dp...8;hb=
=3D0782e25d98cc1391472717035f986c979edef0c9</a><br>

<br>
<br>
This patch was written by Julien Grall a lot of time ago and now it does=20
not work anymore. This is the reason :<br>
<br>
<br>




<blockquote>
=09
	<div>
	=09
		<div>
			It appears FreeBSD-CURRENT removed the last step converting the=20
kernel file to kernel.bin. The patch can be readily rebased, but without
  kernel.bin that doesn&#39;t do too much.
		</div>
	=09
	</div>
</blockquote><br>
  <br>
So,without a rebase of that patch the first option is not applicable. And=
=20
I&#39;m not able to fix it.<br>
<br>
2) booting FreeBSD using U-Boot,as explained to me by a xen developer :<br>
<br>
<br>




<blockquote>
=09
	<div>
	=09
		<div>
			I was trying to explain why and how Julien&#39;s patch works so that you=
=20
could be the one to re-do something similar or fix the patch on the=20
FreeBSD kernel that you are working with. I am happy to help review and=20
write patches but I don&#39;t work with the FreeBSD kernel so I wouldn&#39;=
t be=20
able to help you quickly. However, I might have a suggestion. Do you=20
know if FreeBSD can be booted by U-Boot ? Because U-Boot definitely=20
boots as Xen on ARM guest firmware/bootloader. You should be able to=20
build U-Boot and use the U-Boot binary as Xen guest kernel, then U-Boot=20
could load FreeBSD from disk or network and start it. For instance as=20
domU config file:<br>
<br>
kernel=3D&quot;/home/petalinux/u-boot.bin&quot;<br>
disk =3D [ &#39;/home/petalinux/test.img,raw,xvda&#39; ]<br>
<br>
I know it is important to build u-boot with the following config to make it=
=20
work on Xen.<br>
<br>
CONFIG_CMO_BY_VA_ONLY=3Dy
		</div>
	=09
	</div>
</blockquote><br>
<br>
This option seems more doable to me according to my knowledge. But I need=
=20
to understand how to do it.<br>
<br>
Well,let&#39;s say that on the ARM Chromebook I&#39;m forced to use and ins=
tall a
  customized version of u-boot,created by virtual open systems,because it
  is the only one that allows bypassing its bootloader protection. You=20
can find more information here :<br>
<br>
<a href=3D"http://www.virtualopensystems.com/en/solutions/guides/kvm-on-chr=
omebook/?vos=3Dtech" rel=3D"nofollow ugc noopener" target=3D"_blank">http:/=
/www.virtualopensystems.com/en/solutions/guides/kvm-on-chromebook/?vos=3Dte=
ch</a><br>

<br>
This is the relevant section to read :<br>
<br>
<br>




<blockquote>
=09
	<div>
	=09
		<div>
			Bootloader :<br>
<br>
If you wish to skip this chapter you can download a pre-compiled binary of=
=20
the bootloader:<br>
<br>
<br>
$ wget <a href=3D"http://www.virtualopensystems.com/downloads/guides/kvm_on=
_chromebook/nv_u-boot-snow.kpart" rel=3D"nofollow ugc noopener" target=3D"_=
blank">http://www.virtualopensystems.com/downloads/guides/kvm_on_chromebook=
/nv_u-boot-snow.kpart</a><br>

<br>
<br>
To be able to run KVM on ARM platforms, the kernel has to be booted in=20
hypervisor mode. Because of this relatively recent requirement (due to=20
the introduction of the virtualization extensions), up until now all=20
booting methods would boot the kernel in the standard Supervisor mode.=20
For the ARM Chromebook the default boot procedure doesn&#39;t allow us to=
=20
boot in hypervisor mode. Although the laptop&#39;s boot mechanism is based=
=20
on the frequently used u-boot, the binary is located in RO memory.=20
Fortunately, a chained u-boot mechanism can be used (i.e. starting=20
another u-boot after the original). We can then enter hypervisor mode=20
 from our custom iteration of u-boot and subsequently load our kernel and
  userspace.<br>
<br>
Checkout the needed u-boot code :<br>
<br>
<br>
$ git clone git://<a href=3D"http://github.com/virtualopensystems/u-boot.gi=
t$" rel=3D"nofollow ugc=20
noopener" target=3D"_blank">github.com/virtualopensystems/u-boot.git$</a> c=
d=20
u-boot$ ./scripts/build.sh<br>
<br>
<br>
If successful, a message about how to copy the bootloader on the USB=20
flash disk or SD card will appear. We will use it later when preparing=20
the boot medium to start our system. If you have followed the Setting up
  the boot medium chapter and you have a prepared boot device, then you=20
can update u-boot by running :<br>
<br>
<br>
$ sudo dd if=3Dnv_uboot-snow.kpart of=3D/dev/sdX1
		</div>
	=09
	</div>
</blockquote><br>
<br>
so,the needed u-boot that we must use should be installed on the first=20
partition of the sd card.<br>
<br>
There is another relevant section to read :<br>
<br>
<br>




<blockquote>
=09
	<div>
	=09
		<div>
			Setting up the boot medium<br>
<br>
Now it is time to copy all the relevant files that we created in the=20
previous chapters,and use them to boot Chromebook with a different=20
kernel and OS. In all these examples the device /dev/sdX is used. Take=20
extra care to change the examples to the device that you have attached.=20
Insert the boot medium on your workstation and carefully execute the=20
following step. First we need to properly format the boot medium.<br>
<br>
In the uboot source directory :<br>
<br>
<br>
$ sudo ./scripts/sdcard.sh /dev/sdX<br>
<br>
<br>
This will erase all data and create 4 partitions in the medium, along with=
=20
copying the u-boot binary to the first partition:<br>
<br>
<br>
Partition 1 =3D ChromeOS signed binary (V.O.S chained u-boot)<br>
Partition 2 =3D not used<br>
Partition 3 =3D EXT2 partition for u-boot files (uImage and=20
exynos5250-snow.dtb)<br>
Partition 4 =3D EXT4 partition for userspace files<br>
<br>
<br>
With u-boot being copied, next is the kernel image and DTB file. From the=
=20
kernel source execute :<br>
<br>
<br>
$ mkdir ../mnt/<br>
$ sudo mount /dev/sdX3 ../mnt/<br>
$ sudo cp arch/arm/boot/uImage ../mnt/<br>
$ sudo cp arch/arm/boot/dts/exynos5250-snow.dtb ../mnt/<br>
$ sudo umount /dev/sdX3<br>
<br>
<br>
Finally, we have to copy the Ubuntu userspace filesystem that we created=20
earlier:<br>
<br>
<br>
$ sudo mount /dev/sdX4 mnt/$ sudo cp -a ./precise/* mnt/$ sudo umount=20
/dev/sdX4
		</div>
	=09
	</div>
</blockquote><br>
<br>
Now,my idea is to chainload the already chain loaded u-boot created by=20
V.O.S to the new u-boot that we need for booting FreeBSD and that can be
  installed in the partition n.2,as shown in this scheme,because it is=20
not used :<br>
<br>
<br>
Partition 1 =3D ChromeOS signed binary (V.O.S chained u-boot)<br>
Partition 2 =3D not used (maybe we can install the u-boot for arm 32=20
bit,compatible with FreeBSD on this partition)<br>
Partition 3 =3D EXT2 partition for u-boot files (uImage and=20
exynos5250-snow.dtb)<br>
Partition 4 =3D EXT4 partition for userspace files<br>
<br>
<br>
Take in consideration that default boot string is hardcoded here,in the=20
snow.h file of the custom u-boot created by VOS  :<br>
<br>
<br>
<a href=3D"https://github.com/virtualopensystems/u-boot/blob/eecfeb578e296e=
f3b739ac918a39b6c177dff58a/include/configs/snow.h#L101" rel=3D"nofollow ugc=
 noopener" target=3D"_blank">https://github.com/virtualopensyste...18a39b6c=
177dff58a/include/configs/snow.h#L101</a><br>

<br>
<br>
and it needs to be recompiled because it should point to the partition=20
n.2,where I will install the u-boot files as explained here :<br>
<br>
<br>
<a href=3D"https://wiki.freebsd.org/arm/Chromebook" rel=3D"nofollow ugc=20
noopener" target=3D"_blank">https://wiki.freebsd.org/arm/Chromebook</a><br>;
<br>
<br>
I have some questions to ask before I start working on this.<br>
<br>
1) The xen developer said :<br>
<br>
<br>




<blockquote>
=09
	<div>
	=09
		<div>
			You should be able to build U-Boot and use the U-Boot binary as Xen=20
guest kernel...
		</div>
	=09
	</div>
</blockquote><br>
<br>
where is the u-boot binary,according to this document ?<br>
<br>
<a href=3D"https://wiki.freebsd.org/arm/Chromebook" rel=3D"nofollow ugc=20
noopener" target=3D"_blank">https://wiki.freebsd.org/arm/Chromebook</a><br>;
<br>
I don&#39;t see it.<br>
<br>
<br>
2) where is the source code of the file that I can get here :<br>
<br>
<a rel=3D"nofollow ugc=20
noopener">http://commondatastorage.googleapis.com/chromeos-localmirror/dist=
files/nv_uboot-snow-simplefb.kpart.bz2</a><br>

<br>
I need the source code if I want to recompile u-boot so that it can point=
=20
to the partition 4.<br>
<br>
Maybe it can be found on this link :<br>
<br>
<a href=3D"http://linux-exynos.org/dist/chromebook/nv_uboot/" rel=3D"nofoll=
ow=20
ugc noopener" target=3D"_blank">http://linux-exynos.org/dist/chromebook/nv_=
uboot/</a><br>
<br>
but it can&#39;t be opened....<br>
<br>
<br>
3) in this specific scenario the source code of u-boot should run on arm
  32 bit,not on arm 64,because I have the Samsung Chromebook &quot;SNOW&quo=
t; model
  XE303C12,that&#39;s powered by a Samsung Exynos 5250 (ARMv7 32 bit Cortex=
=20
A15) Soc.<br>
<br>
<br>
4) I&#39;m not sure if I can chainload the customized u-boot created by=20
V.O.S that should be installed on the first partition with the u-boot=20
tailored for booting FreeBSD that should be installed on the partition=20
2....<br>
<br>
<br>
5) the xen developer said that u-boot should be compiled enabling this=20
option :<br>
<br>
<br>

=09
=09


<div>
	<div>
		Code: <br></div><div><br></div>
	<div dir=3D"ltr">
		<pre dir=3D"ltr"><code>CONFIG_CMO_BY_VA_ONLY=3Dy</code></pre>
	</div>
</div><br>
<br>
Well,can you provide some good source that can help me to understand how I=
=20
can recompile u-boot for FreeBSD ?=20
thanks.</div></div></div></div></div></div><div><div><div><div id=3D"m_-507=
7711917547611557m_-962663937491960362m_5085590471051268986gmail-:1fh"><tabl=
e role=3D"presentation"><tbody><tr><td><br></td><td></td></tr></tbody></tab=
le></div></div></div></div><span class=3D"gmail_signature_prefix">-- </span=
><br><div dir=3D"ltr" class=3D"gmail_signature">Mario.<br></div></div></blo=
ckquote></div>
      =20
    =20
  =20
                   </div>
      =20
    =20
   </div></div></blockquote></div><br clear=3D"all"><br><span class=3D"gmai=
l_signature_prefix">-- </span><br><div dir=3D"ltr" class=3D"gmail_signature=
">Mario.<br></div></blockquote></div>
     =20
   =20
 =20
                  </div></div></blockquote></div><br clear=3D"all"><br><spa=
n class=3D"gmail_signature_prefix">-- </span><br><div dir=3D"ltr" class=3D"=
gmail_signature">Mario.<br></div>

--000000000000285706060cc729f7--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CA%2B1FSih7C0HEun99LHEwvyYRiH0PaLwwgnoQLHB69TWz2ykDZg>