diff --git a/test/boot-environment.nix b/test/boot-environment.nix index dcf29322139..a32ebd48c72 100644 --- a/test/boot-environment.nix +++ b/test/boot-environment.nix @@ -86,6 +86,11 @@ rec { (import ./upstart-jobs/syslogd.nix { inherit (pkgs) sysklogd; }) + + # DHCP client. + (import ./upstart-jobs/dhclient.nix { + dhcp = pkgs.dhcpWrapper; + }) ] # The terminals on ttyX. @@ -115,7 +120,6 @@ rec { nettools upstart; inherit upstartJobs; shell = pkgs.bash + "/bin/sh"; - dhcp = pkgs.dhcpWrapper; # Additional stuff; add whatever you want here. path = [ diff --git a/test/boot-stage-2-init.sh b/test/boot-stage-2-init.sh index 5f68fea82cd..96d92b1ba77 100644 --- a/test/boot-stage-2-init.sh +++ b/test/boot-stage-2-init.sh @@ -86,12 +86,7 @@ done modprobe af_packet for i in $(cd /sys/class/net && ls -d *); do echo "Bringing up network device $i..." - if ifconfig $i up; then - if test "$i" != "lo"; then - mkdir -p /var/state/dhcp - dhclient $i - fi - fi + ifconfig $i up done diff --git a/test/boot-stage-2.nix b/test/boot-stage-2.nix index 9b37d4cd6f3..a7d22c3fb79 100644 --- a/test/boot-stage-2.nix +++ b/test/boot-stage-2.nix @@ -1,6 +1,6 @@ { genericSubstituter, shell, coreutils, findutils , utillinux, kernel, udev -, module_init_tools, nettools, dhcp, upstart +, module_init_tools, nettools, upstart , path ? [] , # Whether the root device is root only. If so, we'll mount a @@ -22,7 +22,6 @@ genericSubstituter { udev module_init_tools nettools - dhcp upstart ]; extraPath = path; diff --git a/test/upstart-jobs/dhclient.nix b/test/upstart-jobs/dhclient.nix new file mode 100644 index 00000000000..8a5c4fe9a5f --- /dev/null +++ b/test/upstart-jobs/dhclient.nix @@ -0,0 +1,29 @@ +{dhcp}: + +{ + name = "dhclient"; + + job = " +description \"DHCP client\" + +start on startup +stop on shutdown + +script + interfaces= + for i in $(cd /sys/class/net && ls -d *); do + if test \"$i\" != \"lo\" -a \"$(cat /sys/class/net/$i/operstate)\" != 'down'; then + interfaces=\"$interfaces $i\" + fi + done + + if test -z \"$interfaces\"; then + echo 'No interfaces on which to start dhclient!' + exit 1 + fi + + exec ${dhcp}/sbin/dhclient -d $interfaces +end script + "; + +}