mirror of
https://github.com/FunKey-Project/FunKey-OS.git
synced 2026-03-19 10:22:46 +01:00
working automatic partition update
Signed-off-by: Michel Stempin <michel.stempin@wanadoo.fr>
This commit is contained in:
@@ -49,6 +49,12 @@ mount_share () {
|
||||
|
||||
# Create the directory structure if required
|
||||
(cd /mnt; mkdir -p "Atari lynx" "Game Boy" "Game Boy Color" "Game Boy Advance" "Game Gear" "Neo Geo Pocket" "NES" "PS1" "Sega Genesis" "Sega Master System" "SNES" "WonderSwan")
|
||||
|
||||
# Check if there is an updte file
|
||||
if [ -f /mnt/FunKey-*.swu ]; then
|
||||
warn "found an update file, going into recovery mode"
|
||||
recovery_mode
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
@@ -73,7 +79,7 @@ stop_share () {
|
||||
# Stop sharing the backing store partition
|
||||
echo > $BACKING_STORE_FILE || die 11 "the backing store partition is still mounted on host"
|
||||
|
||||
# 3) Mount the backing store partition locally
|
||||
# Mount the backing store partition locally
|
||||
mount_share
|
||||
|
||||
info "stopped sharing the backing store partition"
|
||||
|
||||
@@ -2,13 +2,21 @@ software =
|
||||
{
|
||||
version = "0.6";
|
||||
|
||||
hardware-compatibility = [ "#RE:^Rev\.[A-E]$" ];
|
||||
hardware-compatibility = [ "#RE:^Rev\.[D-E]$" ];
|
||||
|
||||
images: (
|
||||
{
|
||||
filename = "rootfs.ext2.tar.gz";
|
||||
filename = "rootfs.ext2.gz";
|
||||
device = "/dev/mmcblk0p2";
|
||||
compression = "zlib";
|
||||
type = "raw";
|
||||
installed-directly = true;
|
||||
compressed = "zlib";
|
||||
}
|
||||
);
|
||||
scripts: (
|
||||
{
|
||||
filename = "update_partition";
|
||||
type = "shellscript";
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
77
FunKey/board/funkey/update_partition
Executable file
77
FunKey/board/funkey/update_partition
Executable file
@@ -0,0 +1,77 @@
|
||||
#!/bin/sh
|
||||
# Update partition script
|
||||
|
||||
source /usr/local/lib/utils
|
||||
|
||||
root_part_num=2
|
||||
root_part=/dev/mmcblk0p${root_part_num}
|
||||
root_mount=/tmp/rootfs
|
||||
|
||||
do_preinst()
|
||||
{
|
||||
notif "1/7 Extract update"
|
||||
exit 0
|
||||
}
|
||||
|
||||
do_postinst()
|
||||
{
|
||||
local version
|
||||
|
||||
notif "2/7 Resize root filesystem"
|
||||
resize2fs ${root_part} >/dev/null 2>&1
|
||||
if [ $? -ne 0 ]; then
|
||||
notif "Cannot resize root filesystem"
|
||||
exit 1
|
||||
fi
|
||||
notif "3/7 Mount root filesystem"
|
||||
mkdir -p ${root_mount}
|
||||
mount -t ext4 ${root_part} ${root_mount} >/dev/null 2>&1
|
||||
if [ $? -ne 0 ]; then
|
||||
notif "Cannot mount root filesystem"
|
||||
exit 1
|
||||
fi
|
||||
notif "4/7 Create swap"
|
||||
|
||||
# Create an empty 128MB /swap file, change its permissions and format it as swap
|
||||
dd if=/dev/zero of=${root_mount}/swap bs=1M count=128 >/dev/null 2>&1 &&
|
||||
chmod 0600 ${root_mount}/swap >/dev/null 2>&1 &&
|
||||
mkswap ${root_mount}/swap >/dev/null 2>&1
|
||||
if [ $? -ne 0 ]; then
|
||||
rm ${root_mount}/swap
|
||||
umount ${root_mount} >/dev/null 2>&1
|
||||
notif "Cannot create swap file"
|
||||
exit 1
|
||||
fi
|
||||
notif "5/7 Unmount root filesystem"
|
||||
umount ${root_mount} >/dev/null 2>&1
|
||||
if [ $? -ne 0 ]; then
|
||||
notif "Cannot unmount root filesystem"
|
||||
exit 1
|
||||
fi
|
||||
for file in /mnt/FunKey-*.swu; do
|
||||
version=$(basename "${file}" .swu | cut -d '-' -f 2)
|
||||
notif "6/7 Setting rootfs version to ${version}"
|
||||
sed -i '/^rootfs/d' /etc/sw-versions
|
||||
notif "7/7 Erase update file"
|
||||
echo -e "rootfs\t${version}" >> /etc/sw-versions
|
||||
rm -f "${file}"
|
||||
done
|
||||
exit 0
|
||||
}
|
||||
|
||||
echo $0 $1
|
||||
|
||||
case "$1" in
|
||||
preinst)
|
||||
notif "call do_preinst"
|
||||
do_preinst
|
||||
;;
|
||||
postinst)
|
||||
notif "call do_postinst"
|
||||
do_postinst
|
||||
;;
|
||||
*)
|
||||
notif "default"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
Reference in New Issue
Block a user