fstools: add the new fstools package

Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 39895
This commit is contained in:
John Crispin 2014-03-12 19:32:51 +00:00
parent 8411a5703f
commit 0dc9d8d6ff
13 changed files with 322 additions and 32 deletions

View file

@ -12,7 +12,7 @@ __target_inc=1
DEVICE_TYPE?=router
# Default packages - the really basic set
DEFAULT_PACKAGES:=base-files libc libgcc busybox dropbear mtd uci opkg netifd
DEFAULT_PACKAGES:=base-files libc libgcc busybox dropbear mtd uci opkg netifd fstools
# For router targets
DEFAULT_PACKAGES.router:=dnsmasq iptables ip6tables ppp ppp-mod-pppoe kmod-ipt-nathelper firewall odhcpd odhcp6c
DEFAULT_PACKAGES.bootloader:=

View file

@ -3,11 +3,7 @@
START=95
boot() {
[ -d /tmp/root ] && {
lock /tmp/.switch2jffs
switch2jffs
lock -u /tmp/.switch2jffs
}
[ -d /tmp/root ] && fs-state done
# process user commands
[ -f /etc/rc.local ] && {

View file

@ -3,7 +3,7 @@
# Copyright (C) 2010 Vertical Communications
do_mount_root() {
mount_root
fs-state start
boot_run_hook preinit_mount_root
[ -f /sysupgrade.tgz ] && {
echo "- config restore -"

View file

@ -57,6 +57,8 @@ run_ramfs() { # <command> [...]
/bin/sleep /bin/zcat /usr/bin/bzcat /usr/bin/printf /usr/bin/wc
install_bin /sbin/mtd
install_bin /sbin/fs-state
install_bin /sbin/snapshot
for file in $RAMFS_COPY_BIN; do
install_bin $file
done

View file

@ -0,0 +1,41 @@
#
# Copyright (C) 2014 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:=mdnsd
PKG_VERSION:=2014-01-19
PKG_RELEASE=$(PKG_SOURCE_VERSION)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_URL:=git://nbd.name/mdnsd.git
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=8f771a5bcfd7f99e2ab8c68f1932c9d7c6804e96
PKG_MAINTAINER:=John Crispin <blogic@openwrt.org>
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/cmake.mk
define Package/mdnsd
SECTION:=net
CATEGORY:=Network
TITLE:=Multicast DNS Daemon
DEPENDS:=+libubox +libubus +libblobmsg-json
endef
TARGET_CFLAGS += -I$(STAGING_DIR)/usr/include
define Package/mdnsd/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/mdnsd $(1)/usr/sbin/
# $(INSTALL_DIR) $(1)/etc/init.d
# $(INSTALL_BIN) ./files/relay.init $(1)/etc/init.d/relayd
endef
$(eval $(call BuildPackage,mdnsd))

View file

@ -0,0 +1,2 @@
#!/bin/sh
/etc/init.d/relayd enabled && /etc/init.d/relayd start

View file

@ -0,0 +1,101 @@
#!/bin/sh /etc/rc.common
# Copyright (c) 2011-2012 OpenWrt.org
START=80
USE_PROCD=1
PROG=/usr/sbin/relayd
resolve_ifname() {
grep -qs "^ *$1:" /proc/net/dev && {
procd_append_param command -I "$1"
append ifaces "$1"
}
}
resolve_network() {
local ifn
fixup_interface "$1"
config_get ifn "$1" ifname
[ -z "$ifn" ] && return 1
resolve_ifname "$ifn"
}
start_relay() {
local cfg="$1"
local args=""
local ifaces=""
config_get proto "$cfg" proto
[[ "$proto" == relay ]] || return 0
SERVICE_DAEMONIZE=1
SERVICE_WRITE_PID=1
SERVICE_PID_FILE="/var/run/relay-$cfg.pid"
[ -f "$SERVICE_PID_FILE" ] && {
if grep -q relayd "/proc/$(cat $SERVICE_PID_FILE)/cmdline"; then
return 0
else
rm -f "$SERVICE_PID_FILE"
fi
}
procd_open_instance
procd_set_param command "$PROG"
local net networks
config_get networks "$cfg" network
for net in $networks; do
resolve_network "$net" || {
return 1
}
done
local ifn ifnames
config_get ifnames "$cfg" ifname
for ifn in $ifnames; do
resolve_ifname "$ifn"
done
local ipaddr
config_get ipaddr "$cfg" ipaddr
[ -n "$ipaddr" ] && procd_append_param command -L "$ipaddr"
local gateway
config_get gateway "$cfg" gateway
[ -n "$gateway" ] && procd_append_param command -G "$gateway"
local expiry # = 30
config_get expiry "$cfg" expiry
[ -n "$expiry" ] && procd_append_param command "$expiry"
local retry # = 5
config_get retry "$cfg" retry
[ -n "$retry" ] && procd_append_param command -p "$retry"
local table # = 16800
config_get table "$cfg" table
[ -n "$table" ] && procd_append_param command -T "$table"
local fwd_bcast # = 1
config_get_bool fwd_bcast "$cfg" forward_bcast 1
[ $fwd_bcast -eq 1 ] && procd_append_param command "-B"
local fwd_dhcp # = 1
config_get_bool fwd_dhcp "$cfg" forward_dhcp 1
[ $fwd_dhcp -eq 1 ] && procd_append_param command "-D"
procd_close_instance
}
service_triggers()
{
procd_add_reload_trigger "network"
}
start_service() {
include /lib/network
config_load network
config_foreach start_relay interface
}

View file

@ -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 <blogic@openwrt.org>
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))

View file

@ -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
}

View file

@ -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))