Sfoglia il codice sorgente

Download and build procd

Mikael Magnusson 7 anni fa
parent
commit
250c3ce381
2 ha cambiato i file con 91 aggiunte e 0 eliminazioni
  1. 22 0
      build.sh
  2. 69 0
      patches/procd/001_lxd_no_mounts.patch

+ 22 - 0
build.sh

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

+ 69 - 0
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) {