Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

After completion of build go to deploy folder and execute "bpir4_sd_image_creater.sh"  script file, to generate final sdcard image.

Script file expansion.

Script content used for final image generation
Code Block
themeEclipseRDark
titleScript execution creating sdcard image.Image Generator script info
collapsetrue
bananapi4-rdk-broadband$ ./bpir4_sd_image_creater.sh
create bpi-r4_sdmmc_#!/bin/bash
board="bpi-r4"
device="sdmmc"
OS="rdk-broadband-image"
IMGDIR=.img
run losetup to assign image bpi-r4_sdmmc_rdk-broadband-image.img to loopdev /dev/loop24 (loop24)
Creating new GPT entries in memory.
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot or after you
run partprobe(8) or kpartx(8)
The operation has completed successfully.
Setting name!
partNum is 0
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot or after you
run partprobe(8) or kpartx(8)
The operation has completed successfully.
Setting name!
partNum is 1
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot or after you
run partprobe(8) or kpartx(8)
The operation has completed successfully.
Setting name!
partNum is 2
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot or after you
run partprobe(8) or kpartx(8)
The operation has completed successfully.
Setting name!
partNum is 3
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot or after you
run partprobe(8) or kpartx(8)
The operation has completed successfully.
480+1 records in
480+1 records out
246069 bytes (246 kB, 240 KiB) copied, 0.165271 s, 1.5 MB/s
562+1 records in
562+1 records out
288153 bytes (288 kB, 281 KiB) copied, 0.0626902 s, 4.6 MB/s
mkfs.fat 4.2 (2021-01-31)
mke2fs 1.46.5 (30-Dec-2021)
Discarding device blocks: done         
IMGNAME=${board}_${device}_${OS}     --> Image name format
LDEV=`sudo losetup -f`               --> Command to find available loob device in pc.
REALSIZE=7456                        
echo "create $IMGNAME.img"
dd if=/dev/zero of=$IMGDIR/$IMGNAME.img bs=1M count=$REALSIZE 1> /dev/null 2>&1
LDEV=`sudo losetup -f`
DEV=`echo $LDEV | cut -d "/" -f 3`     #mount image to loop device
echo "run losetup to assign image $IMGNAME.img to loopdev $LDEV ($DEV)"
sudo losetup $LDEV $IMGDIR/$IMGNAME.img 1> /dev/null #2>&1

bootstart=17408
bootsize=100
rootsize=6600
bootend=$(( ${bootstart}+(${bootsize}*1024*2)-1 ))
rootstart=$(( ${bootend}+1 ))
rootend=$(( ${rootstart} + (${rootsize}*1024*2) ))
sudo sgdisk -o ${LDEV}
sudo sgdisk -a 1 -n 1:34:8191 -A 1:set:2 -t 1:8300 -c 1:"bl2"           ${LDEV}           
sudo sgdisk -a 1 -n 2:13312:17407 -A 2:set:63   -t 2:8300 -c 2:"fip"            ${LDEV}
sudo sgdisk -a 1024 -n 3:17408:${bootend}       -t 3:8300 -c 3:"boot"           ${LDEV}
sudo sgdisk -a 1024 -n 4:${rootstart}:${rootend} -t 4:8300 -c 4:"rootfs"        ${LDEV}

sudo losetup -d $LDEV
sudo losetup -P $LDEV $IMGDIR/$IMGNAME.img 1> /dev/null #2>&1
sudo dd if=atf/bpi-r4_sdmmc_bl2.img of=${LDEV}p1 conv=notrunc,fsync #1> /dev/null 2>&1
sudo dd if=atf/bpi-r4_sdmmc_fip.bin of=${LDEV}p2 conv=notrunc,fsync #1> /dev/null 2>&1
sudo mkfs.vfat "${LDEV}p3" -n BPI-BOOT #1> /dev/null 2>&1
sudo mkfs.ext4 -O ^metadata_csum,^64bit "${LDEV}p4" -L BPI-ROOT #1> /dev/null 2>&1
sudo mount "${LDEV}p3" /mnt/
sudo cp fitImage /mnt/
sudo cp mt7988a-bananapi-bpi-r4-sd.dtb /mnt/
sudo umount "${LDEV}p3"
sudo dd if=rdk-generic-broadband-image-bananapi4-rdk-broadband.ext4 of=${LDEV}p4
sudo losetup -d $LDEV
echo "packing image..."
gzip $IMGDIR/$IMGNAME.img




