[bootlin/training-materials updates] master: Boot time slides: misc updates (ee49b652)

Michael Opdenacker michael.opdenacker at bootlin.com
Mon Jun 21 09:46:29 CEST 2021

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


commit ee49b6525b5da36eac2fea6cee2b8e062011998c
Author: Michael Opdenacker <michael.opdenacker at bootlin.com>
Date:   Mon Jun 21 09:46:29 2021 +0200

    Boot time slides: misc updates
    Signed-off-by: Michael Opdenacker <michael.opdenacker at bootlin.com>


 .../boot-time-init-scripts.tex                     | 34 +++++++++++-----------
 1 file changed, 17 insertions(+), 17 deletions(-)

diff --git a/slides/boot-time-init-scripts/boot-time-init-scripts.tex b/slides/boot-time-init-scripts/boot-time-init-scripts.tex
index c0131c4d..576b837b 100644
--- a/slides/boot-time-init-scripts/boot-time-init-scripts.tex
+++ b/slides/boot-time-init-scripts/boot-time-init-scripts.tex
@@ -108,11 +108,13 @@ How fast would we be if we could be the first started application?
 	\item Start all your services directly from a single startup
 	      script (e.g. \code{/etc/init.d/rcS}). This eliminates multiple
 	      calls to \code{/bin/sh}.
+	\item An easier to maintain solution allowing to keep subscripts: \code{source} them\\
+              (\code{.} command) if possible. This won't spawn new shell processes.
 	\item You could mount your filesystems directly in the C code
 	      of your application:
 #include <stdio.h>
 #include <sys/mount.h>
@@ -132,10 +134,9 @@ int main (void)
 \item \code{fork}/\code{exec} system calls are very expensive.
       Because of this, calls to executables from shells are slow.
-\item Even an \code{echo} in a BusyBox shell results in a \code{fork}
-\item Select \code{Shells -> Standalone shell} in BusyBox
-      configuration to make the shell call applets whenever possible.
+\item Try to use shell built-ins whenever possible. For example in
+      BusyBox, you can use \code{echo}, \code{test}, \code{printf}
+      and others as shell built-ins.
 \item Pipes and back-quotes are also implemented by
       \code{fork}/\code{exec}.  You can reduce their usage in
       scripts. Example:
@@ -212,13 +213,11 @@ You may try \code{mklibs}, available at \url{https://packages.debian.org/sid/mkl
 \frametitle{Quick splashscreen display (1)}
 Often the first sign of life that you are showing!
-\item You could use the \code{fbv} program
-      (\url{http://freshmeat.sourceforge.net/projects/fbv})\\
-      to display your splashscreen.
-\item On \code{armel}, you can just use our statically compiled
-      binary:\\
-\item However, this is slow:\\
+\item A good solution seems to be BusyBox \code{fbsplash}:\\
+      See \projfile{busybox}{miscutils/fbsplash.c} in BusyBox sources.
+\item Alternative: \code{fbv}\\
+      \url{http://s-tech.elsat.net.pl/fbv/}
+\item However, \code{fbv} is slow:\\
       878 ms on an Microchip AT91SAM9263 system!
@@ -247,7 +246,9 @@ Time & 878 ms & 54 ms & 52.5 ms\\
+\url{https://bootlin.com/blog/super-fast-linux-splashscreen/} \\
+Note: {\em LZO} compression is the fastest in terms of
+decompression, and is supported by BusyBox.
@@ -257,7 +258,8 @@ and even create an animation!
 \item Create a simple C program that just animates pixels and simple
       geometric shapes on the framebuffer!
-\item Example: {\small \url{https://bootlin.com/pub/code/fb/anim.c}}.
+\item Example: {\small \url{https://bootlin.com/pub/code/fb/anim.c}}
+      (Public Domain license).\\
       On a 400 MHz ARM9 system: starts drawing in 10 ms \\
       Size: 24 KB, compiled statically.
@@ -269,8 +271,6 @@ and even create an animation!
 \item Regenerate the root filesystem with Buildroot
-\item Use bootchart to measure boot time
+\item Use bootchartd to measure boot time

More information about the training-materials-updates mailing list