aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/layerscape/base-files
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/layerscape/base-files')
-rw-r--r--target/linux/layerscape/base-files/etc/uci-defaults/05_fix-compat-version6
-rw-r--r--target/linux/layerscape/base-files/lib/preinit/79_move_config26
-rw-r--r--target/linux/layerscape/base-files/lib/upgrade/platform.sh103
3 files changed, 54 insertions, 81 deletions
diff --git a/target/linux/layerscape/base-files/etc/uci-defaults/05_fix-compat-version b/target/linux/layerscape/base-files/etc/uci-defaults/05_fix-compat-version
index 923f4ac273..6cd137af9a 100644
--- a/target/linux/layerscape/base-files/etc/uci-defaults/05_fix-compat-version
+++ b/target/linux/layerscape/base-files/etc/uci-defaults/05_fix-compat-version
@@ -5,11 +5,17 @@
. /lib/functions.sh
case "$(board_name)" in
+ fsl,ls1012a-frwy-sdboot | \
fsl,ls1012a-rdb | \
+ fsl,ls1021a-iot-sdboot | \
fsl,ls1021a-twr | \
+ fsl,ls1021a-twr-sdboot | \
fsl,ls1043a-rdb | \
+ fsl,ls1043a-rdb-sdboot | \
fsl,ls1046a-rdb | \
+ fsl,ls1046a-rdb-sdboot | \
fsl,ls1088a-rdb | \
+ fsl,ls1088a-rdb-sdboot | \
fsl,ls2088a-rdb)
uci set system.@system[0].compat_version="2.0"
uci commit system
diff --git a/target/linux/layerscape/base-files/lib/preinit/79_move_config b/target/linux/layerscape/base-files/lib/preinit/79_move_config
new file mode 100644
index 0000000000..d691fa99f1
--- /dev/null
+++ b/target/linux/layerscape/base-files/lib/preinit/79_move_config
@@ -0,0 +1,26 @@
+. /lib/functions.sh
+. /lib/upgrade/common.sh
+
+BOOTPART=/dev/mmcblk0p1
+
+move_config() {
+ local board=$(board_name)
+
+ case "$board" in
+ fsl,ls1012a-frwy-sdboot | \
+ fsl,ls1021a-iot-sdboot | \
+ fsl,ls1021a-twr-sdboot | \
+ fsl,ls1043a-rdb-sdboot | \
+ fsl,ls1046a-rdb-sdboot | \
+ fsl,ls1088a-rdb-sdboot)
+ if [ -b $BOOTPART ]; then
+ mkdir -p /boot
+ mount -t ext4 -o rw,noatime $BOOTPART /boot 2>&1
+ [ -f "/boot/$BACKUP_FILE" ] && mv -f "/boot/$BACKUP_FILE" /
+ umount /boot
+ fi
+ ;;
+ esac
+}
+
+boot_hook_add preinit_mount_root move_config
diff --git a/target/linux/layerscape/base-files/lib/upgrade/platform.sh b/target/linux/layerscape/base-files/lib/upgrade/platform.sh
index de01ac46de..a8d83de7ea 100644
--- a/target/linux/layerscape/base-files/lib/upgrade/platform.sh
+++ b/target/linux/layerscape/base-files/lib/upgrade/platform.sh
@@ -8,88 +8,28 @@ RAMFS_COPY_DATA="/etc/fw_env.config /var/lock/fw_printenv.lock"
REQUIRE_IMAGE_METADATA=1
-platform_check_image_sdboot() {
- local diskdev partdev diff
-
- export_bootdevice && export_partdevice diskdev 0 || {
- echo "Unable to determine upgrade device"
- return 1
- }
-
- # get partitions table from boot device
- get_partitions "/dev/$diskdev" bootdisk
-
- # get partitions table from sysupgrade.bin
- dd if="$1" of=/tmp/image.bs bs=512b count=1 > /dev/null 2>&1
- sync
- get_partitions /tmp/image.bs image
-
- # compare tables
- diff="$(grep -F -x -v -f /tmp/partmap.bootdisk /tmp/partmap.image)"
-
- rm -f /tmp/image.bs /tmp/partmap.bootdisk /tmp/partmap.image
-
- if [ -n "$diff" ]; then
- echo "Partition layout has changed. Full image will be written."
- ask_bool 0 "Abort" && exit 1
- return 0
- fi
-}
platform_do_upgrade_sdboot() {
- local diskdev partdev diff
+ local diskdev partdev parttype=ext4
+ local tar_file="$1"
+ local board_dir=$(tar tf $tar_file | grep -m 1 '^sysupgrade-.*/$')
+ board_dir=${board_dir%/}
export_bootdevice && export_partdevice diskdev 0 || {
echo "Unable to determine upgrade device"
return 1
}
- if [ "$UPGRADE_OPT_SAVE_PARTITIONS" = "1" ]; then
- # get partitions table from boot device
- get_partitions "/dev/$diskdev" bootdisk
-
- # get partitions table from sysupgrade.bin
- dd if="$1" of=/tmp/image.bs bs=512b count=1 > /dev/null 2>&1
- sync
- get_partitions /tmp/image.bs image
-
- # compare tables
- diff="$(grep -F -x -v -f /tmp/partmap.bootdisk /tmp/partmap.image)"
- else
- diff=1
- fi
-
- if [ -n "$diff" ]; then
- dd if="$1" of="/dev/$diskdev" bs=1024 count=4 > /dev/null 2>&1
- echo "Writing image to /dev/$diskdev..."
- dd if="$1" of="/dev/$diskdev" bs=1024 skip=15360 seek=15360 > /dev/null 2>&1
- sync
-
- # Separate removal and addtion is necessary; otherwise, partition 1
- # will be missing if it overlaps with the old partition 2
- partx -d - "/dev/$diskdev"
- partx -a - "/dev/$diskdev"
-
- return 0
+ if export_partdevice partdev 1; then
+ mount -t $parttype -o rw,noatime "/dev/$partdev" /mnt 2>&1
+ echo "Writing kernel..."
+ tar xf $tar_file ${board_dir}/kernel -O > /mnt/fitImage
+ umount /mnt
fi
- # write dtb
- echo "Writing dtb to /dev/$diskdev..."
- dd if="$1" of="/dev/$diskdev" bs=1024 skip=15360 seek=15360 count=1024 > /dev/null 2>&1
- # write kernel image
- echo "Writing kernel to /dev/$diskdev..."
- dd if="$1" of="/dev/$diskdev" bs=1024 skip=16384 seek=16384 count=16384 > /dev/null 2>&1
- sync
-
- # iterate over each partition from the image and write it to the boot disk
- while read part start size; do
- if export_partdevice partdev $part; then
- echo "Writing image to /dev/$partdev..."
- dd if="$1" of="/dev/$partdev" bs=512 skip="$start" count="$size" > /dev/null 2>&1
- sync
- else
- echo "Unable to find partition $part device, skipped."
- fi
- done < /tmp/partmap.image
+ echo "Erasing rootfs..."
+ dd if=/dev/zero of=/dev/mmcblk0p2 bs=1M > /dev/null 2>&1
+ echo "Writing rootfs..."
+ tar xf $tar_file ${board_dir}/root -O | dd of=/dev/mmcblk0p2 bs=512k > /dev/null 2>&1
}
platform_do_upgrade_traverse_nandubi() {
@@ -119,6 +59,7 @@ platform_copy_config_sdboot() {
if export_partdevice partdev 1; then
mount -t $parttype -o rw,noatime "/dev/$partdev" /mnt 2>&1
+ echo "Saving config backup..."
cp -af "$UPGRADE_BACKUP" "/mnt/$BACKUP_FILE"
umount /mnt
fi
@@ -128,6 +69,7 @@ platform_copy_config() {
case "$board" in
fsl,ls1012a-frwy-sdboot | \
+ fsl,ls1021a-iot-sdboot | \
fsl,ls1021a-twr-sdboot | \
fsl,ls1043a-rdb-sdboot | \
fsl,ls1046a-rdb-sdboot | \
@@ -146,22 +88,20 @@ platform_check_image() {
return $?
;;
fsl,ls1012a-frdm | \
+ fsl,ls1012a-frwy-sdboot | \
fsl,ls1012a-rdb | \
+ fsl,ls1021a-iot-sdboot | \
fsl,ls1021a-twr | \
+ fsl,ls1021a-twr-sdboot | \
fsl,ls1043a-rdb | \
+ fsl,ls1043a-rdb-sdboot | \
fsl,ls1046a-rdb | \
+ fsl,ls1046a-rdb-sdboot | \
fsl,ls1088a-rdb | \
+ fsl,ls1088a-rdb-sdboot | \
fsl,ls2088a-rdb)
return 0
;;
- fsl,ls1012a-frwy-sdboot | \
- fsl,ls1021a-twr-sdboot | \
- fsl,ls1043a-rdb-sdboot | \
- fsl,ls1046a-rdb-sdboot | \
- fsl,ls1088a-rdb-sdboot)
- platform_check_image_sdboot "$1"
- return 0
- ;;
*)
echo "Sysupgrade is not currently supported on $board"
;;
@@ -192,6 +132,7 @@ platform_do_upgrade() {
default_do_upgrade "$1"
;;
fsl,ls1012a-frwy-sdboot | \
+ fsl,ls1021a-iot-sdboot | \
fsl,ls1021a-twr-sdboot | \
fsl,ls1043a-rdb-sdboot | \
fsl,ls1046a-rdb-sdboot | \