日期:2014-05-16  浏览次数:20756 次

关于linux一些使用上的理论问题
本人对于linux的使用还处在探索阶段,目前遇到一些问题,想寻求大家帮忙梳理。我使用的是12.04,3.2.26内核,弄个了个3D桌面。
今天自己编译了一个3.4.6内核,装好了使用却发现屏幕分辨率不对。于是使用more /var/log/X... | grep "(EE)"查看显卡驱动是不是有问题,结果显示是没有加载。我以为是没有装好驱动的问题,可是在/lib/modules/3.4.6对应的驱动文件夹里找到了nvidia.ko。
于是,我就很不解

问题1:这是因为什么造成的?按理说我之前原版内核已经装好了驱动,为什么换了内核却不行了呢?两个内核会使用同一个驱动吗?(如果不会,那为什么在原内核装的程序在新内核也能使用;如果会,那为什么说是没有加载呢)还有,如果我在一个内核里装东西,是不是只能是全局的,不能限定内核使用?我要怎么做才能解决我分辨率的问题?

问题2:当系统加载内核的时候是一个怎么过程呢?从boot开始,大家能给我简要说一下吗?就是大概由哪个文件到哪个文件,最后加载成功?

问题3:编译内核时候make和make modules具体什么区别?

------解决方案--------------------
1.对于闭源驱动、第三方驱动,不同的内核不会使用同一个驱动,内核自带的驱动每个内核都自带一份,内核级的ko驱动一般会装在/lib/modules/kernelversion中,内核级驱动对内核和gcc版本都敏感。而用户级程序是公用的

2.系统启动后控制权最先在grub,grub引导内核,控制权就交给了内核,如果不算modules,内核只有一个文件,/boot里的vmlinuz,这就是内核映像,windows也一样,ntoskrnl就是内核映像,sys驱动就相当于modules

3.不会覆盖,如前所述,在不同目录

最后声明,定期发行版,任何自行编译安装行为都只是学习(包括内核和软件),对于生产环境和正经使用非常不推荐

参见
http://topic.csdn.net/u/20120717/22/9c2a2c6f-20b4-40c9-8970-b1f9b88a4e47.html