文档库 最新最全的文档下载
当前位置:文档库 › linux内核升级

linux内核升级

RedHat Linux 9.0系统内核升级

目录

1 引言 (1)

1.1 课程设计的目的 (1)

1.2 课程设计的意义 (1)

1.3 课程设计的内容 (2)

2 相关内容介绍 (3)

2.1内核版本2.6.18的新特性 (3)

2.2 几个重要的内核文件简介 (4)

2.2.1 vmlinuz-2.4.20-8 (5)

2.2.2 initrd-2.4.20-8.img (5)

2.2.3 System.map-2.4.20-8 (5)

2.3 内核升级大体过程 (7)

2.4 几个重要命令简介 (7)

3 内核升级的详细设计 (8)

3.1 准备阶段 (9)

3.2配置阶段 (10)

3.3 编译阶段 (17)

3.4 启动新内核 (18)

4 测试结果 (20)

4.1 升级前的内核 (20)

4.2 升级后的内核 (21)

5 升级过程中遇到的问题及解决方法 (22)

5.1 安装工具包时的问题及解决方法 (22)

5.2 配置文件系统时的问题及解决方法 (22)

5.3 安装新内核时出现的问题及解决方法 (23)

结束语 (24)

参考文献 (25)

第1页共25页

1 引言

1.1 课程设计的目的

RedHat Linux是目前世界上使用最多的Linux操作系统。因为它具备最好的图形界面,无论是安装、配置还是使用都十分方便,而且运行稳定。RedHat Linux推出9.0版本后,在原有的基础上又有了很大的进步。它完善了图形界面,增强了硬件的兼容性等等。众所周知,由于Linux 操作系统具有免费,开源等特点,加上用Linux作为服务器性能稳定,并且具有较高的安全性,所以近几年Linux操作系统有了蓬勃的发展,内核的版本的升级很快。RedHat Linux 9.0默认安装内核版本为2.4.20-8,随着在Linux上面应用的服务越来越多,这个内核版本已不能满足需要了,比如某些软件的安装需要的内核版本至少为2.6.××,所以在RedHat Linux9.0上对原有内核的升级变得刻不容缓。

本课程设计设主要目的是在虚拟机VMware Workstation 6.5-7.x下安装RedHat Linux9.0操作系统后,对原有内核版本2.4.20-8升级到2.6.18,通过对内核的升级,能够使Linux操作系统满足更多的需要,更大程度地发挥Linux操作系统的优势。

1.2 课程设计的意义

通过此次课程设计,可以加深自身对Linux系统的了解,更加深刻的认识Linux内核的结构,同时还可以更了解Linux操作系统的运行机制,更加熟悉Linux这一现在流行的操作系统,为以后更深入的学习Linux打下了良好的基础。

同时通过本次课程设计,可以加强我们的实际动手能力,明白理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才是真正的知识,才能提高自己的实际动手能力和独立思考的能力。同时还具有重大意义的是,在课程设计的过程中,会遇到很多问题,从发现问题、分析

问题、解决问题的过程中,可以培养自身严谨治学、一丝不苟的科学精神,锻炼出不怕失败、百折不挠的品质。

1.3 课程设计的内容

本次课程设计是对RedHat Linux 9.0内核进行升级,首先,在内核升级之前,必须深刻了解欲升级的内核版本2.6.18的新特性,知道了这点,才知道为什么要进行升级,升级后的系统相比之前有什么优点。同时还必须了解linux中几个非常重要的内核文件,比如vmlinuz-2.4.20-8、initrd-2.4.20-8.img、System.map-2.4.20-8。这几个文件在升级过程中是非常重要的,必须对它们的作用有所了解。其次,在升级过程中,我们要获得内核源码包及四个升级工具,利用内核源码包和四个升级工具,参考各方面的资料并结合自己所掌握的知识,先配置内核选项,再编译、安装新内核,一步步的完成整个内核升级,并且最后还要对新内核进行测试。

2 相关内容介绍

内核升级是涉及许多内容,必须先对这次内容有所了解之后,才能实施对内核的升级,否则将会失败,主要包括内核版本2.6.18的新特性、几个重要的内核文件、内核升级大体过程及升级过程中的重要命令。下面将对这些内容做具体介绍。

2.1内核版本2.6.18的新特性

相比内核版本2.4.20而言,内核版本2.6.18的新特性有:

(1)稳定性有所提高

为了彻底避免内核加载或者导出正在被使用的内核模块,或者至少为了减少加载或者卸载模块的同时使用该模块的可能性,内核加载和导出内核模块的过程都得到了改进。

(2)统一设备模型统一设备模型

它促进了模块接口的标准化,其目的是更好地控制和管理设备,例如:更准确地确定系统设备;电源管理和设备电源状态;改进的系统总线结构管理。

(3)即插即用(PnP)支持

运行 2.6 内核的Linux 成为一个真正即插即用的OS。例如,对ISA PnP 扩展、遗留MCA 和EISA 总线以及热插拔设备的PnP 支持。

(4)内核基础设施的变化

为了区别以.o 为扩展名的常规对象文件,内核模块现在使用的扩展名是.ko。创建了新的sysfs 文件系统,当内核发现设备树时就会描述它。内存支持,NUMA 支持支持更大数量的RAM。

(5)线程模型

NPTL相对于v2.4 的LinuxThreads[1],在版本 2.6 中新出现的是NPTL(Native POSIX Threading Library)。NPTL 为Linux 带来了企业级线程支持,提供的性能远远超过了LinuxThreads。它所基于的用户与内核线程的比率是1:1。

(6)扩展性改进处理器数目更多

Linux 内核2.6 最多可以支持64 个CPU。支持更大的内存,归功于PAE(物理地址扩展,Physical Address Extensions),在32-位系统上分页模式下所支持的内存增加到了64GB。也就是从16-位增加到了32-位。打开文件描述符的数量打开文件描述符的数量没有增加,但是不再需要事先设置该参数,它将自行调节。

(7)支持更多的设备

在Linux 内核 2.6 之前,内核中有可以约束大型系统的限制,比如每条链256 个设备。v2.6 内核彻底地打破了这些限制,不但可以支持更多类型的设备,而且支持更多同类型的设备。文件系统大小Linux 内核 2.6 所允许的可寻址文件系统大小最大为16 TB。

(8)文件系统

ext2、ext3 和ReiserFS 等传统Linux 文件系统得到了显著的改进。最值得注意的改进是扩展属性(或文件数据)的引入。最重要的是POSIX ACL 的实现,这是对普通UNIX 权限的扩展,可以支持更细化的用户访问控制。

2.2 几个重要的内核文件简介

编译升级Linux内核,需要根据规定的步骤进行,编译内核过程中涉及到几个重要的文件。在/boot目录下有一些与Linux内核有关的文件,进入/boot执行:ls –l,如图2.1所示。

图2.1 与linux内核有关的文件

本次是要对RedHat Linux 2.4.20-8内核进行升级,其中的vmlinuz-2.4.20-8、

initrd-2.4.20-8.img、System.map-2.4.20-8[2] 文件特别重要(其中2.4.20-8为内核版本号),

因为编译内核过程中涉及到这些文件的建立等操作。下面将对这几个文件作详细的介绍。

2.2.1 vmlinuz-2.4.20-8

