diff options
-rwxr-xr-x | build.sh | 22 | ||||
-rw-r--r-- | patches/procd/001_lxd_no_mounts.patch | 69 |
2 files changed, 91 insertions, 0 deletions
@@ -19,6 +19,9 @@ sdk_url=https://downloads.openwrt.org/releases/${ver}/targets/${arch}/${subarch} sdk_sum=ef8b801f756cf2aa354198df0790ab6858b3d70b97cc3c00613fd6e5d5bb100c sdk_tar=dl/$(basename $sdk_url) +procd_url=https://github.com/openwrt/openwrt/branches/lede-17.01/package/system/procd +procd_extra_ver=lxd-3 + lxc_tar=bin/${dist}-${ver}-${arch_dash}-lxd.tar.gz metadata=metadata.yaml @@ -56,6 +59,23 @@ check() { fi } +download_procd() { + if ! test -e dl/procd; then + svn co $procd_url dl/procd + sed -i -e "s/PKG_RELEASE:=\(\S\+\)/PKG_RELEASE:=\1-${procd_extra_ver}/" dl/procd/Makefile + fi + + test -e dl/procd/patches || mkdir dl/procd/patches + cp -a patches/procd/* dl/procd/patches +} + +build_procd() { + if ! test -e sdk/package/lxd-procd; then + ln -s $(pwd)/dl/procd sdk/package/lxd-procd + fi + make -C sdk package/lxd-procd/compile +} + build_tarball() { fakeroot ./build_rootfs.sh $rootfs $metadata $lxc_tar } @@ -90,6 +110,8 @@ build_image() { download_rootfs download_sdk +download_procd +build_procd build_metadata build_tarball build_image diff --git a/patches/procd/001_lxd_no_mounts.patch b/patches/procd/001_lxd_no_mounts.patch new file mode 100644 index 0000000..f3b2c4f --- /dev/null +++ b/patches/procd/001_lxd_no_mounts.patch @@ -0,0 +1,69 @@ +diff --git a/initd/early.c b/initd/early.c +index 7028ff8..115d8f8 100644 +--- a/initd/early.c ++++ b/initd/early.c +@@ -27,13 +27,6 @@ + #include "../libc-compat.h" + + static void +-early_dev(void) +-{ +- mkdev("*", 0600); +- mknod("/dev/null", 0666, makedev(1, 3)); +-} +- +-static void + early_console(const char *dev) + { + struct stat s; +@@ -56,15 +49,6 @@ early_mounts(void) + { + unsigned int oldumask = umask(0); + +- mount("proc", "/proc", "proc", MS_NOATIME | MS_NODEV | MS_NOEXEC | MS_NOSUID, 0); +- mount("sysfs", "/sys", "sysfs", MS_NOATIME | MS_NODEV | MS_NOEXEC | MS_NOSUID, 0); +- mount("cgroup", "/sys/fs/cgroup", "cgroup", MS_NODEV | MS_NOEXEC | MS_NOSUID, 0); +- mount("tmpfs", "/dev", "tmpfs", MS_NOATIME | MS_NOSUID, "mode=0755,size=512K"); +- ignore(symlink("/tmp/shm", "/dev/shm")); +- mkdir("/dev/pts", 0755); +- mount("devpts", "/dev/pts", "devpts", MS_NOATIME | MS_NOEXEC | MS_NOSUID, "mode=600"); +- early_dev(); +- + early_console("/dev/console"); + if (mount_zram_on_tmp()) { + mount("tmpfs", "/tmp", "tmpfs", MS_NOSUID | MS_NODEV | MS_NOATIME, 0); +diff --git a/initd/zram.c b/initd/zram.c +index c730942..8eb38a6 100644 +--- a/initd/zram.c ++++ b/initd/zram.c +@@ -116,12 +116,6 @@ mount_zram_on_tmp(void) + waitpid(pid, NULL, 0); + } + +- ret = mount("/dev/zram0", "/tmp", "ext4", MS_NOSUID | MS_NODEV | MS_NOATIME, "errors=continue,noquota"); +- if (ret < 0) { +- ERROR("Can't mount /dev/zram0 on /tmp: %s\n", strerror(errno)); +- return errno; +- } +- + LOG("Using up to %ld kB of RAM as ZRAM storage on /mnt\n", zramsize); + + ret = chmod("/tmp", 01777); +diff --git a/plug/coldplug.c b/plug/coldplug.c +index 5fcb9a3..b846d7f 100644 +--- a/plug/coldplug.c ++++ b/plug/coldplug.c +@@ -43,13 +43,8 @@ void procd_coldplug(void) + char *argv[] = { "udevtrigger", NULL }; + unsigned int oldumask = umask(0); + +- umount2("/dev/pts", MNT_DETACH); +- umount2("/dev/", MNT_DETACH); +- mount("tmpfs", "/dev", "tmpfs", MS_NOSUID, "mode=0755,size=512K"); + ignore(symlink("/tmp/shm", "/dev/shm")); +- mkdir("/dev/pts", 0755); + umask(oldumask); +- mount("devpts", "/dev/pts", "devpts", MS_NOEXEC | MS_NOSUID, 0); + udevtrigger.cb = udevtrigger_complete; + udevtrigger.pid = fork(); + if (!udevtrigger.pid) { |