总结下在看Linux源码的过程中的开发经验。

  • 看内核源码的神器LXR

  • 有时候需要下Linux内核特定版本,可能在kernel官网中没有找到,此时可以去这里下载特定版本内核。

  • 在内核调试的过程中,可以在 /var/log/syslog中查看到一些信息

  • dmesg时需要用到正则, dmesg | grep ljm

  • 在编译内核重启的时候,发现开不了机,很大可能是因为 printk打印的信息太多, 此刻,需要删除这些信息,删除的文件为 /var/log/syslog或者 /var/log/dmesg

  • 编译完内核的时候打开kvm,发现总是报internal error:Network ‘default’ is not active.的错误。
    首先尝试:sudo virsh net-start default
    否则采取如下方案:
    forums上给出了问题的解答,发现是编译内核的时候NAT有些模块没有模块化。

  • linux 没有高级选项引导内核的时候

    • /etc/default/grub中,注释掉 GRUB_HIDDEN_TIMEOUT
    • sudo update-grub
  • KVM不可用,虚拟机的性能可能很差
    必须使用CPU的VT技术支持,故需要开启VT功能

  • current的应用
    current 指针指向当前在运行的进程,内核代码可以通过使用 current 来使用进程特定的信息。指向 task_struct 的current指针在内核堆栈内,是一个全局项。

    1
    2
    printk(KERN_INFO "The cuurent process commond : \"%s\"  the pid :%i\n",
    current->comm, current->pid);//comm:当前进程执行的程序文件名,pid:当前进程的pid号。