vmlinuz是可引导的、压缩的内核。“vm”代表“Virtual Memory”。Linux 支持虚拟内存,不像老的操作系统比如DOS有640KB内存的限制。Linux能够使用硬盘空间作为虚拟内存,因此得名“vm”。vmlinuz是可执行的Linux内核,它位于/boot下,它一般是一个软链接。vmlinuz的建立有两种方式。一是编译内核时通过“make zImage”创建,然后通过:“cp/usr/src/linux-2.4/arch/i386/linux/boot/zImage /boot/vmlinuz”产生。zImage 适用于小内核的情况,它的存在是为了向后的兼容性。二是内核编译时通过命令make bzImage创建,然后通过:“cp /usr/src/linux-2.4/arch/i386/linux/boot/bzImage /boot/vmlinuz”产生。bzImage是压缩的内核映像,需要注意,bzImage不是用bzip2压缩的,bzImage 中的bz容易引起误解,bz表示“big zImage”。bzImage中的b是“big”意思。zImage (vmlinuz)和bzImage(vmlinuz)都是用gzip压缩的。它们不仅是一个压缩文件,而且在这两个文件的开头部分内嵌有gzip解压缩代码。所以不能用gunzip 或gzip –dc解包vmlinuz。内核文件中包含一个微型的gzip用于解压缩内核并引导它。两者的不同之处在于,老的zImage解压缩内核到低端内存(第一个640K),bzImage解压缩内核到高端内存(1M以上)。如果内核比较小,那么可以采用zImage 或bzImage之一,两种方式引导的系统运行时是相同的。大的内核采用bzImage,不能采用zImage。vmlinux是未压缩的内核,vmlinuz是vmlinux的压缩文件。

2.2.2 initrd-2.4.20-8.img

initrd是“initial ramdisk”的简写。initrd一般被用来临时的引导硬件到实际内核vmlinuz能够接管并继续引导的状态。例如initrd-2.4.7-10.img主要是用于加载ext3等文件系统及scsi设备的驱动。比如,使用的是scsi硬盘,而内核vmlinuz中并没有这个scsi 硬件的驱动,那么在装入scsi模块之前,内核不能加载根文件系统,但scsi模块存储在根文件系统的/lib/modules下。为了解决这个问题,可以引导一个能够读实际内核的initrd 内核并用initrd修正scsi引导问题。initrd映象文件是使用mkinitrd创建的。mkinitrd实用程序能够创建initrd映象文件。这个命令是RedHat专有的。其它Linux发行版或许有相应的命令。这是个很方便的实用程序。具体情况请看帮助:man mkinitrd。

2.2.3 System.map-2.4.20-8

System.map是一个特定内核的内核符号表。它是当前运行的内核的System.map的链接。内核符号表是怎么创建的呢? System.map是由“nm vmlinux”产生并且不相关的符号被滤出。编译内核时,System.map创建在/usr/src/linux-2.4/System.map。

在进行程序设计时,会命名一些变量名或函数名之类的符号。Linux内核是一个很复杂的代码块,有许许多多的全局符号。Linux内核不使用符号名,而是通过变量或函数的地址来识别变量或函数名。比如不是使用size_t BytesRead这样的符号,而是像c0343f20这样引用这个变量。对于使用计算机的人来说,更喜欢使用那些像size_t BytesRead这样的名字,而不喜欢像c0343f20这样的名字。内核主要是用c写的,所以编译器/连接器允许编码时使用符号名,当内核运行时使用地址。然而,在有的情况下,我们需要知道符号的地址,或者需要知道地址对应的符号。这由符号表来完成,符号表是所有符号连同它们的地址的列表。

Linux 符号表使用到2个文件:

/proc/ksyms

System.map

/proc/ksyms是一个“proc file”,在内核引导时创建。实际上,它并不真正的是一个文件,它只不过是内核数据的表示,却给人们是一个磁盘文件的假象,这从它的文件大小是0可以看出来。然而,System.map是存在于文件系统上的实际文件。当编译一个新内核时,各个符号名的地址要发生变化,老的System.map具有的是错误的符号信息。每次内核编译时产生一个新的System.map,应当用新的System.map来取代老System.map。虽然内核本身并不真正使用System.map,但其它程序比如klogd,lsof和ps等软件需要一个正确的System.map。如果使用错误的或没有System.map,klogd的输出将是不可靠的,这对于排除程序故障会带来困难。没有System.map,可能会面临一些令人烦恼的提示信息。另外少数驱动需要System.map来解析符号,没有为当前运行的特定内核创建的System.map它们就不能正常工作。Linux的内核日志守护进程klogd为了执行名称-地址解析,klogd需要使用System.map。System.map应当放在使用它的软件能够找到它的地方。执行:man klogd可知,如果没有将System.map作为一个变量的位置给klogd,那么它将按照下面的顺序,在三个地方查找System.map:/boot/System.map 、/System.map 、/usr/src/linux/System.map 。System.map也有版本信息,klogd能够智能地查找正确的映象(map)文件。

2.3 内核升级大体过程

内核升级是一项细致的工作,需要经过很多步骤,并且每个步骤缺一不可,不能调换顺序,在真正进行内核升级之情,需要对内核升级的大体步骤有个了解,这样在具体升级过程中才能做到心有成足,在出现一些小问题时就不会惊慌失措,下面简单介绍一下升级步骤。

内核升级过程一共涉及12个步骤,大体分为四个部分,如图2.2所示。

图2.2 内核升级四个部分

总的来说,内核成功升级需要经过准备工作、配置工作、编译工作和启动新内核这四个阶段。下面分别简单介绍这四个阶段各需要做些什么工作,具体方法步骤后文会详细介绍。

(1)准备阶段

这一阶段主要包括下载2.6内核源码、下载内核升级工具这三个步骤。

(2)配置阶段

这一阶段主要包括将下载好的内核源码包和4个升级工具都拷贝到/usr/src文件夹下、解压新内核、安装module-init-tools工具、安装另外三个升级工具、配置内核选项这五个步骤。

(3)编译阶段

这一阶段只包含一个步骤,就是对新内核进行编译,这个过程需要时间较长,也是内核升级最关键的地方,内核的编译安装都会在这个阶段进行,还有前面配置阶段的正确与否,直接关系到编译能否成功。

(4)启动新内核

这一阶段包括将新内核和System.ma p文件拷贝到/boot目录下、修改Grub启动管理器这二个步骤。

2.4 几个重要命令简介

make[3]:在整个升级过程中,make命令是用的最多的。make是一个命令工具,它解释Makefile中的指令。在Makefile文件中描述了整个工程所有文件的编译顺序、编译规

则。Make工具不仅仅是用来管理C语言工具的,那些只要编译器能够在Shell下运行的语言所构建的工程都可以使用make工具来管理。make在执行时,需要一个命名为Makefile的文件。这个文件告诉make以何种方式编译源代码和链接程序。make会自动根据修改情况完成源文件的对应.o文件的更新、库文件的更新、最终的可执行程序的更新。

cp: 这个命令相当于dos下面的copy命令,具体用法是:cp –r 源文件(source) 目的文件(target) 参数r是指连同源文件中的子目录一同拷贝。

cd:这个命令是用来进出目录的,和dos不同的是Linux的目录对大小写是敏感的,如果大小写没拼对,cd操作是成功不了的。其次,cd如果直接输入,cd后面不加任何东西,会回到使用者自己的Home Directory。假设如果是root,那就是回到/root.这个功能同cd ~是一样的。

3 内核升级的详细设计

在虚拟机VMware Workstation 6.5-7.x上安装好redhat linux 9.0后,了解内核升级的基本步骤,就可以着手对内核进行升级了。

3.1 准备阶段

(1)查看当前Linux内核版本

启动系统,如图3.1所示,当前系统中只有内核为2.4.20-8的版本,可以进行升级。

图3.1 当前内核版本

(2)下载2.6内核源码

下载地址:https://www.wendangku.net/doc/738266332.html,/pub/linux/kernel/v2.6/linux-2.6.18.tar.bz2

(3)下载内核升级工具

下载module-init-tools-3.2.tar.bz2

https://www.wendangku.net/doc/738266332.html,/pub/linux/utils/kernel/module-init-tools/module-init-tools-3.2.tar.bz2 下载mkinitrd-4.1.18-2.i386.rpm

下载lvm2-2.00.25-1.01.i386.rpm

下载device-mapper-1.00.19-2.i386.rpm

https://www.wendangku.net/doc/738266332.html,/f/12282167.html?from=like

