您的位置:首页 > 运维架构 > Linux

通过dmesg分析linux的启动过程,几种放入dmesg文件的方法

2015-02-04 19:59 531 查看


[b]第三种形式:log_info("starting version " VERSION);[/b]

[    2.755560] systemd-udevd[96]: starting version 204



cheng@chpc:~/download/systemd-218$ grep -r "starting version" ./*

./src/udev/udevd.c:        log_info("starting version " VERSION);



/usr/src/linux-3.18.4/include/linux/syslog.h中有[b]do_syslog()函数的声明
[/b]

int do_syslog(int type, char __user *buf, int count, bool from_file);


/usr/src/linux-3.18.4/kernel/printk/printk.c文件中[b]有[b]do_syslog()函数的定义[/b][/b]

[b][b][b][    1.496584] Trying to unpack rootfs image as initramfs...[/b][/b][/b]

[b][b][b]initrd.img.version里面init脚本会调用[/b][/b][/b]

[b][b][b]usr/share/initramfs-tools/scripts/init-top/udev脚本[/b][/b][/b]

[b][b][b][b][b][b][b]udev脚本[/b][/b][/b]有对systemd-udevd的调用
[/b][/b][/b][/b]

[b][b][b]/lib/systemd/systemd-udevd --daemon --resolve-names=never
[/b][/b][/b]

[b][b][b] [    2.755560] systemd-udevd[96]: starting version 204[/b][/b][/b]

[b][b][/b][/b]

[b][b][b] 第一种形式:  pr_notice("%s", linux_banner);[/b]
[/b][/b]

[b]init/main.c 中有
[/b]

[b]    pr_notice("%s", linux_banner);

    setup_arch(&command_line);

    mm_init_cpumask(&init_mm);

    setup_command_line(command_line);

    setup_nr_cpu_ids();

    setup_per_cpu_areas();

    smp_prepare_boot_cpu();    /* arch-specific boot-cpu hooks */

    build_all_zonelists(NULL, NULL);

    page_alloc_init();

    pr_notice("Kernel command line: %s\n", boot_command_line);
[/b]

[b]version.c 中有[b][b]linux_banner[][/b]定义
[/b][/b]

[b]const char linux_banner[] =

    "Linux version " UTS_RELEASE " (" LINUX_COMPILE_BY "@"

    LINUX_COMPILE_HOST ") (" LINUX_COMPILER ") " UTS_VERSION "\n";

dmesg中的信息显示:
[/b]

[b][    0.000000] Linux version 3.18.4 (root@chpc) (gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1) ) #1 SMP Wed Feb 4 08:53:13 CST 2015[/b]

[b]...[/b]

[b]...
[/b]

