tags 787152 + patch thanks Hi,
Alan: thanks for reporting this issue; and for supplying the nice patch. See also https://lists.debian.org/<20160530145917.ge...@beskar.mdcc.cx> . (Working on this is still on my todo-list.) Bye, Joost On Fri, May 29, 2015 at 03:17:10PM +0800, Alan Lee wrote: > Package: debian-faq > > Section 11.5/11.6 - Replace Boot-up method from init to systemd. > > Proposed change in patch file attached. > --- customizing.sgml 2015-05-29 14:15:36.792753648 +0800 > +++ customizing.sgml.new 2015-05-29 15:08:09.037752850 +0800 > @@ -52,96 +52,32 @@ > <sect id="booting">Every distribution seems to have a different boot-up > method. Tell me about Debian's. > > -<p>Like all Unices, Debian boots up by executing the program <tt>init</tt> > -<footnote>As of this writing, the unstable release for Debian GNU/Linux is > -replacing sysvinit with <prgn/systemd/, a system and service manager for > Linux. For > -more information see <url id="https://wiki.debian.org/systemd">.</footnote>. > -The configuration file for <tt>init</tt> (which is <tt>/etc/inittab</tt>) > -specifies that the first script to be executed should be > -<tt>/etc/init.d/rcS</tt>. This script runs all of the scripts in > -<tt>/etc/rcS.d/</tt> by forking subprocess > -to perform initialization such as to check and to mount file systems, > -to load modules, to start the network services, to set the clock, and to > -perform other initialization. > - > -<p>After completing the boot process, <tt>init</tt> executes all start > -scripts in a directory specified by the default runlevel (this runlevel > -is given by the entry for <tt>id</tt> in <tt>/etc/inittab</tt>). > -Like most <!-- all? SGK --> System V compatible Unices, Linux has 7 > runlevels: > -<list> > - <item>0 (halt the system), > - <item>1 (single-user mode), > - <item>2 through 5 (various multi-user modes), and > - <item>6 (reboot the system). > -</list> > -Debian systems come with id=2, which indicates that the default > -runlevel will be '2' when the multi-user state is entered, and the > -scripts in <tt>/etc/rc2.d/</tt> will be run. > - > -<p>Debian uses dependency-based boot ordering through <prgn/insserv/, using > the > -LSB headers in each script under <tt>/etc/init.d/</tt>, as well as > -parallel concurrent booting through the use of <prgn/startpar/ to speed > -up the boot process. > - > -<p>The scripts in any of the directories, <tt>/etc/rcN.d/</tt> > -are just symbolic links back to scripts in <tt>/etc/init.d/</tt>. However, > -the <em>names</em> of the files in each of the <tt>/etc/rcN.d/</tt> > -directories are selected to indicate the <em>way</em> the scripts in > -<tt>/etc/init.d/</tt> will be run. Specifically, before entering any > -runlevel, all the scripts beginning with 'K' are run; these scripts kill > -services. Then all the scripts beginning with 'S' are run; these scripts > -start services. The two-digit number following the 'K' or 'S' indicates > -the order in which the script is run. Lower numbered scripts are executed > -first. > - > -<p>This approach works because the scripts in <tt>/etc/init.d/</tt> all > -take an argument which can be either `start', `stop', `reload', `restart' > -or `force-reload' and will then do the task indicated by the argument. > -These scripts can be used even after a system has been booted, to control > -various processes. > - > -<p>For example, with the argument `reload' the command > - <example>/etc/init.d/sendmail reload</example> > -sends the sendmail daemon a signal to reread its configuration file. > - > -<p>Note that <prgn/invoke-rc.d/ should not be used to call the > -<tt>/etc/init.d/</tt> scripts, <prgn/service/ should be used instead. > - > -<sect id="custombootscripts">What other facilities are provided > - to customize the boot process besides > - <tt>rc.local</tt>? > - > -<p>The <tt>rc.local</tt> script is executed at the end of each multiuser > -runlevel. In Debian it is configured to do nothing. This provides > -customisation of the boot process, but might not be sufficient > -for all situations. > - > -<p>Suppose a system needs to execute script <tt>foo</tt> on start-up, > -or on entry to a particular (System V) runlevel. Then the system > -administrator should: > -<list> > - <item>Enter the script <tt>foo</tt> into the directory > <tt>/etc/init.d/</tt>. > - <item>Run the Debian command <tt>update-rc.d</tt> with appropriate > - arguments, to specify which runlevels should start the service, and which > - runlevels should stop the service. > - <item>Consider rebooting the system to check that the service starts > - correctly (assuming that you've asked for it to be started in the > - default runlevel). Otherwise, manually start it by running > - `<tt>/etc/init.d/foo start</tt>'. > -</list> > - > -<p>One might, for example, cause the script <tt>foo</tt> to execute at > -boot-up, by putting it in <tt>/etc/init.d/</tt> and running > -<tt>update-rc.d foo defaults 19</tt>. The argument `<tt>defaults</tt>' > refers > -to the default runlevels, which means (at least in absence of any LSB comment > -block to the contrary) to start the service in runlevels 2 through 5, > -and to stop the service in runlevels 0, 1 and 6. > -(Any LSB Default-Start and Default-Stop directives in <tt>foo</tt> take > -precedence when using the sysv-rc version of update-rc.d, but are > -ignored by the current (v0.8.10) file-rc version of update-rc.d.) > -The argument `<tt>19</tt>' ensures that <tt>foo</tt> is called after all > -scripts whose number is less than 19 have completed, and before all scripts > -whose number is 20 or greater. > +<p>Like most Linux distributions, Debian boots up by executing the program > +<tt>systemd</tt>. Systemd provides the concept of targets similar to runlevel > +which was found from Unices and previous version of Debian GNU/Linux. You > may > +check the default target by the command > + > + <example>systemctl get-default</example> > + > +<p>During boot-up, systemd start the services or other targets listed in the > +default target file <tt>/lib/systemd/system/default.target</tt>. These > +services and targets files are installed during Debian package installation. > +If you explicitly do not wish to run the services during boot-up, instead of > +remove the installed package, you can run the command > + > + <example>systemctl disable package.service</example> > + > +<p>where package.service is the services files installed in > +<tt>/lib/systemd/system</tt>. > + > +<p>Service file <tt>/lib/systemd/rc.local.service</tt> provides an easy way > to > +run customized scripts in the file <tt>/etc/rc.local</tt> after boot-up > +complete to ease the system upgrade from old version using <tt>init</tt>. > +While this script will fail if it has interaction to the console such as > +asking user password or clear the screen. You can check the status of any > +service by the command > + > + <example>systemctl status package.service</example> > > <sect id="interconffiles">How does the package management system deal with > packages that contain configuration files for other packages?