3.2配置阶段

(1)下载好的内核源码包和4个升级工具都拷贝到/usr/src文件夹下,如图3.2所示。

# cd /usr/src

图3.2 源码包及工具放在/usr/src

(2)解压新内核

# tar jvxf linux-2.6.18.tar.bz2 (解压新内核)

# ln -s linux-2.6.18 linux (重新生成linux文件夹)

如图3.3所示为正在解压过程中。

图3.3 源码包正在解压过程中

(3)安装module-init-tools工具

在/usr/src目录下,依次执行下列命令:

# tar jvxf module-init-tools-3.2.tar.bz2 (解压module-init-tools)

# cd module-init-tools-3.2 (由/usr/src目录进入module-init-tools目录下)

#./configure --prefix=/

# make moveold

# make all install

#./generate-modprobe.conf /etc/modprobe.conf

如图3.4所示为module-init-tools解压过程。

图3.4 module-init-tools解压过程

图3.5为安装module-init-tools过程。

图3.5 module-init-tools安装

(4)安装另外三个升级工具

回到/usr/src目录下,依次执行下列3个命令来安装另外三个升级工具:# rpm[4] -ivh --nodeps mkinitrd-4.1.18-2.i386.rpm

# rpm -ivh --nodeps lvm2-2.00.25-1.01.i386.rpm

# rpm -ivh --nodeps device-mapper-1.00.19-2.i386.rpm

图3.6为安装mkinitrd-4.1.18-2.i386.rpm过程。

图3.6 安装mkinitrd-4.1.18-2.i386.rpm

图3.7 为安装device-mapper-1.00.19-2.i386.rpm过程。

图3.7 安装device-mapper-1.00.19-2.i386.rpm

(5)配置内核选项

# cd linux-2.6.18 (进入到/usr/src/linux-2.6.18目录下)

# make mrproper (该命令可确保源代码目录下没有不正确的.o文件)

# make menuconfig (配置内核各选项)

此时会出现一个图形界面,如图3.8所示。列出了所有的内核配置选项,在这个界面,可以看到对许多选项的设置,比如General Setup,Device Drivers,Block layer,File Systems,Bus options,Networking等,有的选项下还有子选项,在内核升级中必须对这些选项作认真的配置,任何一个选项少配置了,最后都会导致整个过程失败。可以用方向键来选择,用Y键来确定。

图3.8 配置选项图形界面

大多数选项默认就行,以下几个选项必须选择(请认真核对下面每一个选项,否则编译很有失败):

①Loadable Module support选项中,选上“Module unloading”和

“Automatic kernel module loading”这两项,这两个选项是对内核模块自动装载提供

支持。如图3.9所示。

图3.9 Loadable Module support配置

②Device Drivers--->Block Devices中选上“Loopback device support”;这个选项是对环回设备提供支持,环回设备主要用于环回测试,环回测试是很常用的一种测试,通常用于检查和分析端口或线路问题。如图3.10所示。

图3.10 Loopback device support配置

Device Drivers--->Multi-device support(RAID and LVM)处要选上

“device mapper support”;这个选项为对设备映射提供支持。如图3.11所示。

图3.11 device mapper support配置

Device Drivers--->Graphics support,一定要选上““Support for frame buffer devices”;

这个选项为对图形框架提供支持,现代操作系统几乎都配置了图形界面,这是系统易用性非常重要的一个特征,这样才能让那些未受过计算机专门训练的人能够使用计算机,所以必须选上这个选项。如图3.12所示。

图3.12 Support for frame buffer devices配置

Device Drivers --->;Network device support --->Ethernet (10 or 100Mbit) --->AMD PCnet3 2 PCI support 。这个选项是对总线设备提供支持。如图3.13所示。

图3.13 AMD PCnet32 PCI support配置

③File system--->(以下9个选项是关于ext2和ext3文件系统配置,全部选上) Second extended fs support

Ext2 extended attributes

Ext2 POSIX Access Control Lists

Ext2 Security Labels

Ext3 journalling file system support

Ext3 extended attributes

Ext3 POSIX Access Control Lists

Ext3 Security Labels

JBB (ext3) debugging support

File system--->DOS/FAT/NT Filesystems --->选上“NTFS file system support”;

如图3.14所示。

图3.14 File system的配置

④由于是在vmware下编译内核,并且硬盘用的是scsi的,SCSI-小型计算机系统接口(Small Computer System Interface)。SCSI采用ASPI的标准软件接口使驱动器和计算机内部安装的SCSI适配器进行通信。SCSI接口是一种广泛应用于小型机上的高速数据传输技术。所以要选择以下三个选项:

Device Drivers ---><*>SCSI device support ;

Device Drivers ---><*>SCSI device support ---><*>SCSI disk support;

Device Drivers---><8>SCSI device support--->SCSI low-level drivers---><*>BusLogic SCSI support。

3.3 编译阶段

在/usr/src/linux-2.6.18目录下,执行以下命令即可编译。如图3.15所示。

# make bzImage

内核编译成功后,会在/usr/src/linux/arch/i386/boot目录中生成一个新内核的映像文件bzImage。如果用make zImage编译,内核很大的话,系统会提示使用make bzImage 命令来编译,所以用make bzImage来编译。

图3.15 编译内核过程

# make modules (编译可加载模块)。使用内核编译机制,产生一个 .ko(内核目标文件,kernel object)模块目标文件而不是一个 .o 模块目标文件。这一过程在目标模块创建了一个特定部分,以记录使用的编译器版本号,内核版本号,是否使用内核抢占等信息。如图3.16所示。

图3.16编译可加载模块

# make modules_install (安装可加载模块)。如图3.17所示。

图3.17 安装可加载模块

安装成功后,系统会在/lib/modules目录下生成一个2.6.18子目录,里面存放着新内核的所有可加载模块。

# make install (安装新内核)。

3.4 启动新内核

(1)将新内核和System.map文件拷贝到/boot目录下,依次执行以下命令:

# cp /usr/src/linux-2.6.18/arch/i386/boot/bzImage /boot/vmlinuz-2.6.18

# cp /usr/src/linux-2.6.18/System.map /boot/System.map-2.6.18

# cd /boot (进入boot目录)

# rm –rf System.map (删除原来的链接)

# ln –s System.map-2.6.18 System.map (重新建立链接) 。如图3.18所示。

图3.18 重新建立链接

(2)修改Grub启动管理器

如果没有错误的话,修改grub[5] 配置文件,在/boot目录下,执行以下命令:

# new-kernel-pkg --mkinitrd --depmod --install 2.6.18 (这时候/boot下会生成一个initrd-2.4.18.img,并且grub.conf文件也作了相应更改)。

# df (查看根目录在那个分区,为 /dev/sda2)

# vi /grub/grub.conf

进入grub.conf文件,找到如下信息:

default=1

timeout=10

splashimage=(hd0,0)/grub/splash.xpm.gz

title Red Hat Linux (2.6.18)

root (hd0,0)

kernel /vmlinuz-2.6.18 ro root= LABEL=/

initrd /initrd-2.6.18.img

做两处修改:

①将default=1改为default=0(重启之后会默认进入2.6内核)

②将kernel行的“LABEL=/”换成根目录所在的分区。

修改后的文件内容如图3.19所示。

图3.19修改后的grub.conf文件

linux内核升级图文攻略

