[bootlin/training-materials updates] master: slides: rename sysdev-linux-intro-modules to kernel-intro-modules (46849b81)

Thomas Petazzoni thomas.petazzoni at bootlin.com
Fri Sep 9 22:25:45 CEST 2022


Repository : https://github.com/bootlin/training-materials
On branch  : master
Link       : https://github.com/bootlin/training-materials/commit/46849b813e7120466aea70f2d22fe7d8828e4f33

>---------------------------------------------------------------

commit 46849b813e7120466aea70f2d22fe7d8828e4f33
Author: Thomas Petazzoni <thomas.petazzoni at bootlin.com>
Date:   Fri Sep 9 22:22:48 2022 +0200

    slides: rename sysdev-linux-intro-modules to kernel-intro-modules
    
    This chapter is now only used by the Linux kernel training, so the
    "sysdev" prefix didn't make much sense.
    
    Signed-off-by: Thomas Petazzoni <thomas.petazzoni at bootlin.com>


>---------------------------------------------------------------

46849b813e7120466aea70f2d22fe7d8828e4f33
 mk/linux-kernel.mk                                 |   2 +-
 .../kernel-intro-modules/kernel-intro-modules.tex  | 153 +++++++
 .../modules-to-access-rootfs.dia                   | 483 +++++++++++++++++++++
 .../modules-to-access-rootfs.dia                   | 483 ---------------------
 .../sysdev-linux-intro-modules.tex                 | 153 -------
 5 files changed, 637 insertions(+), 637 deletions(-)

diff --git a/mk/linux-kernel.mk b/mk/linux-kernel.mk
index 6fff5b5a..40918318 100644
--- a/mk/linux-kernel.mk
+++ b/mk/linux-kernel.mk
@@ -17,7 +17,7 @@ LINUX_KERNEL_SLIDES = \
 		sysdev-kernel-building \
 		sysdev-kernel-booting \
 		kernel-board-setup-kernel-compiling-and-booting-labs \
-		sysdev-linux-intro-modules \
+		kernel-intro-modules \
 		kernel-driver-development-modules \
 		kernel-driver-development-lab-modules \
 		kernel-driver-development-general-apis \
