aboutsummaryrefslogtreecommitdiffstats
path: root/package/system/fstools
diff options
context:
space:
mode:
Diffstat (limited to 'package/system/fstools')
-rw-r--r--package/system/fstools/Makefile92
-rw-r--r--package/system/fstools/files/fstab.default2
-rw-r--r--package/system/fstools/files/fstab.init14
-rw-r--r--package/system/fstools/files/mount.hotplug1
-rw-r--r--package/system/fstools/files/snapshot111
5 files changed, 220 insertions, 0 deletions
diff --git a/package/system/fstools/Makefile b/package/system/fstools/Makefile
new file mode 100644
index 0000000..6a572c8
--- /dev/null
+++ b/package/system/fstools/Makefile
@@ -0,0 +1,92 @@
+#
+# Copyright (C) 2014-2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=fstools
+PKG_VERSION:=2015-11-02
+
+PKG_RELEASE=$(PKG_SOURCE_VERSION)
+
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_URL:=git://nbd.name/fstools.git
+PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
+PKG_SOURCE_VERSION:=0f4571b9e484f3b3504b872afd3a11be98571c03
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
+CMAKE_INSTALL:=1
+PKG_CHECK_FORMAT_SECURITY:=0
+
+PKG_LICENSE:=GPL-2.0
+PKG_LICENSE_FILES:=
+
+PKG_USE_MIPS16:=0
+
+PKG_MAINTAINER:=John Crispin <blogic@openwrt.org>
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/cmake.mk
+
+TARGET_LDFLAGS += $(if $(CONFIG_USE_GLIBC),-lrt)
+CMAKE_OPTIONS += $(if $(CONFIG_FSTOOLS_UBIFS_EXTROOT),-DCMAKE_UBIFS_EXTROOT=y)
+
+define Package/fstools
+ SECTION:=base
+ CATEGORY:=Base system
+ DEPENDS:=+ubox +USE_GLIBC:librt +NAND_SUPPORT:ubi-utils
+ TITLE:=OpenWrt filesystem tools
+ MENU:=1
+endef
+
+define Package/fstools/config
+ config FSTOOLS_UBIFS_EXTROOT
+ depends on PACKAGE_fstools
+ depends on NAND_SUPPORT
+ bool "Support extroot functionality with UBIFS"
+ default y
+ help
+ This option makes it possible to use extroot functionality if the root filesystem resides on an UBIFS partition
+endef
+
+define Package/block-mount
+ SECTION:=base
+ CATEGORY:=Base system
+ TITLE:=Block device mounting and checking
+ DEPENDS:=+ubox +libubox +libuci
+endef
+
+define Package/fstools/install
+ $(INSTALL_DIR) $(1)/sbin $(1)/lib
+
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/{mount_root,jffs2reset,snapshot_tool} $(1)/sbin/
+ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/libfstools.so $(1)/lib/
+ $(INSTALL_BIN) ./files/snapshot $(1)/sbin/
+ $(LN) jffs2reset $(1)/sbin/jffs2mark
+endef
+
+define Package/block-mount/install
+ $(INSTALL_DIR) $(1)/sbin $(1)/lib $(1)/usr/sbin $(1)/etc/hotplug.d/block $(1)/etc/init.d/ $(1)/etc/uci-defaults/
+
+ $(INSTALL_BIN) ./files/fstab.init $(1)/etc/init.d/fstab
+ $(INSTALL_DATA) ./files/fstab.default $(1)/etc/uci-defaults/10-fstab
+ $(INSTALL_DATA) ./files/mount.hotplug $(1)/etc/hotplug.d/block/10-mount
+
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/block $(1)/sbin/
+ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/libblkid-tiny.so $(1)/lib/
+ $(LN) ../../sbin/block $(1)/usr/sbin/swapon
+ $(LN) ../../sbin/block $(1)/usr/sbin/swapoff
+
+endef
+
+define Build/InstallDev
+ $(INSTALL_DIR) $(1)/usr/include
+ $(CP) $(PKG_INSTALL_DIR)/usr/include/*.h $(1)/usr/include/
+ $(INSTALL_DIR) $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libubi-utils.a $(1)/usr/lib/
+endef
+
+$(eval $(call BuildPackage,fstools))
+$(eval $(call BuildPackage,block-mount))
diff --git a/package/system/fstools/files/fstab.default b/package/system/fstools/files/fstab.default
new file mode 100644
index 0000000..2331e0c
--- /dev/null
+++ b/package/system/fstools/files/fstab.default
@@ -0,0 +1,2 @@
+[ ! -f /etc/config/fstab ] && ( block detect > /etc/config/fstab )
+exit 0
diff --git a/package/system/fstools/files/fstab.init b/package/system/fstools/files/fstab.init
new file mode 100644
index 0000000..f995e96
--- /dev/null
+++ b/package/system/fstools/files/fstab.init
@@ -0,0 +1,14 @@
+#!/bin/sh /etc/rc.common
+# (C) 2013 openwrt.org
+
+START=40
+
+start() {
+ echo "this file has been obsoleted. please call \"/sbin/block mount\" directly"
+ /sbin/block mount
+}
+
+stop() {
+ echo "this file has been obsoleted. please call \"/sbin/block umount\" directly"
+ /sbin/block umount
+}
diff --git a/package/system/fstools/files/mount.hotplug b/package/system/fstools/files/mount.hotplug
new file mode 100644
index 0000000..946924e
--- /dev/null
+++ b/package/system/fstools/files/mount.hotplug
@@ -0,0 +1 @@
+/sbin/block hotplug
diff --git a/package/system/fstools/files/snapshot b/package/system/fstools/files/snapshot
new file mode 100644
index 0000000..a0e0ec0
--- /dev/null
+++ b/package/system/fstools/files/snapshot
@@ -0,0 +1,111 @@
+#!/bin/sh
+# Copyright (C) 2014 OpenWrt.org
+
+
+do_snapshot_unpack() {
+ echo "- snapshot -"
+ mkdir /tmp/snapshot
+ cd /tmp/snapshot
+ snapshot_tool read
+ block=`ls block*.tar.gz 2> /dev/null`
+ [ -z "$block" ] || for a in $block; do
+ tar xzf $a -C /
+ rm -f $a
+ done
+}
+
+do_config_unpack() {
+ echo "- config -"
+ snapshot_tool config_read
+ [ -f /tmp/config.tar.gz ] && {
+ tar xzf /tmp/config.tar.gz -C /
+ rm -f /tmp/config.tar.gz
+ }
+}
+
+do_snapshot_push() {
+ cd /volatile
+ tar czf /tmp/snapshot.tar.gz *
+ snapshot_tool write
+ reboot
+}
+
+do_config_push() {
+ cd /volatile
+ tar czf /tmp/config.tar.gz *
+ snapshot_tool config_write
+}
+
+do_snapshot_upgrade() {
+ opkg update
+ [ $? -eq 0 ] || exit 1
+
+ opkg list-upgradable
+ [ $? -eq 0 ] || exit 2
+
+ UPDATES=`opkg list-upgradable | cut -d" " -f1`
+ [ -z "${UPDATES}" ] && exit 0
+
+ opkg upgrade ${UPDATES}
+ [ $? -eq 0 ] || exit 3
+
+ do_snapshot_push
+ sleep 5
+ reboot
+ sleep 10
+}
+
+do_convert_jffs2() {
+ snapshot_tool write
+ sleep 2
+ reboot -f
+}
+
+do_convert() {
+ . /lib/functions.sh
+ . /lib/upgrade/common.sh
+ ubus call system upgrade
+ touch /tmp/sysupgrade
+ cd /overlay
+ tar czf /tmp/snapshot.tar.gz *
+ kill_remaining TERM
+ sleep 3
+ kill_remaining KILL
+ run_ramfs '. /sbin/snapshot; do_convert_jffs2'
+}
+
+[ -n "$(cat /proc/mounts|grep /overlay|grep jffs2)" ] && {
+case $1 in
+convert)
+ do_convert
+ ;;
+esac
+}
+
+[ -d /volatile ] && {
+case $1 in
+push)
+ do_snapshot_push
+ ;;
+config)
+ do_config_push
+ ;;
+upgrade)
+ do_snapshot_upgrade
+ ;;
+info)
+ snapshot_tool info
+ ;;
+esac
+}
+
+[ "$SNAPSHOT" = "magic" ] && {
+case $1 in
+unpack)
+ do_snapshot_unpack
+ ;;
+config_unpack)
+ do_config_unpack
+ ;;
+esac
+}