linux内核升级图文攻略 一、Linux内核概览Linux是一个一体化内核(monolithic kernel)系统。设备驱动程序可以完全访问硬件。Linux内的设备驱动程序可以方便地以模块化(modularize)的形式设置,并在系统运行期间可直接装载或卸载。1. linux内核linux 操作系统是一个用来和硬件打交道并为用户程序提供一个 有限服务集的低级支撑软件。一个计算机系统是一个硬件和软件的共生体,它们互相依赖,不可分割。计算机的硬件,含有外围设备、处理器、内存、硬盘和其他的电子设备组成计算机的发动机。但是没有软件来操作和控制它,自身是不能工作的。完成这个控制工作的软件就称为操作系统,在Linux的术语中被称为“内核”,也可以称为“核心”。Linux内核的主要模块(或组件)分以下几个部分:. 进程管理(process management) . 定时器(timer). 中断管理(interrupt management). 内存管理(memory management). 模块管理(module management). 虚拟文件系统接口(VFS layer). 文件系统(file system). 设备驱动程序(device driver). 进程间通信(inter-process communication). 网络管理(network management. 系统启动(system init)等操作系统功能的实现。2. linux内核版本号Linux内核使用三种不同的版本编号方式。. 第一种方

式用于1.0版本之前(包括1.0)。第一个版本是0.01,紧接着是0.02、0.03、0.10、0.11、0.12、0.95、0.96、0.97、0.98、0.99和之后的1.0。. 第二种方式用于1.0之后到2.6,数字由三部分“A.B.C”,A代表主版本号,B代表次主版本号,C代表较小的末版本号。只有在内核发生很大变化时(历史上只发生过两次,1994年的1.0,1996年的2.0),A才变化。可以通过数字B来判断Linux是否稳定,偶数的B代表稳定版,奇数的B代表开发版。C代表一些bug修复,安全更新,新特性和驱动的次数。以版本2.4.0为例,2代表主版本号,4代表次版本号,0代表改动较小的末版本号。在版本号中,序号的第二位为偶数的版本表明这是一个可以使用的稳定版本,如2.2.5; 而序号的第二位为奇数的版本一般有一些新的东西加入,是个不一定很稳定的测试版本,如2.3.1。这样稳定版本来源于上一个测试版升级版本号,而一个稳定版本发展到完全成熟后就不再发展。. 第三种方式从2004年2.6.0版本开始,使用一种“time-based”的方式。 3.0版本之前,是一种“A.B.C.D”的格式。七年里,前两个数字A.B即“2.6”保持不变,C随着新版本的发布而增加,D代表一些bug修复,安全更新,添加新特性和驱动的次数。3.0版本之后是“A.B.C”格式,B随着新版本的发布而增加,C代表一些bug修复,安全更新,新特性和驱动的次数。第三种方式中不使用偶数代表稳定版,奇数代表开发版这样的命名

如何自行编译一个Linux内核的详细资料概述

如何自行编译一个Linux内核的详细资料概述 曾经有一段时间,升级Linux 内核让很多用户打心里有所畏惧。在那个时候,升级内核包含了很多步骤,也需要很多时间。现在,内核的安装可以轻易地通过像 apt 这样的包管理器来处理。通过添加特定的仓库,你能很轻易地安装实验版本的或者指定版本的内核(比如针对音频产品的实时内核)。 考虑一下,既然升级内核如此容易,为什么你不愿意自行编译一个呢?这里列举一些可能的原因: 你想要简单了解编译内核的过程 你需要启用或者禁用内核中特定的选项,因为它们没有出现在标准选项里 你想要启用标准内核中可能没有添加的硬件支持 你使用的发行版需要你编译内核 你是一个学生,而编译内核是你的任务 不管出于什么原因,懂得如何编译内核是非常有用的,而且可以被视作一个通行权。当我第一次编译一个新的Linux 内核(那是很久以前了),然后尝试从它启动,我从中(系统马上就崩溃了,然后不断地尝试和失败)感受到一种特定的兴奋。 既然这样,让我们来实验一下编译内核的过程。我将使用Ubuntu 16.04 Server 来进行演示。在运行了一次常规的 sudo apt upgrade 之后,当前安装的内核版本是 4.4.0-121。我想要升级内核版本到 4.17,让我们小心地开始吧。 有一个警告:强烈建议你在虚拟机里实验这个过程。基于虚拟机,你总能创建一个快照,然后轻松地从任何问题中回退出来。不要在产品机器上使用这种方式升级内核,除非你知道你在做什么。 下载内核 我们要做的第一件事是下载内核源码。在 Kernel 找到你要下载的所需内核的URL。找到URL 之后,使用如下命令(我以 4.17 RC2 内核为例)来下载源码文件: wget https://git.kernel/torvalds/t/linux-4.17-rc2.tar.gz

Linux kernel内核升级全过程,教你一次成功

序言 由于开发环境需要在linux-2.6内核上进行,于是准备对我的虚拟机上的Linux系统升级。没想到这一弄就花了两天时间( 反复装系统,辛苦啊~~),总算把Linux系统从2.4.20-8内核成功升级到了2.6.18内核。 网上虽然有很多介绍Linux内核升级的文章,不过要么过时,下载链接失效;要么表达不清,不知所云;更可气的是很多 文章在转载过程中命令行都有错误。刚开始我就是在这些“攻略”的指点下来升级的,以致于浪费了很多时间。 现在,费尽周折,升级成功,心情很爽,趁性也来写个“升级攻略”吧!于是特意又在虚拟机上重新安装一个Linux系统 ,再来一次完美的升级,边升级边记录这些步骤,写成一篇Linux内核升级记实录(可不是回忆录啊!),和大家一起分享 ~~! 一、准备工作 首先说明,下面带#号的行都是要输入的命令行,且本文提到的所有命令行都在终端里输入。 启动Linux系统,并用根用户登录,进入终端模式下。 1、查看Linux内核版本 # uname -a 如果屏幕显示的是2.6.x,说明你的已经是2.6的内核,也用不着看下文了,该干什么干什么去吧!~~~如果显示的是 2.4.x,那恭喜你,闯关通过,赶快进行下一步。 2、下载2.6内核源码 下载地址:https://www.wendangku.net/doc/738266332.html,/pub/linux/kernel/v2.6/linux-2.6.18.tar.bz2 3、下载内核升级工具 (1)下载module-init-tools-3.2.tar.bz2 https://www.wendangku.net/doc/738266332.html,/pub/linux/utils/kernel/module-init-tools/module-init-tools-3.2.tar.bz2 (2)下载mkinitrd-4.1.18-2.i386.rpm https://www.wendangku.net/doc/738266332.html,/fedora/linux/3/i386/RPMS.core/mkinitrd-4.1.18-2.i386.rpm (3)下载lvm2-2.00.25-1.01.i386.rpm https://www.wendangku.net/doc/738266332.html,/fedora/linux/3/i386/RPMS.core/lvm2-2.00.25-1.01.i386.rpm (4)下载device-mapper-1.00.19-2.i386.rpm https://www.wendangku.net/doc/738266332.html,/fedora/linux/3/i386/RPMS.core/device-mapper-1.00.19-2.i386.rpm (2.6.18内核和这4个升级工具我都有备份,如果以上下载地址失效,请到https://www.wendangku.net/doc/738266332.html,/guestbook留下你的邮箱,我给你发过去)

关于Linux 内核中五个主要子系统的介绍

关于Linux 内核中五个主要子系统的介绍 发布时间:2008.01.02 06:23来源:赛迪网作者:sixth 1.进程调度(SCHED):控制进程对CPU的访问。当需要选择下一个进程运行时,由调度程序选择最值得运行的进程。可运行进程实际上是仅等待CPU资源的进程,如果某个进程在等待其它资源,则该进程是不可运行进程。Linux使用了比较简单的基于优先级的进程调度算法选择新的进程。 2.内存管理(MM)允许多个进程安全的共享主内存区域。Linux的内存管理支持虚拟内存,即在计算机中运行的程序,其代码,数据,堆栈的总量可以超过实际内存的大小,操作系统只是把当前使用的程序块保留在内存中,其余的程序块则保留在磁盘中。必要时,操作系统负责在磁盘和内存间交换程序块。内存管理从逻辑上分为硬件无关部分和硬件有关部分。硬件无关部分提供了进程的映射和逻辑内存的对换;硬件相关的部分为内存管理硬件提供了虚拟接口。 3.虚拟文件系统(VirtualFileSystem,VFS)隐藏了各种硬件的具体细节,为所有的设备提供了统一的接口,VFS提供了多达数十种不同的文件系统。虚拟文件系统可以分为逻辑文件系统和设备驱动程序。逻辑文件系统指Linux所支持的文件系统,如ext2,fat等,设备驱动程序指为每一种硬件控制器所编写的设备驱动程序模块。 4.网络接口(NET)提供了对各种网络标准的存取和各种网络硬件的支持。网络接口可分为网络协议和网络驱动程序。网络协议部分负责实现每一种可能的网络传输协议。网络设备驱动程序负责与硬件设备通讯,每一种可能的硬件设备都有相应的设备驱动程序。 5.进程间通讯(IPC) 支持进程间各种通信机制。处于中心位置的进程调度,所有其它的子系统都依赖它,因为每个子系统都需要挂起或恢复进程。一般情况下,当一个进程等待硬件操作完成时,它被挂起;当操作真正完成时,进程被恢复执行。例如,当一个进程通过网络发送一条消息时,网络接口需要挂起发送进程,直到硬件成功地完成消息的发送,当消息被成功的发送出去以后,网络接口给进程返回一个代码,表示操作的成功或失败。其他子系统以相似的理由依赖于进程调度。

ubuntu12.04 升级内核实战

ubuntu12.04 升级内核实战 ubuntu 12.04内核是linux 3.2.0-24,其实升级到最新版本3.3.4也没什么很大意义,主要是集成了一些新的驱动和一些普通用户用不到的功能,所以基本上本文纯属折腾,但不要随便升级当班设备啊!好了,不废话了,我们开始........... 首先是准备条件: ①、有一台装有ubuntu 12.04的机器 ②、先移步到https://www.wendangku.net/doc/738266332.html,/下载linux稳定版内核 ③、拥有root权限 ④、并将下载好的内核解压到/usr/src下,使用命令如下: #tar jxvf linux-3.3.4.tar.bz2 这样你就可以得到一个名叫linux-3.3.4 好,现在一切都准备好了,接下来就开始配置,编译,安装新内核吧!1,进入刚才的文件夹/usr/src/linux-3.3.4,输入命令:$ make mrproper 该命令的功能在于清除当前目录下残留的.config和.o文件,这些文件一般是以前编译时未清理而残留的。而对于第一次编译的代码来说,不存在这些残留文件,所以可以略过此步,但是如果该源代码以前被编译过,那么强烈建议执行此命令,否则后面可能会出现未知的问题。2,配置编译选项 作为操作系统的内核,其内容和功能必然非常繁杂,包括处理器调

度,内存管理,文件系统管理,进程通讯以及设备管理等等,而对于不同的硬件,其配置选项也不相同,所以在编译源代码之前必须设置编译选项。其实我觉得这一步是升级内核整个过程中最有技术含量的,因为要根据自己的需要正确选择yes or no需要对计算机方方面面的知识都有所了解。但是这里的选项实在是太多了,大概有几百项之多,我以前曾尝试着一项一项的选,但是最后还是放弃了,因为有很多选项不是很明白。 既然这样,难道没有什么简便的方法么?当然有!那就是make menuconfig 或者make xconfig。我使用的是make menuconfig,但是前提条件是要装ncurses。 ncurses 到https://www.wendangku.net/doc/738266332.html,/pub/gnu/ncurses/下载,可以放到任何目录进行安装: tar zxvf ncurses.tar.gz #解压缩并且释放文件包 cd ncurses #进入解压缩的目录(注意版本) ./configure #按照你的系统环境制作安装配置文件 make #编译源代码并且编译NCURSES库 su root #切换到root用户环境 make install #安装编译好的NCURSES库 另外,在make menuconfig过程中也会有一些选项需要你来设置

升级Centos6.5安装光盘中的内核

升级CentOS6.5安装镜像中的Linux内核版本 前言 因为之前笔者所在公司的一款虚拟化平台产品在数据中心服务器上部署时出现不兼容现象,怀疑是安装介质中我们所定制的Linux内核与新服务器硬件不兼容导致,于是就牵涉到升级安装介质中Linux内核的工作。由于这款虚拟化平台产品是在CentOS6.5的基础上定制得到,所以本质上相当于直接更新CentOS6安装介质中Linux内核。关于如何定制一张Linux发行版光盘,以及如何在一个完整现有的Linux系统上升级内核,网上各种文章铺天盖地几乎已成大路货。然而直接升级发行版介质中的内核却少有提及,为此我将整个工作过程记录下来,所用方式方法不一定最优,但意在抛砖引玉。 在我进行这项工作的时候,发现https://www.wendangku.net/doc/738266332.html,上的内核最新版本已悄然变为4.8.6,这是一个stable版本,于是乎决定就用它了。 安装光盘目录结构分析 CentOS6.5安装介质目录结构如下图所示: 图1 CentOS发行版ISO目录树 (1)EFI目录主要用于64位的基于EFI的系统引导。其中的BOOT目录下的BOOTX64.conf为grub的配置文件,用于显示引导菜单。

(2) images目录:包含有各种引导镜像。最重要的是引导第二阶段安装程序需要用到的镜像文件install.img(CentOS7安装盘中该文件名称是squashfs.img),该镜像文件内部文件系统类型是squashfs,未经压缩,可以直接挂载(只读),anaconda程序就在这个镜像文件中。该目录中还包含一个pxeboot目录,主要用于制作PXE安装方式引导介质。 (3) isolinux目录:有开机引导系统安装的内核(vmlinuz)及临时文件系统(initrd.img),在引导系统时会载入内存。 (4) Packages目录:包含安装所需的所有二进制RPM包。 (5) repodata目录:一个位于光盘介质上的yum源,内部包含了软件仓库所有的配置文件。 (6) TRANS.TBL文件:记录当前目录的列表,用mkisofs的-T参数重新生成,主要是为了支持长文件名称。 (7) .discinfo文件是安装介质的识别信息。.treeinfo文件记录不同安装方式安装程序所在的目录结构,如PXE方式时,内核kernel=images/pxeboot/vmlinuz,根文件系统initrd=images/pxeboot/initrd.img。 CentOS安装光盘是一张引导盘,启动时,引导程序会分别将vmlinuz和initrd.img载入内存,待内核初始化完成后,会执行initrd中的/sbin/init,/sbin/init 加载/sbin/loader,最终加载运行install.img中的anaconda安装程序。anaconda会根据配置和用户操作分别安装Packages文件夹下的rpm包,操作系统内核也以rpm包的形式存在其中。因此,需要更新的文件主要是光盘中isolinux、image/pxeboot下的vmlinuz和initrd.img文件,Packages目录下的内核RPM包。 编译内核及模块 第一步,从https://https://www.wendangku.net/doc/738266332.html,/上下载新版本的内核源码,linux内核版本号中的第二位(即次版本号)为偶数的版本为稳定版,为奇数的版本是处于开发中的非稳定版,本文考虑到更新后的安装程序需要用于生产环境,因此,选择的版本号为4.8.6,即稳定版。下载后直接用tar将源码解压到/usr/src/kernels路径下。 第二步,配置和编译内核。在配置和编译内核前,需先准备好相关工具环境,先执行yum –y install gccncurses-developensslcreaterepo,在源码目录下分别执行下述命令即可生成内核二进制文件: # make menuconfig //启动一个图形化内核配置界面,该配置工具会将当前系统内核配置作为默认配置,配置好后选择按钮,会再内核源码目录中生成

如何安装Linux内核源代码

如何获取Linux内核源代码 下载Linux内核当然要去官方网站了,网站提供了两种文件下载,一种是完整的Linux 内核,另一种是内核增量补丁,它们都是tar归档压缩包。除非你有特别的原因需要使用旧版本的Linux内核,否则你应该总是升级到最新版本。 使用Git 由Linus领头的内核开发队伍从几年前就开始使用Git版本控制系统管理Linux内核了(参考阅读:什么是Git?),而Git项目本身也是由Linus创建的,它和传统的CVS不一样,Git是分布式的,因此它的用法和工作流程很多开发人员可能会感到很陌生,但我强烈建议使用Git下载和管理Linux内核源代码。 你可以使用下面的Git命令获取Linus内核代码树的最新“推送”版本: $ git clone git://https://www.wendangku.net/doc/738266332.html,/pub/scm/linux/kernel/git/torvalds/linux-2.6.git 然后使用下面的命令将你的代码树与Linus的代码树最新状态同步: $ git pull 安装内核源代码 内核包有GNU zip(gzip)和bzip2格式。Bzip2是默认和首选格式,因为它的压缩比通常比gzip更好,bzip2格式的Linux内核包一般采用linux-x.y.z.tar.bz2形式的文件名,这里的x.y.z是内核源代码的具体版本号,下载到源代码包后,解压和抽取就很简单了,如果你下载的是bzip2包,运行: $ tar xvjf linux-x.y.z.tar.bz2 如果你下载的是gzip包,则运行: $ tar xvzf linux-x.y.z.tar.gz 无论执行上面哪一个命令,最后都会将源代码解压和抽取到linux-x.y.z目录下,如果你使用Git下载和管理内核源代码,你不需要下载tar包,只需要运行git clone命令,它就会自动下载和解压。 内核源代码通常都会安装到/usr/src/linux下,但在开发的时候最好不要使用这个源代码树,因为针对你的C库编译的内核版本通常也链接到这里的。 应用补丁

redhat5.8升级内核版本培训资料

r e d h a t5.8升级内核 版本

一、升级背景 前段时间公司有个项目用到了短信收发的业务,采购了两台16口的Wavecom USB短信猫设备,服务器操作系统是ReadHat5.4,内核2.6.18,插上设备后,操作系统无法自动识别该设备,原因是没有预装该设备USB转串口的驱动程序,可能是只有这个产品不能识别,因为曾经我用过单口的GSM MODEM短信猫测试,可以自动识别出来。后来从供应商处得到信息,说是他们这个产品比较新,版本低的内核没有预装新的USB转串口驱动程序,但现在2.6.32以上内核都自带了USB转串口的驱动,所以最后通过升级系统内核的方式解决了这个问题。 二、升级测试环境 宿主机:Window xp 虚拟机:VM8.0.2 OS:CentOS 5.8 Final 内核(升级前):2.6.18 所有操作步聚使用root权限 三、升级步聚 1、下载内核 到https://www.wendangku.net/doc/738266332.html,下载一个新版本内核源码,当前最新稳定版为3.3.4。这里下载的是: https://www.wendangku.net/doc/738266332.html,/pub/linux/kernel/v2.6/longterm/v2.6.35/linux-2.6.35.13.tar.bz2

2、解压内核文件 将linux-2.6.35.13.tar.bz2上传到/usr/local/src目录下,使用tar -jxvf linux-2.6.35.13.tar.bz2命令解压,得到linux-2.6.35.13目录 3、清除文件 cd linux-2.6.35.13(下面所有操作都是在此目录,除非切换了新的目录) make distclean 清除以前编译内核生成的所有文件(除了清除可执行文件和目标文件外,configure所产生的Makefile也会清除掉) 如果是第一次编译,这步聚可以省略 4、复制配置文件 将系统默认的内核配置文件复制到linux-2.6.35.13目录下,并命名.config cp /boot/config-2.6.18-308.el5 .config 5、内核配置(make menuconfig) 内核配置,有三种方式: a)、make config:基于文本的最为传统的配置界面,不推荐使用 b)、make menuconfig:基于文本选单的配置界面,字符终端下推荐使用。 注意:使用make menuconfig 需要安装ncurses(yum -y install ncurses-devel),如果未安装会报如下错误:

