[systemd-devel] [PATCH] core: read "debug" from kernel commandline and set log level and target

Lukas Nykryn lnykryn at redhat.com
Wed May 29 05:09:56 PDT 2013


---
 TODO                        |  3 ---
 man/kernel-command-line.xml | 12 ++++++++++++
 man/systemd.xml             | 16 ++++++++++++++++
 src/core/main.c             |  4 ++++
 4 files changed, 32 insertions(+), 3 deletions(-)

diff --git a/TODO b/TODO
index f8a1b1b..7883b7e 100644
--- a/TODO
+++ b/TODO
@@ -56,9 +56,6 @@ Features:
   complain loudly if they have argv[0][0] == '@' set.
   https://bugzilla.redhat.com/show_bug.cgi?id=961044
 
-* read the kernel's console "debug" keyword like we read "quiet" and adjust:
-    systemd.log_level=debug and maybe systemd.log_target=kmsg
-
 * add an option to nspawn that uses seccomp to make socket(AF_NETLINK,
   SOCK_RAW, NETLINK_AUDIT) fail the the appropriate error code that
   makes the audit userspace to think auditing is not available in the
diff --git a/man/kernel-command-line.xml b/man/kernel-command-line.xml
index 7ff2709..db5d38a 100644
--- a/man/kernel-command-line.xml
+++ b/man/kernel-command-line.xml
@@ -111,6 +111,18 @@
                         </varlistentry>
 
                         <varlistentry>
+                                <term><varname>debug</varname></term>
+                                <listitem>
+                                        <para>Parameter understood by
+                                        both the kernel and the system
+                                        and service manager to control
+                                        console log verbosity. For
+                                        details see
+                                        <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>.</para>
+                                </listitem>
+                        </varlistentry>
+
+                        <varlistentry>
                                 <term><varname>emergency</varname></term>
                                 <term><varname>single</varname></term>
                                 <term><varname>s</varname></term>
diff --git a/man/systemd.xml b/man/systemd.xml
index d009ed8..8bb13be 100644
--- a/man/systemd.xml
+++ b/man/systemd.xml
@@ -1127,6 +1127,22 @@
                         </varlistentry>
 
                         <varlistentry>
+                                <term><varname>debug</varname></term>
+
+                                <listitem><para>If passed turns on
+                                debugging output. This is equivalent to
+                                <varname>systemd.log_level=debug</varname>
+                                <varname>systemd.log_target=kmsg</varname>.
+                                Note that this option is also
+                                read by the kernel itself and enables
+                                kernel debug output.
+                                Passing this option hence
+                                turns on the debug output from both
+                                the system manager and the
+                                kernel.</para></listitem>
+                        </varlistentry>
+
+                        <varlistentry>
                                 <term><varname>emergency</varname></term>
 
                                 <listitem><para>Boot into emergency
diff --git a/src/core/main.c b/src/core/main.c
index 7fc06be..4204e07 100644
--- a/src/core/main.c
+++ b/src/core/main.c
@@ -411,6 +411,10 @@ static int parse_proc_cmdline_word(const char *word) {
 
         } else if (streq(word, "quiet"))
                 arg_show_status = false;
+        else if (streq(word, "debug")) {
+                log_set_max_level(LOG_DEBUG);
+                log_set_target(LOG_TARGET_KMSG);
+        }
         else if (!in_initrd()) {
                 unsigned i;
 
-- 
1.8.1.4



More information about the systemd-devel mailing list