Date: Sun, 22 May 2016 17:39:12 -0300 From: =?UTF-8?B?T3RhY8OtbGlv?= <otacilio.neto@bsd.com.br> To: freebsd-arm@freebsd.org Subject: Re: Booting the Beaglebone Black from internal flash Message-ID: <121b130f-7a6f-f9cf-962b-ffc839b09853@bsd.com.br> In-Reply-To: <86zirhq5yw.fsf@naartjie.uucp> References: <86zirhq5yw.fsf@naartjie.uucp>
next in thread | previous in thread | raw e-mail | index | archive | help
Em 22/05/2016 15:53, William Waites escreveu: > I've gotten my BBB to boot and run off of its internal flash. It wasn't > terribly difficult and maybe this is old news, but I had a lot of > trouble finding instructions for how to do it. Here's what I did, in > case it's useful. > > 1. Start from an image written to SD card. At the time of writing > there seems to be a problem with the 11 images, but 10.3 works > fine. > > 2. Delete any existing partitions from the internal flash, as well as > the partition table so that we can start from scratch: > > gpart delete -i 2 mmcsd1 > gpart delete -i 1 mmcsd1 > gpart destroy mmcsd1 > > 3. Create partitions similarly to the SD card: > > gpart create -s GPT mmcsd1 > gpart add -t \!12 -b 63 -s 2M mmcsd1 > gpart set -a active -i 1 mmcsd1 > gpart add -t freebsd mmcsd1 > gpart add -t freebsd-ufs mmcsd1s2 > > It is unclear if it is necessary or why to use a traditional > disklabel here instead of just putting the freebsd-ufs directly in > slice 2. > > 4. Create filesystems: > > newfs_msdos -F 12 /dev/mmcsd1s1 > newfs -U -t /dev/mmcsd1s2a > > These filesystems do not (yet) have labels so they won't be > magically found by the boot process. It does not appear to be > possible to label them while there are other filesystems mounted > with those labels. > > 5. Mount the filesystems: > > mount /dev/mmcsd1s2a /mnt > mkdir -p /mnt/boot/msdos > mount -t msdosfs /dev/mmcsd1s1 /mnt/boot/msdos > > 6. Copy the running system onto the internal flash: > > cd /boot/msdos; tar -cf - ./ | (cd /mnt/boot/msdos; tar -xpvf -) > cd /; tar --one-file-system -cf - ./ | (cd /mnt; tar -xpvf -) > > This could alternatively be done by building from source, and > installing with DESTDIR=/mnt or potentially using the distribution > sets. Except perhaps for the early bootloader stages which come > from the sysutils/u-boot-beaglebone port I believe. > > 7. Make sure that booting will proceed from the internal flash, > because the default in u-boot is to use mmc 0 (the external SD > card). > > echo 'fatdev=mmc 1' > /mnt/boot/msdos/uenv.txt > > 8. Halt the system, remove the SD card, boot into single user mode to > label the disks. The kernel will not be able to find the root > partition, and it needs to be specified as ufs:/dev/mmcsd0s2a when > asked. > > glabel label MSDOSBOOT mmcsd0s1 > glabel label rootfs mmcsd0s2a > > Notice that now the device is mmcsd0 and not mmcsd1. This is > because of the way the numbering works which is slightly > inconvenient. > > 9. Reboot and done. > > 9a. Not really, for me the kernel was still unable to find the > filesystem with rootfs label, and I resorted to building a kernel > with > > options ROOTDEVNAME=\"ufs:mmcsd0s2a\" > > The default in the BEAGLEBONE config is ufs:mmcsd0s2 which would > probably have worked if not using BSD disklabels and putting the > filesystem directly there (see #3). > > Is it a good idea to write this down in the wiki? > > Best wishes, > -w > I think that this is a great improvement to the wiki, but this is not my decision. About the support of FreeBSD to the internal flash memory, is it robust sufficiently to be used without panics? []'s -Otacílio
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?121b130f-7a6f-f9cf-962b-ffc839b09853>