]> pere.pagekite.me Git - homepage.git/blobdiff - blog/index.rss
Generated.
[homepage.git] / blog / index.rss
index 0fa8b44add7a0ad04b65fafe9727560ed09f52b4..453efc0fcab143a813951c9938381930abe4eec6 100644 (file)
@@ -6,6 +6,205 @@
                 <link>http://people.skolelinux.org/pere/blog/</link>
                 <atom:link href="http://people.skolelinux.org/pere/blog/index.rss" rel="self" type="application/rss+xml" />
        
+       <item>
+               <title>Debian init.d boot script example for rsyslog</title>
+               <link>http://people.skolelinux.org/pere/blog/Debian_init_d_boot_script_example_for_rsyslog.html</link>
+               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Debian_init_d_boot_script_example_for_rsyslog.html</guid>
+                <pubDate>Sat, 2 Nov 2013 22:40:00 +0100</pubDate>
+               <description>&lt;p&gt;If one of the points of switching to a new init system in Debian is
+&lt;a href=&quot;http://thomas.goirand.fr/blog/?p=147&quot;&gt;to get rid of huge
+init.d scripts&lt;/a&gt;, I doubt we need to switch away from sysvinit and
+init.d scripts at all.  Here is an example init.d script, ie a rewrite
+of /etc/init.d/rsyslog:&lt;/p&gt;
+
+&lt;p&gt;&lt;pre&gt;
+#!/lib/init/init-d-script
+### BEGIN INIT INFO
+# Provides:          rsyslog
+# Required-Start:    $remote_fs $time
+# Required-Stop:     umountnfs $time
+# X-Stop-After:      sendsigs
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Short-Description: enhanced syslogd
+# Description:       Rsyslog is an enhanced multi-threaded syslogd.
+#                    It is quite compatible to stock sysklogd and can be 
+#                    used as a drop-in replacement.
+### END INIT INFO
+DESC=&quot;enhanced syslogd&quot;
+DAEMON=/usr/sbin/rsyslogd
+&lt;/pre&gt;&lt;/p&gt;
+
+&lt;p&gt;Pretty minimalistic to me... For the record, the original sysv-rc
+script was 137 lines, and the above is just 15 lines, most of the meta
+info/comments.&lt;/p&gt;
+
+&lt;p&gt;How to do this, you ask?  Well, one create a new script
+/lib/init/init-d-script looking something like this:
+
+&lt;p&gt;&lt;pre&gt;
+#!/bin/sh
+
+# Define LSB log_* functions.
+# Depend on lsb-base (&gt;= 3.2-14) to ensure that this file is present
+# and status_of_proc is working.
+. /lib/lsb/init-functions
+
+#
+# Function that starts the daemon/service
+
+#
+do_start()
+{
+       # Return
+       #   0 if daemon has been started
+       #   1 if daemon was already running
+       #   2 if daemon could not be started
+       start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test &gt; /dev/null \
+               || return 1
+       start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
+               $DAEMON_ARGS \
+               || return 2
+       # Add code here, if necessary, that waits for the process to be ready
+       # to handle requests from services started subsequently which depend
+       # on this one.  As a last resort, sleep for some time.
+}
+
+#
+# Function that stops the daemon/service
+#
+do_stop()
+{
+       # Return
+       #   0 if daemon has been stopped
+       #   1 if daemon was already stopped
+       #   2 if daemon could not be stopped
+       #   other if a failure occurred
+       start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
+       RETVAL=&quot;$?&quot;
+       [ &quot;$RETVAL&quot; = 2 ] &amp;&amp; return 2
+       # Wait for children to finish too if this is a daemon that forks
+       # and if the daemon is only ever run from this initscript.
+       # If the above conditions are not satisfied then add some other code
+       # that waits for the process to drop all resources that could be
+       # needed by services started subsequently.  A last resort is to
+       # sleep for some time.
+       start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
+       [ &quot;$?&quot; = 2 ] &amp;&amp; return 2
+       # Many daemons don&#39;t delete their pidfiles when they exit.
+       rm -f $PIDFILE
+       return &quot;$RETVAL&quot;
+}
+
+#
+# Function that sends a SIGHUP to the daemon/service
+#
+do_reload() {
+       #
+       # If the daemon can reload its configuration without
+       # restarting (for example, when it is sent a SIGHUP),
+       # then implement that here.
+       #
+       start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
+       return 0
+}
+
+SCRIPTNAME=$1
+scriptbasename=&quot;$(basename $1)&quot;
+echo &quot;SN: $scriptbasename&quot;
+if [ &quot;$scriptbasename&quot; != &quot;init-d-library&quot; ] ; then
+    script=&quot;$1&quot;
+    shift
+    . $script
+else
+    exit 0
+fi
+
+NAME=$(basename $DAEMON)
+PIDFILE=/var/run/$NAME.pid
+
+# Exit if the package is not installed
+#[ -x &quot;$DAEMON&quot; ] || exit 0
+
+# Read configuration variable file if it is present
+[ -r /etc/default/$NAME ] &amp;&amp; . /etc/default/$NAME
+
+# Load the VERBOSE setting and other rcS variables
+. /lib/init/vars.sh
+
+case &quot;$1&quot; in
+  start)
+       [ &quot;$VERBOSE&quot; != no ] &amp;&amp; log_daemon_msg &quot;Starting $DESC&quot; &quot;$NAME&quot;
+       do_start
+       case &quot;$?&quot; in
+               0|1) [ &quot;$VERBOSE&quot; != no ] &amp;&amp; log_end_msg 0 ;;
+               2) [ &quot;$VERBOSE&quot; != no ] &amp;&amp; log_end_msg 1 ;;
+       esac
+       ;;
+  stop)
+       [ &quot;$VERBOSE&quot; != no ] &amp;&amp; log_daemon_msg &quot;Stopping $DESC&quot; &quot;$NAME&quot;
+       do_stop
+       case &quot;$?&quot; in
+               0|1) [ &quot;$VERBOSE&quot; != no ] &amp;&amp; log_end_msg 0 ;;
+               2) [ &quot;$VERBOSE&quot; != no ] &amp;&amp; log_end_msg 1 ;;
+       esac
+       ;;
+  status)
+       status_of_proc &quot;$DAEMON&quot; &quot;$NAME&quot; &amp;&amp; exit 0 || exit $?
+       ;;
+  #reload|force-reload)
+       #
+       # If do_reload() is not implemented then leave this commented out
+       # and leave &#39;force-reload&#39; as an alias for &#39;restart&#39;.
+       #
+       #log_daemon_msg &quot;Reloading $DESC&quot; &quot;$NAME&quot;
+       #do_reload
+       #log_end_msg $?
+       #;;
+  restart|force-reload)
+       #
+       # If the &quot;reload&quot; option is implemented then remove the
+       # &#39;force-reload&#39; alias
+       #
+       log_daemon_msg &quot;Restarting $DESC&quot; &quot;$NAME&quot;
+       do_stop
+       case &quot;$?&quot; in
+         0|1)
+               do_start
+               case &quot;$?&quot; in
+                       0) log_end_msg 0 ;;
+                       1) log_end_msg 1 ;; # Old process is still running
+                       *) log_end_msg 1 ;; # Failed to start
+               esac
+               ;;
+         *)
+               # Failed to stop
+               log_end_msg 1
+               ;;
+       esac
+       ;;
+  *)
+       echo &quot;Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}&quot; &gt;&amp;2
+       exit 3
+       ;;
+esac
+
+:
+&lt;/pre&gt;&lt;/p&gt;
+
+&lt;p&gt;It is based on /etc/init.d/skeleton, and could be improved quite a
+lot.  I did not really polish the approach, so it might not always
+work out of the box, but you get the idea.  I did not try very hard to
+optimize it nor make it more robust either.&lt;/p&gt;
+
+&lt;p&gt;A better argument for switching init system in Debian than reducing
+the size of init scripts (which is a good thing to do anyway), is to
+get boot system that is able to handle the kernel events sensibly and
+robustly, and do not depend on the boot to run sequentially.  The boot
+and the kernel have not behaved sequentially in year.&lt;/p&gt;
+</description>
+       </item>
+       
        <item>
                <title>Browser plugin for SPICE (spice-xpi) uploaded to Debian</title>
                <link>http://people.skolelinux.org/pere/blog/Browser_plugin_for_SPICE__spice_xpi__uploaded_to_Debian.html</link>
