How to make BeagleBone black boot off SD card

Good afternoon,
I don’t understand how to determine whether the BBB is booting off the SD card or booting off the internal flash.
Here’s what happened, I installed a 4GB image from getting started section onto my SD card
This was the first image here:
http://beagleboard.org/latest-images

Initially I powered on by holding the button next to SD card, It booted and I could tell it was not the internal image, because it did not have the demo applications.

Next, I tried hitting the reset button to see if it will boot off the SD card again, nothing happened and I could not connect to the BBB any more. I scanned all ports and it was not available.

I tried resetting and holding down the button again, but it would not boot off the SD card.

Only when I take out the SD card the BBB boots into the original installation.

Does anyone know what may have caused this? This is a brand new SD card, and I doubt I had damaged it by resetting the BBB.

As far as I understand there are 3 booting options,

  1. There is booting off internal NAND which only has 70mb (or is this only a partition

  2. Booting off SD card

  3. "If using BeagleBone Black and the image is meant to program your on-board eMMC, you’ll need to wait while the programming occurs. When the flashing is complete, all 4 USRx LEDs will be lit solid. This can take up to 45 minutes."

What I don’t understand is how to select how the device boots. How can I make it boot off the SD card every time? How do I prevent it from writing to the NAND? I want to prevent damaging anything by overwriting the NAND and only work within an SD Card.

Wouldn’t it have been easier to install a jumper to select which memory the device boots from?

Thanks,

Push and hold the boot button and apply power.

http://www.elinux.org/Beagleboard:BeagleBoneBlack

Gerald

There are actually more than 3 boots options, and among them are what you covered, plus SPI, Ethernet( TFTP kernel / NFS root ), USB, and I know I am forgetting a couple more.

To keep things in context with what you’re asking however. LIke John says uEnv,txt has control over how the device boots. It has a sort of round robin check it does when bringing the hardware up. In the case of the SD card boot, the uEnv.txt file is only going to know about the sd card unless specifically modified to override default behavior.

Now what you’re talking about seems to be a flasher image type image. Which is to say, it is meant to flash the eMMC back to factory default, or to flash a newer more modern version of Angstrom or whatever image you have. If you want to boot exclusively off of the SD card, then you’re going to have to work at it a bit.

A jumper switch may seem like a better idea at first ( for boot options ) but it really is not. uboot boot options are vast . . .

Anyways, you’re going to have to ask yourself how serious you are about getting your device booting exclusively from the SD card. Because if you truly want to understand how it all works, you’re going to need to understand uboot, and Linux better than it appears how well you know it now. Also, there are other options to consider. Which Linux distro do you want to use . . . and more questions to be answered yet. In short, you have your work cut out for you if you want to learn. Weeks, and perhaps even months.

Hi,

I am facing a problem with Beaglebone black. I am unable to boot MLO (and u-boot ) from SD card. When I hold the “Boot” button, only zImage is being taken from the SD card but still the MLO (and u-boot ) are from eMMC. It is not taking MLO( and u-boot) from SD card. So I deleted the MLO (and u-boot) from eMMC, so that it may take from SD card as second preference. But still it is not able to switch to SDcard and the board is not booting now. Now I am unable to boot the board as eMMC is corrupted. Can anyone suggest me how to change the boot mode without using the “boot” switch as it has no effect and how to restore back the eMMC or any factory settings can be done

Hi I am stuck at the same point as abdulm, Can anyone help me out with link to select SDCARD as boot option.

You also need to set the “boot” flag bit on the partition you are trying to boot from.

— Graham

This is an old topic but I keep on running into the problem. I installed Debian on a 16G micro-sd. I copy the non-flash debian using the standard tools. Then I use gparted to increase the partition size of /rootfs to fill the sd-card. I use the boot button and everything works fine. I can reboot the BBB. Every time I remove the power, I hold down the boot button and it comes up again. However its not reliable. Several times after I removed power I follow the boot procedure, the BBB get stuck in a loop with one light blinking and no boot. The only way to fix this is to completely start from scratch and rewrite a new image. If I do that or put in another micro-sd that has been programmed the BBB boots fine. So obviously the micro-sd gets corrupted . Problem is that I cant find the corruption.
I tried several sdcards with diferent sizes 16G, 32G etc all show the same behavior after a few power cycles.If I mount the sdcard in linux or on windows, the fat part looks fine and partitions check with no error. I would love to find out what the problem is so I can fix the file without going through the entire process of reinstalling everything on the card.I looked in particular at uENV.txt and can find no problem.Being stuck I do the final smart thing and ask for help :wink:
Cheers,
Hans

On Fri, 26 Aug 2016 08:25:12 -0700 (PDT),
hans.wiggers@gmail.com declaimed the
following:

the BBB. Every time I remove the power, I hold down the boot button and it

  Are you literally just pulling the power from a running system?

  If you are, there is nothing that can save your SD card from eventual
corruption. Especially if any files are being written to the card (system
logs, etc.).

  You MUST use a shutdown command to cleanly close out the file system
and shutdown the processor.

I had a similar issue, but it was obvious when I was booting into the eMMC vs the MicroSD. The eMMC was running Debian 9.4 and my cards were loaded with Debian 9.9.

I put together this guide for those who have had similar headaches:
https://github.com/phillipdavidstearns/brahman-ai/blob/master/guides/beaglebone/beagleboneblack.md

Good afternoon,
I don’t understand how to determine whether the BBB is booting off the SD card or booting off the internal flash.
Here’s what happened, I installed a 4GB image from getting started section onto my SD card
This was the first image here:
http://beagleboard.org/latest-images

Initially I powered on by holding the button next to SD card, It booted and I could tell it was not the internal image, because it did not have the demo applications.

Next, I tried hitting the reset button to see if it will boot off the SD card again, nothing happened and I could not connect to the BBB any more. I scanned all ports and it was not available.

I tried resetting and holding down the button again, but it would not boot off the SD card.

Only when I take out the SD card the BBB boots into the original installation.

Does anyone know what may have caused this? This is a brand new SD card, and I doubt I had damaged it by resetting the BBB.

As far as I understand there are 3 booting options,

  1. There is booting off internal NAND which only has 70mb (or is this only a partition

  2. Booting off SD card

  3. "If using BeagleBone Black and the image is meant to program your on-board eMMC, you’ll need to wait while the programming occurs. When the flashing is complete, all 4 USRx LEDs will be lit solid. This can take up to 45 minutes."

What I don’t understand is how to select how the device boots. How can I make it boot off the SD card every time? How do I prevent it from writing to the NAND? I want to prevent damaging anything by overwriting the NAND and only work within an SD Card.

Wouldn’t it have been easier to install a jumper to select which memory the device boots from?

Please refer to my porting from earlier today which explains how u-boot selects the device to boot from. In essence. If the SDCard is present, it will attempt to boot from the SDCard FAT partition. If the SDCard isn’t present, it will boot from the eMMC FAT partition (the linux filesystem is on the EXT4 partition).
Regards,
John

Push and hold the boot button and apply power.

http://www.elinux.org/Beagleboard:BeagleBoneBlack

Gerald

Let me clear something up that seems to be confusing everyone. Gerald is correct from a hardware point of view; however this only selects which u-boot environment is loaded. When the boot button is pressed, the u-boot env is loaded from the SDCard and when the boot button isn’t pressed, the eMMC u-boot env is loaded. From that point onwards the current u-boot env checks to see if the SDCard is installed and if it is, u-boot boots from the SDCard FAT partition. If the SDCard isn’t installed, it boots from the eMMC FAT partition. Since the u-boot env is the same on both the SDCard and the eMMC, it doesn’t matter if the boot button is pressed or not. It is the uEnv.txt file that modifies u-boot env behavior by adding a “uenvcmd” line.

I hope I haven’t confused everyone.
Regards,
John

Hi John,

I have successfully been booting my BeagleBone Black from the microSD via holding the boot button while applying power. Do you know if there is any way to automatically boot from microSD without holding down the boot button, just by applying power?

Thank you,
Jacob

Hi @j-gharis just erase the eMMC:

sudo dd if=/dev/zero of=/dev/mmcblk1

Regards,

@RobertCNelson This worked great! thanks so much

@j-gharis Similarly, but from the boot prompt

mmc dev 1
mmc erase 0 1000