diff --git a/slides/kernel-intro-modules/kernel-intro-modules.tex b/slides/kernel-intro-modules/kernel-intro-modules.tex
new file mode 100644
index 00000000..4675595b
--- /dev/null
+++ b/slides/kernel-intro-modules/kernel-intro-modules.tex
@@ -0,0 +1,153 @@
+\subsection{Using kernel modules}
+
+\begin{frame}
+  \frametitle{Advantages of modules}
+  \begin{columns}
+    \column{0.7\textwidth}
+      \begin{itemize}
+      \item Modules make it easy to develop drivers without rebooting:
+        load, test, unload, rebuild, load...
+      \item Useful to keep the kernel image size to the minimum (essential
+        in GNU/Linux distributions for PCs).
+      \item Also useful to reduce boot time: you don't spend time
+        initializing devices and kernel features that you only need later.
+      \item Caution: once loaded, have full control and privileges in the
+        system. No particular protection. That's why only the \code{root} user
+        can load and unload modules.
+      \item To increase security, possibility to allow only signed modules,
+        or to disable module support entirely.
+      \end{itemize}
+    \column{0.3\textwidth}
+      \includegraphics[width=\textwidth]{slides/kernel-intro-modules/modules-to-access-rootfs.pdf}
+  \end{columns}
+\end{frame}
+
+\begin{frame}
+  \frametitle{Module dependencies}
+  \begin{itemize}
+  \item Some kernel modules can depend on other modules,
+    which need to be loaded first.
+  \item Example: the \code{ubifs} module depends on the
+    \code{ubi} and \code{mtd} modules.
+  \item Dependencies are described
+    both in \code{/lib/modules/<kernel-version>/modules.dep}
+    and in \code{/lib/modules/<kernel-version>/modules.dep.bin} (binary hashed format)\\
+    These files are generated when you run \code{make modules_install}.
+  \end{itemize}
+\end{frame}
+
+\begin{frame}
+  \frametitle{Kernel log}
+
+  When a new module is loaded, related information is available in the
+  kernel log.
+  \begin{itemize}
+  \item The kernel keeps its messages in a circular buffer (so that it
+    doesn't consume more memory with many messages)
+  \item Kernel log messages are available through the \code{dmesg}
+    command ({\bf d}iagnostic {\bf mes}sa{\bf g}e)
+  \item Kernel log messages are also displayed in the system console
+    (console messages can be filtered by level using the
+    \code{loglevel} kernel command line parameter,
+     or completely disabled with the
+    \code{quiet} parameter). Example:\\
+    \code{console=ttyS0 root=/dev/mmcblk0p2 loglevel=5} 
+  \item Note that you can write to the kernel log from user space too.
+    That's useful when your device's serial console is being monitored
+    for critical messages:
+    \code{echo "<n>Debug info" > /dev/kmsg}
+  \end{itemize}
+\end{frame}
+
+\begin{frame}
+  \frametitle{Module utilities (1)}
+  \code{<module_name>}: name of the module file without the trailing \code{.ko}\\
+  \begin{itemize}
+  \item \code{modinfo <module_name>} (for modules in \code{/lib/modules})\\
+    \code{modinfo <module_path>.ko}\\
+    Gets information about a module without loading it: parameters, license,
+    description and dependencies.\\
+  \item \code{sudo insmod <module_path>.ko}\\
+    Tries to load the given module. The full path to the module object
+    file must be given.
+  \end{itemize}
+\end{frame}
+
+\begin{frame}[fragile]
+  \frametitle{Understanding module loading issues}
+  \begin{itemize}
+  \item When loading a module fails, \code{insmod} often doesn't give
+    you enough details!
+  \item Details are often available in the kernel log.
+  \item Example:\\
+\scriptsize
+\begin{verbatim}
+$ sudo insmod ./intr_monitor.ko
+insmod: error inserting './intr_monitor.ko': -1 Device or resource busy
+$ dmesg
+[17549774.552000] Failed to register handler for irq channel 2
+\end{verbatim}
+  \end{itemize}
+\end{frame}
+
+\begin{frame}
+  \frametitle{Module utilities (2)}
+  \begin{itemize}
+  \item \code{sudo modprobe <top_module_name>}\\
+    Most common usage of \code{modprobe}: tries to load all the
+    dependencies of the given top module, and then this module. Lots of
+    other options are available. \code{modprobe} automatically looks in
+    \code{/lib/modules/<version>/} for the object file corresponding
+    to the given module name.
+  \item \code{lsmod}\\
+    Displays the list of loaded modules\\
+    Compare its output with the contents of \code{/proc/modules}!
+  \end{itemize}
+\end{frame}
+
+\begin{frame}
+  \frametitle{Module utilities (3)}
+  \begin{itemize}
+  \item \code{sudo rmmod <module_name>}\\
+    Tries to remove the given module.\\
+    Will only be allowed if the module is no longer in use (for
+    example, no more processes opening a device file)
+  \item \code{sudo modprobe -r <top_module_name>}\\
+    Tries to remove the given top module and all its no longer needed dependencies
+  \end{itemize}
+\end{frame}
+
+\begin{frame}
+  \frametitle{Passing parameters to modules}
+  \begin{itemize}
+  \item Find available parameters:\\
+    \code{modinfo usb-storage}
+  \item Through \code{insmod}:\\
+    \code{sudo insmod ./usb-storage.ko delay_use=0}
+  \item Through \code{modprobe}:\\
+    Set parameters in \code{/etc/modprobe.conf} or in any file in \code{/etc/modprobe.d/}:\\
+    \code{options usb-storage delay_use=0}
+  \item Through the kernel command line, when the driver is built statically into the kernel:\\
+    \code{usb-storage.delay_use=0}
+    \begin{itemize}
+    \item \code{usb-storage} is the {\em driver name}
+    \item \code{delay_use} is the {\em driver parameter name}. It
+      specifies a delay before accessing a USB storage device (useful for
+      rotating devices).
+    \item \code{0} is the {\em driver parameter value}
+    \end{itemize}
+  \end{itemize}
+\end{frame}
+
+\begin{frame}
+  \frametitle{Check module parameter values}
+  How to find/edit the current values for the parameters of a loaded module?
+  \begin{itemize}
+  \item Check \code{/sys/module/<name>/parameters}.
+  \item There is one file per parameter, containing the parameter value.
+  \item Also possible to change parameter values if these files have
+        write permissions (depends on the module code).
+  \item Example:\\
+	\code{echo 0 > /sys/module/usb_storage/parameters/delay_use}
+  \end{itemize}
+\end{frame}
diff --git a/slides/kernel-intro-modules/modules-to-access-rootfs.dia b/slides/kernel-intro-modules/modules-to-access-rootfs.dia
new file mode 100644
index 00000000..740c813e
--- /dev/null
+++ b/slides/kernel-intro-modules/modules-to-access-rootfs.dia
@@ -0,0 +1,483 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<dia:diagram xmlns:dia="http://www.lysator.liu.se/~alla/dia/">
+  <dia:diagramdata>
+    <dia:attribute name="background">
+      <dia:color val="#ffffffff"/>
+    </dia:attribute>
+    <dia:attribute name="pagebreak">
+      <dia:color val="#000099ff"/>
+    </dia:attribute>
+    <dia:attribute name="paper">
+      <dia:composite type="paper">
+        <dia:attribute name="name">
+          <dia:string>#Letter#</dia:string>
+        </dia:attribute>
+        <dia:attribute name="tmargin">
+          <dia:real val="2.5399999618530273"/>
+        </dia:attribute>
+        <dia:attribute name="bmargin">
+          <dia:real val="2.5399999618530273"/>
+        </dia:attribute>
+        <dia:attribute name="lmargin">
+          <dia:real val="2.5399999618530273"/>
+        </dia:attribute>
+        <dia:attribute name="rmargin">
+          <dia:real val="2.5399999618530273"/>
+        </dia:attribute>
+        <dia:attribute name="is_portrait">
+          <dia:boolean val="true"/>
+        </dia:attribute>
+        <dia:attribute name="scaling">
+          <dia:real val="1"/>
+        </dia:attribute>
+        <dia:attribute name="fitto">
+          <dia:boolean val="false"/>
+        </dia:attribute>
+      </dia:composite>
+    </dia:attribute>
+    <dia:attribute name="grid">
+      <dia:composite type="grid">
+        <dia:attribute name="dynamic">
+          <dia:boolean val="true"/>
+        </dia:attribute>
+        <dia:attribute name="width_x">
+          <dia:real val="1"/>
+        </dia:attribute>
+        <dia:attribute name="width_y">
+          <dia:real val="1"/>
+        </dia:attribute>
+        <dia:attribute name="visible_x">
+          <dia:int val="1"/>
+        </dia:attribute>
+        <dia:attribute name="visible_y">
+          <dia:int val="1"/>
+        </dia:attribute>
+        <dia:composite type="color"/>
+      </dia:composite>
+    </dia:attribute>
+    <dia:attribute name="color">
+      <dia:color val="#d8e5e5ff"/>
+    </dia:attribute>
+    <dia:attribute name="guides">
+      <dia:composite type="guides">
+        <dia:attribute name="hguides"/>
+        <dia:attribute name="vguides"/>
+      </dia:composite>
+    </dia:attribute>
+    <dia:attribute name="display">
+      <dia:composite type="display">
+        <dia:attribute name="antialiased">
+          <dia:boolean val="true"/>
+        </dia:attribute>
+        <dia:attribute name="snap-to-grid">
+          <dia:boolean val="true"/>
+        </dia:attribute>
+        <dia:attribute name="snap-to-object">
+          <dia:boolean val="true"/>
+        </dia:attribute>
+        <dia:attribute name="show-grid">
+          <dia:boolean val="true"/>
+        </dia:attribute>
+        <dia:attribute name="show-connection-points">
+          <dia:boolean val="true"/>
+        </dia:attribute>
+      </dia:composite>
+    </dia:attribute>
+  </dia:diagramdata>
+  <dia:layer name="Arrière-plan" visible="true" connectable="true" active="true">
+    <dia:object type="Standard - Box" version="0" id="O0">
+      <dia:attribute name="obj_pos">
+        <dia:point val="20,3.95"/>
+      </dia:attribute>
+      <dia:attribute name="obj_bb">
+        <dia:rectangle val="19.95,3.9;38.05,6.05"/>
+      </dia:attribute>
+      <dia:attribute name="elem_corner">
+        <dia:point val="20,3.95"/>
+      </dia:attribute>
+      <dia:attribute name="elem_width">
+        <dia:real val="18"/>
+      </dia:attribute>
+      <dia:attribute name="elem_height">
+        <dia:real val="2.0499999999999998"/>
+      </dia:attribute>
+      <dia:attribute name="border_width">
+        <dia:real val="0.10000000149011612"/>
+      </dia:attribute>
+      <dia:attribute name="border_color">
+        <dia:color val="#d9cb2fff"/>
+      </dia:attribute>
+      <dia:attribute name="inner_color">
+        <dia:color val="#fff8a8ff"/>
+      </dia:attribute>
+      <dia:attribute name="show_background">
+        <dia:boolean val="true"/>
+      </dia:attribute>
+      <dia:attribute name="corner_radius">
+        <dia:real val="0.59999999999999998"/>
+      </dia:attribute>
+    </dia:object>
+    <dia:object type="Standard - Text" version="1" id="O1">
+      <dia:attribute name="obj_pos">
+        <dia:point val="29,4.975"/>
+      </dia:attribute>
+      <dia:attribute name="obj_bb">
+        <dia:rectangle val="27.74,4.01488;30.26,5.22646"/>
+      </dia:attribute>
+      <dia:attribute name="text">
+        <dia:composite type="text">
+          <dia:attribute name="string">
+            <dia:string>#Kernel#</dia:string>
+          </dia:attribute>
+          <dia:attribute name="font">
+            <dia:font family="Latin Modern Sans" style="80" name="Courier"/>
+          </dia:attribute>
+          <dia:attribute name="height">
+            <dia:real val="1.0583332926034927"/>
+          </dia:attribute>
+          <dia:attribute name="pos">
+            <dia:point val="29,4.975"/>
+          </dia:attribute>
+          <dia:attribute name="color">
+            <dia:color val="#000000ff"/>
+          </dia:attribute>
+          <dia:attribute name="alignment">
+            <dia:enum val="1"/>
+          </dia:attribute>
+        </dia:composite>
+      </dia:attribute>
+      <dia:attribute name="valign">
+        <dia:enum val="3"/>
+      </dia:attribute>
+      <dia:connections>
+        <dia:connection handle="0" to="O0" connection="8"/>
+      </dia:connections>
+    </dia:object>
+    <dia:object type="Standard - Line" version="0" id="O2">
+      <dia:attribute name="obj_pos">
+        <dia:point val="29,6.04955"/>
+      </dia:attribute>
+      <dia:attribute name="obj_bb">
+        <dia:rectangle val="28.6382,5.99955;29.3618,11.1"/>
+      </dia:attribute>
+      <dia:attribute name="conn_endpoints">
+        <dia:point val="29,6.04955"/>
+        <dia:point val="29,11.05"/>
+      </dia:attribute>
+      <dia:attribute name="numcp">
+        <dia:int val="1"/>
+      </dia:attribute>
+      <dia:attribute name="end_arrow">
+        <dia:enum val="22"/>
+      </dia:attribute>
+      <dia:attribute name="end_arrow_length">
+        <dia:real val="0.5"/>
+      </dia:attribute>
+      <dia:attribute name="end_arrow_width">
+        <dia:real val="0.5"/>
+      </dia:attribute>
+      <dia:connections>
+        <dia:connection handle="0" to="O0" connection="8"/>
+      </dia:connections>
+    </dia:object>
+    <dia:object type="Standard - Text" version="1" id="O3">
+      <dia:attribute name="obj_pos">
+        <dia:point val="20,24"/>
+      </dia:attribute>
+      <dia:attribute name="obj_bb">
+        <dia:rectangle val="20,23.4059;36.98,24.9509"/>
+      </dia:attribute>
+      <dia:attribute name="text">
+        <dia:composite type="text">
+          <dia:attribute name="string">
+            <dia:string>#The modules in the initramfs are updated every time
+a kernel upgrade is available.#</dia:string>
+          </dia:attribute>
+          <dia:attribute name="font">
+            <dia:font family="sans" style="0" name="Helvetica"/>
+          </dia:attribute>
+          <dia:attribute name="height">
+            <dia:real val="0.80000000000000004"/>
+          </dia:attribute>
+          <dia:attribute name="pos">
+            <dia:point val="20,24"/>
+          </dia:attribute>
+          <dia:attribute name="color">
+            <dia:color val="#000000ff"/>
+          </dia:attribute>
+          <dia:attribute name="alignment">
+            <dia:enum val="0"/>
+          </dia:attribute>
+        </dia:composite>
+      </dia:attribute>
+      <dia:attribute name="valign">
+        <dia:enum val="3"/>
+      </dia:attribute>
+    </dia:object>
+    <dia:object type="Standard - Text" version="1" id="O4">
+      <dia:attribute name="obj_pos">
+        <dia:point val="29,0"/>
+      </dia:attribute>
+      <dia:attribute name="obj_bb">
+        <dia:rectangle val="19.64,-0.890679;38.36,1.42575"/>
+      </dia:attribute>
+      <dia:attribute name="text">
+        <dia:composite type="text">
+          <dia:attribute name="string">
+            <dia:string>#Using kernel modules to support
+many different devices and setups#</dia:string>
+          </dia:attribute>
+          <dia:attribute name="font">
+            <dia:font family="sans" style="80" name="Helvetica-Bold"/>
+          </dia:attribute>
+          <dia:attribute name="height">
+            <dia:real val="1.1994443982839584"/>
+          </dia:attribute>
+          <dia:attribute name="pos">
+            <dia:point val="29,0"/>
+          </dia:attribute>
+          <dia:attribute name="color">
+            <dia:color val="#000000ff"/>
+          </dia:attribute>
+          <dia:attribute name="alignment">
+            <dia:enum val="1"/>
+          </dia:attribute>
+        </dia:composite>
+      </dia:attribute>
+      <dia:attribute name="valign">
+        <dia:enum val="3"/>
+      </dia:attribute>
+    </dia:object>
+    <dia:object type="Standard - Box" version="0" id="O5">
+      <dia:attribute name="obj_pos">
+        <dia:point val="20,8"/>
+      </dia:attribute>
+      <dia:attribute name="obj_bb">
+        <dia:rectangle val="19.95,7.95;38.05,16.05"/>
+      </dia:attribute>
+      <dia:attribute name="elem_corner">
+        <dia:point val="20,8"/>
+      </dia:attribute>
+      <dia:attribute name="elem_width">
+        <dia:real val="18"/>
+      </dia:attribute>
+      <dia:attribute name="elem_height">
+        <dia:real val="8"/>
+      </dia:attribute>
+      <dia:attribute name="border_width">
+        <dia:real val="0.10000000149011612"/>
+      </dia:attribute>
+      <dia:attribute name="border_color">
+        <dia:color val="#d9cb2fff"/>
+      </dia:attribute>
+      <dia:attribute name="inner_color">
+        <dia:color val="#fff8a8ff"/>
+      </dia:attribute>
+      <dia:attribute name="show_background">
+        <dia:boolean val="true"/>
+      </dia:attribute>
+      <dia:attribute name="corner_radius">
+        <dia:real val="0.59999999999999998"/>
+      </dia:attribute>
+    </dia:object>
+    <dia:object type="Standard - Text" version="1" id="O6">
+      <dia:attribute name="obj_pos">
+        <dia:point val="29,9"/>
+      </dia:attribute>
+      <dia:attribute name="obj_bb">
+        <dia:rectangle val="21.3113,8.03988;36.6887,9.25146"/>
+      </dia:attribute>
+      <dia:attribute name="text">
+        <dia:composite type="text">
+          <dia:attribute name="string">
+            <dia:string>#Intermediate root filesystem (initramfs)#</dia:string>
+          </dia:attribute>
+          <dia:attribute name="font">
+            <dia:font family="Latin Modern Sans" style="80" name="Courier"/>
+          </dia:attribute>
+          <dia:attribute name="height">
+            <dia:real val="1.0583332926034927"/>
+          </dia:attribute>
+          <dia:attribute name="pos">
+            <dia:point val="29,9"/>
+          </dia:attribute>
+          <dia:attribute name="color">
+            <dia:color val="#000000ff"/>
+          </dia:attribute>
+          <dia:attribute name="alignment">
+            <dia:enum val="1"/>
+          </dia:attribute>
+        </dia:composite>
+      </dia:attribute>
+      <dia:attribute name="valign">
+        <dia:enum val="3"/>
+      </dia:attribute>
+    </dia:object>
+    <dia:object type="Standard - Text" version="1" id="O7">
+      <dia:attribute name="obj_pos">
+        <dia:point val="29,10"/>
+      </dia:attribute>
+      <dia:attribute name="obj_bb">
+        <dia:rectangle val="21.585,9.12065;36.415,16.903"/>
+      </dia:attribute>
+      <dia:attribute name="text">
+        <dia:composite type="text">
+          <dia:attribute name="string">
+            <dia:string>#
+No special driver required to access it
+Contains all the modules to access the specific
+storage and filesytem of the device
+Load such modules
+and mount the new root filesystem
+
+#</dia:string>
+          </dia:attribute>
+          <dia:attribute name="font">
+            <dia:font family="Latin Modern Sans" style="0" name="Courier"/>
+          </dia:attribute>
+          <dia:attribute name="height">
+            <dia:real val="0.95249996334314346"/>
+          </dia:attribute>
+          <dia:attribute name="pos">
+            <dia:point val="29,10"/>
+          </dia:attribute>
+          <dia:attribute name="color">
+            <dia:color val="#000000ff"/>
+          </dia:attribute>
+          <dia:attribute name="alignment">
+            <dia:enum val="1"/>
+          </dia:attribute>
+        </dia:composite>
+      </dia:attribute>
+      <dia:attribute name="valign">
+        <dia:enum val="3"/>
+      </dia:attribute>
+    </dia:object>
+    <dia:object type="Standard - Box" version="0" id="O8">
+      <dia:attribute name="obj_pos">
+        <dia:point val="20,18"/>
+      </dia:attribute>
+      <dia:attribute name="obj_bb">
+        <dia:rectangle val="19.95,17.95;38.05,21.05"/>
+      </dia:attribute>
+      <dia:attribute name="elem_corner">
+        <dia:point val="20,18"/>
+      </dia:attribute>
+      <dia:attribute name="elem_width">
+        <dia:real val="18"/>
+      </dia:attribute>
+      <dia:attribute name="elem_height">
+        <dia:real val="3"/>
+      </dia:attribute>
+      <dia:attribute name="border_width">
+        <dia:real val="0.10000000149011612"/>
+      </dia:attribute>
+      <dia:attribute name="border_color">
+        <dia:color val="#d9cb2fff"/>
+      </dia:attribute>
+      <dia:attribute name="inner_color">
+        <dia:color val="#fff8a8ff"/>
+      </dia:attribute>
+      <dia:attribute name="show_background">
+        <dia:boolean val="true"/>
+      </dia:attribute>
+      <dia:attribute name="corner_radius">
+        <dia:real val="0.59999999999999998"/>
+      </dia:attribute>
+    </dia:object>
+    <dia:object type="Standard - Text" version="1" id="O9">
+      <dia:attribute name="obj_pos">
+        <dia:point val="29,19.05"/>
+      </dia:attribute>
+      <dia:attribute name="obj_bb">
+        <dia:rectangle val="25.05,18.0899;32.95,19.3015"/>
+      </dia:attribute>
+      <dia:attribute name="text">
+        <dia:composite type="text">
+          <dia:attribute name="string">
+            <dia:string>#Final root filesystem#</dia:string>
+          </dia:attribute>
+          <dia:attribute name="font">
+            <dia:font family="Latin Modern Sans" style="80" name="Courier"/>
+          </dia:attribute>
+          <dia:attribute name="height">
+            <dia:real val="1.0583332926034927"/>
+          </dia:attribute>
+          <dia:attribute name="pos">
+            <dia:point val="29,19.05"/>
+          </dia:attribute>
+          <dia:attribute name="color">
+            <dia:color val="#000000ff"/>
+          </dia:attribute>
+          <dia:attribute name="alignment">
+            <dia:enum val="1"/>
+          </dia:attribute>
+        </dia:composite>
+      </dia:attribute>
+      <dia:attribute name="valign">
+        <dia:enum val="3"/>
+      </dia:attribute>
+    </dia:object>
+    <dia:object type="Standard - Text" version="1" id="O10">
+      <dia:attribute name="obj_pos">
+        <dia:point val="28.9362,20.3975"/>
+      </dia:attribute>
+      <dia:attribute name="obj_bb">
+        <dia:rectangle val="25.2912,19.5182;32.5812,20.633"/>
+      </dia:attribute>
+      <dia:attribute name="text">
+        <dia:composite type="text">
+          <dia:attribute name="string">
+            <dia:string>#Regular system startup#</dia:string>
+          </dia:attribute>
+          <dia:attribute name="font">
+            <dia:font family="Latin Modern Sans" style="0" name="Courier"/>
+          </dia:attribute>
+          <dia:attribute name="height">
+            <dia:real val="0.95249996334314346"/>
+          </dia:attribute>
+          <dia:attribute name="pos">
+            <dia:point val="28.9362,20.3975"/>
+          </dia:attribute>
+          <dia:attribute name="color">
+            <dia:color val="#000000ff"/>
+          </dia:attribute>
+          <dia:attribute name="alignment">
+            <dia:enum val="1"/>
+          </dia:attribute>
+        </dia:composite>
+      </dia:attribute>
+      <dia:attribute name="valign">
+        <dia:enum val="3"/>
+      </dia:attribute>
+    </dia:object>
+    <dia:object type="Standard - Line" version="0" id="O11">
+      <dia:attribute name="obj_pos">
+        <dia:point val="29,16"/>
+      </dia:attribute>
+      <dia:attribute name="obj_bb">
+        <dia:rectangle val="28.6382,15.95;29.3618,18.05"/>
+      </dia:attribute>
+      <dia:attribute name="conn_endpoints">
+        <dia:point val="29,16"/>
+        <dia:point val="29,18"/>
+      </dia:attribute>
+      <dia:attribute name="numcp">
+        <dia:int val="1"/>
+      </dia:attribute>
+      <dia:attribute name="end_arrow">
+        <dia:enum val="22"/>
+      </dia:attribute>
+      <dia:attribute name="end_arrow_length">
+        <dia:real val="0.5"/>
+      </dia:attribute>
+      <dia:attribute name="end_arrow_width">
+        <dia:real val="0.5"/>
+      </dia:attribute>
+      <dia:connections>
+        <dia:connection handle="0" to="O5" connection="6"/>
+        <dia:connection handle="1" to="O8" connection="1"/>
+      </dia:connections>
+    </dia:object>
+  </dia:layer>
+</dia:diagram>
diff --git a/slides/sysdev-linux-intro-modules/modules-to-access-rootfs.dia b/slides/sysdev-linux-intro-modules/modules-to-access-rootfs.dia
deleted file mode 100644
index 740c813e..00000000
--- a/slides/sysdev-linux-intro-modules/modules-to-access-rootfs.dia
+++ /dev/null
@@ -1,483 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<dia:diagram xmlns:dia="http://www.lysator.liu.se/~alla/dia/">
-  <dia:diagramdata>
-    <dia:attribute name="background">
-      <dia:color val="#ffffffff"/>
-    </dia:attribute>
-    <dia:attribute name="pagebreak">
-      <dia:color val="#000099ff"/>
-    </dia:attribute>
-    <dia:attribute name="paper">
-      <dia:composite type="paper">
-        <dia:attribute name="name">
-          <dia:string>#Letter#</dia:string>
-        </dia:attribute>
-        <dia:attribute name="tmargin">
-          <dia:real val="2.5399999618530273"/>
-        </dia:attribute>
-        <dia:attribute name="bmargin">
-          <dia:real val="2.5399999618530273"/>
-        </dia:attribute>
-        <dia:attribute name="lmargin">
-          <dia:real val="2.5399999618530273"/>
-        </dia:attribute>
-        <dia:attribute name="rmargin">
-          <dia:real val="2.5399999618530273"/>
-        </dia:attribute>
-        <dia:attribute name="is_portrait">
-          <dia:boolean val="true"/>
-        </dia:attribute>
-        <dia:attribute name="scaling">
-          <dia:real val="1"/>
-        </dia:attribute>
-        <dia:attribute name="fitto">
-          <dia:boolean val="false"/>
-        </dia:attribute>
-      </dia:composite>
-    </dia:attribute>
-    <dia:attribute name="grid">
-      <dia:composite type="grid">
-        <dia:attribute name="dynamic">
-          <dia:boolean val="true"/>
-        </dia:attribute>
-        <dia:attribute name="width_x">
-          <dia:real val="1"/>
-        </dia:attribute>
-        <dia:attribute name="width_y">
-          <dia:real val="1"/>
-        </dia:attribute>
-        <dia:attribute name="visible_x">
-          <dia:int val="1"/>
-        </dia:attribute>
-        <dia:attribute name="visible_y">
-          <dia:int val="1"/>
-        </dia:attribute>
-        <dia:composite type="color"/>
-      </dia:composite>
-    </dia:attribute>
-    <dia:attribute name="color">
-      <dia:color val="#d8e5e5ff"/>
-    </dia:attribute>
-    <dia:attribute name="guides">
-      <dia:composite type="guides">
-        <dia:attribute name="hguides"/>
-        <dia:attribute name="vguides"/>
-      </dia:composite>
-    </dia:attribute>
-    <dia:attribute name="display">
-      <dia:composite type="display">
-        <dia:attribute name="antialiased">
-          <dia:boolean val="true"/>
-        </dia:attribute>
-        <dia:attribute name="snap-to-grid">
-          <dia:boolean val="true"/>
-        </dia:attribute>
-        <dia:attribute name="snap-to-object">
-          <dia:boolean val="true"/>
-        </dia:attribute>
-        <dia:attribute name="show-grid">
-          <dia:boolean val="true"/>
-        </dia:attribute>
-        <dia:attribute name="show-connection-points">
-          <dia:boolean val="true"/>
-        </dia:attribute>
-      </dia:composite>
-    </dia:attribute>
-  </dia:diagramdata>
-  <dia:layer name="Arrière-plan" visible="true" connectable="true" active="true">
-    <dia:object type="Standard - Box" version="0" id="O0">
-      <dia:attribute name="obj_pos">
-        <dia:point val="20,3.95"/>
-      </dia:attribute>
-      <dia:attribute name="obj_bb">
-        <dia:rectangle val="19.95,3.9;38.05,6.05"/>
-      </dia:attribute>
-      <dia:attribute name="elem_corner">
-        <dia:point val="20,3.95"/>
-      </dia:attribute>
-      <dia:attribute name="elem_width">
-        <dia:real val="18"/>
-      </dia:attribute>
-      <dia:attribute name="elem_height">
-        <dia:real val="2.0499999999999998"/>
-      </dia:attribute>
-      <dia:attribute name="border_width">
-        <dia:real val="0.10000000149011612"/>
-      </dia:attribute>
-      <dia:attribute name="border_color">
-        <dia:color val="#d9cb2fff"/>
-      </dia:attribute>
-      <dia:attribute name="inner_color">
-        <dia:color val="#fff8a8ff"/>
-      </dia:attribute>
-      <dia:attribute name="show_background">
-        <dia:boolean val="true"/>
-      </dia:attribute>
-      <dia:attribute name="corner_radius">
-        <dia:real val="0.59999999999999998"/>
-      </dia:attribute>
-    </dia:object>
-    <dia:object type="Standard - Text" version="1" id="O1">
-      <dia:attribute name="obj_pos">
-        <dia:point val="29,4.975"/>
-      </dia:attribute>
-      <dia:attribute name="obj_bb">
-        <dia:rectangle val="27.74,4.01488;30.26,5.22646"/>
-      </dia:attribute>
-      <dia:attribute name="text">
-        <dia:composite type="text">
-          <dia:attribute name="string">
-            <dia:string>#Kernel#</dia:string>
-          </dia:attribute>
-          <dia:attribute name="font">
-            <dia:font family="Latin Modern Sans" style="80" name="Courier"/>
-          </dia:attribute>
-          <dia:attribute name="height">
-            <dia:real val="1.0583332926034927"/>
-          </dia:attribute>
-          <dia:attribute name="pos">
-            <dia:point val="29,4.975"/>
-          </dia:attribute>
-          <dia:attribute name="color">
-            <dia:color val="#000000ff"/>
-          </dia:attribute>
-          <dia:attribute name="alignment">
-            <dia:enum val="1"/>
-          </dia:attribute>
-        </dia:composite>
-      </dia:attribute>
-      <dia:attribute name="valign">
-        <dia:enum val="3"/>
-      </dia:attribute>
-      <dia:connections>
-        <dia:connection handle="0" to="O0" connection="8"/>
-      </dia:connections>
-    </dia:object>
-    <dia:object type="Standard - Line" version="0" id="O2">
-      <dia:attribute name="obj_pos">
-        <dia:point val="29,6.04955"/>
-      </dia:attribute>
-      <dia:attribute name="obj_bb">
-        <dia:rectangle val="28.6382,5.99955;29.3618,11.1"/>
-      </dia:attribute>
-      <dia:attribute name="conn_endpoints">
-        <dia:point val="29,6.04955"/>
-        <dia:point val="29,11.05"/>
-      </dia:attribute>
-      <dia:attribute name="numcp">
-        <dia:int val="1"/>
-      </dia:attribute>
-      <dia:attribute name="end_arrow">
-        <dia:enum val="22"/>
-      </dia:attribute>
-      <dia:attribute name="end_arrow_length">
-        <dia:real val="0.5"/>
-      </dia:attribute>
-      <dia:attribute name="end_arrow_width">
-        <dia:real val="0.5"/>
-      </dia:attribute>
-      <dia:connections>
-        <dia:connection handle="0" to="O0" connection="8"/>
-      </dia:connections>
-    </dia:object>
-    <dia:object type="Standard - Text" version="1" id="O3">
-      <dia:attribute name="obj_pos">
-        <dia:point val="20,24"/>
-      </dia:attribute>
-      <dia:attribute name="obj_bb">
-        <dia:rectangle val="20,23.4059;36.98,24.9509"/>
-      </dia:attribute>
-      <dia:attribute name="text">
-        <dia:composite type="text">
-          <dia:attribute name="string">
-            <dia:string>#The modules in the initramfs are updated every time
-a kernel upgrade is available.#</dia:string>
-          </dia:attribute>
-          <dia:attribute name="font">
-            <dia:font family="sans" style="0" name="Helvetica"/>
-          </dia:attribute>
-          <dia:attribute name="height">
-            <dia:real val="0.80000000000000004"/>
-          </dia:attribute>
-          <dia:attribute name="pos">
-            <dia:point val="20,24"/>
-          </dia:attribute>
-          <dia:attribute name="color">
-            <dia:color val="#000000ff"/>
-          </dia:attribute>
-          <dia:attribute name="alignment">
-            <dia:enum val="0"/>
-          </dia:attribute>
-        </dia:composite>
-      </dia:attribute>
-      <dia:attribute name="valign">
-        <dia:enum val="3"/>
-      </dia:attribute>
-    </dia:object>
-    <dia:object type="Standard - Text" version="1" id="O4">
-      <dia:attribute name="obj_pos">
-        <dia:point val="29,0"/>
-      </dia:attribute>
-      <dia:attribute name="obj_bb">
-        <dia:rectangle val="19.64,-0.890679;38.36,1.42575"/>
-      </dia:attribute>
-      <dia:attribute name="text">
-        <dia:composite type="text">
-          <dia:attribute name="string">
-            <dia:string>#Using kernel modules to support
-many different devices and setups#</dia:string>
-          </dia:attribute>
-          <dia:attribute name="font">
-            <dia:font family="sans" style="80" name="Helvetica-Bold"/>
-          </dia:attribute>
-          <dia:attribute name="height">
-            <dia:real val="1.1994443982839584"/>
-          </dia:attribute>
-          <dia:attribute name="pos">
-            <dia:point val="29,0"/>
-          </dia:attribute>
-          <dia:attribute name="color">
-            <dia:color val="#000000ff"/>
-          </dia:attribute>
-          <dia:attribute name="alignment">
-            <dia:enum val="1"/>
-          </dia:attribute>
-        </dia:composite>
-      </dia:attribute>
-      <dia:attribute name="valign">
-        <dia:enum val="3"/>
-      </dia:attribute>
-    </dia:object>
-    <dia:object type="Standard - Box" version="0" id="O5">
-      <dia:attribute name="obj_pos">
-        <dia:point val="20,8"/>
-      </dia:attribute>
-      <dia:attribute name="obj_bb">
-        <dia:rectangle val="19.95,7.95;38.05,16.05"/>
-      </dia:attribute>
-      <dia:attribute name="elem_corner">
-        <dia:point val="20,8"/>
-      </dia:attribute>
-      <dia:attribute name="elem_width">
-        <dia:real val="18"/>
-      </dia:attribute>
-      <dia:attribute name="elem_height">
-        <dia:real val="8"/>
-      </dia:attribute>
-      <dia:attribute name="border_width">
-        <dia:real val="0.10000000149011612"/>
-      </dia:attribute>
-      <dia:attribute name="border_color">
-        <dia:color val="#d9cb2fff"/>
-      </dia:attribute>
-      <dia:attribute name="inner_color">
-        <dia:color val="#fff8a8ff"/>
-      </dia:attribute>
-      <dia:attribute name="show_background">
-        <dia:boolean val="true"/>
-      </dia:attribute>
-      <dia:attribute name="corner_radius">
-        <dia:real val="0.59999999999999998"/>
-      </dia:attribute>
-    </dia:object>
-    <dia:object type="Standard - Text" version="1" id="O6">
-      <dia:attribute name="obj_pos">
-        <dia:point val="29,9"/>
-      </dia:attribute>
-      <dia:attribute name="obj_bb">
-        <dia:rectangle val="21.3113,8.03988;36.6887,9.25146"/>
-      </dia:attribute>
-      <dia:attribute name="text">
-        <dia:composite type="text">
-          <dia:attribute name="string">
-            <dia:string>#Intermediate root filesystem (initramfs)#</dia:string>
-          </dia:attribute>
-          <dia:attribute name="font">
-            <dia:font family="Latin Modern Sans" style="80" name="Courier"/>
-          </dia:attribute>
-          <dia:attribute name="height">
-            <dia:real val="1.0583332926034927"/>
-          </dia:attribute>
-          <dia:attribute name="pos">
-            <dia:point val="29,9"/>
-          </dia:attribute>
-          <dia:attribute name="color">
-            <dia:color val="#000000ff"/>
-          </dia:attribute>
-          <dia:attribute name="alignment">
-            <dia:enum val="1"/>
-          </dia:attribute>
-        </dia:composite>
-      </dia:attribute>
-      <dia:attribute name="valign">
-        <dia:enum val="3"/>
-      </dia:attribute>
-    </dia:object>
-    <dia:object type="Standard - Text" version="1" id="O7">
-      <dia:attribute name="obj_pos">
-        <dia:point val="29,10"/>
-      </dia:attribute>
-      <dia:attribute name="obj_bb">
-        <dia:rectangle val="21.585,9.12065;36.415,16.903"/>
-      </dia:attribute>
-      <dia:attribute name="text">
-        <dia:composite type="text">
-          <dia:attribute name="string">
-            <dia:string>#
-No special driver required to access it
-Contains all the modules to access the specific
-storage and filesytem of the device
-Load such modules
-and mount the new root filesystem
-
-#</dia:string>
-          </dia:attribute>
-          <dia:attribute name="font">
-            <dia:font family="Latin Modern Sans" style="0" name="Courier"/>
-          </dia:attribute>
-          <dia:attribute name="height">
-            <dia:real val="0.95249996334314346"/>
-          </dia:attribute>
-          <dia:attribute name="pos">
-            <dia:point val="29,10"/>
-          </dia:attribute>
-          <dia:attribute name="color">
-            <dia:color val="#000000ff"/>
-          </dia:attribute>
-          <dia:attribute name="alignment">
-            <dia:enum val="1"/>
-          </dia:attribute>
-        </dia:composite>
-      </dia:attribute>
-      <dia:attribute name="valign">
-        <dia:enum val="3"/>
-      </dia:attribute>
-    </dia:object>
-    <dia:object type="Standard - Box" version="0" id="O8">
-      <dia:attribute name="obj_pos">
-        <dia:point val="20,18"/>
-      </dia:attribute>
-      <dia:attribute name="obj_bb">
-        <dia:rectangle val="19.95,17.95;38.05,21.05"/>
-      </dia:attribute>
-      <dia:attribute name="elem_corner">
-        <dia:point val="20,18"/>
-      </dia:attribute>
-      <dia:attribute name="elem_width">
-        <dia:real val="18"/>
-      </dia:attribute>
-      <dia:attribute name="elem_height">
-        <dia:real val="3"/>
-      </dia:attribute>
-      <dia:attribute name="border_width">
-        <dia:real val="0.10000000149011612"/>
-      </dia:attribute>
-      <dia:attribute name="border_color">
-        <dia:color val="#d9cb2fff"/>
-      </dia:attribute>
-      <dia:attribute name="inner_color">
-        <dia:color val="#fff8a8ff"/>
-      </dia:attribute>
-      <dia:attribute name="show_background">
-        <dia:boolean val="true"/>
-      </dia:attribute>
-      <dia:attribute name="corner_radius">
-        <dia:real val="0.59999999999999998"/>
-      </dia:attribute>
-    </dia:object>
-    <dia:object type="Standard - Text" version="1" id="O9">
-      <dia:attribute name="obj_pos">
-        <dia:point val="29,19.05"/>
-      </dia:attribute>
-      <dia:attribute name="obj_bb">
-        <dia:rectangle val="25.05,18.0899;32.95,19.3015"/>
-      </dia:attribute>
-      <dia:attribute name="text">
-        <dia:composite type="text">
-          <dia:attribute name="string">
-            <dia:string>#Final root filesystem#</dia:string>
-          </dia:attribute>
-          <dia:attribute name="font">
-            <dia:font family="Latin Modern Sans" style="80" name="Courier"/>
-          </dia:attribute>
-          <dia:attribute name="height">
-            <dia:real val="1.0583332926034927"/>
-          </dia:attribute>
-          <dia:attribute name="pos">
-            <dia:point val="29,19.05"/>
-          </dia:attribute>
-          <dia:attribute name="color">
-            <dia:color val="#000000ff"/>
-          </dia:attribute>
-          <dia:attribute name="alignment">
-            <dia:enum val="1"/>
-          </dia:attribute>
-        </dia:composite>
-      </dia:attribute>
-      <dia:attribute name="valign">
-        <dia:enum val="3"/>
-      </dia:attribute>
-    </dia:object>
-    <dia:object type="Standard - Text" version="1" id="O10">
-      <dia:attribute name="obj_pos">
-        <dia:point val="28.9362,20.3975"/>
-      </dia:attribute>
-      <dia:attribute name="obj_bb">
-        <dia:rectangle val="25.2912,19.5182;32.5812,20.633"/>
-      </dia:attribute>
-      <dia:attribute name="text">
-        <dia:composite type="text">
-          <dia:attribute name="string">
-            <dia:string>#Regular system startup#</dia:string>
-          </dia:attribute>
-          <dia:attribute name="font">
-            <dia:font family="Latin Modern Sans" style="0" name="Courier"/>
-          </dia:attribute>
-          <dia:attribute name="height">
-            <dia:real val="0.95249996334314346"/>
-          </dia:attribute>
-          <dia:attribute name="pos">
-            <dia:point val="28.9362,20.3975"/>
-          </dia:attribute>
-          <dia:attribute name="color">
-            <dia:color val="#000000ff"/>
-          </dia:attribute>
-          <dia:attribute name="alignment">
-            <dia:enum val="1"/>
-          </dia:attribute>
-        </dia:composite>
-      </dia:attribute>
-      <dia:attribute name="valign">
-        <dia:enum val="3"/>
-      </dia:attribute>
-    </dia:object>
-    <dia:object type="Standard - Line" version="0" id="O11">
-      <dia:attribute name="obj_pos">
-        <dia:point val="29,16"/>
-      </dia:attribute>
-      <dia:attribute name="obj_bb">
-        <dia:rectangle val="28.6382,15.95;29.3618,18.05"/>
-      </dia:attribute>
-      <dia:attribute name="conn_endpoints">
-        <dia:point val="29,16"/>
-        <dia:point val="29,18"/>
-      </dia:attribute>
-      <dia:attribute name="numcp">
-        <dia:int val="1"/>
-      </dia:attribute>
-      <dia:attribute name="end_arrow">
-        <dia:enum val="22"/>
-      </dia:attribute>
-      <dia:attribute name="end_arrow_length">
-        <dia:real val="0.5"/>
-      </dia:attribute>
-      <dia:attribute name="end_arrow_width">
-        <dia:real val="0.5"/>
-      </dia:attribute>
-      <dia:connections>
-        <dia:connection handle="0" to="O5" connection="6"/>
-        <dia:connection handle="1" to="O8" connection="1"/>
-      </dia:connections>
-    </dia:object>
-  </dia:layer>
-</dia:diagram>
diff --git a/slides/sysdev-linux-intro-modules/sysdev-linux-intro-modules.tex b/slides/sysdev-linux-intro-modules/sysdev-linux-intro-modules.tex
deleted file mode 100644
index 22f767d3..00000000
--- a/slides/sysdev-linux-intro-modules/sysdev-linux-intro-modules.tex
+++ /dev/null
@@ -1,153 +0,0 @@
-\subsection{Using kernel modules}
-
-\begin{frame}
-  \frametitle{Advantages of modules}
-  \begin{columns}
-    \column{0.7\textwidth}
-      \begin{itemize}
-      \item Modules make it easy to develop drivers without rebooting:
-        load, test, unload, rebuild, load...
-      \item Useful to keep the kernel image size to the minimum (essential
-        in GNU/Linux distributions for PCs).
-      \item Also useful to reduce boot time: you don't spend time
-        initializing devices and kernel features that you only need later.
-      \item Caution: once loaded, have full control and privileges in the
-        system. No particular protection. That's why only the \code{root} user
-        can load and unload modules.
-      \item To increase security, possibility to allow only signed modules,
-        or to disable module support entirely.
-      \end{itemize}
-    \column{0.3\textwidth}
-      \includegraphics[width=\textwidth]{slides/sysdev-linux-intro-modules/modules-to-access-rootfs.pdf}
-  \end{columns}
-\end{frame}
-
-\begin{frame}
-  \frametitle{Module dependencies}
-  \begin{itemize}
-  \item Some kernel modules can depend on other modules,
-    which need to be loaded first.
-  \item Example: the \code{ubifs} module depends on the
-    \code{ubi} and \code{mtd} modules.
-  \item Dependencies are described
-    both in \code{/lib/modules/<kernel-version>/modules.dep}
-    and in \code{/lib/modules/<kernel-version>/modules.dep.bin} (binary hashed format)\\
-    These files are generated when you run \code{make modules_install}.
-  \end{itemize}
-\end{frame}
-
-\begin{frame}
-  \frametitle{Kernel log}
-
-  When a new module is loaded, related information is available in the
-  kernel log.
-  \begin{itemize}
-  \item The kernel keeps its messages in a circular buffer (so that it
-    doesn't consume more memory with many messages)
-  \item Kernel log messages are available through the \code{dmesg}
-    command ({\bf d}iagnostic {\bf mes}sa{\bf g}e)
-  \item Kernel log messages are also displayed in the system console
-    (console messages can be filtered by level using the
-    \code{loglevel} kernel command line parameter,
-     or completely disabled with the
-    \code{quiet} parameter). Example:\\
-    \code{console=ttyS0 root=/dev/mmcblk0p2 loglevel=5} 
-  \item Note that you can write to the kernel log from user space too.
-    That's useful when your device's serial console is being monitored
-    for critical messages:
-    \code{echo "<n>Debug info" > /dev/kmsg}
-  \end{itemize}
-\end{frame}
-
-\begin{frame}
-  \frametitle{Module utilities (1)}
-  \code{<module_name>}: name of the module file without the trailing \code{.ko}\\
-  \begin{itemize}
-  \item \code{modinfo <module_name>} (for modules in \code{/lib/modules})\\
-    \code{modinfo <module_path>.ko}\\
-    Gets information about a module without loading it: parameters, license,
-    description and dependencies.\\
-  \item \code{sudo insmod <module_path>.ko}\\
-    Tries to load the given module. The full path to the module object
-    file must be given.
-  \end{itemize}
-\end{frame}
-
-\begin{frame}[fragile]
-  \frametitle{Understanding module loading issues}
-  \begin{itemize}
-  \item When loading a module fails, \code{insmod} often doesn't give
-    you enough details!
-  \item Details are often available in the kernel log.
-  \item Example:\\
-\scriptsize
-\begin{verbatim}
-$ sudo insmod ./intr_monitor.ko
-insmod: error inserting './intr_monitor.ko': -1 Device or resource busy
-$ dmesg
-[17549774.552000] Failed to register handler for irq channel 2
-\end{verbatim}
-  \end{itemize}
-\end{frame}
-
-\begin{frame}
-  \frametitle{Module utilities (2)}
-  \begin{itemize}
-  \item \code{sudo modprobe <top_module_name>}\\
-    Most common usage of \code{modprobe}: tries to load all the
-    dependencies of the given top module, and then this module. Lots of
-    other options are available. \code{modprobe} automatically looks in
-    \code{/lib/modules/<version>/} for the object file corresponding
-    to the given module name.
-  \item \code{lsmod}\\
-    Displays the list of loaded modules\\
-    Compare its output with the contents of \code{/proc/modules}!
-  \end{itemize}
-\end{frame}
-
-\begin{frame}
-  \frametitle{Module utilities (3)}
-  \begin{itemize}
-  \item \code{sudo rmmod <module_name>}\\
-    Tries to remove the given module.\\
-    Will only be allowed if the module is no longer in use (for
-    example, no more processes opening a device file)
-  \item \code{sudo modprobe -r <top_module_name>}\\
-    Tries to remove the given top module and all its no longer needed dependencies
-  \end{itemize}
-\end{frame}
-
-\begin{frame}
-  \frametitle{Passing parameters to modules}
-  \begin{itemize}
-  \item Find available parameters:\\
-    \code{modinfo usb-storage}
-  \item Through \code{insmod}:\\
-    \code{sudo insmod ./usb-storage.ko delay_use=0}
-  \item Through \code{modprobe}:\\
-    Set parameters in \code{/etc/modprobe.conf} or in any file in \code{/etc/modprobe.d/}:\\
-    \code{options usb-storage delay_use=0}
-  \item Through the kernel command line, when the driver is built statically into the kernel:\\
-    \code{usb-storage.delay_use=0}
-    \begin{itemize}
-    \item \code{usb-storage} is the {\em driver name}
-    \item \code{delay_use} is the {\em driver parameter name}. It
-      specifies a delay before accessing a USB storage device (useful for
-      rotating devices).
-    \item \code{0} is the {\em driver parameter value}
-    \end{itemize}
-  \end{itemize}
-\end{frame}
-
-\begin{frame}
-  \frametitle{Check module parameter values}
-  How to find/edit the current values for the parameters of a loaded module?
-  \begin{itemize}
-  \item Check \code{/sys/module/<name>/parameters}.
-  \item There is one file per parameter, containing the parameter value.
-  \item Also possible to change parameter values if these files have
-        write permissions (depends on the module code).
-  \item Example:\\
-	\code{echo 0 > /sys/module/usb_storage/parameters/delay_use}
-  \end{itemize}
-\end{frame}




More information about the training-materials-updates mailing list