科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网安全频道Linux内核升级&补丁安装手册

Linux内核升级&补丁安装手册

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

关于内核的升级和补丁过程我这两周来就总结这点经验,对于一个老手来说或许是很简单的一件事情,但是对于初学者应该会提供一些帮助吧,当然这里的补丁不一定是squashfs了,也可以是iptables等等。

作者:巧巧读书 来源:巧巧读书 2008年6月26日

关键字: Linux 补丁 补丁管理 漏洞 漏洞管理

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共2页)

  第二步:给2.4.31内核打补丁,重新编译内核加载新特性

  下载squashfs3.1-r2.tar.gz补丁文件,这个版本是针对与2.4内核的,如果你是2.6内核系统的话,需要下载对应2.6版本的。

  先打补丁。将squashfs3.1-r2.tar.gz拷贝到/usr/src下

  CODE:

  [root@localhost src]# tar -zxvf squashfs3.1-r2.tar.gz

  [root@localhost src]# cd linux

  备份我们升级内核用到的配置文件

  CODE:

  [root@localhost linux]# cp .config ../backup.config

  进行上次编译后的清理

  CODE:

  [root@localhost linux]# make mrproper

  为了将2.4.31的内核跟打过补丁的内核区分开来或者不至引起错误,我们在makefile中添加自定义版本信息来进行区分。

  [root@localhost linux]# vi Makefile

  修改

  CODE:

  EXTRAVERSION =

  为

  CODE:

  EXTRAVERSION = -cucme

  保存。

  下来需要给内核打补丁

  CODE:

  [root@localhostlinux]#patch -p1 <../squashfs3.1-r2/linux-2.4.31/squashfs3.1-patch

  patching file fs/Config.in

  patching file fs/Makefile

  patching file fs/squashfs/inode.c

  patching file fs/squashfs/Makefile

  patching file fs/squashfs/squashfs2_0.c

  patching file fs/squashfs/squashfs.h

  patching file include/linux/fs.h

  patching file include/linux/squashfs_fs.h

  patching file include/linux/squashfs_fs_i.h

  patching file include/linux/squashfs_fs_sb.h

  patching file init/do_mounts.c

  patching file lib/Config.in

  然后把配置文件拷贝回来,在make menuconfig中再次进行修改。(这次的工作主要是添加squashfs文件系统)

  CODE:

  [root@localhost linux]# cp ../backup.config ./.config

  由于我们这次编译内核的意图明确,所以可以直奔主题,因为其它的选项都已经选择好了。

  CODE:

  [root@localhost linux]#make menuconfig

  我们直接寻找进入

  File systems --->项

  可以看到多了一项新的特性,那就是squashfs文件系统

  在上面用Y进行选择,这个时候又出现了一个选项

Linux内核升级&补丁安装手册(图七)

  不要轻易决定要不要选,看看squashfs的文档

  CODE:

  [root@localhost squashfs3.1-r2]# less INSTALL

  There are a set of options which are intended for use by embedded systems with

  low memory. At the "Additional options for memory-constrained systems" prompt,

  please say NO unless you're using an embedded system! Saying Y here allows you

  to specify cache sizes and how Squashfs allocates memory.

  所以对于这个特性我们选择N。

  好了config已经结束,退出。

  CODE:

  #make dep

  [root@localhost linux]# make clean

  [root@localhost linux]# make bzImage

  接着

  CODE:

  [root@localhost linux]# make modules

  [root@localhost linux]# make modules_install

  提示

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

  depmod: crypto_alg_lookup

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

  depmod: crypto_alg_sem

  depmod: crypto_alg_list

  depmod: *** Unresolved symbols in /lib/modules/2.4.31-cucme/kernel/drivers/sound/soundcore.o

  depmod: open

  depmod: read

  depmod: lseek

  depmod: close

  depmod: *** Unresolved symbols in /lib/modules/2.4.31-cucme/kernel/drivers/sound/wavefront.o

  depmod: open

  depmod: read

  depmod: close

  忽略。

  CODE:

  [root@localhost linux]# cp System.map /boot/System.map-2.4.31-cucme

  [root@localhost linux]# cp arch/i386/boot/bzImage /boot/vmlinuz-2.4.31-cucme

  [root@localhost linux]# cd /boot/

  [root@localhost boot]# rm -fr System.map

  [root@localhost boot]# rm -fr vmlinuz

  [root@localhost boot]# ln -s System.map-2.4.31-cucme System.map

  [root@localhost boot]# ln -s vmlinuz-2.4.31-cucme vmlinuz

  安装内核

  CODE:

  [root@localhost boot]# cd /usr/src/linux

  [root@localhost linux]# new-kernel-pkg --install --depmod --mkinitrd 2.4.31-cucme

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

  depmod: crypto_alg_lookup

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

  depmod: crypto_alg_sem

  depmod: crypto_alg_list

  depmod: *** Unresolved symbols in /lib/modules/2.4.31-cucme/kernel/drivers/sound/soundcore.o

  depmod: open

  depmod: read

  depmod: lseek

  depmod: close

  depmod: *** Unresolved symbols in /lib/modules/2.4.31-cucme/kernel/drivers/sound/wavefront.o

  depmod: open

  depmod: read

  depmod: close

  没有必要去重新make menuconfig设法去掉这些错误。

  修改grub.conf文件

  CODE:

  [root@localhost linux]# cd /boot/

  [root@localhost boot]# vi grub/grub.conf

  可以看到

