第一步:Linux2.4.18升级到2.4.31首先说明下我的环境:

三台装有RedHat8(2.4.18-14)的主机。初步的任务就是升级内核到2.4.31然后再安装补丁Squashfs。

下载升级需要的源代码linux-2.4.31.tar.gz拷贝到/usr/src下

CODE:

#cd /usr/src/

#tar -zxvf linux-2.4.31.tar.gz

如果你安装了2.4.18-14的源代码的话,/usr/src下可能有个链接指向2.4.18的源码.在2.4中这个链接名叫linux2.4,首先将它删除,重新建立一个链接指向2.4.31的源码,取名为linux2.4或者linux都行,我选择后者。

CODE:

#ln -s linux-2.4.31 linux

#cd linux

由于是对内核编译是新手,所以如果直接去选择内核配置一定会是件很头疼的事情,当然对于老手来说可能是一种乐趣。 我还是参考一下系统现成的配置为好,然后再从中修改。

CODE:

cp /boot/config-2.4.18-14 ./.config

make menuconfig

在这里我们对原来的配置不做太多改动,只是根据自己的需要进行一些修改。(我这里的选择都是根据上面要求选择的)

首先,处理器选项,选择P4(Y不是M)

而且是SMP的(Y不是M)

还需要把loopback块设备编译进内核(因为squashfs要用到的),在“Block devices --->”中选择“ Loopback device support ”(Y)。

对了,一定要记住为你的网卡选择驱动,以我的机子为例,在“Network device support ---> ”中选择“Ethernet (1000 Mbit) ---> ”子菜单进入后,选择“ Intel(R) PRO/1000 Gigabit Ethernet support ”这一项(Y)

好了,下来就可以退出了,一路exit最后可以看到一个启动项已经生成了选择保存配置文件的修改。

建立依赖关系

CODE:

#make dep

#make clean

#make bzImage[大概花费了5分钟时间]

完成时提示

CODE:

Root device is (22, 2)

Boot sector 512 bytes.

Setup is 4784 bytes.

System is 1010 kB

warning: kernel is too big for standalone boot from floppy