Code Block
themeEclipse
titleScript execution creating sdcard image.
collapsetrue
bananapi4-rdk-broadband$ ./bpir4_sd_image_creater.sh
create  
Creating filesystem with 1689600 4k blocks and 422656 inodes
Filesystem UUID: 2ec68480-e1a2-4c40-aadb-b739a3edf4af
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done 

539116+0 records in
539116+0 records out
276027392 bytes (276 MB, 263 MiB) copied, 2.14511 s, 129 MB/s
packing image...
heam@Dell-OptiPlex-9020:~/Downloads/BPIR4_latest_23_oct/bananapi4-rdk-broadband$ ls
atf
bpir4_sd_image_creater.sh
bpi-r4_sdmmc_rdk-broadband-image.img.gz
fitImage
fitImage-1-5.4.271+git0+feeb59687b_3fec063b05-r0-bananapi4-
run losetup to assign image bpi-r4_sdmmc_rdk-broadband-20241023065547.bin
fitImage-bananapi4-rdk-broadband.bin
fitImage-its-1-5.4.271+git0+feeb59687b_3fec063b05-r0-bananapi4-rdk-broadband-20241023065547.its
fitImage-its-bananapi4-rdk-broadband
fitImage-linux.bin-1-5.4.271+git0+feeb59687b_3fec063b05-r0-bananapi4-rdk-broadband-20241023065547.bin
fitImage-linux.bin-bananapi4-rdk-broadband
hash-summary
modules-1-5.4.271+git0+feeb59687b_3fec063b05-r0-bananapi4-rdk-broadband-20241023065547.tgz
modules-bananapi4-rdk-broadband.tgz
mt7988a-bananapi-bpi-r4-sd-1-5.4.271+git0+feeb59687b_3fec063b05-r0-bananapi4-rdk-broadband-20241023065547.dtb
mt7988a-bananapi-bpi-r4-sd-bananapi4-rdk-broadband.dtb
mt7988a-bananapi-bpi-r4-sd.dtb
rdkb-generic-broadband-image_rdk-next_20241023114221.bin.ext4
rdkb-generic-broadband-image_rdk-next_20241023114221.bin.manifest
rdkb-generic-broadband-image_rdk-next_20241023114221.bin.squashfs-xz
rdkb-generic-broadband-image_rdk-next_20241023114221.testdata.json
rdk-generic-broadband-image-bananapi4-rdk-broadband.ext4
rdk-generic-broadband-image-bananapi4-rdk-broadband.manifest
rdk-generic-broadband-image-bananapi4-rdk-broadband.squashfs-xz
rdk-generic-broadband-image-bananapi4-rdk-broadband-sysupgrade.bin
rdk-generic-broadband-image-bananapi4-rdk-broadband.testdata.json
heam@Dell-OptiPlex-9020:~/Downloads/BPIR4_latest_23_oct/bananapi4-rdk-broadband$ 

After completion of script execution, final image will be generated with "bpi-r4_sdmmc_rdk-broadband-image.img.gz" image name.

Image can be flashed to sdcard using dd command or balenaEtcher.

Flashing steps.

1)Image generated after execution of script "bpi-r4_sdmmc_rdk-broadband-image.img.gz"can be flashed directly to sdcard using dd command or balenaEtcher.
2)For 2nd time flashing you can follow below mentioned flashing instructions instead if executing script,but use existing sdcard only.

Code Block
themeRDark
titleBPIR4 2nd time flashing instructions.
collapsetrue
1)copy mentioned files from deploy dir to local pc if using vm(fitImage, mt7988a-bananapi-bpi-r4-sd.dtb, rdkb-generic-broadband-image_rdk-next_20241028072748.bin.ext4)
2)copy fitImage and mt7988a-bananapi-bpi-r4-sd.dtb to 3rd partition
     heam@Dell-OptiPlex-9020:~/tr69$ sudo mount /dev/sdc3 /mnt/
     [sudo] password for heam: 
     heam@Dell-OptiPlex-9020:~/tr69$ cd /mnt/
     heam@Dell-OptiPlex-9020:/mnt$ ls
     fitImage mt7988a-bananapi-bpi-r4-sd.dtb
     heam@Dell-OptiPlex-9020:/mnt$ sudo rm -rf *
     heam@Dell-OptiPlex-9020:~/tr69$ sudo cp fitImage mt7988a-bananapi-bpi-r4-sd.dtb /mnt/

3)Flash rdkb rootfs to 4th partition.
     heam@Dell-OptiPlex-9020:~/tr69$ sudo dd if=rdkb-generic-broadband-image_rdk-next_20241028072748.bin.ext4 of=/dev/sdc4
     541914+0 records in
     541914+0 records out
     277459968 bytes (277 MB, 265 MiB) copied, 24.6373 s, 11.3 MB/s
