内核开发经验
看内核源码的神器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
2printk(KERN_INFO "The cuurent process commond : \"%s\" the pid :%i\n",
current->comm, current->pid);//comm:当前进程执行的程序文件名,pid:当前进程的pid号。