diff options
-rw-r--r-- | bootscripts/ChangeLog | 9 | ||||
-rw-r--r-- | bootscripts/Makefile | 3 | ||||
-rw-r--r-- | bootscripts/lfs/init.d/udev_retry | 11 | ||||
-rw-r--r-- | chapter01/changelog.xml | 10 | ||||
-rw-r--r-- | chapter07/udev.xml | 58 | ||||
-rw-r--r-- | general.ent | 4 | ||||
-rw-r--r-- | packages.ent | 2 |
7 files changed, 68 insertions, 29 deletions
diff --git a/bootscripts/ChangeLog b/bootscripts/ChangeLog index fb3cc3138..1937ca4b0 100644 --- a/bootscripts/ChangeLog +++ b/bootscripts/ChangeLog @@ -1,4 +1,11 @@ -2100-09-18 +2011-10-06 Bryan Kadzban <bryan@linuxfromscratch.org> + + * Add configuration for udev_retry, and remove --type=failed (which does + not work with recent udev versions anyway, since no events can possibly + trigger it). Start with just the "rtc" subsystem. BLFS should eventually + add "sound" to this file, and perhaps others. + +2011-09-18 * Review and update of changes made in previous change. ** Rename /etc/sysconfig/init_params to /etc/sysconfig/rc.site. ** Move network services to /lib/services. diff --git a/bootscripts/Makefile b/bootscripts/Makefile index 5053e2698..65eafc888 100644 --- a/bootscripts/Makefile +++ b/bootscripts/Makefile @@ -60,6 +60,9 @@ files: create-dirs if [ ! -f ${EXTDIR}/sysconfig/modules ]; then \ install -m ${CONFMODE} lfs/sysconfig/modules ${EXTDIR}/sysconfig/ ;\ fi + if [ ! -f ${EXTDIR}/sysconfig/udev_retry ]; then \ + install -m ${CONFMODE} lfs/sysconfig/udev_retry ${EXTDIR}/sysconfig/ ;\ + fi if [ ! -f ${EXTDIR}/sysconfig/rc ]; then \ install -m ${CONFMODE} lfs/sysconfig/rc ${EXTDIR}/sysconfig/ ;\ fi diff --git a/bootscripts/lfs/init.d/udev_retry b/bootscripts/lfs/init.d/udev_retry index 8abf3da64..4f258ac19 100644 --- a/bootscripts/lfs/init.d/udev_retry +++ b/bootscripts/lfs/init.d/udev_retry @@ -7,6 +7,7 @@ # Authors : Alexander E. Patrakov # DJ Lucas - dj@linuxfromscratch.org # Update : Bruce Dubbs - bdubbs@linuxfromscratch.org +# Bryan Kadzban - # # Version : LFS 7.0 # @@ -44,8 +45,14 @@ case "${1}" in rm -f $file done - # Re-trigger the failed uevents in hope they will succeed now - /sbin/udevadm trigger --type=failed --action=add + # Re-trigger the uevents that may have failed, + # in hope they will succeed now + /bin/sed -e 's/#.*$//' /etc/sysconfig/udev_retry | /bin/grep -v '^$' | \ + while read line ; do + for subsystem in $line ; do + /sbin/udevadm trigger --subsystem-match=$subsystem --action=add + done + done # Now wait for udevd to process the uevents we triggered /sbin/udevadm settle diff --git a/chapter01/changelog.xml b/chapter01/changelog.xml index 63aade35b..6fd4daedc 100644 --- a/chapter01/changelog.xml +++ b/chapter01/changelog.xml @@ -37,6 +37,16 @@ --> <listitem> + <para>2011-10-06</para> + <itemizedlist> + <listitem> + <para>[bryan] - Fix the udev_retry script, and add an explanation + for how to configure it.</para> + </listitem> + </itemizedlist> + </listitem> + + <listitem> <para>2011-10-05</para> <itemizedlist> <listitem> diff --git a/chapter07/udev.xml b/chapter07/udev.xml index 5bb769caa..3ceb7704c 100644 --- a/chapter07/udev.xml +++ b/chapter07/udev.xml @@ -93,40 +93,52 @@ </sect3> <sect3> - <title>Udev Bootscript</title> - - <para>The <command>/etc/rc.d/init.d/udev</command> initscript takes care of creating - device nodes when Linux is booted. The script unsets the uevent handler - from the default of <command>/sbin/hotplug</command>. This is done - because the kernel no longer needs to call out to an external binary. - Instead <command>udevd</command> will listen on a netlink socket for - uevents that the kernel raises. Next, the bootscript copies any static - device nodes that exist in <filename + <title>Udev Bootscripts</title> + + <para>The <command>/etc/rc.d/init.d/udev</command> initscript takes care + of creating device nodes when Linux is booted. The script unsets the + uevent handler from the default of <command>/sbin/hotplug</command>. + This is done because the kernel no longer needs to call out to an + external binary. Instead <command>udevd</command> will listen on a + netlink socket for uevents that the kernel raises. Next, the bootscript + copies any static device nodes that exist in <filename class="directory">/lib/udev/devices</filename> to <filename - class="directory">/dev</filename>. This is necessary because some devices, - directories, and symlinks are needed before the dynamic device handling - processes are available during the early stages of booting a system, or - are required by <command>udevd</command> itself. Creating static device - nodes in <filename class="directory">/lib/udev/devices</filename> also - provides an easy workaround for devices that are not supported by the - dynamic device handling infrastructure. The bootscript then starts the - Udev daemon, <command>udevd</command>, which will act on any uevents it - receives. Finally, the bootscript forces the kernel to replay uevents for - any devices that have already been registered and then waits for + class="directory">/dev</filename>. This is necessary because some + devices, directories, and symlinks are needed before the dynamic device + handling processes are available during the early stages of booting a + system, or are required by <command>udevd</command> itself. Creating + static device nodes in <filename + class="directory">/lib/udev/devices</filename> also provides an easy + workaround for devices that are not supported by the dynamic device + handling infrastructure. The bootscript then starts the Udev daemon, + <command>udevd</command>, which will act on any uevents it receives. + Finally, the bootscript forces the kernel to replay uevents for any + devices that have already been registered and then waits for <command>udevd</command> to handle them.</para> + <para>The <command>/etc/rc.d/init.d/udev_retry</command> initscript takes + care of re-triggering events for subsystems whose rules may rely on + filesystems that are not mounted until the <command>mountfs</command> + script is run (in particular, /usr and /var may cause this). This script + runs after the <command>mountfs</command> script, so those rules (if + re-triggered) should succeed the second time around. It is configured + from the <filename>/etc/sysconfig/udev_retry</filename> file; any words + in this file other than comments are considered subsystem names to + trigger at retry time. (To find the subsystem of a device, use + <command>udevadm info --attribute-walk</command>.)</para> + </sect3> <sect3> <title>Device Node Creation</title> - <para>To obtain the right major and minor number for a device, Udev relies - on the information provided by <systemitem + <para>To obtain the right major and minor number for a device, Udev + relies on the information provided by <systemitem class="filesystem">sysfs</systemitem> in <filename class="directory">/sys</filename>. For example, <filename>/sys/class/tty/vcs/dev</filename> contains the string - <quote>7:0</quote>. This string is used by <command>udevd</command> - to create a device node with major number <emphasis>7</emphasis> and minor + <quote>7:0</quote>. This string is used by <command>udevd</command> to + create a device node with major number <emphasis>7</emphasis> and minor <emphasis>0</emphasis>. The names and permissions of the nodes created under the <filename class="directory">/dev</filename> directory are determined by rules specified in the files within the <filename diff --git a/general.ent b/general.ent index 994cce4b5..f622d36f6 100644 --- a/general.ent +++ b/general.ent @@ -1,5 +1,5 @@ -<!ENTITY version "SVN-20111005"> -<!ENTITY releasedate "Oc5 5, 2011"> +<!ENTITY version "SVN-20111006"> +<!ENTITY releasedate "Oct 6, 2011"> <!ENTITY copyrightdate "1999-2011"><!-- jhalfs needs a literal dash, not – --> <!ENTITY milestone "7.0"> <!ENTITY generic-version "development"> <!-- Use "development", "testing", or "x.y[-pre{x}]" --> diff --git a/packages.ent b/packages.ent index 62c32c83b..813fcfb12 100644 --- a/packages.ent +++ b/packages.ent @@ -298,7 +298,7 @@ <!ENTITY less-ch6-du "3.5 MB"> <!ENTITY less-ch6-sbu "less than 0.1 SBU"> -<!ENTITY lfs-bootscripts-version "20110926"> <!-- Scripts depend on this format --> +<!ENTITY lfs-bootscripts-version "20111006"> <!-- Scripts depend on this format --> <!ENTITY lfs-bootscripts-size "BOOTSCRIPTS-SIZE KB"> <!-- Updated in Makefile --> <!ENTITY lfs-bootscripts-url "&downloads-root;lfs-bootscripts-&lfs-bootscripts-version;.tar.bz2"> <!ENTITY lfs-bootscripts-md5 "BOOTSCRIPTS-MD5SUM"> <!-- Updated in Makefile --> |