@@ -64,6 +64,13 @@ menu "Target Images"
help
Build a compressed tar archive of the root filesystem.
+ config TARGET_ROOTFS_LXC_TARGZ
+ bool "LXC guest .tar.gz"
+ default n
+ help
+ Build a compressed tar archive of the root filesystem for use
+ in an LXC guest.
+
comment "Root filesystem images"
menuconfig TARGET_ROOTFS_EXT4FS
@@ -74,6 +74,7 @@ fs-types-$(CONFIG_TARGET_ROOTFS_ISO) += iso
fs-subtypes-$(CONFIG_TARGET_ROOTFS_JFFS2) += $(addsuffix -raw,$(addprefix jffs2-,$(JFFS2_BLOCKSIZE)))
fs-subtypes-$(CONFIG_TARGET_ROOTFS_CPIOGZ) += cpiogz
fs-subtypes-$(CONFIG_TARGET_ROOTFS_TARGZ) += targz
+fs-subtypes-$(CONFIG_TARGET_ROOTFS_LXC_TARGZ) += lxc-targz
TARGET_FILESYSTEMS := $(fs-types-y)
@@ -258,6 +259,21 @@ define Image/mkfs/targz
$(TAR) -czpf $(BIN_DIR)/$(IMG_PREFIX)$(if $(PROFILE_SANITIZED),-$(PROFILE_SANITIZED))-rootfs.tar.gz --numeric-owner --owner=0 --group=0 --sort=name -C $(TARGET_DIR)/ .
endef
+define Image/mkfs/lxc-targz
+ rm -rf $(TARGET_DIR).lxc
+ $(CP) $(TARGET_DIR) $(TARGET_DIR).lxc
+ rm -f $(TARGET_DIR).lxc/etc/uci-defaults/inittab
+ $(CP) $(TOPDIR)/target/linux/generic/base-files-lxc/* $(TARGET_DIR).lxc/
+ ( \
+ cd $(TARGET_DIR).lxc; \
+ for script in ./etc/init.d/*; do \
+ grep '#!/bin/sh /etc/rc.common' $$$$script >/dev/null || continue; \
+ IPKG_INSTROOT="$(TARGET_DIR).lxc" $$$$(which bash) ./etc/rc.common $$$$script enable; \
+ done; \
+ )
+ $(TAR) -czpf $(BIN_DIR)/$(IMG_PREFIX)$(if $(PROFILE_SANITIZED),-$(PROFILE_SANITIZED))-lxc-rootfs.tar.gz --numeric-owner --owner=0 --group=0 --sort=name -C $(TARGET_DIR).lxc/ .
+endef
+
E2SIZE=$(shell echo $$(($(CONFIG_TARGET_ROOTFS_PARTSIZE)*1024*1024)))
define Image/mkfs/ext4
@@ -132,6 +132,7 @@ sub target_config_features(@) {
/jffs2_nand/ and $ret .= "\tselect USES_JFFS2_NAND\n";
/ext4/ and $ret .= "\tselect USES_EXT4\n";
/targz/ and $ret .= "\tselect USES_TARGZ\n";
+ /lxc-targz/ and $ret .= "\tselect USES_TARGZ\n";
/cpiogz/ and $ret .= "\tselect USES_CPIOGZ\n";
/ubifs/ and $ret .= "\tselect USES_UBIFS\n";
/fpu/ and $ret .= "\tselect HAS_FPU\n";
@@ -1,5 +1,5 @@
BOARDNAME:=Mikrotik devices with NAND flash
-FEATURES += targz ramdisk
+FEATURES += targz lxc-targz ramdisk
define Target/Description
Build firmware images for Atheros AR71xx/AR913x based Mikrotik boards.
@@ -10,7 +10,7 @@ ARCH:=arm
BOARD:=at91
MAINTAINER:=Claudio Mignanti <c.mignanti@gmail.com>
BOARDNAME:=Atmel AT91
-FEATURES:=squashfs targz ext2 usb usbgadget ubifs
+FEATURES:=squashfs targz lxc-targz ext2 usb usbgadget ubifs
SUBTARGETS:=legacy sama5d3
KERNEL_PATCHVER:=3.18
new file mode 100755
@@ -0,0 +1,61 @@
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2006-2011 OpenWrt.org
+
+START=10
+STOP=98
+
+uci_apply_defaults() {
+ . /lib/functions/system.sh
+
+ cd /etc/uci-defaults || return 0
+ files="$(ls)"
+ [ -z "$files" ] && return 0
+ mkdir -p /tmp/.uci
+ for file in $files; do
+ ( . "./$(basename $file)" ) && rm -f "$file"
+ done
+ uci commit
+}
+
+boot() {
+# [ -f /proc/mounts ] || /sbin/mount_root
+# [ -f /proc/jffs2_bbc ] && echo "S" > /proc/jffs2_bbc
+ [ -f /proc/net/vlan/config ] && vconfig set_name_type DEV_PLUS_VID_NO_PAD
+
+ mkdir -p /var/run
+ mkdir -p /var/log
+ mkdir -p /var/lock
+ mkdir -p /var/state
+ mkdir -p /tmp/.uci
+ chmod 0700 /tmp/.uci
+ mkdir -p /tmp/.jail
+ touch /var/log/wtmp
+ touch /var/log/lastlog
+ touch /tmp/resolv.conf.auto
+ ln -sf /tmp/resolv.conf.auto /tmp/resolv.conf
+# grep -q debugfs /proc/filesystems && /bin/mount -o noatime -t debugfs debugfs /sys/kernel/debug
+ [ "$FAILSAFE" = "true" ] && touch /tmp/.failsafe
+
+# /sbin/kmodloader
+
+ # allow wifi modules time to settle
+ sleep 1
+
+# /sbin/wifi detect > /tmp/wireless.tmp
+ [ -s /tmp/wireless.tmp ] && {
+ cat /tmp/wireless.tmp >> /etc/config/wireless
+ }
+ rm -f /tmp/wireless.tmp
+
+# /bin/board_detect
+ uci_apply_defaults
+
+ # temporary hack until configd exists
+ /sbin/reload_config
+
+ # create /dev/root if it doesn't exist
+ [ -e /dev/root -o -h /dev/root ] || {
+ rootdev=$(awk 'BEGIN { RS=" "; FS="="; } $1 == "root" { print $2 }' < /proc/cmdline)
+ [ -n "$rootdev" ] && ln -s "$rootdev" /dev/root
+ }
+}
new file mode 100755
@@ -0,0 +1,12 @@
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2013-2014 OpenWrt.org
+
+START=00
+
+boot() {
+ find /var -mindepth 1 ! -path '/var/run*' -print0 |xargs -0 rm -rf
+ find /tmp/run -mindepth 1 ! -name ubus.sock -print0 |xargs -0 rm -rf
+ mkdir /var/log /var/cache /var/state /var/etc /var/lock
+}
+
+
new file mode 100644
@@ -0,0 +1,6 @@
+::sysinit:/etc/init.d/rcS S boot
+::shutdown:/etc/init.d/rcS K shutdown
+tty1::askfirst:/bin/ash --login
+tty2::askfirst:/bin/ash --login
+tty3::askfirst:/bin/ash --login
+tty4::askfirst:/bin/ash --login
new file mode 100644
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+/etc/init.d/sysntpd stop
+/etc/init.d/sysntpd disable
+/etc/inti.d/sysfixtime disable
+
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
ARCH:=arm
BOARD:=imx6
BOARDNAME:=Freescale i.MX 6
-FEATURES:=audio display fpu gpio pcie rtc usb usbgadget squashfs targz nand ubifs
+FEATURES:=audio display fpu gpio pcie rtc usb usbgadget squashfs targz lxc-targz nand ubifs
CPU_TYPE:=cortex-a9
CPU_SUBTYPE:=neon
MAINTAINER:=Luka Perkov <luka@openwrt.org>
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
ARCH:=arm
BOARD:=kirkwood
BOARDNAME:=Marvell Kirkwood
-FEATURES:=targz usb jffs2_nand nand ubifs squashfs
+FEATURES:=targz lxc-targz usb jffs2_nand nand ubifs squashfs
CPU_TYPE:=xscale
MAINTAINER:=Luka Perkov <luka@openwrt.org>
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
ARCH:=arm
BOARD:=omap
BOARDNAME:=TI OMAP3/4/AM33xx
-FEATURES:=usb usbgadget ext4 targz fpu audio display nand ubifs
+FEATURES:=usb usbgadget ext4 targz lxc-targz fpu audio display nand ubifs
CPU_TYPE:=cortex-a9
CPU_SUBTYPE:=vfpv3
@@ -10,7 +10,7 @@ ARCH:=arm
BOARD:=omap24xx
BOARDNAME:=TI OMAP24xx
MAINTAINER:=Michael Buesch <m@bues.ch>
-FEATURES:=targz squashfs jffs2_nand usb usbgadget display gpio audio broken
+FEATURES:=targz lxc-targz squashfs jffs2_nand usb usbgadget display gpio audio broken
CPU_TYPE:=arm1136j-s
KERNEL_PATCHVER:=4.1
@@ -6,7 +6,7 @@
#
BOARDNAME:=Internal Hard-Disk
-FEATURES:=targz
+FEATURES:=targz lxc-targz
define Target/Description
Build firmware images for Marvell Orion based boards that boot directly from internal disk storage.
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
ARCH:=mipsel
BOARD:=rb532
BOARDNAME:=Mikrotik RouterBoard 532
-FEATURES:=pci targz
+FEATURES:=pci targz lxc-targz
KERNEL_PATCHVER:=3.18
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
ARCH:=i386
BOARD:=x86
BOARDNAME:=x86
-FEATURES:=squashfs ext4 vdi vmdk pcmcia targz
+FEATURES:=squashfs ext4 vdi vmdk pcmcia targz lxc-targz
SUBTARGETS=generic xen_domu ep80579 geode kvm_guest rdc 64
MAINTAINER:=Felix Fietkau <nbd@openwrt.org>
@@ -1,4 +1,4 @@
BOARDNAME:=Xen Paravirt Guest
DEFAULT_PACKAGES += kmod-xen-fs kmod-xen-evtchn kmod-xen-netdev kmod-xen-kbddev
-FEATURES:=display ext4 targz
+FEATURES:=display ext4 targz lxc-targz
CPU_TYPE := pentium4
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
ARCH:=mipsel
BOARD:=xburst
BOARDNAME:=Ingenic XBurst
-FEATURES:=targz nand ubifs audio
+FEATURES:=targz lxc-targz nand ubifs audio
SUBTARGETS:=qi_lb60
KERNEL_PATCHVER:=3.18