跟升级时一样修改[根目录对应的分区和默认的启动项].

  检查无误重启reboot

  启动OK,进行检查

  内核版本

  CODE:

  [root@localhost root]# uname -a

  Linux localhost.localdomain 2.4.31-cucme #1 SMP Tue Jul 10 10:49:29 CST 2007 i686 i686 i386 GNU/Linux

  文件系统(看squashfs是否编译进内核)

  CODE:

  [root@localhost root]# cat /proc/filesystems

  nodev rootfs

  nodev bdev

  nodev proc

  nodev sockfs

  nodev tmpfs

  nodev shm

  nodev pipefs

  ext2

  nodev ramfs

  iso9660

  nodev devpts

  squashfs

  ext3

  nodev usbdevfs

  nodev usbfs

  nodev autofs

  我们看到了squashfs文件系统。

  测试squashfs

  CODE:

  [root@localhost root]# cd /usr/src/squashfs3.1-r2/squashfs-tools/

  [root@localhost squashfs-tools]# make

  [root@localhost squashfs-tools]# cp mksquashfs unsquashfs /usr/sbin/

  [root@localhost root]# mksquashfs /home/307.rm /mnt/test.img

  Parallel mksquashfs: Using 1 processor

  Creating little endian 3.0 filesystem on /mnt/test.img, block size 65536.

  Little endian filesystem, data block size 65536, compressed data, compressed metadata, compressed fragments

  Filesystem size 1583.37 Kbytes (1.55 Mbytes)

  97.93% of uncompressed filesystem size (1616.90 Kbytes)

  Inode table size 132 bytes (0.13 Kbytes)

  79.52% of uncompressed inode table size (166 bytes)

  Directory table size 22 bytes (0.02 Kbytes)

  100.00% of uncompressed directory table size (22 bytes)

  Number of duplicate files found 0

  Number of inodes 2

  Number of files 1

  Number of fragments 0

  Number of symbolic links 0

  Number of device nodes 0

  Number of fifo nodes 0

  Number of socket nodes 0

  Number of directories 1

  Number of uids 1

  root (0)

  Number of gids 0

  进入mnt下查看下。

  CODE:

  [root@localhost root]# ll -a /mnt/

  total 1596

  drwxr-xr-x 2 root root 4096 Jul 10 11:30 .

  drwxr-xr-x 21 root root 4096 Jul 10 11:23 ..

  -rwx------ 1 root root 1622016 Jul 10 11:30 test.img

  我们看到了生成的test.img镜像文件。

  关于内核的升级和补丁过程我这两周来就总结这点经验,对于一个老手来说或许是很简单的一件事情,但是对于初学者应该会提供一些帮助吧,当然这里的补丁不一定是squashfs了,也可以是iptables等等。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章