Multibooting The Raspberry Pi


Those of us have been dual booting Linux, Windows, and OS X operating systems for a while will be familiar with bootloaders such as GRUB and its ilk. Surprisingly, though, we haven’t seen a bootloader for the most popular computer of the last year – the Raspberry Pi. It makes sense to have a bootloader for the Raspberry Pi; with dozens of different distributions from Raspbian, Occidentalis, and a bunch of  more esoteric distros, we’re surprised we’re only just now seeing a proper bootloader for the Raspi.

Berryboot is extremely simple to install – just copy it onto a FAT formatted SD card and you can install multiple OSes on your Raspberry Pi. On booting, Berryboot shows a dialog box of all the installed operating systems, with new ones able to be installed over the internet from a Berryboot menu.

You can grab Berryboot over on the gits. Berryboot also works with those Allwinner A10 single board computers, but the Hackaday tip line hasn’t seen hide nor hair of those boards.

28 thoughts on “Multibooting The Raspberry Pi

  1. Alright, I’ve played with berryboot some. It’s really pretty annoying, and I would fix it if I knew how (compiling it has not gone well for me).
    Firstly, it will do headless operation! Simply add ‘vncinstall’ to cmdline.txt. Sadly, vnc is the only way you are getting in.
    Secondly, while you can install to multiple devices (USB drives, sd cards), it will only read from one of them at a time.
    Thirdly, it’s error tolerance is awful: If the device it expects a system on is missing the system (or, in the case of a USB drive, not plugged in), it won’t give the option to look elsewhere, berryboot just assumes you want to reformat everything. There is no way to tell it to look elsewhere from that state, only reformat and redownload.
    If you run headless, you will not get a usable command line from berryboot. Easily solved by putting ssh on it, but you’ll have to do that yourself.

    Essentially, it needs some work (put ssh on, fix the no system found state, put a console on screen 0), though it has a lot of potential.

    1. Also, one thing I find annoying is that you lose the eth/wifi connectivity to the pi once in reboot because BerryBoot doesn’t copy the network settings it uses during setup to the guest operating system. Always find myself having to put the sd card in my laptop and read the connection settings that way so I am able to communicate with the pi.

  2. I’ve had a rasPi “multi-bootloader” ever cince it existed…. It’s call swap the SD card. Honestly Class 6 4gig cards are like $4.00… I have a nice handfull of them for the RasPi

    1. Yep, I agree, if I am gonna run headless, then I don’t want to have to do anything to boot.

      I have never multi booted, waste of time, if I want a windows and Linux box, then I have two boxes. Or I run Linux in a vm.

          1. @Kris Lee: You don’t need anything too special, just a multi-core PC with lots of RAM.

            On the software side, all you need is a hypervisor like Xen, ESXi, or Hyper-V. (There are legitimate free packages of all three out there, some more full-featured than others.) Some let you manage them locally (with a keyboard and mouse plugged right into the host), but some need to be configured remotely with a tool or web interface, so you don’t want to do this with your only PC.

            Once you have your host up and running, you can run pretty much any OS on it you want, depending on the hardware it supports and how much memory you have. You still have to think about licensing with commercial OSes, just bear in mind that a VM counts as a PC. If you can get a Microsoft TechNet or Dreamspark account, you’ll have access to full copies of most Microsoft products for non-production experimental use. (BSD and Linux naturally don’t cost anything.)

            Most desktop processors now support virtualization extensions. Some midrange desktop processors can pass hardware directly to VMs (so you can have your graphics card tied to a VM for gaming support, for example). That increases performance, but isn’t a requirement. Pretty much any processor made in the last 5 years will do virtualization no problem.

            You’ll need a lot of RAM to run multiple OSes side by side, but thankfully desktop DDR3 is dirt cheap and you don’t need fully buffered error correcting memory just to play with some VMs. If you run a lot of VMs together off of one spinning disk you might run into disk bottlenecks, but just two or three on a reasonably fast disk shouldn’t be too bad. If you get a couple 7200 RPM SATA disks and spread your virtual disk files around you can help reduce this problem. (Don’t use ‘green’ drives, that’s just asking for trouble.)

        1. VMs have always felt like magic to me. No matter how much I learn about them and how they work it’s always “I have a computer running inside my computer :O”

          Has anyone else installed Windows 3.11 inside of DOSbox just for the hell of it? That start up sound gives me the warm fuzzies. :3

          1. I might have done by now, if I could get DOSbox on Android running any faster, seriously, I’ve seen x86 emulated faster on a 14mhz 68020. Though to be fair to dosbox it was intended for slowing multi ghz x86es down to original PC/AT speeds so old games would work better.

    2. My SD-card slot on the RP broke the same moment I tried to put in the card for the first time. I fixed it with some sugru, but now I’m not able to swap SD-cards so it would be more then cool if there was a bootloader which I could use to chose to boot from my USB pen drive which I can get out and write on it on my PC without problems.

      Second thing is, I don’t have a SD-card reader for my PC, not on my ThinkPad, not on my MacBook and not on my iMac, but all of them do have USB.

      And third, I kind of think that it is a software problem which could be quite easily solved, you know like grub does it.

  3. My pi has multiboot , If i put in the 32gb sd I get a media center.
    If i put in one of the other 12 sd cards it has what ever is on those.

    I dono this seems pointless when changing a drive is as easy as swapping an sd.

    1. I want to multi boot because I have a hd available. Berryboot works fine, EXCEPT when I upgrade the system. Then I am lucky if it will boot again. NOOBS allows me to update the system, but insists on running on a SD card. I tried to build a grub for the pi but was very unsuccessful. What I’m thinking of doing is booting stage 1 off the SD to set the video and then branching to a minimal os which runs grub. Once there I would thing it should work like we are used to when booting with grub.

    1. Also I remember asking for CEC support for this on the RPi forums when this was at v1.1 and being told that there was no plan for it by the dev. Looks like he changed his mind for v2.0. Guess he got over his issues with the “undesirable dependency on the Broadcom /opt/vc/lib userspace libraries”.

    2. Dunno if it’s changed in later versions, but when I looked at the first versions of berryboot it was merely a chroot wrapper, which is obviously a bit different to a ‘real bootloader’.

  4. Getting a bootloader with a GUI working on an ARM device is actually non-trivial – the differences between the different devices mean it’s a lot harder than on x86. uboot does technically allow multiboot, but it’s not particularly easy to use. So props to this guy for getting one working.

  5. Some of you guys seem to be forgetting what the RPi is for…

    In a TWC having multiple SDs isn’t trivial. Heck, they may only have 1 or 2 per machine, and letting little hoodlums swap them out isn’t a good idea. If you are going to be using the RPi for multiple situations, it makes sense from a UE to *be able* to boot different installs.

    Also, I use it this way b/c I don’t like swapping SDs in my LEGO case. So, a 32GB card w/ BerryBoot, Raspbian, OpenElec/Xbian, and PuppyLinux let me do what I want to w/ it.

    As a side note, I got XBian to work w/ BerryBoot. See (I’ll need to update it to Alpha 5 soon).

  6. One positive comment for Berryboot is that it makes it simple to set your Pi up to run from a USB flash memory and only use the SD card for bootup; which solves a problem with SD card corruption from too many read/writes. I do wish for another ‘easy’ way to accomplish this without Berryboot because it would be so useful.

  7. The reason you want a complete operating system per partition and bootable with a boot program like grub is the config.txt file. That way you can customize the operating systems to the type of monitor or tv you are working with. Berryboot has its own config.txt file built in but I have not found one in the operating systems.
    Raspian on its own sd card does have a config file in the boot file folder.
    I would love to see one all ready set up and working with maybe 4 operating systems all ready installed.
    Grub operates from the main area. It then directs you to the proper partition for whatever version of Ubuntu you are running.
    It doesn’t have to be Grub. A clone designed to work with the Raspberry Pi 3B would be good.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.