Difference between revisions of "BeagleBone Black Extracting eMMC contents"
(Created page with "=Intro= There are lots of ways to extract the contents of the eMMC to save off and reuse. I'm proposing a method using Buildroot and an initramfs such that you can simply drop...") |
|||
Line 15: | Line 15: | ||
==Performing restore/flashing== | ==Performing restore/flashing== | ||
To restore the file, make sure there is a valid BeagleBoneBlack-eMMC-image-XXXX.img file on the uSD card and edit autorun.sh with your favorite text editor to contain the following: | To restore the file, make sure there is a valid BeagleBoneBlack-eMMC-image-XXXX.img file on the uSD card and edit autorun.sh with your favorite text editor to contain the following: | ||
+ | <pre> | ||
#!/bin/sh | #!/bin/sh | ||
echo timer > /sys/class/leds/beaglebone\:green\:usr0/trigger | echo timer > /sys/class/leds/beaglebone\:green\:usr0/trigger | ||
Line 20: | Line 21: | ||
sync | sync | ||
echo default-on > /sys/class/leds/beaglebone\:green\:usr0/trigger | echo default-on > /sys/class/leds/beaglebone\:green\:usr0/trigger | ||
+ | </pre> | ||
*NOTE*: Be certain to replace the 'XXXXX' above with the proper name of your image file. | *NOTE*: Be certain to replace the 'XXXXX' above with the proper name of your image file. | ||
Line 32: | Line 34: | ||
===uEnv.txt=== | ===uEnv.txt=== | ||
+ | <pre> | ||
bootpart=0:1 | bootpart=0:1 | ||
bootdir= | bootdir= | ||
Line 37: | Line 40: | ||
optargs=quiet capemgr.disable_partno=BB-BONELT-HDMI,BB-BONELT-HDMIN | optargs=quiet capemgr.disable_partno=BB-BONELT-HDMI,BB-BONELT-HDMIN | ||
uenvcmd=load mmc 0 ${loadaddr} uImage;run loadfdt;setenv bootargs console=${console} ${optargs};bootm ${loadaddr} - ${fdtaddr} | uenvcmd=load mmc 0 ${loadaddr} uImage;run loadfdt;setenv bootargs console=${console} ${optargs};bootm ${loadaddr} - ${fdtaddr} | ||
+ | </pre> | ||
===autorun.sh=== | ===autorun.sh=== | ||
+ | <pre> | ||
#!/bin/sh | #!/bin/sh | ||
echo timer > /sys/class/leds/beaglebone\:green\:usr0/trigger | echo timer > /sys/class/leds/beaglebone\:green\:usr0/trigger | ||
Line 44: | Line 49: | ||
sync | sync | ||
echo default-on > /sys/class/leds/beaglebone\:green\:usr0/trigger | echo default-on > /sys/class/leds/beaglebone\:green\:usr0/trigger | ||
+ | </pre> | ||
===Other sources used=== | ===Other sources used=== |
Revision as of 10:53, 26 September 2013
Contents
Intro
There are lots of ways to extract the contents of the eMMC to save off and reuse. I'm proposing a method using Buildroot and an initramfs such that you can simply drop a few files from a .zip onto a normal, FAT-formatted SD card to perform the extraction. There are several things really handy here, such as the ability to edit autorun.sh to be whatever script you want to run on your board at boot. In the archive, I only have the necessary autorun.sh for *saving* your eMMC content. The flip-side is provided here in the text such that you need to go through a couple of steps before you trash your eMMC.
Steps to save
The steps for saving off your eMMC contents to a file:
- Get a 4GB or larger uSD card that is FAT formatted.
- Download beagleboneblack-save-emmc.zip and extract the contents onto your uSD card.
- Eject uSD card from your computer, insert into powered-off BeagleBone Black and apply power to your board.
- You'll notice USR0 (the LED closest to the S1 button in the corner) will (after about 20 seconds) start to blink steadily, rather than the double-pulse "heartbeat" pattern that is typical when your BeagleBone Black is running the typical Linux kernel configuration.
- It'll run for a bit under 10 minutes and then USR0 will stay ON steady. That's your cue to remove power, remove the uSD card and put it back into your computer.
- You should see a file called BeagleBoneBlack-eMMC-image-XXXXX.img, where XXXXX is a set of random numbers. Save off this file to use for restoring your image later.
Because the date won't be set on your board, you might want to adjust the date on the file to remember when you made it. Delete the file if you want to make room for a new backup image. For storage on your computer, these images will typically compress very well, so use your favorite compression tool.
Performing restore/flashing
To restore the file, make sure there is a valid BeagleBoneBlack-eMMC-image-XXXX.img file on the uSD card and edit autorun.sh with your favorite text editor to contain the following:
#!/bin/sh echo timer > /sys/class/leds/beaglebone\:green\:usr0/trigger dd if=/mnt/BeagleBoneBlack-eMMC-image-XXXXX.img of=/dev/mmcblk1 bs=10M sync echo default-on > /sys/class/leds/beaglebone\:green\:usr0/trigger
- NOTE*: Be certain to replace the 'XXXXX' above with the proper name of your image file.
- NOTE*: Also note that you can use other people's uncompressed image files.
Building
This image was built using Buildroot. The sources are at https://github.com/jadonk/buildroot with tag save-emmc-0.0.1. Download via https://github.com/jadonk/buildroot/releases/tag/save-emmc-0.0.1 or clone the git repo. It is a small fork from git://git.buildroot.net/buildroot tag e9f6011617528646768e69203e85fe64364b7efd.
Build steps
To build, 'make beagleboneblack_defconfig; make; ./mkuimage.sh'. Output files (am335x-boneblack.dtb, MLO, u-boot.img and uImage) will be in the output/images subdirectory. The following files were created manually.
uEnv.txt
bootpart=0:1 bootdir= fdtaddr=0x81FF0000 optargs=quiet capemgr.disable_partno=BB-BONELT-HDMI,BB-BONELT-HDMIN uenvcmd=load mmc 0 ${loadaddr} uImage;run loadfdt;setenv bootargs console=${console} ${optargs};bootm ${loadaddr} - ${fdtaddr}
autorun.sh
#!/bin/sh echo timer > /sys/class/leds/beaglebone\:green\:usr0/trigger dd if=/dev/mmcblk1 of=/mnt/BeagleBoneBlack-eMMC-image-$RANDOM.img bs=10M sync echo default-on > /sys/class/leds/beaglebone\:green\:usr0/trigger
Other sources used
The kernel is based on https://github.com/beagleboard/kernel/commit/9fdb452245a58158a4bea787cdc663c17681bcfe, but I applied the patches, added firmware and uploaded it to https://github.com/beagleboard/linux/commit/ddd36e546e53d3c493075bbebd6188ee843208f9 to pull down in the Buildroot makefile. The link to the source for the firmware is in the commit.