summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Maw <richard.maw@codethink.co.uk>2012-05-22 12:43:02 +0000
committerSuper user <root@baserock.(none)>2012-09-17 13:11:39 +0000
commit1399e97fe81ef234c67b45d004f1e46cf4887529 (patch)
treeb47847680ebb194e048f5631d89355d9729f36e3
parentb474f626cae092f14c440d4311fc64061397494f (diff)
downloadbusybox-1399e97fe81ef234c67b45d004f1e46cf4887529.tar.gz
busybox: add systemd and udev rules
ifup@.service will run busybox's ifup to bring a network interface up. The udev rules will cause this to happen for every network interface it detects. The udev rules also have a rule for serial ttys to start a getty.
-rw-r--r--busybox.morph5
-rw-r--r--systemd-units/ifup@.service.in8
-rw-r--r--udev-rules/100-baserock.rules7
3 files changed, 20 insertions, 0 deletions
diff --git a/busybox.morph b/busybox.morph
index 1fc3847c8..3eb13dd7b 100644
--- a/busybox.morph
+++ b/busybox.morph
@@ -45,10 +45,15 @@
"sed -e 's/.*CONFIG_AWK=.*/# CONFIG_AWK is not set/' -i .config"
],
"build-commands": [
+ "for f in systemd-units/ifup@.service; do sed -e 's|@rootprefix@||g' \"$f.in\" >\"$f\"; done",
"make"
],
"install-commands": [
"if [ \"$PREFIX\" = /usr ]; then PREFIX=; fi && make CONFIG_PREFIX=\"$DESTDIR$PREFIX\" install && chmod 6755 \"$DESTDIR$PREFIX\"/bin/busybox",
+ "mkdir -p \"$DESTDIR/lib/systemd/system/\"",
+ "for f in systemd-units/ifup@.service; do install -m 644 \"$f\" \"$DESTDIR/lib/systemd/system\"; done",
+ "mkdir -p \"$DESTDIR$PREFIX/libexec/udev/rules.d\"",
+ "for f in udev-rules/100-baserock.rules; do install -m 644 \"$f\" \"$DESTDIR$PREFIX/libexec/udev/rules.d\"; done",
"mkdir -p \"$DESTDIR$PREFIX\"/share/udhcpc",
"cp examples/udhcp/simple.script \"$DESTDIR$PREFIX\"/share/udhcpc/default.script"
]
diff --git a/systemd-units/ifup@.service.in b/systemd-units/ifup@.service.in
new file mode 100644
index 000000000..72313bba9
--- /dev/null
+++ b/systemd-units/ifup@.service.in
@@ -0,0 +1,8 @@
+[Unit]
+Description=ifup for %I
+After=local-fs.target
+
+[Service]
+ExecStart=@rootprefix@/sbin/ifup %I
+ExecStop=@rootprefix@/sbin/ifdown %I
+RemainAfterExit=true
diff --git a/udev-rules/100-baserock.rules b/udev-rules/100-baserock.rules
new file mode 100644
index 000000000..c620f8a04
--- /dev/null
+++ b/udev-rules/100-baserock.rules
@@ -0,0 +1,7 @@
+ACTION=="remove", GOTO="baserock_end"
+# start a serial getty for every serial tty detected
+SUBSYSTEM=="tty", KERNEL=="ttyS*", ENV{SYSTEMD_WANTS}="serial-getty@%k.service"
+# run ifup for every network device detected
+SUBSYSTEM=="net", KERNEL!="lo", ENV{SYSTEMD_WANTS}="ifup@%k.service"
+
+LABEL="systemd_end"