Gibt es eine Möglichkeit, herauszufinden, mit welchen Parametern der Kernel gebootet hat?
Zum Beispiel, wenn ich noexec = off in der Grub-Befehlszeile eingebe? Kann ich diese Art von Informationen sehen, nachdem das System gebootet wurde?
Gibt es eine Möglichkeit, herauszufinden, mit welchen Parametern der Kernel gebootet hat?
Zum Beispiel, wenn ich noexec = off in der Grub-Befehlszeile eingebe? Kann ich diese Art von Informationen sehen, nachdem das System gebootet wurde?
Antworten:
Du kannst rennen cat /proc/cmdline
.
Beispiel:
[01:31] ~ $ cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-2.6.38-7-generic root=UUID=025c4231-b7bb-48bf-93e9-d20c5b5ce123 ro crashkernel=384M-2G:64M,2G-:128M quiet splash bootchart=disable acpi_enforce_resources=lax vga=792 vt.handoff=7
tr ' ' '\n' < /proc/cmdline
, Zeilenumbrüche zwischen den Parametern zu erhalten.
Eine alternative Möglichkeit besteht darin, die Ausgabe von dmesg
(Zeile 5 hier) zu überprüfen :
$ dmesg | grep "Command line"
[ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-3.19.0-33-generic root=UUID=81dba11f-f76e-4ed4-8120-e6da6328b1ee ro
Beachten Sie jedoch, dass dies möglicherweise nicht funktioniert, wenn viele Dinge protokolliert wurden (z. B. wenn der Computer lange gelaufen ist), da möglicherweise die ersten Startzeilen aus dem Ringpuffer entfernt wurden.
Tatsächlich befindet sich der Parameter zwischen __setup_start
und __setup_end
im Kernel. Im folgenden Code ist der p->str
der Parametername
Der folgende Kernel-Code befindet sich unter linux-3.4.5 / init / main.c: 388
/* Check for early params. */
static int __init do_early_param(char *param, char *val)
{
const struct obs_kernel_param *p;
for (p = __setup_start; p < __setup_end; p++) {
if ((p->early && parameq(param, p->str)) ||
(strcmp(param, "console") == 0 &&
strcmp(p->str, "earlycon") == 0)
) {
if (p->setup_func(val) != 0)
printk(KERN_WARNING
"Malformed early option '%s'\n", param);
}
}
/* We accept everything at this stage. */
return 0;
}