扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
在本页阅读全文(共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进行选择,这个时候又出现了一个选项
不要轻易决定要不要选,看看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领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者