[b][    0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-3.18.4 root=UUID=588558ea-103e-4a08-9e09-1b23f25c9ee7 ro quiet splash vt.handoff=7

[    0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes)
[/b]



[b]第二种形式:printk(KERN_INFO "virtual kernel memory layout:\n"[/b]



cheng@chpc:/usr/src/linux-3.18.4$ grep -rn "virtual kernel memory layout" ./*

./arch/xtensa/mm/init.c:330:    pr_info("virtual kernel memory layout:\n"

./arch/sh/mm/init.c:431:    pr_info("virtual kernel memory layout:\n"

./arch/parisc/mm/init.c:619:    printk("virtual kernel memory layout:\n"

匹配到二进制文件 ./arch/x86/boot/compressed/vmlinux.bin

./arch/x86/mm/init_32.c:762:    printk(KERN_INFO "virtual kernel memory layout:\n"

匹配到二进制文件 ./arch/x86/mm/init_32.o

匹配到二进制文件 ./arch/x86/mm/built-in.o

匹配到二进制文件 ./arch/x86/built-in.o

./Documentation/arm64/memory.txt:56:For details of the virtual kernel memory layout please see the kernel

匹配到二进制文件 ./vmlinux

匹配到二进制文件 ./vmlinux.o


./arch/x86/mm/init_32.c:762

    printk(KERN_INFO "virtual kernel memory layout:\n"

        "    fixmap  : 0x%08lx - 0x%08lx   (%4ld kB)\n"

#ifdef CONFIG_HIGHMEM

        "    pkmap   : 0x%08lx - 0x%08lx   (%4ld kB)\n"

#endif

        "    vmalloc : 0x%08lx - 0x%08lx   (%4ld MB)\n"

        "    lowmem  : 0x%08lx - 0x%08lx   (%4ld MB)\n"

        "      .init : 0x%08lx - 0x%08lx   (%4ld kB)\n"

        "      .data : 0x%08lx - 0x%08lx   (%4ld kB)\n"

        "      .text : 0x%08lx - 0x%08lx   (%4ld kB)\n",

        FIXADDR_START, FIXADDR_TOP,

        (FIXADDR_TOP - FIXADDR_START) >> 10,

#ifdef CONFIG_HIGHMEM

        PKMAP_BASE, PKMAP_BASE+LAST_PKMAP*PAGE_SIZE,

        (LAST_PKMAP*PAGE_SIZE) >> 10,

#endif

        VMALLOC_START, VMALLOC_END,

        (VMALLOC_END - VMALLOC_START) >> 20,

        (unsigned long)__va(0), (unsigned long)high_memory,

        ((unsigned long)high_memory - (unsigned long)__va(0)) >> 20,

        (unsigned long)&__init_begin, (unsigned long)&__init_end,

        ((unsigned long)&__init_end -

         (unsigned long)&__init_begin) >> 10,

        (unsigned long)&_etext, (unsigned long)&_edata,

        ((unsigned long)&_edata - (unsigned long)&_etext) >> 10,

        (unsigned long)&_text, (unsigned long)&_etext,

        ((unsigned long)&_etext - (unsigned long)&_text) >> 10);


[    0.000000] virtual kernel memory layout:

[    0.000000]     fixmap  : 0xfff17000 - 0xfffff000   ( 928 kB)

[    0.000000]     pkmap   : 0xff800000 - 0xffc00000   (4096 kB)

[    0.000000]     vmalloc : 0xf7ffe000 - 0xff7fe000   ( 120 MB)

[    0.000000]     lowmem  : 0xc0000000 - 0xf77fe000   ( 887 MB)

[    0.000000]       .init : 0xc16ae000 - 0xc1722000   ( 464 kB)

[    0.000000]       .data : 0xc149861e - 0xc16ac540   (2127 kB)

[    0.000000]       .text : 0xc1000000 - 0xc149861e   (4705 kB)

 第四种形式: pr_warn("%s: Unknown symbol %s (err %li)\n",

            pr_warn("%s: Unknown symbol %s (err %li)\n",

                mod->name, name, PTR_ERR(ksym));

grep -rn "Unknown symbol" ./*

./arch/arm/kernel/unwind.c:160:        pr_warn("unwind: Unknown symbol address %08lx\n", addr);

./arch/mips/kernel/module.c:221:            printk(KERN_WARNING "%s: Unknown symbol %s\n",

./arch/mips/kernel/module-rela.c:132:            printk(KERN_WARNING "%s: Unknown symbol %s\n",

./arch/parisc/kernel/module.c:572:            printk(KERN_WARNING "%s: Unknown symbol %s\n",

./arch/parisc/kernel/module.c:708:            printk(KERN_WARNING "%s: Unknown symbol %s\n",

匹配到二进制文件 ./arch/x86/boot/compressed/vmlinux.bin
./kernel/module.c:1981:            pr_warn("%s: Unknown symbol %s (err %li)\n",

匹配到二进制文件 ./kernel/module.o

匹配到二进制文件 ./kernel/built-in.o

./scripts/kconfig/symbol.c:868: * name to be expanded shall be prefixed by a '$'. Unknown symbol expands to

匹配到二进制文件 ./vmlinux

匹配到二进制文件 ./vmlinux.o

[   21.511318] radeon: Unknown symbol cfb_copyarea (err 0)

[   21.522742] radeon: Unknown symbol cfb_imageblit (err 0)

[   21.522941] radeon: Unknown symbol cfb_fillrect (err 0)

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息