史上最全linux内核配置详解

对于每一个配置选项,用户可以回答"y"、"m"或"n"。其中"y"表示将相应特性的支持或设备驱动程序编译进内核;"m"表示将相应特性的支持或设备驱动程序编译成可加载模块,在需要时,可由系统或用户自行加入到内核中去;"n"表示内核不提供相应特性或驱动程序的支持。只有<>才能选择M 1. General setup(通用选项) [*]Prompt for development and/or incomplete code/drivers,设置界面中显示还在开发或者还没有完成的代码与驱动,最好选上,许多设备都需要它才能配置。 [ ]Cross-compiler tool prefix,交叉编译工具前缀,如果你要使用交叉编译工具的话输入相关前缀。默认不使用。嵌入式linux更不需要。 [ ]Local version - append to kernel release,自定义版本,也就是uname -r可以看到的版本,可以自行修改,没多大意义。 [ ]Automatically append version information to the version string,自动生成版本信息。这个选项会自动探测你的内核并且生成相应的版本,使之不会和原先的重复。这需要Perl的支持。由于在编译的命令make-kpkg 中我们会加入- –append-to-version 选项来生成自定义版本,所以这里选N。 Kernel compression mode (LZMA),选择压缩方式。 [ ]Support for paging of anonymous memory (swap),交换分区支持,也就是虚拟内存支持,嵌入式不需要。 [*]System V IPC,为进程提供通信机制,这将使系统中各进程间有交换信息与保持同步的能力。有些程序只有在选Y的情况下才能运行,所以不用考虑,这里一定要选。 [*]POSIX Message Queues,这是POSIX的消息队列,它同样是一种IPC(进程间通讯)。建议你最好将它选上。 [*]BSD Process Accounting,允许进程访问内核,将账户信息写入文件中,主要包括进程的创建时间/创建者/内存占用等信息。可以选上,无所谓。 [*]BSD Process Accounting version 3 file format,选用的话统计信息将会以新的格式(V3)写入,注意这个格式和以前的v0/v1/v2 格式不兼容,选不选无所谓。 [ ]Export task/process statistics through netlink (EXPERIMENTAL),通过通用的网络输出工作/进程的相应数据,和BSD不同的是,这些数据在进程运行的时候就可以通过相关命令访问。和BSD类似,数据将在进程结束时送入用户空间。如果不清楚,选N(实验阶段功能,下同)。 [ ]Auditing support,审计功能,某些内核模块需要它(SELINUX),如果不知道,不用选。 [ ]RCU Subsystem,一个高性能的锁机制RCU 子系统,不懂不了解,按默认就行。 [ ]Kernel .config support,将.config配置信息保存在内核中,选上它及它的子项使得其它用户能从/proc/ config.gz中得到内核的配置,选上,重新配置内核时可以利用已有配置Enable access to .config through /proc/config.gz,上一项的子项,可以通过/proc/ config.gz访问.config配置,上一个选的话,建议选上。 (16)Kernel log buffer size (16 => 64KB, 17 => 128KB) ,内核日志缓存的大小,使用默认值即可。12 => 4 KB,13 => 8 KB,14 => 16 KB单处理器,15 => 32 KB多处理器,16 => 64 KB,17 => 128 KB。 [ ]Control Group support(有子项),使用默认即可,不清楚可以不选。 Example debug cgroup subsystem,cgroup子系统调试例子 Namespace cgroup subsystem,cgroup子系统命名空间 Device controller for cgroups,cgroups设备控制器

