summaryrefslogtreecommitdiff
path: root/recipes-core
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-core')
-rw-r--r--recipes-core/initscripts/initscripts-1.0/README77
-rw-r--r--recipes-core/initscripts/initscripts-1.0/umountfs36
2 files changed, 106 insertions, 7 deletions
diff --git a/recipes-core/initscripts/initscripts-1.0/README b/recipes-core/initscripts/initscripts-1.0/README
new file mode 100644
index 0000000..d2b67e1
--- /dev/null
+++ b/recipes-core/initscripts/initscripts-1.0/README
@@ -0,0 +1,77 @@
+# Procedure for flashing MTRV1-0.4
+
+cd /var/volatile
+find . -type f | xargs rm
+# Now copy the upgrade image to /var/volatile
+mlinux-firmware-upgrade -f upgrade-image.bin
+
+#
+# Requirements for upgrade-image.bin
+
+# All partition images (at91bootstrap, u-boot,
+# uImage, and rootfs.jffs2) must have md5sums.
+# rootfs.jffs2 should be padded with 1's to
+# the next even multiple of dd blocks.
+# In this example the dd "blocksz" is set to
+# 131072 (128*1024).
+#
+# Find the size of the jffs2:
+# ls -l
+# total 50040
+# -rw-r--r-- 1 jklug jklug 51232792 Nov 1 11:30 rootfs.jffs2
+# In this case it is 51232792. This is then divided by
+# 131072. This is 390.87 ... so we round up to 391.
+#
+# This means we must pad the file to 391*131072 or
+# 51249152.
+#
+# We can use objcopy to enlarge the file:
+#
+# mkdir padded
+# objcopy -I binary -O binary --pad-to 51249152 --gap-fill 0xff rootfs.jffs2 padded/rootfs.jffs2
+#
+# This puts the padded version of the jffs2 file in the padded directory.
+# Now we must calculate the md5sum of the new padded file:
+# cd padded
+# cat rootfs.jffs2 | md5sum >rootfs.jffs2.md5
+#
+# Now we must replace the files in the archive with the
+# padded file and its md5sum.
+#
+# We must also add a new file. do_flash_upgrade. It must
+# be created like this:
+#
+# echo 131072 391 >do_flash_upgrade
+#
+# These two parameters are used by dd to read the correct
+# size of the flash. The first parameter is the block size,
+# and the second parameter is the number of blocks of the
+# padded file.
+#
+# The result tar file is not compressed:
+#
+# tar -cf ~/rcell-padded-5.3.6.bin bstrap* do* model mpo* root* ub* uI*
+#
+# and the contents of the tar file are these:
+#
+# tar -tvf rcell-padded-5.3.6.bin
+# -rw-rw-r-- jklug/jklug 10360 2021-11-01 11:30 bstrap.bin
+# -rw-rw-r-- jklug/jklug 36 2021-11-01 11:30 bstrap.bin.md5
+# -rw-rw-r-- jklug/jklug 11 2021-11-17 12:35 do_flash_upgrade
+# -rw-rw-r-- jklug/jklug 6 2021-11-01 11:30 model
+# -rw-rw-r-- jklug/jklug 6 2021-11-01 11:30 mpower_version
+# -rw-rw-r-- jklug/jklug 51249152 2021-11-17 06:23 rootfs.jffs2
+# -rw-rw-r-- jklug/jklug 36 2021-11-17 06:36 rootfs.jffs2.md5
+# -rwxr-xr-x jklug/jklug 473720 2021-11-01 11:30 uboot.bin
+# -rw-rw-r-- jklug/jklug 36 2021-11-01 11:30 uboot.bin.md5
+# -rw-r--r-- jklug/jklug 3435940 2021-11-01 11:30 uImage.bin
+# -rw-rw-r-- jklug/jklug 36 2021-11-01 11:30 uImage.bin.md5
+#
+# The changes are as follows:
+# do_flash_upgrade -- new file
+# rootfs.jffs2 -- padded with 0xff at the end of the file
+# rootfs.jffs2.md5 -- new md5 sum to reflect the added padding
+
+
+
+
diff --git a/recipes-core/initscripts/initscripts-1.0/umountfs b/recipes-core/initscripts/initscripts-1.0/umountfs
index d3ac460..14aa441 100644
--- a/recipes-core/initscripts/initscripts-1.0/umountfs
+++ b/recipes-core/initscripts/initscripts-1.0/umountfs
@@ -245,7 +245,11 @@ flash_upgrade() {
cd /var/volatile
# rootfs should always be flashed last, so always keep it last here
- local files=(${bootstrap_file} ${uboot_file} ${config_file} ${oem_file} ${kernel_file} ${rootfs_file} ${install_file})
+ if ((factory_up == 0)) ; then
+ local files=(${bootstrap_file} ${uboot_file} ${config_file} ${oem_file} ${kernel_file} ${rootfs_file} ${install_file})
+ else
+ local files=(${bootstrap_file} ${uboot_file} ${config_file} ${oem_file} ${kernel_file} ${rootfs_file})
+ fi
local devs=(${bootstrap_mtd} ${uboot_mtd} ${config_mtd} ${oem_mtd} ${kernel_mtd} ${rootfs_mtd})
if [ -f "${upgrade_file}" ]; then
@@ -342,11 +346,14 @@ flash_upgrade() {
sed -i -e "\\|${flash_root}| d" /etc/mtab
umount_all
+ mount -o remount,rw /var/volatile
+ grep volatile /proc/mounts
if [ -f "${upgrade_file}" ]; then
for (( i = 0; i < ${#files[@]}; i++ )); do
local file=${files[i]}
local dev=${devs[i]}
+ echo "Processing file $file"
if tar -t -f ${upgrade_file} | grep -F -q "${file}"; then
if [ "${file}" == "${bootstrap_file}" ] || [ "${file}" == "${uboot_file}" ]; then
file_size=$(get_file_size "${upgrade_file}" "${file}")
@@ -368,13 +375,26 @@ flash_upgrade() {
flash_erase ${extraopt} -j ${dev} 0 0
tar -xO -f ${upgrade_file} ${file} | ${flash_dir}/nandwrite.static ${extraopt} -p ${dev}
if ((factory_up == 1)) ; then
- if dd if=${dev} bs=${file_size} count=1 | md5sum -c ${file}.md5; then
+ if [[ ${file} == rootfs.jffs2 ]] ; then
+ pwd
+ rm -f ${upgrade_file}
+ echo "Block size is $rootbs, count=$rootcount"
+ dd if=${dev} bs=${rootbs} count=${rootcount} | md5sum -c ${file}.md5
+ result=$?
+ else
+ dd if=${dev} bs=${file_size} count=1 | md5sum -c ${file}.md5
+ result=$?
+ fi
+ if ((result == 0)); then
echo "SUCCESS: File ${file} was written successfully"
else
- cat ${file}.md5
- echo ${file_size}
- echo dd if=${dev} bs=${file_size} count=1 | md5sum
- dd if=${dev} bs=${file_size} count=1 | md5sum
+ if [[ ${file} == rootfs.jffs2 ]] ; then
+ echo "dd if=${dev} bs=${rootbs} count=${rootcount} | md5sum"
+ dd if=${dev} bs=${rootbs} count=${rootcount} | md5sum
+ else
+ echo "dd if=${dev} bs=${file_size} count=1 | md5sum -c ${file}.md5"
+ dd if=${dev} bs=${file_size} count=1 | md5sum -c ${file}.md5
+ fi
echo "ERROR: File ${file} is bad"
fi
fi # factory upgrade
@@ -441,7 +461,9 @@ if [[ -f ${wipe_fname} ]] ; then
fi
fi
if [[ -f ${upgrade_fname} ]] ; then
- if [[ $(cat ${upgrade_fname}) == "1" ]] ; then
+ read rootbs rootcount < ${upgrade_fname}
+ echo "Root Block Size is $rootbs, rootcount is $rootcount"
+ if [[ -n $rootbs ]] ; then
factory_up=1
extraopt="-q"
else