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

linux内核升级图文攻略

linux内核升级图文攻略
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修复,安全更新,新特性和驱动的次数。第三种方式中不使用偶数代表稳定版,奇数代表开发版这样的命名

方式。举个例子:3.7.0代表的不是开发版,而是稳定版!linux内核升级时间图谱如下:linux内核版本的详细表格如下(https://www.wendangku.net/doc/212537550.html,/wiki/Linux_kernel#Version_number ing):longterm support:提供长期支持的内核版本stable:

稳定版本,而不是Beta测试版关系就是:稳定版本不一定都提供长期支持,而提供长期支持的一定是稳定版本3. linux发行版Linux内核的发展过程中,我们还不得不提一下各种Linux发行版的作用,因为正是它们推动了Linux的应用,从而也让更多的人开始关注Linux。一些组织或厂家,将Linux系统的内核与外围实用程序(Utilities)软件和文档包装起来,并提供一些系统安装界面和系统配置、设定与管理工具,就构成了一种发行版本(distribution),Linux的发行版本其实就是Linux核心再加上外围的实用程序组成的一个大软件包而已。相对于Linux操作系统内核版本,发行版本的版本号随发布者的不同而不同,与Linux系统内核的版本号是相对独立的。因此把SUSE、RedHat、Ubuntu、Slackware等直接说成是Linux是不确切的,它们是Linux 的发行版本,更确切地说,应该叫做“以Linux为核心的操作系统软件包”。根据GPL准则,这些发行版本虽然都源自一个内核,并且都有自己各自的贡献,但都没有自己的版权。Linux的各个发行版本(distribution),都是使用Linus主导开发并发布的同一个Linux内核,因此在内核层不存在什么

兼容性问题。每个版本都不一样的感觉,只是在发行版本的最外层才有所体现,而绝不是Linux本身特别是内核不统一或是不兼容。90年代初期Linux开始出现的时候,仅仅是以源代码形式出现,用户需要在其他操作系统下进行编译才能使用。后来出现了一些正式版本。目前最流行的几个正式版本有:SUSE、RedHat、Fedora、Debian、Ubuntu、CentOS、Gentoo,等等。用户可根据自己的经验和喜好选用合适的Linux发行版。二、内核升级攻略1. 查看linux内核版本:# uname -r2.6.18-194.el52. 下载新的内核版本:去官网上下载最新的内核版本和对应的补丁:https://https://www.wendangku.net/doc/212537550.html,/我选的是3.2.14#wget -c

https://www.wendangku.net/doc/212537550.html,/pub/linux/kernel/v3.0/linux-3.2.14.tar .bz23. 解压将所需文件复制到/usr/src 下并解压。(注:如果/usr/src下的空间不够,将源文件放在别的目录下也是一样的)# cp linux-3.2.14.tar.gz /usr/src/# cd /usr/src/将文件解压到/usr/src/kernels# tar -xvf linux-3.2.14.tar.gz -C

/usr/src/kernels4. 清理文件清除掉以前升级留下的一些不正确文件。# cd /usr/src/kernels/linux-3.2.14# yum install ncurses-devel #升级ncurses# make mrporper# cp /boot/config-‘uname -r’ /usr/src/kernels/linux3.2.14/.config #使用原来的配置文件5. 通过菜单方式配置内核# cd

/usr/src/kernels/linux-3.2.14# make menuconfiglinux配置

菜单如下图所示:一定要勾选(输入y选中,M编译为模块)a、General setup→[*] enable deprecated sysfs features to support old userspace toolsb、Processor type and features→HighMemory Support。c、找到以下选中选项并选中:networking support → networking options → network packet filtering framework(netfilter)(1)Corenetfilter configuration. 勾中"Netfilter connection tracking support" -m state相关模块是依赖它的,不选则没有。. 将netbios name service protocal support(new) 编译成模块,不然后面升级iptables后启动时会出错. 勾中"Netfilter Xtables support (required for ip_tables)"(2)IP: Netfilter Configuration. 将"IPv4 connection tracking support (require for NAT)" 编译成模块。. 勾中IP tables support (required for filtering/masq/NAT) 。. 将"Full NAT" 下的"MASQUERADE target support" 和"REDIRECT target support" 编译成模块6. 编译并安装内核# make clean

// 清除下内核编译的目标文件# make bzImage // 生成内核文件# make modules // 编码模块# make modules_install // 安装模块# make install // 安装7. 编辑开机菜单选项grub文件将default=1 改为

default=0# vim /etc/grub.conf# grub.conf generated by anaconda## Note that you do not have to rerun grub after

making changes to this file# NOTICE: You do not have a /boot partition. This means that# all kernel and initrd paths are relative to /, eg.# root (hd0,0)# kernel /boot/vmlinuz-version ro root=/dev/sda1#

initrd

/boot/initrd-version.img#boot=/dev/sdadefault=0timeout=5 splashimage=(hd0,0)/boot/grub/splash.xpm.gzhiddenmen utitle Red Hat Enterprise Linux Server (3.2.14)

root (hd0,0) kernel /boot/vmlinuz-3.2.14 ro

root=LABEL=/ initrd /boot/initrd-3.2.14.imgtitle Red Hat Enterprise Linux Server (2.6.18-274.el5)

root (hd0,0) kernel /boot/vmlinuz-2.6.18-274.el5 ro root=LABEL=/ initrd

/boot/initrd-2.6.18-274.el5.img【保存并退出】8. 重启# shutdown -r "now"9. 查看内核编译结果# uname

-r3.2.14-rt24三、内核编译中遇到的错误及解决办法错误一、编译时出现错误提示In file included from

/usr/include/sys/time.h:31, from

/usr/include/linux/input.h:12, from samples/hidraw/hid-example.c:14:/usr/include/sys/select.h :78: error: conflicting types for

'fd_set'/usr/include/linux/types.h:12: error: previous

declaration of 'fd_set' was hereIn file included from

/usr/include/linux/input.h:14, from samples/hidraw/hid-example.c:14:/usr/include/sys/types.h: 46: error: conflicting types for

'loff_t'/usr/include/linux/types.h:30: error: previous declaration of 'loff_t' was here/usr/include/sys/types.h:62: error: conflicting types for

'dev_t'/usr/include/linux/types.h:13: error: previous declaration of 'dev_t' was hereIn file included from

/usr/include/sys/types.h:133, from

/usr/include/linux/input.h:14, from samples/hidraw/hid-example.c:14:/usr/include/time.h:105: error: conflicting types for

'timer_t'/usr/include/linux/types.h:22: error: previous declaration of 'timer_t' was hereIn file included from

/usr/include/linux/input.h:14, from samples/hidraw/hid-example.c:14:/usr/include/sys/types.h: 198: error: conflicting types for

'int64_t'/usr/include/linux/types.h:98: error: previous declaration of 'int64_t' was

here/usr/include/sys/types.h:204: error: conflicting types for 'u_int64_t'/usr/include/linux/types.h:97: error: previous

declaration of 'u_int64_t' was hereIn file included from

/usr/include/linux/input.h:14, from samples/hidraw/hid-example.c:14:/usr/include/sys/types.h: 235: error: conflicting types for

'blkcnt_t'/usr/include/linux/types.h:114: error: previous declaration of 'blkcnt_t' was

heresamples/hidraw/hid-example.c:15:26: error:

linux/hidraw.h: No such file or

directorysamples/hidraw/hid-example.c: In function

'main':samples/hidraw/hid-example.c:48: error: storage size of 'rpt_desc' isn't

knownsamples/hidraw/hid-example.c:49: error: storage size of 'info' isn't knownsamples/hidraw/hid-example.c:65: error: 'HIDIOCGRDESCSIZE' undeclared (first use in this function)samples/hidraw/hid-example.c:65: error: (Each undeclared identifier is reported only

oncesamples/hidraw/hid-example.c:65: error: for each function it appears in.)samples/hidraw/hid-example.c:73: error: 'HIDIOCGRDESC' undeclared (first use in this function)samples/hidraw/hid-example.c:84: warning: implicit declaration of function