RedHat5 内核升级指南

RedHat5.3 升级内核到2.6.33 版本

错误:insmod: error inserting '/lib/dm-region-hash.ko' : -1 File exists 编译2.6.31内核后重启出现 insmod: error inserting '/lib/dm-region-hash.ko' : -1 File exists 解决方法: 1,解压initrd文件 [root@bogon ~]# cp /boot/initrd-2.6.30.4.img /tmp [root@bogon ~]# cd /tmp/ [root@bogon tmp]# ls initrd-2.6.30.4.img [root@bogon tmp]# mkdir newinitrd [root@bogon tmp]# cd newinitrd/ [root@bogon newinitrd]# zcat ../initrd-2.6.30.4.img |cpio -i 11537 blocks 释放之后看到如下内容 [root@bogon newinitrd]# ls bin dev etc init lib proc sbin sys sysroot 2,ok,下边就是编辑init,删掉其中重复的四行中的两行 echo "Loading dm-region-hash.ko module" insmod /lib/dm-region-hash.ko echo "Loading dm-region-hash.ko module" insmod /lib/dm-region-hash.ko 3,重新打包initrd [root@bogon newinitrd]# find .|cpio -c -o > ../initrd 11538 blocks [root@bogon newinitrd]# cd .. [root@bogon tmp]# gzip -9 < initrd > initrd.img [root@bogon tmp]# ls initrd-2.6.30.4.img initrd initrd.img newinitrd 好了,initrd.img就是重新打包的initrd了,然后把initrd.img拷贝到/boot,更改grub.conf里边的initrd-2.6.30.4.img为initrd.img就可以了, 这样“insmod: error inserting '/lib/dm-region-hash.ko' : -1 File exists”就不会有了 其实将init文件的第二行“setquiet”去掉,你就知道initrd文件到底在做什么了