make[1]: Leaving directory `/usr/src/linux-2.4.31/arch/i386/boot'

我想这可能是没有对内核进行裁剪的结果吧,引起内核太大,不过不必理会这个警告,我又不用软盘去启动^_^

接着编译模块

CODE:

#make modules

安装模块

CODE:

#make modules_install

报错

CODE:

depmod: *** Unresolved symbols in /lib/modules/2.4.31/kernel/crypto/autoload.o

depmod: crypto_alg_lookup

depmod: *** Unresolved symbols in /lib/modules/2.4.31/kernel/crypto/proc.o

depmod: crypto_alg_sem

depmod: crypto_alg_list

将这些忽略掉,因为这些不会影响到内核的升级。如果你要去除这些错误,就从make menuconfig再来一次吧,重新进行内核配置。

下来,更新sytem.map文件和vmlinuz文件

CODE:

[root@l数据库专家 认证lhost linux]# cp System.map /boot/System.map-2.4.31

[root@l数据库专家 认证lhost linux]# cp arch/i386/boot/bzImage /boot/vmlinuz-2.4.31

重新建立文件链接

CODE:

[root@l数据库专家 认证lhost linux]# cd /boot/

[root@l数据库专家 认证lhost boot]# rm -fr System.map

[root@l数据库专家 认证lhost boot]# rm -fr vmlinuz

[root@l数据库专家 认证lhost boot]# ln -s System.map-2.4.31 System.map

[root@l数据库专家 认证lhost boot]# ln -s vmlinuz-2.4.31 vmlinuz

看一下链接是否正确:

CODE:

[root@l数据库专家 认证lhost boot]# ll

我们看到输出中包含两行:

CODE:

System.map -> System.map-2.4.31

vmlinuz -> vmlinuz-2.4.31

接着安装内核:

CODE:

[root@l数据库专家 认证lhost boot]# cd /usr/src/linux

[root@l数据库专家 认证lhost linux]# new-kernel-pkg --install --depmod --mkinitrd 2.4.31

由于添加了install选项和depmod选项,所以会出现跟make modules_install时出现一样的错误:

CODE:

depmod: *** Unresolved symbols in /lib/modules/2.4.31/kernel/crypto/autoload.o

depmod: crypto_alg_lookup

depmod: *** Unresolved symbols in /lib/modules/2.4.31/kernel/crypto/proc.o

depmod: crypto_alg_sem

depmod: crypto_alg_list

依旧忽略。

最后去/boot下检查下,并修改一下启动时的分区设置。

CODE:

[root@l数据库专家 认证lhost linux]# cd /boot/

[root@l数据库专家 认证lhost boot]# vi grub/grub.conf

可以看到一个启动项已经生成了

修改

root = LABEL=/

root = /dev/hdc2

也就是根目录/所在的分区

要获知根目录所在分区,通过命令

df –h 查看

CODE:

df -h

Filesystem Size Used Avail Use% Mounted on

/dev/hdc2 19G 2.4G 15G 13% /

/dev/hdc1 99M 13M 81M 14% /boot

/dev/hdc5 49G 33M 46G 1% /data

none 247M 0 247M 0% /dev/shm

我们得知是/dev/hdc2.

对了,如果要默认启动新的内核或者你是远程操作的话,需要将新的内核设置为默认启动项,将

/boot/grub/grub.conf

中的

CODE:

default=1

改为

CODE:

default=0

确认没有其它问题时,我们就可以reboot试试了。

机器启动正常後,进行查看,看是否符合我们的要求:

CODE:

#uname -a

Linux l数据库专家 认证lhost.l数据库专家 认证ldomain 2.4.31 #1 SMP Tue Jul 10 09:26:01 CST 2007 i686 i686 i386 GNU/Linux

看到内核版本信息已经改变了,而且是SMP的。

查看LOOPBACK是否已经被编译进内核,我们知道loopback是一个块设备,所以去/proc下找找看。

CODE:

[root@l数据库专家 认证lhost root]# cat /proc/devices

Character devices:

1 mem

2 pty

...................

Block devices:

1 ramdisk

7 loop

9 md

22 ide1

找到了loop了, 继续下一步工作。

linux升级补丁tar,Linux内核升级补丁安装手册(一)相关推荐

  1. linux升级补丁tar,Linux下Bash严重漏洞补丁升级方法

    env t='() { :;}; echo You are vulnerable.' bash -c "true" 在终端命令行中运行以上代码,如果提示"You are ...

  2. linux命令大全 tar,linux tar命令详解

    你还在为不知道linux tar命令详解而烦恼么?接下来是小编为大家收集的linux tar命令详解,希望能帮到大家. linux tar命令详解 apt-cache search # --(pack ...

  3. linux gunzip r .tar,Linux命令之文件归档、压缩、解压缩tar,gzip,gunzip,bzip2,bunz -电脑资料...

    tar 建立档案文件 [语法] tar [option] tarfile filename [命令说明] 文件名必须紧跟在-f参数后,且作为参数的最后一项; [参数说明] -c 建立一个新的档案文件; ...

  4. Linux内核热补丁方案对比

    Linux内核热补丁方案对比 荣涛 2021年10月13日 1. Linux 内核热补丁 1.1. linux 内核热补丁技术背景 1.1.1. update和upgrade的区别 1.1.1.1. ...

  5. linux 7 内核崩溃重启,centos7无故重启-内核升级

    最近有一台物理服务器,centos7操作系统,无故重启,每天都会发生这种情况: 解决: 升级内核 CentOS 允许使用 ELRepo,这是一个第三方仓库,可以将内核升级到最新版本,使用ELRepo升 ...

  6. linux 音频文件长度,Linux下压缩音频文件

    安装工具 sudo apt-get install lame 具体用法可以查看帮助  lame --help 通过更改音频文件的帧数 可以让文件变小  但是音质也会随之下降 现在比较多的mp3文件是1 ...

  7. redhat升级linux内核,redhat内核升级方法

    redhat9 2.6.9内核 1.越来越多的Linuxer开始对尚处在测试中的2.6内核产生了兴趣,确实它非常具有吸引力,众多的特性让人眼花潦乱.我也从2.4全面转到了2.6内核之下,享受着新特性带 ...

  8. 一文搞懂Linux系统内核升级及下载当前内核源代码

    1. 下载当前内核源代码 为什么下载内核源代? 一是便于查看或学习linux内核代码的底层实现方法: 二是便于编写或调试Linux设备驱动程序,因为驱动程序的编译需要内核源代码. 怎么下载? 如果你是 ...

  9. linux内核升级图文攻略

    一.Linux内核概览 Linux是一个一体化内核(monolithic kernel)系统. 设备驱动程序可以完全访问硬件. Linux内的设备驱动程序可以方便地以模块化(modularize)的形 ...

最新文章

  1. swift3.0最新拨打电话方法
  2. vue 怎么全局到入常量_vue定义全局变量和全局方法的方法示例
  3. Android在ListView滑动数据混乱
  4. echarts生成json地图最简单代码
  5. 基于Matlab的模拟通信实验平台设计,【通信原理仿真实验】通信原理虚拟实验仿真平台的设计和实现_玛雅作文网...
  6. 什么是向量中断,什么是中断向量?
  7. android 中如何监听按键的长按事件
  8. 按键精灵手机助手php通讯,按键精灵手机助手教程_按键精灵手机助手怎么连接手机...
  9. 手机号码检测开通微信
  10. 探索性测试在哪里适合?
  11. 做了这么多年的技术,你有写过博客吗?
  12. Ozone Block Chunk文件的layout方式
  13. GetDriveType将移动硬盘识别为DRIVE_FIXED 而不是DRIVE_REMOVABLE移动设备的问题
  14. 出现“性能监视器计数器要求”错误的解决办法
  15. “人工智能”•从入门到入土 –导言
  16. html读写Mysql数据库
  17. kvphone软电话安装包(ip电话)
  18. win10+node@16 安装特定版本 node-sass
  19. 在线压缩pdf文件任意大小,在线压缩pdf文件大小
  20. python撩妹小技巧 —— 30行代码实现520小彩蛋

热门文章

  1. R语言函数:length计算长度、seq生成数据序列、rep将数据对象重复N遍复制、cut将连续变量分割为多水平的因子变量、pretty将连续变量x分成n个区间创建合适的断点、cat数据对象拼接
  2. R语言使用ggplot2包使用geom_dotplot函数绘制分组点图(双分类变量分组可视化、颜色自定义、添加箱图)实战(dot plot)
  3. MySQL 两种存储引擎:MyISAM与InnoDB对比及理解
  4. R语言将多个dataframe导出到excel的多个表单(sheet)实战
  5. Python构建lassocv模型并输出Rad-score公式
  6. Object Detection+目标检测概述及其常见模型总结
  7. 生物学重复吗?还有技术重复?
  8. Assembly--及相关内容
  9. 数据结构---基础概念
  10. TensorFlow基础8-实现单层神经网络