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


第三种形式:log_info("starting version " VERSION);

[    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中有do_syslog()函数的声明

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

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


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

initrd.img.version里面init脚本会调用

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

udev脚本有对systemd-udevd的调用

/lib/systemd/systemd-udevd --daemon --resolve-names=never

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


 第一种形式:  pr_notice("%s", linux_banner);

init/main.c 中有

    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);


version.c 中有linux_banner[]定义

const char linux_banner[] =
    "Linux version " UTS_RELEASE " (" LINUX_COMPILE_BY "@"
    LINUX_COMPILE_HOST ") (" LINUX_COMPILER ") " UTS_VERSION "\n";

dmesg中的信息显示:

[    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

...

...

[    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)


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


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)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值