Re: NanoBSD on Raspberry Pi3

Brian Scott <[email protected]>
Newsgroups gmane.os.freebsd.devel.arm
Message-ID <[email protected]>
On 5/11/2023 8:13 pm, Guido Falsi wrote:
> On 05/11/23 04:04, Brian Scott wrote:
>>
>> On 5/11/2023 3:50 am, Guido Falsi wrote:
>>> Hi all!
>>>
>>> I am trying to build a NanoBSD image for a spare RPi3.
>>>
>>> I started from an existing configuration I am using for a PCEngine 
>>> APU2 board, I use as an internal DNS and DHCP server. I'd like to 
>>> replace it.
>>>
>>> I'd also like to be able to upgrade using the altroot partition and 
>>> then switching the default one, but am not sure how to do that, 
>>> maybe I can play with efi variables, anyway I'm going to investigate 
>>> this once I get at least FreeBSD booting.
>>>
>>> Unluckily I am unable to make my image properly boot.
>>
>> One of the keys to doing the dual system in my case has been to 
>> create a loader.env file telling the loader which partition to boot.
>>
>> # more EFI/freebsd/loader.env
>> rootdev=disk0s3a
>>
>
> Thanks a lot! This made it boot successfully!
>
> Obviously the boot spilled a bunch of errors, most just because I'm 
> testing not connected to the network and the configuration expects 
> networking to be available, but this is just a test.
>
> Really thanks a lot, this piece of information never turned out in any 
> searches I did and I did not notice it in any man page/README etc.
>
> In fact I think this should be documented, if it is not already. Do 
> you know if it is already in some manual page or readme or at least 
> the wiki? If not I think it should be described in loader.efi(8), I'd 
> like to propose a patch to this effect. Maybe also add a note in our 
> wiki in the arm and/or uefi pages.
>
> Have you got some pointer to some documentation elsewhere about this 
> so I can write an informed paragraph for the man page about this?
I found it a couple of years ago after a lot of searching. No idea where 
I found it even though I normally try to keep notes. It would be nice to 
see some doco on it.
>
>>>
>>> I have reworked my scripts to replicate how the official release 
>>> images are made in structure. (copying a lot from src/release)
>>>
>>> I got t the point where loader_lua.efi (renamed as the standard 
>>> `/EFI/BOOT/bootaa64.efi` in the fat partition) loads, looks like it 
>>> is scanning disks but then says:
>>>
>>> ERROR: cannot open /boot/lua/loader.lua: no such file or directory.
>> The loader.env should be read by the bootaa64.efi program.
>
> Yes this was the key to making it work. Maybe if I used a gpt 
> partition scheme it would have worked OOB, while mbr requires this 
> kind of help. Not sure if it is worth using gpt or could cause even 
> more issues though.
As I understand it, the RPi firmware requires MBR partitioning. Haven't 
confirmed it recently but it does limit what you can do with nanobsd.
>
>>>
>>>
>>> It gives me a prompt, but even if I do have a working USB keyboard 
>>> plugged in I am unable to interact (maybe this is normal at this 
>>> stage?)
>> No idea, sorry.
>
> Keyboard works fine once kernel starts, looks like a u-boot issue. Not 
> too worried about it though, as long as FreeBSD boots.
>
>>>
>>> I guess it is failing to find the root filesystem but I don't know 
>>> why. There is a valid root partition. Do I need to put some boot 
>>> code in it to make loader recognize it?
>>>
>>> Where could I find some more detailed information about u-boot and 
>>> UEFI boot? Maybe I can help by creating some configuration file in 
>>> the UEFI partition?
>>>
>>> Thanks in advance for any indication.
>>>
>>>
>>> Output of `gpart show` (fromthe image mounted as md):
>>>
>>> =>     63  8617921  md1  MBR  (4.1G)
>>>        63      961       - free -  (481K)
>>>      1024    65536    1  fat32lba  [active]  (32M)
>>>     66560   131072    2  freebsd  (64M)
>>>    197632  4194304    3  freebsd  (2.0G)
>>>   4391936  4194304    4  freebsd  (2.0G)
>>>   8586240    31744       - free -  (16M)
>>>
>>> =>      0  4194304  md1s3  BSD  (2.0G)
>>>         0      128         - free -  (64K)
>>>       128  4194176      1  freebsd-ufs  (2.0G)
>>>
>>>
>>> (it looks quite similar to the official image one, as far as I can see)
>>
>> I'm using:
>>
>> # gpart show
>> =>       1  62357503  mmcsd0  MBR  (30G)
>>           1     65536       1  fat32lba  [active]  (32M)
>>       65537     65536       2  freebsd  (32M)
>>      131073  31113215       3  freebsd  (15G)
>>    31244288  31113216       4  freebsd  (15G)
>>
>> =>       0  31113215  mmcsd0s3  BSD  (15G)
>>           0        16            - free -  (8.0K)
>>          16  31113199         1  freebsd-ufs  (15G)
>>
>> =>       0  31113216  mmcsd0s4  BSD  (15G)
>>           0      8192            - free -  (4.0M)
>>        8192  31105024         1  freebsd-ufs  (15G)
>>
>> And it works really well. This is taken from a running rpi3. I also 
>> have the same layout on a pi3 at $work, an original 256MB pi (forever 
>> stuck on version13 now), and a 8GB pi4. My modified update script 
>> toggles the loader.env file after updating the alternate file system 
>> and running the growfs magic on it.
>
> Yes I'll adapt my nanobsd update script to take advantage of the .env 
> file and I should be ready to go.
>
> I'm actually skipping the grow part, since I'm never writing to the OS 
> partitions, I'm using them like a firmware, only writing to the cfg 
> partition (or the ramdisks obviously).
Good point. I just like it to look neat and tidy. Probably says more 
about me than anything else.
>
>>
>> It looks like you have that organised properly.
>>
>
> Thanks a lot again for your help! Really appreciated.
>
> Cheers!
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.