Is there a way for MaaS to Commission a Raspberry Pi 3B?

While you may not be able to PXE boot via MAAS on the RPi3, juju supports manual provisioning including the bootstrap node -

https://juju.is/docs/olm/manual-setup#heading--add-machines-to-a-manual-cloud

juju add-machine ssh:[email protected]

With this you can allow juju to provision them into the environment via SSH.


EDIT: I was able to get to the rpi_3_config part, but the next command gave an error.

EDIT #2: I am now able to compile u-boot successfully from the official u-boot git repo

EDIT #3: So far it looks successful with it's booting. Can't test it right now, but I will try with MaaS later!

While you might not be able to PXE boot a Raspberry Pi 3 without an SD Card just yet, you can get part of the way there with u-boot loaded on the sdcard, set to PXE boot from the network.

Unfortunately, I have been in exactly your situation, trying to PXE boot raspberry pies for MaaS, however I got a little stuck when the pi came to actually boot. I was able to get as far as it getting an address via DHCP, however when it came to parsing the pxelinux file it hit some sort of error.

Just in case you can have more luck with your raspberry pies, and keeping in mind that I was doing this ages ago before the Pi 3 was released, I shall briefly outline the steps which I took to get to that stage, although I can't help you further.

  1. git clone git://git.denx.de/u-boot.git && cd u-boot
  2. git checkout rpi_dev
  3. At this point, I made a simple edit to the config file for the raspberry pi board to automatically initialize usb devices on boot, however it looks like the appropriate #DEFINE statement has already been added since.
  4. You need to now get hold of a cross compiler for the raspberry pi. The simplest way to do this is to go here on the raspberry pi website and follow the steps under INSTALL TOOLCHAIN, for your version of pi. Remember to add the path entries, which are only needed for the next step, so an export will suffice.
  5. Go into the root of the u-boot git repo, and run the following, with make installed: make CROSS_COMPILER=arm-linux-gnueabi- rpi_3_config and then to actually build: make CROSS_COMPILER=arm-linux-gnueabi-
  6. You should now have an u-boot.bin file in your current directory.
  7. wget https://raw.githubusercontent.com/raspberrypi/linux/rpi-4.4.y/scripts/mkknlimg
  8. ./mkknlimg --dtok u-boot.bin kernel7.img
  9. Copy kernel7.img to your sdcard

Best of luck, and if you do succeed, make sure to post your own answer stating exactly what you did, and accept it.