User, modules and checkfs configurable from /etc/finit.conf

Signed-off-by: Claudio Matsuoka <cmatsuoka@gmail.com>
This commit is contained in:
Claudio Matsuoka
2008-05-05 13:41:01 -03:00
parent ccd49f2024
commit c55afaadb3
4 changed files with 47 additions and 24 deletions
-7
View File
@@ -66,10 +66,3 @@ automounting may not work correctly. That happens because the session
is started before the system message bus, so add a "dcop kded mediamanager
reloadBackends" call in the user AutoStart to restart the client.
finit-alt parameters
--------------------
CHECKFS=<dev> run fsck on the specified device
DEBUG enable runtime debug (drops to shell after X session)
+2 -1
View File
@@ -21,7 +21,8 @@ Mandriva 2008
4 - Set the pointer device in the X server configuration to /dev/input/mice
5 - Have a user named "user", or change the default in Makefile
5 - Have a user named "user", change the default in Makefile or configure
in /etc/finit.conf
+41 -16
View File
@@ -137,38 +137,63 @@ int main()
mount("proc", "/proc", "proc", 0, NULL);
/*
* Parse kernel parameters
*/
if ((f = fopen("/proc/cmdline", "r")) != NULL) {
char *x;
fgets(line, LINE_SIZE, f);
if (strstr(line, "quiet")) {
close(0);
close(1);
close(2);
}
if ((x = strstr(line, "CHECKFS="))) {
x += 8;
strcpy(cmd, "e2fsck -C -p ");
c = cmd + strlen(cmd);
while (x && *x != ' ') *c++ = *x++;
system(cmd);
sync();
sync();
reboot(RB_AUTOBOOT);
}
if ((x = strstr(line, "USERNAME="))) {
x += 9;
c = cmd + strlen(cmd);
while (x && *x != ' ') *c++ = *x++;
}
if ((strstr(line, "DEBUG"))) {
debug = 1;
}
fclose(f);
}
/*
* Parse configuration file
*/
if ((f = fopen("/etc/finit.conf", "r")) != NULL) {
char *x;
while (!feof(f)) {
fgets(line, LINE_SIZE, f);
if (debug) {
printf("conf: %s", line);
}
if ((x = strstr(line, "check ")) == line) {
x += 6;
strcpy(cmd, "/sbin/e2fsck -C -p ");
c = cmd + strlen(cmd);
while (x && *x != ' ') *c++ = *x++;
system(cmd);
sync();
sync();
reboot(RB_AUTOBOOT);
}
if ((x = strstr(line, "user ")) == line) {
x += 5;
c = username;
while (x && *x != ' ') *c++ = *x++;
continue;
}
if ((x = strstr(line, "module ")) == line) {
x += 7;
strcpy(cmd, "/sbin/insmod ");
c = cmd + strlen(cmd);
while (x && *x != ' ') *c++ = *x++;
system(cmd);
continue;
}
}
fclose(f);
}
setsid();
/*
+4
View File
@@ -0,0 +1,4 @@
user fred
module agp-intel
module p4-clockmod
check /dev/sda3