4)Remove sdcard and insert into BPIR4 device.5)Latest image will be loaded.

Script file expansion.

Script content used for final image generation
Code Block
themeRDark
titleImage Generator script info
collapsetrue
#!/bin/bash
board="bpi-r4"
device="sdmmc"
OS="rdk-broadband-image"
IMGDIR=.
IMGNAME=${board}_${device}_${OS}     --> Image name format
LDEV=`sudo losetup -f`image.img to loopdev /dev/loop24 (loop24)
Creating new GPT entries in memory.
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot or after you
run partprobe(8) or kpartx(8)
The operation has completed successfully.
Setting name!
partNum is 0
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot or after you
run partprobe(8) or kpartx(8)
The operation has completed successfully.
Setting name!
partNum is 1
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot or after you
run partprobe(8) or kpartx(8)
The operation has completed successfully.
Setting name!
partNum is 2
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot or after you
run partprobe(8) or kpartx(8)
The operation has completed successfully.
Setting name!
partNum is 3
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot or after you
run partprobe(8) or kpartx(8)
The operation has completed successfully.
480+1 records in
480+1 records out
246069 bytes (246 kB, 240 KiB) copied, 0.165271 s, 1.5 MB/s
562+1 records in
562+1 records out
288153 bytes (288 kB, 281 KiB) copied, 0.0626902 s, 4.6 MB/s
mkfs.fat 4.2 (2021-01-31)
mke2fs 1.46.5 (30-Dec-2021)
Discarding device blocks: done                            
Creating filesystem with 1689600 4k blocks and 422656 inodes
Filesystem UUID: 2ec68480-e1a2-4c40-aadb-b739a3edf4af
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: done                            
Writing inode tables: done                        --> Command to find available
Creating loobjournal device in pc.
REALSIZE=7456                        
echo "create $IMGNAME.img"
dd if=/dev/zero of=$IMGDIR/$IMGNAME.img bs=1M count=$REALSIZE 1> /dev/null 2>&1
LDEV=`sudo losetup -f`
DEV=`echo $LDEV | cut -d "/" -f 3`     #mount image to loop device
echo "run losetup to assign image $IMGNAME.img to loopdev $LDEV ($DEV)"
sudo losetup $LDEV $IMGDIR/$IMGNAME.img 1> /dev/null #2>&1

bootstart=17408
bootsize=100
rootsize=6600
bootend=$(( ${bootstart}+(${bootsize}*1024*2)-1 ))
rootstart=$(( ${bootend}+1 ))
rootend=$(( ${rootstart} + (${rootsize}*1024*2) ))
sudo sgdisk -o ${LDEV}
sudo sgdisk -a 1 -n 1:34:8191 -A 1:set:2 -t 1:8300 -c 1:"bl2"           ${LDEV}           
sudo sgdisk -a 1 -n 2:13312:17407 -A 2:set:63   -t 2:8300 -c 2:"fip"            ${LDEV}
sudo sgdisk -a 1024 -n 3:17408:${bootend}       -t 3:8300 -c 3:"boot"           ${LDEV}
sudo sgdisk -a 1024 -n 4:${rootstart}:${rootend} -t 4:8300 -c 4:"rootfs"        ${LDEV}

sudo losetup -d $LDEV
sudo losetup -P $LDEV $IMGDIR/$IMGNAME.img 1> /dev/null #2>&1
sudo dd if=atf/bpi-r4_sdmmc_bl2.img of=${LDEV}p1 conv=notrunc,fsync #1> /dev/null 2>&1
sudo dd if=atf/bpi-r4_sdmmc_fip.bin of=${LDEV}p2 conv=notrunc,fsync #1> /dev/null 2>&1
sudo mkfs.vfat "${LDEV}p3" -n BPI-BOOT #1> /dev/null 2>&1
sudo mkfs.ext4 -O ^metadata_csum,^64bit "${LDEV}p4" -L BPI-ROOT #1> /dev/null 2>&1
sudo mount "${LDEV}p3" /mnt/
sudo cp fitImage /mnt/
sudo cp mt7988a-bananapi-bpi-r4-sd.dtb /mnt/
sudo umount "${LDEV}p3"
sudo dd if=rdk-generic-broadband-image-bananapi4-rdk-broadband.ext4 of=${LDEV}p4
sudo losetup -d $LDEV
echo "packing image..."
gzip $IMGDIR/$IMGNAME.img
(16384 blocks): done
Writing superblocks and filesystem accounting information: done 