@@ -514,72 +713,5 @@ lvresize + resize2fs in tty 2 while installing).&lt;/p&gt;
 </description>
        </item>
        
-       <item>
-               <title>Videos about the Freedombox project - for inspiration and learning</title>
-               <link>http://people.skolelinux.org/pere/blog/Videos_about_the_Freedombox_project___for_inspiration_and_learning.html</link>
-               <guid isPermaLink="true">http://people.skolelinux.org/pere/blog/Videos_about_the_Freedombox_project___for_inspiration_and_learning.html</guid>
-                <pubDate>Fri, 27 Sep 2013 14:10:00 +0200</pubDate>
-               <description>&lt;p&gt;The &lt;a href=&quot;http://www.freedomboxfoundation.org/&quot;&gt;Freedombox
-project&lt;/a&gt; have been going on for a while, and have presented the
-vision, ideas and solution several places.  Here is a little
-collection of videos of talks and presentation of the project.&lt;/p&gt;
-
-&lt;ul&gt;
-
-&lt;li&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=ukvUz5taxvA&quot;&gt;FreedomBox -
-2,5 minute marketing film&lt;/a&gt; (Youtube)&lt;/li&gt;
-
-&lt;li&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=SzW25QTVWsE&quot;&gt;Eben Moglen
-discusses the Freedombox on CBS news 2011&lt;/a&gt; (Youtube)&lt;/li&gt;
-
-&lt;li&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=Ae8SZbxfE0g&quot;&gt;Eben Moglen -
-Freedom in the Cloud - Software Freedom, Privacy and and Security for
-Web 2.0 and Cloud computing at ISOC-NY Public Meeting 2010&lt;/a&gt;
-(Youtube)&lt;/li&gt;
-
-&lt;li&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=vNaIji_3xBE&quot;&gt;Fosdem 2011
-Keynote by Eben Moglen presenting the Freedombox&lt;/a&gt; (Youtube)&lt;/li&gt;
-
-&lt;li&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=9bDDUyJSQ9s&quot;&gt;Presentation of
-the Freedombox by James Vasile at Elevate in Gratz 2011&lt;/a&gt; (Youtube)&lt;/li&gt;
-
-&lt;li&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=zQTmnk27g9s&quot;&gt; Freedombox -
-Discovery, Identity, and Trust by Nick Daly at Freedombox Hackfest New
-York City in 2012&lt;/a&gt; (Youtube)&lt;/li&gt;
-
-&lt;li&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=tkbSB4Ba7Ck&quot;&gt;Introduction
-to the Freedombox at Freedombox Hackfest New York City in 2012&lt;/a&gt;
-(Youtube)&lt;/li&gt;
-
-&lt;li&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=z-P2Jaeg0aQ&quot;&gt;Freedom, Out
-of the Box! by Bdale Garbee at linux.conf.au Ballarat, 2012&lt;/a&gt; (Youtube) &lt;/li&gt;
-
-&lt;li&gt;&lt;a href=&quot;https://archive.fosdem.org/2013/schedule/event/freedombox/&quot;&gt;Freedombox
-1.0 by Eben Moglen and Bdale Garbee at Fosdem 2013&lt;/a&gt; (FOSDEM) &lt;/li&gt;
-
-&lt;li&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=e1LpYX2zVYg&quot;&gt;What is the
-FreedomBox today by Bdale Garbee at Debconf13 in Vaumarcus
-2013&lt;/a&gt; (Youtube)&lt;/li&gt;
-
-&lt;/ul&gt;
-
-&lt;p&gt;A larger list is available from
-&lt;a href=&quot;https://wiki.debian.org/FreedomBox/TalksAndPresentations&quot;&gt;the
-Freedombox Wiki&lt;/a&gt;.&lt;/p&gt;
-
-&lt;p&gt;On other news, I am happy to report that Freedombox based on Debian
-Jessie is coming along quite well, and soon both Owncloud and using
-Tor should be available for testers of the Freedombox solution. :) In
-a few weeks I hope everything needed to test it is included in Debian.
-The withsqlite package is already in Debian, and the plinth package is
-pending in NEW.  The third and vital part of that puzzle is the
-metapackage/setup framework, which is still pending an upload.  Join
-us on &lt;a href=&quot;irc://irc.debian.org:6667/%23freedombox&quot;&gt;IRC
-(#freedombox on irc.debian.org)&lt;/a&gt; and
-&lt;a href=&quot;http://lists.alioth.debian.org/mailman/listinfo/freedombox-discuss&quot;&gt;the
-mailing list&lt;/a&gt; if you want to help make this vision come true.&lt;/p&gt;
-</description>
-       </item>
-       
         </channel>
 </rss>