diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | remote/tools/systemd/data/network@.service | 13 | ||||
-rw-r--r-- | remote/tools/systemd/systemd.build | 12 | ||||
-rw-r--r-- | remote/tools/udev/data/lib/udev/rules.d/99-systemd.rules | 55 | ||||
-rw-r--r-- | remote/tools/udev/udev.build | 34 |
5 files changed, 92 insertions, 23 deletions
@@ -8,3 +8,4 @@ build .built .fetched_source list* +test diff --git a/remote/tools/systemd/data/network@.service b/remote/tools/systemd/data/network@.service new file mode 100644 index 00000000..01f3a526 --- /dev/null +++ b/remote/tools/systemd/data/network@.service @@ -0,0 +1,13 @@ +[Unit] +Description=Setup Network Connection +Wants=network.target +Before=network.target + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/openslx/bin/ip link set dev %I up +ExecStart=/openslx/sbin/udhcpc -O domain -O nissrv -O nisdomain -t 8 -s /etc/udhcpc.default.script -i %I + +[Install] +WantedBy=multi-user.target diff --git a/remote/tools/systemd/systemd.build b/remote/tools/systemd/systemd.build index 981e87b6..14cef7e1 100644 --- a/remote/tools/systemd/systemd.build +++ b/remote/tools/systemd/systemd.build @@ -35,14 +35,14 @@ build () { } post_copy() { + # debug shell on tty9 [ ! -d $INIT_DIR/etc/systemd/system/sysinit.target.wants ] && mkdir -p $INIT_DIR/etc/systemd/system/sysinit.target.wants - #debug shell on tty9 cp $TOOL_DIR/$TOOL/data/debug-shell.service $INIT_DIR/etc/systemd/system ln -s ../debug-shell.service $INIT_DIR/etc/systemd/system/sysinit.target.wants - + # dont clear systemd log at startup -# sed -i.bak "s/ExecStart=-\/sbin\/agetty %I 38400/ExecStart=-\/sbin\/agetty %I 38400 --noclear/g" \ -# $INIT_DIR/usr/lib/systemd/system/getty@.service - sed -i.bak "s/TTYVTDisallocate=yes/TTYVTDisallocate=no/g" \ - $INIT_DIR/usr/lib/systemd/system/getty@.service + sed -i.bak "s/TTYVTDisallocate=yes/TTYVTDisallocate=no/g" $INIT_DIR/usr/lib/systemd/system/getty@.service + + # copy custom network@.service + cp $TOOL_DIR/$TOOL/data/network@.service $INIT_DIR/etc/systemd/system } diff --git a/remote/tools/udev/data/lib/udev/rules.d/99-systemd.rules b/remote/tools/udev/data/lib/udev/rules.d/99-systemd.rules new file mode 100644 index 00000000..52377d1f --- /dev/null +++ b/remote/tools/udev/data/lib/udev/rules.d/99-systemd.rules @@ -0,0 +1,55 @@ +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. + +ACTION=="remove", GOTO="systemd_end" + +SUBSYSTEM=="tty", KERNEL=="tty[0-9]|tty1[0-2]", TAG+="systemd" +SUBSYSTEM=="tty", KERNEL=="tty[a-zA-Z]*|hvc*|xvc*|hvsi*", TAG+="systemd" + +KERNEL=="vport*", TAG+="systemd" + +SUBSYSTEM=="block", KERNEL!="ram*|loop*", TAG+="systemd" +SUBSYSTEM=="block", KERNEL!="ram*|loop*", ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}=="1", ENV{SYSTEMD_READY}="0" + +# Ignore encrypted devices with no identified superblock on it, since +# we are probably still calling mke2fs or mkswap on it. + +SUBSYSTEM=="block", KERNEL!="ram*|loop*", ENV{DM_UUID}=="CRYPT-*", ENV{ID_PART_TABLE_TYPE}=="", ENV{ID_FS_USAGE}=="", ENV{SYSTEMD_READY}="0" + +# We need a hardware independent way to identify network devices. We +# use the /sys/subsystem path for this. Current vanilla kernels don't +# actually support that hierarchy right now, however upcoming kernels +# will. HAL and udev internally support /sys/subsystem already, hence +# it should be safe to use this here, too. This is mostly just an +# identification string for systemd, so whether the path actually is +# accessible or not does not matter as long as it is unique and in the +# filesystem namespace. +# +# http://git.kernel.org/?p=linux/hotplug/udev.git;a=blob;f=libudev/libudev-enumerate.c;h=da831449dcaf5e936a14409e8e68ab12d30a98e2;hb=HEAD#l742 + +SUBSYSTEM=="net", KERNEL!="lo", TAG+="systemd", ENV{SYSTEMD_ALIAS}="/sys/subsystem/net/devices/$name", ENV{SYSTEMD_WANTS}="network@$name.service" +SUBSYSTEM=="bluetooth", TAG+="systemd", ENV{SYSTEMD_ALIAS}="/sys/subsystem/bluetooth/devices/%k" + +SUBSYSTEM=="bluetooth", TAG+="systemd", ENV{SYSTEMD_WANTS}="bluetooth.target" +ENV{ID_SMARTCARD_READER}=="*?", TAG+="systemd", ENV{SYSTEMD_WANTS}="smartcard.target" +SUBSYSTEM=="sound", KERNEL=="card*", TAG+="systemd", ENV{SYSTEMD_WANTS}="sound.target" + +SUBSYSTEM=="printer", TAG+="systemd", ENV{SYSTEMD_WANTS}="printer.target" +SUBSYSTEM=="usb", KERNEL=="lp*", TAG+="systemd", ENV{SYSTEMD_WANTS}="printer.target" +SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}=="*:0701??:*", TAG+="systemd", ENV{SYSTEMD_WANTS}="printer.target" + +# Apply sysctl variables to network devices (and only to those) as they appear. + +SUBSYSTEM=="net", KERNEL!="lo", RUN+="/usr/lib/systemd/systemd-sysctl --prefix=/proc/sys/net/ipv4/conf/$name --prefix=/proc/sys/net/ipv4/neigh/$name --prefix=/proc/sys/net/ipv6/conf/$name --prefix=/proc/sys/net/ipv6/neigh/$name" + +# Asynchronously mount file systems implemented by these modules as +# soon as they are loaded. + +SUBSYSTEM=="module", KERNEL=="fuse", ACTION=="add", TAG+="systemd", ENV{SYSTEMD_WANTS}="sys-fs-fuse-connections.mount" +SUBSYSTEM=="module", KERNEL=="configfs", ACTION=="add", TAG+="systemd", ENV{SYSTEMD_WANTS}="sys-kernel-config.mount" + +LABEL="systemd_end" diff --git a/remote/tools/udev/udev.build b/remote/tools/udev/udev.build index 70ed0b5a..b3dc35f2 100644 --- a/remote/tools/udev/udev.build +++ b/remote/tools/udev/udev.build @@ -1,35 +1,35 @@ #!/bin/bash install_dependencies() { - echo "No dependencies." + echo "No dependencies." } fetch_source() { - echo "Extracting from running system..." + echo "Extracting from running system..." } build() { - BUILDDIR=$TOOL_DIR/$TOOL/build + BUILDDIR=$TOOL_DIR/$TOOL/build - COPYLIST="list_dpkg_output" - [ -e $COPYLIST ] && rm $COPYLIST + COPYLIST="list_dpkg_output" + [ -e $COPYLIST ] && rm $COPYLIST - for FILE in $(dpkg -L udev | grep -v share/doc | grep -v share/man) - do - [ ! -d $FILE ] && echo $FILE >> $COPYLIST - done + for FILE in $(dpkg -L udev | grep -v share/doc | grep -v share/man) + do + [ ! -d $FILE ] && echo $FILE >> $COPYLIST + done - # prepare target dir & copy there - [ ! -d $BUILDDIR ] && mkdir -p $BUILDDIR - tar -cpv $(cat $COPYLIST|sort -u) | tar -xpv -C $BUILDDIR - + # prepare target dir & copy there + [ ! -d $BUILDDIR ] && mkdir -p $BUILDDIR + tar -cpv $(cat $COPYLIST|sort -u) | tar -xpv -C $BUILDDIR } post_copy() { - #copy systemd specific files - SYSTEMDDIR=$INIT_DIR/etc/systemd/system - [ ! -d $SYSTEMDDIR ] && mkdir -p $SYSTEMDDIR - cp -r $TOOL_DIR/$TOOL/data/* $INIT_DIR + + # copy custom systemd files + SYSTEMDDIR=$INIT_DIR/etc/systemd/system + [ ! -d $SYSTEMDDIR ] && mkdir -p $SYSTEMDDIR + cp -r $TOOL_DIR/$TOOL/data/* $INIT_DIR } |