539116+0 records in
539116+0 records out
276027392 bytes (276 MB, 263 MiB) copied, 2.14511 s, 129 MB/s
packing image...
heam@Dell-OptiPlex-9020:~/Downloads/BPIR4_latest_23_oct/bananapi4-rdk-broadband$ ls
atf
bpir4_sd_image_creater.sh
bpi-r4_sdmmc_rdk-broadband-image.img.gz
fitImage
fitImage-1-5.4.271+git0+feeb59687b_3fec063b05-r0-bananapi4-rdk-broadband-20241023065547.bin
fitImage-bananapi4-rdk-broadband.bin
fitImage-its-1-5.4.271+git0+feeb59687b_3fec063b05-r0-bananapi4-rdk-broadband-20241023065547.its
fitImage-its-bananapi4-rdk-broadband
fitImage-linux.bin-1-5.4.271+git0+feeb59687b_3fec063b05-r0-bananapi4-rdk-broadband-20241023065547.bin
fitImage-linux.bin-bananapi4-rdk-broadband
hash-summary
modules-1-5.4.271+git0+feeb59687b_3fec063b05-r0-bananapi4-rdk-broadband-20241023065547.tgz
modules-bananapi4-rdk-broadband.tgz
mt7988a-bananapi-bpi-r4-sd-1-5.4.271+git0+feeb59687b_3fec063b05-r0-bananapi4-rdk-broadband-20241023065547.dtb
mt7988a-bananapi-bpi-r4-sd-bananapi4-rdk-broadband.dtb
mt7988a-bananapi-bpi-r4-sd.dtb
rdkb-generic-broadband-image_rdk-next_20241023114221.bin.ext4
rdkb-generic-broadband-image_rdk-next_20241023114221.bin.manifest
rdkb-generic-broadband-image_rdk-next_20241023114221.bin.squashfs-xz
rdkb-generic-broadband-image_rdk-next_20241023114221.testdata.json
rdk-generic-broadband-image-bananapi4-rdk-broadband.ext4
rdk-generic-broadband-image-bananapi4-rdk-broadband.manifest
rdk-generic-broadband-image-bananapi4-rdk-broadband.squashfs-xz
rdk-generic-broadband-image-bananapi4-rdk-broadband-sysupgrade.bin
rdk-generic-broadband-image-bananapi4-rdk-broadband.testdata.json
heam@Dell-OptiPlex-9020:~/Downloads/BPIR4_latest_23_oct/bananapi4-rdk-broadband$ 

After completion of script execution, final image will be generated with "bpi-r4_sdmmc_rdk-broadband-image.img.gz" image name.

Image can be flashed to sdcard using dd command or balenaEtcher.

Flashing steps.

1)Image generated after execution of script "bpi-r4_sdmmc_rdk-broadband-image.img.gz"can be flashed directly to sdcard using dd command or balenaEtcher.
2)For 2nd time flashing you can follow below mentioned flashing instructions instead if executing script,but use existing sdcard only.

Code Block
themeRDark
titleBPIR4 2nd time flashing instructions.
collapsetrue
1)copy mentioned files from deploy dir to local pc if using vm(fitImage, mt7988a-bananapi-bpi-r4-sd.dtb, rdkb-generic-broadband-image_rdk-next_20241028072748.bin.ext4)
2)copy fitImage and mt7988a-bananapi-bpi-r4-sd.dtb to 3rd partition
     heam@Dell-OptiPlex-9020:~/tr69$ sudo mount /dev/sdc3 /mnt/
     [sudo] password for heam: 
     heam@Dell-OptiPlex-9020:~/tr69$ cd /mnt/
     heam@Dell-OptiPlex-9020:/mnt$ ls
     fitImage mt7988a-bananapi-bpi-r4-sd.dtb
     heam@Dell-OptiPlex-9020:/mnt$ sudo rm -rf *
     heam@Dell-OptiPlex-9020:~/tr69$ sudo cp fitImage mt7988a-bananapi-bpi-r4-sd.dtb /mnt/

3)Flash rdkb rootfs to 4th partition.
     heam@Dell-OptiPlex-9020:~/tr69$ sudo dd if=rdkb-generic-broadband-image_rdk-next_20241028072748.bin.ext4 of=/dev/sdc4
     541914+0 records in
     541914+0 records out
     277459968 bytes (277 MB, 265 MiB) copied, 24.6373 s, 11.3 MB/s
4)Remove sdcard and insert into BPIR4 device.5)Latest image will be loaded.

Reference links:

ATF: https://trustedfirmware-a.readthedocs.io/en/latest/ 

...