Bagaimana cara menemukan parameter boot yang digunakan oleh kernel yang sedang berjalan?

53

Apakah ada cara untuk mengetahui dengan parameter apa kernel boot?

Sebagai contoh jika saya menentukan noexec = off di baris perintah grub? Bisakah saya melihat info semacam ini setelah sistem selesai booting?

nvm
sumber
terkait: unix.stackexchange.com/questions/48601/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Jawaban:

72

Anda bisa lari cat /proc/cmdline.

Contoh:

[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
htorque
sumber
1
Cobalah tr ' ' '\n' < /proc/cmdlineuntuk mendapatkan garis pemisah di antara parameter.
mwfearnley
10

Cara alternatif adalah memeriksa keluaran dmesg(baris 5 di sini):

$ 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

Tetapi perhatikan bahwa ini mungkin tidak berfungsi jika banyak hal telah dicatat (mis. Jika mesin telah berjalan untuk waktu yang lama) karena garis startup awal mungkin telah didorong keluar dari ringbuffer.

joeytwiddle
sumber
1

Sebenarnya, parameternya terletak di antara __setup_startdan __setup_enddi dalam kernel. Dalam kode berikut, itu p->stradalah nama parameter

Kode kernel berikut dapat ditemukan di 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;
}
byhankswang
sumber