From 2b77148377660a48e047f0ef626ca16c8df286fe Mon Sep 17 00:00:00 2001 From: John Crispin Date: Wed, 12 Mar 2014 19:32:51 +0000 Subject: fstools: add the new fstools package Signed-off-by: John Crispin git-svn-id: svn://svn.openwrt.org/openwrt/trunk@39895 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/system/fstools/Makefile | 60 ++++++++++++++++ package/system/fstools/files/fstab.default | 1 + package/system/fstools/files/fstab.init | 14 ++++ package/system/fstools/files/mount.hotplug | 1 + package/system/fstools/files/snapshot | 111 +++++++++++++++++++++++++++++ package/system/ubox/Makefile | 27 +------ package/system/ubox/files/fstab.default | 1 - package/system/ubox/files/fstab.init | 14 ---- package/system/ubox/files/mount.hotplug | 1 - 9 files changed, 189 insertions(+), 41 deletions(-) create mode 100644 package/system/fstools/Makefile create mode 100644 package/system/fstools/files/fstab.default create mode 100644 package/system/fstools/files/fstab.init create mode 100644 package/system/fstools/files/mount.hotplug create mode 100644 package/system/fstools/files/snapshot delete mode 100644 package/system/ubox/files/fstab.default delete mode 100644 package/system/ubox/files/fstab.init delete mode 100644 package/system/ubox/files/mount.hotplug (limited to 'package/system') diff --git a/package/system/fstools/Makefile b/package/system/fstools/Makefile new file mode 100644 index 0000000000..9a6aaeef1e --- /dev/null +++ b/package/system/fstools/Makefile @@ -0,0 +1,60 @@ +include $(TOPDIR)/rules.mk + +PKG_NAME:=fstools +PKG_VERSION:=2014-02-27 + +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:=d292ffc85f48dd9c8774a0860f50397dd2966e7a +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz +CMAKE_INSTALL:=1 + +PKG_LICENSE:=GPLv2 +PKG_LICENSE_FILES:= + +PKG_MAINTAINER:=John Crispin + +include $(INCLUDE_DIR)/package.mk +include $(INCLUDE_DIR)/cmake.mk + +TARGET_LDFLAGS += $(if $(CONFIG_USE_EGLIBC),-lrt) + +define Package/fstools + SECTION:=base + CATEGORY:=Base system + DEPENDS:=+ubox +USE_EGLIBC:librt + TITLE:=OpenWrt filesystem tools +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 + + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/fs-state $(1)/sbin/ + $(INSTALL_BIN) ./files/snapshot $(1)/sbin/ +endef + +define Package/block-mount/install + $(INSTALL_DIR) $(1)/sbin $(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/ + ln -s /sbin/block $(1)/usr/sbin/swapon + ln -s /sbin/block $(1)/usr/sbin/swapoff + +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 0000000000..dd4ba1c485 --- /dev/null +++ b/package/system/fstools/files/fstab.default @@ -0,0 +1 @@ +[ ! -f /etc/config/fstab ] && ( block detect > /etc/config/fstab ) diff --git a/package/system/fstools/files/fstab.init b/package/system/fstools/files/fstab.init new file mode 100644 index 0000000000..be49470ef1 --- /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 obseleted. please call \"/sbin/block mount\" directly" + /sbin/block mount +} + +stop() { + echo "this file has been obseleted. 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 0000000000..946924e351 --- /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 0000000000..85a0076d8e --- /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 + fs-state snapshot 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 -" + fs-state snapshot 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 * + fs-state snapshot write + reboot +} + +do_config_push() { + cd /volatile + tar czf /tmp/config.tar.gz * + fs-state snapshot config_write +} + +do_snapshot_upgrade() { + opkg update + [ $? == 0 ] || exit 1 + + opkg list-upgradable + [ $? == 0 ] || exit 2 + + UPDATES=`opkg list-upgradable | cut -d" " -f1` + [ -z "${UPDATES}" ] && exit 0 + + opkg upgrade ${UPDATES} + [ $? == 0 ] || exit 3 + + do_snapshot_push + sleep 5 + reboot + sleep 10 +} + +do_convert_jffs2() { + fs-state snapshot 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) + fs-state info + ;; +esac +} + +[ "$SNAPSHOT" = "magic" ] && { +case $1 in +unpack) + do_snapshot_unpack + ;; +config_unpack) + do_config_unpack + ;; +esac +} diff --git a/package/system/ubox/Makefile b/package/system/ubox/Makefile index b3a4ba9eea..5bd7246858 100644 --- a/package/system/ubox/Makefile +++ b/package/system/ubox/Makefile @@ -28,22 +28,13 @@ define Package/ubox TITLE:=OpenWrt system helper toolbox endef -define Package/block-mount - SECTION:=base - CATEGORY:=Base system - TITLE:=Block device mounting and checking - DEPENDS:=+ubox +libubox +libuci -endef - define Package/ubox/install $(INSTALL_DIR) $(1)/sbin $(1)/usr/sbin $(1)/lib/ $(1)/etc/init.d/ - $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/{mount_root,kmodloader,logd,logread,validate_data} $(1)/sbin/ + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/{kmodloader,logd,logread,validate_data} $(1)/sbin/ $(INSTALL_BIN) ./files/log.init $(1)/etc/init.d/log $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/libvalidate.so $(1)/lib - ln -s /sbin/mount_root $(1)/sbin/switch2jffs - ln -s /sbin/mount_root $(1)/sbin/jffs2reset - ln -s /sbin/mount_root $(1)/sbin/jffs2mark + ln -s /sbin/kmodloader $(1)/usr/sbin/rmmod ln -s /sbin/kmodloader $(1)/usr/sbin/insmod ln -s /sbin/kmodloader $(1)/usr/sbin/lsmod @@ -51,18 +42,4 @@ define Package/ubox/install ln -s /sbin/kmodloader $(1)/usr/sbin/modprobe endef -define Package/block-mount/install - $(INSTALL_DIR) $(1)/sbin $(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/ - ln -s /sbin/block $(1)/usr/sbin/swapon - ln -s /sbin/block $(1)/usr/sbin/swapoff - -endef - $(eval $(call BuildPackage,ubox)) -$(eval $(call BuildPackage,block-mount)) diff --git a/package/system/ubox/files/fstab.default b/package/system/ubox/files/fstab.default deleted file mode 100644 index dd4ba1c485..0000000000 --- a/package/system/ubox/files/fstab.default +++ /dev/null @@ -1 +0,0 @@ -[ ! -f /etc/config/fstab ] && ( block detect > /etc/config/fstab ) diff --git a/package/system/ubox/files/fstab.init b/package/system/ubox/files/fstab.init deleted file mode 100644 index be49470ef1..0000000000 --- a/package/system/ubox/files/fstab.init +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh /etc/rc.common -# (C) 2013 openwrt.org - -START=40 - -start() { - echo "this file has been obseleted. please call \"/sbin/block mount\" directly" - /sbin/block mount -} - -stop() { - echo "this file has been obseleted. please call \"/sbin/block umount\" directly" - /sbin/block umount -} diff --git a/package/system/ubox/files/mount.hotplug b/package/system/ubox/files/mount.hotplug deleted file mode 100644 index 946924e351..0000000000 --- a/package/system/ubox/files/mount.hotplug +++ /dev/null @@ -1 +0,0 @@ -/sbin/block hotplug -- cgit v1.2.3