Hi all, Right now, on the debian-user mailing list, they're wringing their hands about restarting the network and how Debian apparently gets it wrong, I guess because of stuff like you need a link before assigning an IP, you need an IP before doing DNS, you need DNS before NFS, Samba, Apache and who knows what else. And I think they're also having problems with recognizing the right network device names, which of course was solved on this mailing list a couple months ago.
LOL. First of all, it's ironic that if I had credible information on startup ordering, and if I used systemd, I could *easily* get all this to happen. Systemd's Unit files with targets and the like are straight up built for this exact multiple ordering thing. Similarly, I could get this to happen on Runit or S6, with generic dependencies. It appears that the Debian Devs are doing their systemd with a sysvinit accent. Worst of both worlds. OK, I'll stop with my gleeful "I told you so" taunt, and get to my real message... In my personal opinion, you can't make a distro for every use case, for ever event. And the more you try to get those last couple percent to work, the bigger and messier the system becomes. I think the best way to get that last couple percent is with documentation and shellscripts. This works because generally speaking, the people with use cases that break the normal distro methods are informed enough to read docs and modify shellscripts. So for instance, on a machine that just assigns a static IP address and gateway, you might use a shellscript something like this: =========================================== #!/bin/sh hostname -F /etc/hostname ip link set dev lo up ip link set dev $eth down ip addr add 192.168.100.88/24 dev $eth ip link set dev $eth up ip route add default via 192.168.100.96 if ping -c1 192.168.100.96; then start_nfs.sh start_samba.sh start_apache.sh start_smtp_server.sh fi =========================================== In the preceding, the value of $eth would have already been determined by the device name finding shellscript described a few months ago on this mailing list. The ping -c1 192.168.100.96 is how you prove you have network connectivity. In reality, that and all the start_*.sh scripts would have probably been scripts that left evidence of their starting or failure somewhere. A slightly more sophisticated version of the preceding script would probably start up the network and everything needing it. And when it comes time to stop the network, it could be something like this: ========================================== stop_smtp_server.sh stop_apache.sh stop_samba.sh stop_nfs.sh if dependent_services_really_stopped.sh; then ip link set dev $eth down ========================================== A restart is just a stop and subsequent start. Here's my point: For 98% of all users, starting and stopping via sysvinit, you know, what we and Debian have right now, works just fine. But for those edge cases, rather than building ever more IF statements into ever huger init scripts, why not document a few skeleton shellscripts that can be custom modified to do *exactly* what's needed in the (presumably sophisticated) user's case? SteveT Steve Litt March 2016 featured book: Quit Joblessness: Start Your Own Business http://www.troubleshooters.com/startbiz _______________________________________________ Dng mailing list Dng@lists.dyne.org https://mailinglists.dyne.org/cgi-bin/mailman/listinfo/dng