Linux如何禁止系统内核Kernel自动升级

Linux如何禁止系统内核Kernel自动升级 Kernel是系统内核,Linux系统在进行升级的时候内核也会跟着更新,有时为了避免不必要的麻烦,不少用户会选择不升级Linux内核,那么要如何禁止Kernel升级呢? 不过在更新其他软件包时,如果依赖最新的内核,那么该软件包是没法更新成功的。 方法如下: 方法1: # vim /etc/yum.conf exclude=kernel* 在 [main]配置段下,追加或修改以上内容。 可通过下面的命令查看是否生效: # yum update | grep -i kernel 方法2: 在yum命令行中加上-x参数,来跳过指定的更新。如: # yum -x ‘kernel*’ update Linux禁止系统内核Kernel升级的方法就介绍到这里了,方法2是通过在yum命令行中加入参数来实现的,相较于方法1简单了很多。 【拓展阅读】Linux 新手容易犯的 7 个错误 7. 选择错误的 Linux 发行版 Linux 有几百个不同的版本,或者按他们的称呼叫做发行版(distribution)。其中许多是专门针对不同的版本或用户的。选择了错误的版本,你与 Linux 的第一次亲密体验将很快变成一个噩梦。 如果你是在朋友的帮助下切换的话,确认他们的建议是适合你,而不是他们。有大量的文章可以帮助到你,你只需要关注前 20 名左右的或者列在 Distrowatch 的即可,就不太可能会搞错。

更好的做法是,在你安装某个发行版之前先试试它的 Live DVD。Live DVD 是在外设 上运行发行版的,这样可以允许你在不对硬盘做任何改动的情况下对其进行测试。事实上,除非你知道怎么让硬盘在 Linux 下可访问,否则你是不会看到你的硬盘的。 6. 期待什么都是一样的 由于经验有限,许多 Windows 用户不知道新的意味着新的程序和新的处理方式。事 实上你的 Windows 程序是无法在 Linux 上运行的,除非你用 WINE 或者 Windows 虚拟机。而且你还不能用 MS Office 或者 PhotoShop ——你必须要学会使用 LibreOffice 和 Krita。 经过这些年,这些应用可能会有和 Windows 上的应用类似的功能,但它们的功能可能具 有不同的名称,并且会从不同的菜单或工具栏获得。 就连很多想当然的都不一样了。Windows 用户会特别容易因为他们有多个桌面环境 可以选择而大吃一惊——至少有一个主要的和很多次要的桌面环境。 5. 安装软件的时候不知所措 在 Windows 上,新软件是作为一个完全独立的程序来安装的。通常它囊括了其它所 需的依赖库。 有两种叫做 Flatpak 和 Snap 的软件包服务目前正在 Linux 上引进类似的安装系统, 但是它们对于移动设备和嵌入式设备来说太大了。更多情况下,Linux 依赖于包管理系统,它会根据已安装的包来判断软件的依赖包是否是必需的,从而提供其它所需的依赖包。 笔记本和工作站上的包管理本质上相当于手机或平板电脑上的 Google Play:它速度 很快,并且不需要用于安装的物理介质。不仅如此,它还可以节省 20%-35% 的硬盘空间,因为依赖包不会重复安装。 4. 假想软件会自动更新好 Linux 用户认为控制权很重要。Linux 提供更新服务,不过默认需要用户手动运行。 例如,大多数发行版会让你知道有可用的软件更新,但是你需要选择安装这些更新。 如果你选择更新的话,你甚至可以单独决定每一个更新。例如,你可能不想更新到新的内核,因为你安装了一些东西需要使用当前的内核。又或者你想要安装所有的安全性更新,但不想把发行版更新到一个新的版本。一切都由你来选择。 3. 忘记密码 许多 Windows 用户因为登录不方便而忘记密码。又或者为了方便起见,经常运行一 个管理账户。

Linux内核十个版本性能对比

【IT168 评论】从2008年1月底至今,Linux Kernel系统内核已经先后升级了十次,版本号也从2.6.24上升到2.6.33,并且下个版本2.6.34也已进入开发阶段。今天我们就看看过去两年内这十个版本在性能上有何差异。 测试平台是一套工作站系统,硬件配置包括AMD Opteron 2384 2.7GHz四核心处理器(“上海”)、泰安Thunder n3600B S2927主板(NVIDIA nForce 3600PRO 芯片组)、4GB DDR2 ECC Reg内存、希捷ST3300622AS 300GB硬盘、ATI FirePro V8700显卡,软件上采用Ubuntu 8.04.4 LTS 64位操作系统,组件有GNOME 2.22.3、https://www.wendangku.net/doc/738266332.html, Server 1.4.0.90、GCC 4.2.4、EXT3。 Linux Kernel 2.6.24-2.6.33的每个版本都从Ubuntu PPA源上获取,而且均为64位版本。除了替换内核之外,系统其他设置均保持默认。 Apache Benchmark(静态网页服务):2.6.33成绩大幅提升,但事实最早的2.6.24版反而才是好的,之后八个版本都差得很多,最新版终于基本正常了。

PostgreSQL pgbench(每秒钟TPC-B交易数):2.6.30的成绩比上个版本骤然提升了多达770%,但之后2.6.32迅速下滑,最新的2.6.33却又完全不如2.6.30之前的六个版本了。

7-Zip Compression(文件压缩速度):不同版本有所波动,最新的2.6.33成了赢家,这才是我们最希望看到的。 LZMA Compression(256MB文件压缩):十个版本几乎没什么区别。

ubuntu内核升级及卸载

ubuntu内核升级及卸载 ubuntu下内核的升级与卸载 很多用户一般都会选择Windows + Ubuntu的双系统。用得时间久了,随着Ubuntu内核的不断升级,开机启动菜单会变得越来越臃肿。下面简单介绍一下如何删除开机启动菜单多余的内核(旧版本),以及如何调整不同操作系统的启动顺序。 Ubuntu是由grub引导启动的。每当Ubuntu升级到新的版本后,grub会自动调整开机启动菜单的顺序,把新的内核放在启动菜单的开始,同时也不会删除久的内核版本。这样,当Ubuntu的升级次数一多,启动菜单中将变得非常臃肿。而且那些旧版本的内核基本不会用,不如删除之。解决方案如下: 1.找出系统已经安装的内核版本,在终端里输入命令:dpkg --get-selections | grep linux-image 然后会显示系统中已安装的内核,例如: linux-image-2.6.35-22-generic install linux-image-2.6.38-10-generic install

