打印

GNU/Linux FAQs

GNU/Linux FAQs

1、什么是 GRUB?
GRUB (GRand Unified Bootloader),是一个著名的多操作系统引导管理器,暂且叫他“瀚统引导管理器”吧。除了 netbsd 之外,0.9x 系列 GRUB 几乎能引导已知的所有操作系统。

2、什么是 SWAP?
SWAP 本意是交换,在计算机领域是指一种(硬盘)虚拟内存技术,通过将不常用的内存“块(页)”写入硬盘,来腾出一部分内存给急需内存的进程使用,是物理内存不够用时的一种权宜之计。尽管 linux (操作系统内核) 的内存管理策略和 windows 完全不同,但是两者都有自己的虚拟内存技术。linux 可以使用硬盘多个特定分区作为自己的虚拟内存,称为“交换分区”,还可以使用硬盘上的多个文件作为自己的虚拟内存,称为“交换文件”,两者可以混合使用,但是交换文件的性能比交换分区差一些,虚拟内存总容积建议为物理内存的 0.5 - 2.0 倍。windows 只使用交换文件,win9x 使用的交换文件是 win386.swp,winnt 家族产品(包括 nt、2000、xp、2003 等)的内核起源于 unix 的 mach 微内核,使用和 linux 相似的内存分页技术,使用的交换文件是 pagefile.sys。

3、不同的 Linux 发行版所能支持的硬件为什么会有差别? 为什么不能直接把其他系统里相应的内核模块移植到自己的系统里?同一个版本的 Linux 内核,硬件驱动程序模块会因发行版不同而不同么?

首先要强调的是,不同的发行版,虽然都叫 GNU/Linux,但却实实在在是不同的操作系统,其硬件支持能力肯定是不同的。由于底层库的差异,作到 100% 互相兼容是天方夜谭,不仅是二进制层面,甚至源代码层面都不能作到,至少目前是如此。

linux 是一个宏内核,能完成操作系统的基本功能,这和微内核系统不同,后者需要一组运行于这个微内核上的服务才能完成相应的功能。所以 linux 内核的开发很大程度上是对硬件驱动的开发,不同版本的 linux 内核,对硬件的支持是不同的。但是内核集成的驱动是有限的,比如显卡、声卡、摄像头的驱动就是独立开发的。不同的厂商根据掌握技术的不同,有能力的,就自己给内核做扩展和修修补补,这就导致即便内核版本相同,对硬件支持也有差异。同时由于产品定位不同,其包含的驱动也不同,关键看发行者的意图。很多硬件厂商也独立提供自己产品的驱动源代码,有精力、能力的系统开发人员就会把尽可能多的第三方驱动加进系统。这些都带来了硬件支持上的差异。比如,magic 作为一个桌面版操作系统,就要尽可能地兼容所有硬件,否则用户就要苦不堪言了。相反作为服务器版本,很多驱动都是用不到的,比如声卡,同时巨大的内核也会影响效率,所以其内核可能要小得多,同时还要在稳定性、安全性方面作很多修补,真对服务器作优化。

至于为什么不能不能拿别人的模块驱动自己的设备,首先问你一句常识,有多少设备的不同版本的 windows 驱动能够嫁接在一起运行呢?同样道理,linux 下也不行。驱动是直接和硬件打交道的,由于活跃地开发,不同内核的同一个驱动可能差异很大,同时驱动间存在依赖关系,如果其依赖环境发生变化,很可能导致这个驱动不能运行。所以对这样的底层模块移花接木,是费力不讨好的。有时,即便修改了一个配置项,编译出来的模块很可能不能在上一次编译的同一个内核里装载。据我所知,直到 2.6.15 版的 linux 内核,才增加了对其他版本内核模块的有限兼容能力,而且你必须开启这个选项才能使内核具备这种能力。

TOP

谢谢,呵呵,以后知道哪些问题该在哪些地方问了!
看别人不顺眼,是自己休养不够! 网站搞不好,是自己技术不够!

TOP

谢谢,顶下

TOP