'HIDIOCGRAWNAME'samples/hidraw/hid-example.c:91:

warning: implicit declaration of function

'HIDIOCGRAWPHYS'samples/hidraw/hid-example.c:98: error: 'HIDIOCGRAWINFO' undeclared (first use in this function)samples/hidraw/hid-example.c:49: warning: unused variable 'info'samples/hidraw/hid-example.c:48: warning: unused variable

'rpt_desc'samples/hidraw/hid-example.c: In function

'bus_str':samples/hidraw/hid-example.c:171: error:

'BUS_VIRTUAL' undeclared (first use in this

function)make[2]: *** [samples/hidraw/hid-example] Error 1make[1]: *** [samples/hidraw] Error 2make: *** [vmlinux] Error 2解决方案:# cp include/linux/hidraw.h

/usr/include/linux/# cp include/linux/hid.h

/usr/include/linux/# vim samples/hidraw/hid-example.c(在Linux下编译程序有时会遇到这种问题,这貌似是一个Linux 历史遗留问题: 把所有#include 都提到最前面,把#include 的包含放在其后,就可以编译通过了,之所以出现面的问题是存在循环引用所致。)将13-15行的如下3行移动到33行以后。13 #include 14 #include 15 #include 29 #include 30 #include 31 #include 32

#include 33 #include 【保存并退出】# vim