linux-image-2.6.38-11-generic install linux-image-2.6.38-8-generic install linux-image-3.0.0-12-generic install linux-image-generic install 2.卸载旧的内核版本,在终端里输入命令:sudo apt-get remove linux-image-2.6.35-22-generic linux-image-2.6.38-8-generic linux-image-2.6.38-10-generic linux-image-2.6.38-11-generic 上面命令和含义是: dpkg --get-selections [ ...] 把已选中的软件包列表打印到标准输出; grep linux-image 匹配查找; uname -a 查看已安装的linux内核版。 这样,旧的内核版本就删除了。然而,grub修改开机启动菜单,会自动把最新的Ubuntu放在第一位,把Windows放在最后一个。我们经常希望把Windows调整到靠前的位置,可能还会修改默认的启动项和等待时间等。解决方案如下:1.找到grub配置,打开配置文档,在终端里输入命令:sudo gedit /boot/grub/grub.cfg 2.修改grub配置

linux src.rpm内核源码编译安装升级

下载的内核源码包拷贝到/usr/src 执行rpm -ivh your-package.src.rpm warning: user brewbuilder does not exist - using root warning: group brewbuilder does not exist - using root # useraddbrewbuilder # groupaddbrewbuilder # cd /usr/src/redhat/SPECS [root@localhost SPECS]# ls kernel-2.6.spec rpmbuild -bp --target=i686 your-package.specs一个和你的软件包同名的specs文件 4.cd /usr/src/redhat/BUILD/your-package/ 一个和你的软件包同名的目录 调整linux核心,让系统能够支持多于256 个legacy tty设备(pty, tty pair) 在linux核心配置里有一个选项'CONFIG_LEGACY_PTY_COUNT' 是用来控制系统内建多少个legacy tty设备; 如果想让系统能够支持很多legacy tty设备,需要修改此配置项的值,然后重新编译内核。对于2.6.39内核 在使用交互的config方式,如menuconfig之前;注意先修改内核目录下/drivers/tty/Kconfig(/drivers/char/Kconfig)文件 cd /usr/src/redhat/BUILD/your-package/ 一个的软件包同名的目录/drivers/tty/Kconfig(/drivers/char/Kconfig) 修改之前: config LEGACY_PTY_COUNT int "Maximum number of legacy PTY in use" depends on LEGACY_PTYS range 0 256 default "256" 修改之后: config LEGACY_PTY_COUNT int "Maximum number of legacy PTY in use" depends on LEGACY_PTYS range 1 2048 default "2048"

Linux的版本与内核

Linux的版本与内核 Linux有两种版本,一个是核心(kernel)版,一个是发行(distribution)版。核心版的序号由三部分数字构成,其形式为:major.minor.patchlevel,其中,majoro为主版本号,minor为次版本号,二者共同构成了当前核心版本号。patchlevel表示对当前版本的修订次数。例如,2.2.11表示对核心作用2.2 版本的第11次修订。根据约定,次版本号为奇数时,表示该版本加入新内容,但不一定稳定,相当于测试版;次版本号为偶数时,表示这是一个可以使用的稳定版本。鉴于Linux内核开发工作的连续性,内核的稳定版本与在此基础上进一步开发的不稳定版本总是同时存在的。建议采用稳定的核心版本。 Linux的内核具有两种不同的版本号,实验版本和产品化版本。要确定LINUX版本的类型,只要查看一下版本号:每一个版本号由三位数字组成,第二位数字说明版本类型。如果第二位数字是偶数则说明这种版本是产品化版本,如果是奇数说明是实验版本。如2.6.20是产品化版本,2.6.16是实验版本。LINUX的两种版本是相互关联的。实验版本最初是产品化产品的拷贝,然后产品化版本只修改错误,实验版本继续增加新功能,到实验版本测试证明稳定后拷贝成新的产品化版本,不断循环,这样一方面可以方便广大软件人员加入到LINUX的开发和测试工作中来,另一方面又可以让一些用户使用上稳定的LINUX版本。真是做到开发和实用两不误。现在LINUX的内核的最新版本是2.6.20。 Linux内核 Linux是最受欢迎的自由电脑操作系统内核。它是一个用C语言写成,符合POSIX标准的类Unix操作系统。Linux最早是由芬兰黑客 Linus Torvalds为尝试在英特尔x86架构上提供自由免费的类Unix操作系统而开发的。该计划开始于1991年,这里有一份Linus Torvalds 当时在Usenet新闻组comp.os.minix所登载的贴子,这份著名的贴子标志着Linux计划的正式开始。在计划的早期有一些Minix 黑客提供了协助,而今天全球无数程序员正在为该计划无偿提供帮助。技术上说Linux是一个内核。“内核”指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。一个内核不是一套完整的操作系统。一套基于Linux内核的完整操作系统叫作Linux操作系统,或是GNU/Linux架构。今天Linux是一个一体化内核(monolithic kernel)系统。设备驱动程序可以完全访问硬件。Linux内的设备驱动程序可以方便地以模块化(modularize)的形式设置,并在系统运行期间可直接装载或卸载。Linux不是微内核(microkernel)架构的事实曾经引起了Linus Torvalds与Andy Tanenbaum之间一场著名的争论。 Linux内核简史 操作系统是一个用来和硬件打交道并为用户程序提供一个有限服务集的低级支撑软件。一个计算机系统是一个硬件和软件的共生体,它们互相依赖,不可分割。计算机的硬件,含有外围设备、处理器、内存、硬盘和其他的电子设备组成计算机的发动机。但是没有软件来操作和控制它,自身是不能工作的。完成这个控制工作的软件就称为操作系统,在Linux 的术语中被称为“内核”,也可以称为“核心”。Linux内核的主要模块(或组件)分以下几个部分:存储管理、CPU和进程管理、文件系统、设备管理和驱动、网络通信,以及系统的初始化(引导)、系统调用等。

[教程] (已更新6个AMD适用的内核)

这篇贴子是我依照samsonwtsui大大的一步神贴,补充了大大忽略的问题,删繁就简总结出来的产物,以供新手们作为安装雪豹系统的参考,我的是AMD的CPU,其它的U也适用(主要是替换内核部分不同),新手结合我的贴子和一步神贴阅读效果更佳! 第一步:缩小现有分区卷 雪豹使用自己的文件系统,HFS+,不兼容Windows的NTFS文件系统,这个指南需要2个HFS+分区完成安装任务,其中一个大小是6.3GB,用来放雪豹安装光盘,另一个用来放雪豹操作系统,大小是20GB(按照自己需要增减,操作系统本身就占了约4.5GB)。 操作: 1. 右键点击我的电脑(计算机)——>管理——>弹出来的窗口左边的磁盘管理,这里你可以看见你的硬盘分区状况。 2. 在D盘上点击右键——>压缩卷然后在弹出来的框输入26906(1024MB/GB×26.3GB),然后按确定即可。(XP用户和使用FAT32格式的用户如无法压缩卷可以使用Acronis Disk Director Suite或Paragon PM实现类似功能)

3. 右键点击未分配空间——>新建简单卷,点击下一步后输入6426(1024MB/GB×6.3GB),下一步将此空间分配到E,不要格式化。完成之后Windows会弹出框告诉你需要格式化E才能访问,先谢谢她的好意,不过选择取消,不格式化。 4. 用同样的办法把剩下的20G也新建一个卷。这个卷随便你格不格式化。 技巧:6.3GB的盘一定要靠近原来的D盘,等安装完成后把这个光盘拆了,用扩展卷功能又能够让它的空间合到D盘里面。 第二步:加载DVD到硬盘并修改。 1.下载HFS-Explorer并安装 2.若你的Windows之前没有安装Java VM(Java JRE虚拟机),也另需下载安装。 3.打开HFS-Explorer点击"File"—>"Load file system from file",在弹出框里找到雪豹的安装光盘DMG文件,然后在弹出框里选含有HFS+那一项,如图,然后点即可。已购买苹果DVD 的朋友插入光盘后点击"File"—>"Load file system from device",然后点击“Load”

相关文档
相关文档 最新文档