Raspberry Pi 2 Model B on OpenBSD
comments.gmane.org
comments.gmane.org
The main components of the new rPi are rather simple to get to work, so it's not a technical issue. The only real crapware inside is the usb controller.
I bet if someone supplied a diff they'd gladly take it. Also, I wonder why this rather old post is up here.
I agree it is a fuzzy line but one which I happen to agree with.
There is a probably a thesis to be had for the first person to build a provably trusted system using untrusted base hardware. I am not even sure how you would start such a project.
How exactly is that different to an undocumented or—forbid it—an unflashable BIOS? Don't even get me started on EFI...
Aside from coreboot, I don't really see anybody drawing the ideological-line-in-the-sand there when it comes to running their PC.
Still, both have access to the same memory. But that's a similar issue on the PC.
The issue here is that the rPI requires driver code running inside OpenBSD that is a closed source blob.
The main blobs are being run on the GPU, as bootloaders, even before the actual operating system is loaded. OpenBSD does not need to run _any_ blob itself.
There used to be a 3d graphics driver blob, but afaik that got open sourced. Also, if you don't do 3d, you wouldn't even need it.
I don't know exactly what the situation is. Don't care. I have a BeagleboneBlack if I wanted to watch the paint dry doing a build. :)
The rPi boot process requires several files to be on a FAT partition on an sd-card: bootcode.bin, fixup.dat, start.elf, config.txt and the OS kernel; the first 3 of which are blobs.
Would those blobs need to be included, or would OpenBSD be fine saying "use your existing boot card, just drop in our kernel", or "go grab these files from https://github.com/raspberrypi/firmware/tree/master/boot when formatting the sd-card."?
That said, based on other discussion here it seems this whole thread is a red-herring and there is no problem with the blobs, it's just that noone has written support for it.
But you can put it on the user to provide it. A lot of linux distros have gone this route, if you want to boot debian on RPi you either need to create the FAT partition and put the blobs there yourself, or fetch a third-party image which includes them.
There are several blobs that are necessary to be on the sd-card for boot: bootcode.bin, fixup.dat, and start.elf. Any bootable sd-card image for the Pi has them.
What's kind of interesting is that most of what start.elf is is actually an entire OS (ThreadX, I believe), that is running on the VC4 GPU in parallel to the OS on the ARM CPU; and that most of the Linux GPU drivers for it are just shims that send messages saying "hey, ThreadX, would you mind doing this for me?"
And the bootloader had been reverse engineered (quite accurately, btw., although all the ISA mnemonics are totally made up). It should be possible now to rebuild it from assembly source.
- the VC4 starts up and a ROM starts executing - the ROM loads bootcode.bin into the SRAM - bootcode.bin sets up the DRAM and loads the start.elf and fixup.dat - the start.elf sets up the ARM core and loads the Linux kernel
ARM code only starts executing at the last stage.
The only bit that's actually necessary on the SD card is the bootcode.bin --- everything else is under the control of whatever's in there.
The one time someone references a prior rPi discussion, it's to a message from Theo De Raadt that says:
Wow. Dream on. It is a mess of firmware. You know nothing of our history?
I understand maybe this has come up before and they are tired of the discussion, but this is just toxic. Is it really so hard to just reference a valid prior discussion when this comes up?
The guidelines users are expected to learn before using them generally involve (from most accepted to least accepted)
Read the mailing lists.
Read them again.
If you have a problem read the man pages.
If you still have a problem search the mailing lists for similar problems.
Make sure you really understand your problem then search again.
If after research you fully understand the problem but still don't have a solution post to the specific mailing list with diagnostic info.
Consider writing up a bug report/ creating your own solution as necessary.
and way way down the list, in the has virtually never been the correct thing to do category, is ask questions like "Will you support the RPi?" Those sort of questions have been asked for essentially every piece of hardware and subtechnology out there, and the answer is always either "No, because propritery whatever but you're free to do the work yourself" or "No, because we're busy and barely keeping the lights and servers on, but you're free to do the work yourself" or "Yes, and you'd know that if you read the mailing lists".
The mailing lists are famous for their get sh*t done attitude and any information about posting on them will relay that to new users.
Back in 2003 running 3.2 on ancient hardware that is indeed the process I went through. [0]
I would have a lot more sympathy for this point of view if they didn't fill the mailing lists with replies on the topic that were extremely unhelpful. Every reply that doesn't steer the poster towards a useful prior discussion or further the discussion in some way muddies the mailing list for future searchers, leading to more questions on topics that have been covered before. It's a self perpetuating cycle. Guess who has the power to stop it (or at least prevent it from getting worse)?
OpenBSD has been like this since it's very turbulent beginnings. For better or worse they prefer it this way (and it's bolstered by the lists having a famously high signal to noise ratio).
For a team of their size with the resources available to them they've achived a huge amount of success.
(Debates about whether they'd have larger success if they did a bit more of what they would call hand holding are also valid.)
The "enforced" binary blob really turns me off the Raspberry Pi. I bought a BeagleBone black as you can actually boot them without non-free software. Recently BeagleBone's GPU manufacturer Imagination Technologies made comments that the PowerVR chip https://www.reddit.com/r/hardware/comments/37h2a9/i_work_for... is planned to be open sourced.
If this happens I hope a lot more people will switch over to the BeagleBone rather than head in the direction of cheaper and cheaper closed ARM platforms. For me, the promising part of these single board ARM computers is that we may escape from running untrusted binaries and avoid things like Intel's Management Engine.
The people working on this like to hang out at #raspberrypi-internals on Freenode.
(Disclaimer: the last I looked into this was in January, before the Raspberry Pi 2 came out)
Although PCs are becoming more closed and blobby with each new generation, the legacy of backwards-compatibility means that a lot of things still work like they used to - in the days when documentation was far more open. IBM released the PC with full schematics and source code for the BIOS. The RPi was released with nothing more than its software and a few very incomplete datasheets.
Um, no they didn't. The BIOS was very much a blob. Compaq spent a significant amount of resources reverse-engineering the BIOS, which made the IBM-PC-compatible market possible.
Starts on page 337.
They did it for the AT too (page 161):
https://archive.org/details/bitsavers_ibmpcat150ferenceMar84...