/usr/include/linux/input.hline 647#define BUS_PCI

0x01#define BUS_ISAPNP 0x02#define BUS_USB 0x03#define BUS_HIL

0x04#define BUS_BLUETOOTH 0x05/*以下一行为新增*/#define BUS_VIRTUAL

0x06#define BUS_ISA 0x10#define BUS_I8042 0x11#define BUS_XTKBD

0x12#define BUS_RS232 0x13#define BUS_GAMEPORT 0x14#define

BUS_PARPORT 0x15#define BUS_AMIGA 0x16#define BUS_ADB 0x17#define BUS_I2C 0x18#define BUS_HOST

0x19#define BUS_GSC 0x1A/*以下两行为新增*/#define BUS_ATARI 0x1B#define BUS_SPI 0x1C 【保存并退出】再重新编译;错误二:错误提示:Kernel panic—not

syncing :vfs:unable to mount root fs on unkown—block (0,0)错误分析:initrd-*.*.img文件有问题;未能成功挂载真正的根文件系统。解决方法:请你确认执行了make install 命令,我就因为没有执行这条命令而浪费了一周时间错误三:错误提示:Create root device mkrootdev: label / not found Mountingrootfilesystem

mount :error2 mounting ext3

mount :error 2mountingnone

switch root mount failed:22 umount /initrd/dev failed :2 kernel panic-not synicncing :Attempted to kill init .(错误提示是不是有点长,貌似错误很多哦,其实可能就一个原因导致)错误分析:1、根文件系统找不到挂载点,修改grub.conf文件为

