mirror of
https://github.com/troglobit/finit.git
synced 2026-11-02 13:20:32 +00:00
Handle systems with new /run tmpfs
Modern systems today use a RAM disk for /run and /run/lock, with symlinks to the FHS locations in /var/run and /var/lock. See the following link for details http://lwn.net/Articles/436012/ Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
This commit is contained in:
1 parent
a67350ebf6
commit
aced97c2e6
3 files changed
+46
-11
No files matched your search
@@ -140,13 +140,6 @@ Documentation
|
|||||||
how close Finit3 still is to the original easy-to-use Finit0 :)
|
how close Finit3 still is to the original easy-to-use Finit0 :)
|
||||||
|
|
||||||
|
|
||||||
Investigation
|
|
||||||
-------------
|
|
||||||
|
|
||||||
* [FHS changes](http://askubuntu.com/questions/57297/why-has-var-run-been-migrated-to-run)
|
|
||||||
affecting runtime status, plugins, etc.
|
|
||||||
|
|
||||||
|
|
||||||
[libwdt]: http://www.wehavemorefun.de/fritzbox/Libwdt.so
|
[libwdt]: http://www.wehavemorefun.de/fritzbox/Libwdt.so
|
||||||
[Fritz!Box source dump]: ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7170/x_misc/opensrc/
|
[Fritz!Box source dump]: ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7170/x_misc/opensrc/
|
||||||
|
|
||||||
|
|||||||
@@ -27,6 +27,7 @@
|
|||||||
#include <sys/mount.h>
|
#include <sys/mount.h>
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <dirent.h>
|
#include <dirent.h>
|
||||||
|
#include <mntent.h>
|
||||||
#include <sys/stat.h> /* umask(), mkdir() */
|
#include <sys/stat.h> /* umask(), mkdir() */
|
||||||
#include <lite/lite.h>
|
#include <lite/lite.h>
|
||||||
|
|
||||||
@@ -69,6 +70,28 @@ static int banner(void)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Requires /proc to be mounted */
|
||||||
|
static int fismnt(char *dir)
|
||||||
|
{
|
||||||
|
FILE *fp;
|
||||||
|
int found = 0;
|
||||||
|
struct mntent *mnt;
|
||||||
|
|
||||||
|
fp = setmntent("/proc/mounts", "r");
|
||||||
|
if (!fp)
|
||||||
|
return 0; /* Dunno, maybe not */
|
||||||
|
|
||||||
|
while ((mnt = getmntent(fp))) {
|
||||||
|
if (!strcmp(mnt->mnt_dir, dir)) {
|
||||||
|
found = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
endmntent(fp);
|
||||||
|
|
||||||
|
return found;
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc, char* argv[])
|
int main(int argc, char* argv[])
|
||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
@@ -100,10 +123,21 @@ int main(int argc, char* argv[])
|
|||||||
mount("none", "/proc", "proc", 0, NULL);
|
mount("none", "/proc", "proc", 0, NULL);
|
||||||
mount("none", "/proc/bus/usb", "usbfs", 0, NULL);
|
mount("none", "/proc/bus/usb", "usbfs", 0, NULL);
|
||||||
mount("none", "/sys", "sysfs", 0, NULL);
|
mount("none", "/sys", "sysfs", 0, NULL);
|
||||||
|
|
||||||
|
/* Some systems use /dev/pts */
|
||||||
makedir("/dev/pts", 0755);
|
makedir("/dev/pts", 0755);
|
||||||
|
mount("devpts", "/dev/pts", "devpts", 0, "gid=5,mode=620");
|
||||||
|
|
||||||
makedir("/dev/shm", 0755);
|
makedir("/dev/shm", 0755);
|
||||||
mount("none", "/dev/pts", "devpts", 0, "gid=5,mode=620");
|
if (!fismnt("/dev/shm"))
|
||||||
mount("none", "/dev/shm", "tmpfs", 0, NULL);
|
mount("shm", "/dev/shm", "tmpfs", 0, NULL);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* New tmpfs based /run for volatile runtime data
|
||||||
|
* For details, see http://lwn.net/Articles/436012/
|
||||||
|
*/
|
||||||
|
if (fisdir("/run") && !fismnt("/run"))
|
||||||
|
mount("tmpfs", "/run", "tmpfs", MS_NODEV, "mode=0755,size=10%");
|
||||||
umask(022);
|
umask(022);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
+10
-2
@@ -44,12 +44,20 @@ static void setup(void *UNUSED(arg))
|
|||||||
makedir("/var/lib/misc", 0755);
|
makedir("/var/lib/misc", 0755);
|
||||||
makedir("/var/lib/alarm", 0755);
|
makedir("/var/lib/alarm", 0755);
|
||||||
makedir("/var/lib/urandom",0755);
|
makedir("/var/lib/urandom",0755);
|
||||||
makedir("/var/lock", 0755);
|
if (fisdir("/run")) {
|
||||||
|
_d("System with new /run tmpfs ...");
|
||||||
|
makedir("/run/lock", 1777);
|
||||||
|
symlink("/run/lock", "/var/lock");
|
||||||
|
symlink("/run", "/var/run");
|
||||||
|
symlink("/dev/shm", "/run/shm");
|
||||||
|
} else {
|
||||||
|
makedir("/var/lock", 1777);
|
||||||
|
makedir("/var/run", 0755);
|
||||||
|
}
|
||||||
makedir("/var/lock/subsys",0755); /* Needed by D-Bus plugin */
|
makedir("/var/lock/subsys",0755); /* Needed by D-Bus plugin */
|
||||||
makedir("/var/log", 0755);
|
makedir("/var/log", 0755);
|
||||||
makedir("/var/mail", 0755);
|
makedir("/var/mail", 0755);
|
||||||
makedir("/var/opt", 0755);
|
makedir("/var/opt", 0755);
|
||||||
makedir("/var/run", 0755);
|
|
||||||
makedir("/var/spool", 0755);
|
makedir("/var/spool", 0755);
|
||||||
makedir("/var/spool/cron", 0755);
|
makedir("/var/spool/cron", 0755);
|
||||||
makedir("/var/tmp", 0755);
|
makedir("/var/tmp", 0755);
|
||||||
|
|||||||
Reference in new issue
Block a user