Upgrading to a New System Image for the Beaglebone Black in Early 2023

This post details steps I took in obtaining, preparing, and running a new Linux system image for the BBB in early 2023. The upgrade moved the board from running a Debian TI Linux image based on Debian 9.12 to one based on Debian 11.6.

Requirements

  • Beaglebone Black (BBB) Rev C Single Board Computer (SBC)
  • microSD memory card
  • USB 3.0 memory card reader
  • Micro-USB to USB-A cable for powering the board
  • Ethernet cable

Steps

(1.) Go the this page.

(2.) Search the directories and find the image that best suits your needs. I chose the debian-11.6-mininal-armhf-2023-01-02.tar.xz file located on this page:

(3.) Download the file.

(4.) Navigate to the directory containing the previously downloaded file and decompress the file (using the file I chose):

unxz -dkvf am335x-debian-11.6-minimal-armhf-2023-01-02-2gb.img.xz

(5.) Insert the microSD memory card into the appropriate slot on the USB memory carder reader.

(6.) Insert the memory card reader into a USB slot on the host PC.

(7.) Use the lsblk command to find the microSD memory card on the system (it shows up as “sdc” for me).

(8.) Use the dd utility to write the image to the memory card:

sudo dd if=./am335x-debian-11.6-minimal-armhf-2023-01-02-2gb.img of=/dev/sdc

(9.) Plug the Ethernet cable into the BBB.

(10.) Ensure the USB power cable is not plugged into the board.

(11.) Remove the memory card reader from the host PC.

(12.) Remove the microSD memory card from the memory card reader.

(13.) Insert the microSD memory card into the microSD memory card slot on the BBB.

(14.) Simultaneous use a finger from one hand to hold down the boot button while using the other hand to insert the USB power cable into board:

(15.) Hold down the boot button for about 4 to 5 seconds, then release. This will cause the BBB to boot and run the from the microSD memory card.

Once the system is up, tunnel into the system via SSH. The default username is debian and the password is temppwd.

(16.) Update the package index and upgrade the packages by issuing the commands:

sudo apt update && sudo apt upgrade -y

(17.) We need to get the kernel’s version triplet (X.Y.Z) so that we can use that information to search for and upgrade to the matching image version with the real-time patch. Type the following command:

uname -a

On my system the command returned “5.10.145”. Also, the system shows PREEMPT and not PREEMPT_RT which means the real-time kernel patch is not applied and we want this.

(18.) Invoke the package manager with the following command to search the repositories for the matching image with the real-time kernel patch:

apt search linux-image-5.10.145

Look through the presented results for the closest matching image. For my system linux-image-5.10.145-ti-rt-r55 fits.

(19.) Install the new image to upgrade with the command:

sudo apt install linux-image-5.10.145-ti-rt-r55

(20.) Once the install is finish reboot the system by issuing the command:

sudo reboot

(21.) Once the system is back up, tunnel inside via SSH and issue the command “uname -a” to verify the image upgrade. When issues on my system the command returns “Linux BeagleBone 5.10.145-ti-rt-r55 #1bullseye SMP PREEMPT_RT Wed Dec 7 00:02:33 UTC 2022 armv7l GNU/Linux”. Notice we now have PREEMPT_RT meaning the real-time patch is present in the kernel.

(22.) Issue the lsblk command and verify the eMMC is visible in the results.

(23.) Since it is desired to run the Linux OS from the microSD card, open the U-boot file with and editor (Vim used here) and disable the eMMC (command combined with snippet of file):

sudo vim /boot/uExt.txt
...
###Disable auto loading of virtual capes (emmc/video/wireless/adc) 
disable_uboot_overlay_emmc=1 
disable_uboot_overlay_video=1 
disable_uboot_overlay_audio=1
...

I additionally chose to disable the video and audio for the board, freeing up the associated pins for use as GPIO, PWM, etc; depending on each pin’s supported modes.

(24.) Reboot the system

(25.) Once the system is up, tunnel into the system via SSH.

(26.) Issue the lsblk command and verify the eMMC is not visible in the results.