root=/dev/ * 2、硬盘驱动未能找到,请看看你机器的硬盘是都是SATA盘,是的话同样恭喜你本文对你有帮助。错误解决:1.、修改grub.conf文件试试,具体修改点root=/dev/** 指的是原系统中/分区的挂载点。修改后,重启进入新内核系统,估计十有八九又会遇到如下错误提示:Mounting root filesystem mount :error6 mounting ext3mount :error 2 mountingnone switchroot mount failed:22umount

/initrd/dev failed :2kernel panic-not synicncing :Attempted tokil linit .如果不幸被我言中,请接着往下看。2、硬盘驱动未能成功找到,SCSI驱动有问题。我在内核编译升级中遇到这个问题,对内核选项选了又选,方法试了很多种,错误依旧。最终让我无意中选正确选项,成功升级内核。具体选项是:Device Drivers--------SCSIdevice

support------SCSIlow-level drivers----Serial ATA(SATA)support 选为M,然后再选择相应的子选项,我选择了Intel PIIX/ICH SATA support (new)后机器就成功启动了。错

误四:错误提示:Enforcing mode requested but no policy loaded. Halting now.kernel panic - not syncing: Attenpted to kill init!错误分析:原内核中启用了selinux,新内核未选择selinux的选项,不能成功启动。解决方法:修改grub.conf 文件,在root=LABEL=/ 后加入enforcing=0 错误五:编译完重启后出现:switchroot: mount failed: 22 umount /initrd/dev failed: 2 kernel panic - not symcing: Attempted to kill init! 的错误,解决办法:重新make menuconfig, 使

CONFIG_SYSFS_DEPRECATED_V2=y也可以打开文件.config做修改和验证;再执行:# make bzImage# make modules# make modules_install# make install# shutdown -r "now"四、linux内核启动流程计算机在启动时都是先加电,然后进行硬件检测并引导操作系统的初始化程序,然后操作系统的初始化程序程负责读入系统内核并建产系统的运行

环境.一这过程相对来说比较复而且与CPU体系结构相关,这里我们通过linux并以i386的体系结构对这一过程进行较为详细的说明. 1、硬件检测 . 当机器加电后它首先执行BIOS(基本输入输出系统)中的代码,BIOS首先执行加电自检程序(POST),当自检通过程便完成了硬件的启动。. POST 程序通过对内存及其他硬件的设备的诊断检测确定硬件的

存在并可正确操作。. BIOS是固化在芯片里的程序,执行这

一过程一般只需要几秒钟。. 当自检完成后BIOS按照系统COMS中设置的启动顺序搜寻有效的启动驱动器(这里我们以硬盘为例),并读入系统引导扇区,并将系统控制权交给引导程序。2、加载和执行引导程序系统引导程序主要是把系统内核装载到内存,启动盘必须在第一个逻辑磁道上包含引导记录。这512个字节的扇区又被称作是引导扇区,在系统完成加电自检后,BIOS从启动盘中将引导扇区读入到内存中。引导记录中包含了一些磁盘的物理特性的参数。在引导扇区被读入内存后,BIOS就能从这里读取到启动盘的物理参数。一旦引导记录加载完毕,BIOS就交出系统的执行控制权,跳转到引导程序的头部执行。引导记录开头是一条无条件转移指令,它将立即跳转到地址0x03e执行引导程序,在引导扇区中这个引导程序将从磁盘中读出其他几个更为复杂的程序并由它们加载系统内核。Linux的引导程序由汇编代码文件arch/i386/boot/bootsect.S生成,它利用对BIOS功能的调用将arch/i386/boot/下的setup.S文件和内核映象加载到内存。i386的体系结构的CPU分保护模式和实模式两种,在实模式下只能使用低端的640K内存。系统在加载引导程序时CPU是处在实模式下,而现在的内核映象文件一般都超过了640K的限制,即使是经过压缩过的内核映象,这个内核映象文件通常是bzImage,我们在编译内核时通常要用到这个文件。由于bzImage超出了640K这一

限制,所以linux设计了一个bootsect_helper子程序(定义在arch/i386/boot/setup.S中),引导程序通过循环调用bootsect_helper 将内核映象一块一块的装入内存,当内核加载完毕,系统跳转到setup.S的开始位置开始执行,setup.S仍在实模式下运行,主要功能是设置系统参数(如:内存、磁盘等),并为进入保护模式做准备,最后进入到保护模式并跳转到内核映象文件的头部开始执行内核。这里提一下有关linux的引导程序lilo和grub,lilo和grub可以引导多个系统,如果机器上要装多系统的话一般都会用到它们,这一引导程序也储存在引导扇区中或者存放在主引导记录中(MBR),lilo和grub都许允用户自己配置,它们在系统安装时建立了关于系统内核占用磁盘数据块的位置对照表。当用户选择启动linux系统后,同样也跳转到setup.S上运行。3、内核初始化当setup.S执行完后,CPU进行保护模式,并开始执行内核,. 如果内核是经过压缩的,那么首先执行arch/i386/boot/compressed目录下的head.S建立堆栈并解压内核映象文件,然后再转入arch/i386/kernel下的head.S。. 如果没有压缩则直接转到arch/i386/kernel下的head.S开始执行。arch/i386/kernel/head.S程序负责数据区(BBS)、中断描述表(IDT)、段描述表(GDT)、页表和寄存器的初始化。最后进入start_kernel()模块。此时系统运行在内核模式(0级别)下,转入到init/main.c中的start_kernel()。

start_kernel()继续其他方面的初始化工作,主要是初始化系统的核心数据结构,主要包括:setup_arch():执行与体系结构相关的设置。trap_init():设置各种入口地址。

init_IRQ():初始化IRQ中断处理机制。sched_init():设置并启动第一个进程init_task()。softirq_init():对软中断子系统进行初始化。console_init():初始化控制台、显示器. init_modules():初始化kernel_module。fork_init():定义系统最大进程数. 最后进入rest_init()函数并调用

kernel_thread()创建init内核线程,进行系统配置。init内核线程占用进程描述表的第一项,由它来创建其他完成系统初始他的进程。init内核线程首先要销定内核,然后调用

do_basic_setup()来初始化外部设备及加载驱动程序。主要的初始化工作包括:PCI总线初始化。网络初始化。文件系统初始化。加载文件系统。在do_basic_setup()调用完成后,init()会释放初始化函数据占用的内存,并且打开/dev/console 设备重新定向控制台,用系统调用execve来执行用户态程序/sbin/init。至此,linux的内核初始化工作完成。4. 下面的工作就由用户态的/sbin/init程序来完成。init 程序程读取/etc/inittab文件来决定它具体的工作。在inittab 中比较重要的几条是:id:5:initdefault 决定操作系统启动时缺省的执行级别(这里说讲的是系统的运行级别,而不同于CPU的级别) si:sysinit:/etc/rc.d/rc.sysinit 执行

/etc/rc.d/rc.sysinit的脚本。rc.sysinit主要的工作是激活交换分区、检查磁盘、加载硬件模块。

1:2345:respawn:/sbin/mingetty tty1 显示登录界面至此,整个系统的引导过程就完成了。

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/212537550.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/212537550.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/212537550.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/212537550.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/212537550.html,/fedora/linux/3/i386/RPMS.core/device-mapper-1.00.19-2.i386.rpm (2.6.18内核和这4个升级工具我都有备份,如果以上下载地址失效,请到https://www.wendangku.net/doc/212537550.html,/guestbook留下你的邮箱,我给你发过去)

ubuntu12.04 升级内核实战

ubuntu12.04 升级内核实战 ubuntu 12.04内核是linux 3.2.0-24,其实升级到最新版本3.3.4也没什么很大意义,主要是集成了一些新的驱动和一些普通用户用不到的功能,所以基本上本文纯属折腾,但不要随便升级当班设备啊!好了,不废话了,我们开始........... 首先是准备条件: ①、有一台装有ubuntu 12.04的机器 ②、先移步到https://www.wendangku.net/doc/212537550.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/212537550.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/212537550.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/212537550.html,/上下载新版本的内核源码,linux内核版本号中的第二位(即次版本号)为偶数的版本为稳定版,为奇数的版本是处于开发中的非稳定版,本文考虑到更新后的安装程序需要用于生产环境,因此,选择的版本号为4.8.6,即稳定版。下载后直接用tar将源码解压到/usr/src/kernels路径下。 第二步,配置和编译内核。在配置和编译内核前,需先准备好相关工具环境,先执行yum –y install gccncurses-developensslcreaterepo,在源码目录下分别执行下述命令即可生成内核二进制文件: # make menuconfig //启动一个图形化内核配置界面,该配置工具会将当前系统内核配置作为默认配置,配置好后选择按钮,会再内核源码目录中生成

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/212537550.html,下载一个新版本内核源码,当前最新稳定版为3.3.4。这里下载的是: https://www.wendangku.net/doc/212537550.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),如果未安装会报如下错误:

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 用户因为登录不方便而忘记密码。又或者为了方便起见,经常运行一 个管理账户。

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"

[教程] (已更新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”

ubuntu命令安装内核源码及升级内核源码

sudo apt-get install linux-source 会自动安装当前版本内核的源代码到/usr/src 升级内核源码: 1.将下载过来linux源代码包(tar.bz2包)解压到/usr/src下。如果你还不知道怎么解压,请google之~解压完毕后可以在/usr/src目录下看到一个linux- 2.6.31.6的文件夹 2.转移目录至linux-2.6.31.6用如下命令: cd /usr/src/linux-2.6.31.6 3.先配置Ubuntu内核: make menuconfig 具体怎么配置我不清楚,不过这个基本上不用怎么配置的,直接选最后一项,save,exit 就OK了 4.接着开始编译Ubuntu内核:make 这是一个漫长的过程,慢慢等吧~~这个花了我将近一个半小时的时间 5.加入模块: make modules_install 6.生成可执行的Ubuntu内核引导文件: make bzImage (注意i字母要大写) 7.将bzImage复制至/boot下: cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.31.6 //2.6.32Ubuntu内核的bzImage目录为arch/x86/boot/bzImage 8.清除多余的创建文件: make clean //这一步最好还是留到最后来做(现在可以先不跳过这一步),这样的话,即使你后面操作失误也可以回到这里重做,而不需要重新编译 9.将System.map复制至/boot下: cp System.map /boot/System.map-2.6.31.6 10.生成initrd.img 这个很重要,我开始弄错了这个,害的我白重启了一次。命令:

关于WIN终端版本(软件)升级方法

关于WIN终端版本(软件)升级方法 ——所有售前技术人员及客服需了解 软件版本V3.00及其以后为基于CE4.2内核程序的终端软件版本。此版本对改变了以前所有版本的程序结构,修改很大。此版本适应本公司硬件版本AT V1.3以后所有及其DT V1.1以后所有(包含)。现将此版本的制作与升级方法列入下: 附1:DOC制作、结构与文件存储 一:由V3.00(软件)以前终端升级到此版本(V1.3以前不适用) A:使用putimage文件升级: 使用电子小硬盘(或者带有DOS启动的IDE接口硬盘)启动终端,运行putimage 程序,将image文件PUT到终端即可 实例:image文件名称为A T5K300,则运行为:C:\> putimage at5k300。 注意:确保putimage的版本为5.1.4 二:V3.00同版本或之后版本升级 A:使用终端FTP升级 1、配置FTP服务器: ㈠如果服务器已经有了*:\Inetpub\ftproot这个目录(注:* 代表系统所在盘) 把升级文件直接拷贝到*:\Inetpub\ftproot目录下,这样就完成了服务器的设置。 ㈡如果服务器没有*:\Inetpub\ftproot目录,则要安装“internet信息服务”,步骤如下:在“控制面板”中,选择“添加/删除程序”中的“添加/删除windows组件”,在“windows组件向导”中在第一项“internet信息服务(IIS)”前面的复选框打上勾。如图所示: 选择“详细信息“,如下图:

在“文件传输协议(FTP)服务器“前打勾,确定后单击“下一步”跳出如下图所示的窗口 这时放入win2000的安装盘继续点“下一步”系统就开始安装internet信息服务直到完成服务的安装。完成后再进行如㈠中的步骤即可。 1.服务器配置完成后。在终端的“终端管理器”中选择“本机→程序升级”选择升级方式为“远程ftp” 2.终端正常启动,配置好终端IP地址等,运行PING,确认终端能PING通FTP服务器。

内核升级方法

内核升级方法: 一、将Linux内核从2.6.9.55直接升级到2.6.18.8 步骤: 1、将linux-2.6.18.8.tar.bz2放置在/usr/src/下然后解压: cd /usr/src tar -jxvf linux-2.6.18.8.tar.bz2 2、进入/usr/src目录,依次执行下列命令: make mrproper(第一次编译内核不需要) make menuconfig(直接保存退出) make make modules_install install 3、修改grub.conf文件 在/boot/grub/grub.conf 里新加enforcing =0 变成: title Red Hat Enterprise Linux ES (2.6.18.8) root (hd0,0) kernel /vmlinuz-2.6.18.8 ro root=LABEL=/ enforcing=0 rhgb quiet initrd /initrd-2.6.18.8.img 如果不加enfocing=0可能在重起后不能登录新编内核,并出现错误: Mkrootdev:label /enforcing=0 not found mount :error 6 mounting ext3 mount:error 2 mounting none switchroot:mount failed:22 umount /initrd/dev failed:2 kernel panic –not synicncing:Attemped to kill init 分析:root找不到挂载点,所以不能启动。另外需要注意的是enforcing=0和/与rhgb之间需要一个空格,否则错误信息同上。 4、重起,登录新编译的内核。 二、不在/usr/src目录下操作,在另外的目录下用shell脚本升级 我们在/dhcc目录下,建立个自己的目录,比如zhangbing,然后把linux-2.6.18.8.tar.bz2解压到这个目录下linux-2.6.18.8,同时建立一个目录build。 在linux-2.6.18.8目录中建立一个脚本shmake.sh 脚本内容如下: # !/bin/sh echo "make O=../build menuconfig" make O=../build menuconfig echo "make O=../build" make O=../build echo "make O=../build modules_install install" make O=../build modules_install install 此脚本的目的在于每次编译不对原内核产生任何影响,每次编译的东东都放于build目录中了。 脚本执行完后,同第一种方法一样修改grub.conf文件。 三、自己定制一个系统

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

Linux内核升级全过程 手把手教你一次成功

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

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