007.Vmware-Linux 内核编译一
来源:互联网 发布:天津话发音软件 编辑:程序博客网 时间:2024/06/03 17:51
Date: 4-Mar-2011
By: Calvinlee1984@163.com
1. 编译平台 Vmware_6.0,RedHat-Enterprise-4-i386-AS(linux-2.6.9-5)
2.几个重要的内核文件 ls –l /boot
1) vmlinuz是vmlinux可引导、压缩的内核。‘vm’表‘Virtual Memory’。Vmlinuz建立的方式有两种:make zImage或make bzImage然后将生成的zImage复制成 /boot/vmlinuz。bzImage中的b是“big”意思。 zImage和bzImage都用gzip压缩的。它们不仅是一个压缩文件,而且在这两个文件的开头部分内嵌有gzip解压缩代码。所以不能用gunzip 或 gzip –dc解包vmlinuz。内核文件中包含一个微型的gzip用于解压缩内核并引导它。两者的不同之处在于,老的zImage解压缩内核到低端内存(第一个640K),bzImage解压缩内核到高端内存(1M以上)。如果内核比较小,那么可以采用zImage 或bzImage之一,两种方式引导的系统运行时是相同的。大的内核采用bzImage,不能采用zImage;
2) initrd-x.x.x.imginitrd是“initial ramdisk”的简写。initrd一般被用来临时的引导硬件到实际内核vmlinuz能够接管并继续引导的状态。比如,使用scsi硬盘时内核vmlinuz中并没有这个scsi硬件的驱动,那么在装入scsi模块之前,内核不能加载根文件系统,但scsi模块存储在根文件系统的/lib/modules下。为了解决这个问题,可以引导一个能够读实际内核的initrd内核并用initrd修正scsi引导问题;
3) System.map是一个特定内核的内核符号表。在进行程序设计时,会命名一些变量名或函数名之类的符号。Linux内核是一个很复杂的代码块,有许许多多的全局符号。 Linux内核不使用符号名,而是通过变量或函数的地址来识别变量或函数名。比如不是使用size_t BytesRead这样的符号,而是像c0343f20这样引用这个变量。 对于使用计算机的人来说,更喜欢使用那些像size_t BytesRead这样的名字,而不喜欢像c0343f20这样的名字。内核主要是用c写的,所以编译器/连接器允许我们编码时使用符号名,当内核运行时使用地址。 然而,在有的情况下,我们需要知道符号的地址,或者需要知道地址对应的符号。这由符号表来完成,符号表是所有符号连同它们的地址的列表。
3. 获取新版本内核
cd /usr/src
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.28.tar.gz
gzip –dc linux-2.6.28.tar.gz | tar xvf –
cd linux-2.6.28
4.保存当前系统相关文件
cp –af /lib/modules /lib/modules.bak
cp –af /boot /boot.bak
cp –af /etc/grub.conf /etc/grub.conf.bak
5.make mrproper //清除*.o及*.config等文件
6.配置内核选项 make menuconfig
具体设置须详细了解每一选项。
7.编译内核
make clean //清除*.o文件
make bzImage //编译内核及built-in模块
make modules //编译可加载模块
make modules_install
depmod –a //建立模块之间的依赖关系
make install
注:将Fusion MPT device support选项选上,就不会出现No module mptbase found for 错误了。
8.reboot
注:将kernel /vmlinuz-2.6.28 ro root=LABEL=/ 改为 kernel /vmlinuz-2.6.28 ro root=/dev/sda3就不会产生mkrootdev: label /not found错误。
9. 再次reboot
10. 查询相关资料,其中有一种说法是Linux版本(这里用的是Redhat Enterprise Linux 4)启动的某种机制导致了这个错误。
11.编译新内核失败。
- 007.Vmware-Linux 内核编译一
- (一)编译Linux内核
- Vmware下成功编译linux内核2.6
- 008.Vmware-Linux 内核编译二
- 009.Vmware-Linux 内核编译三
- 010.Vmware-Linux 内核编译四
- Linux内核编程一:编译内核
- vmWare/ubuntu 编译内核
- vmware,ubuntu环境中linux内核编译 (很好)
- linux 3.13内核运行(编译)vmware-play失败
- (编译内核)Vmware编译内核
- linux内核系列(一)编译安装Linux内核 2.6.18
- 【Linux学习】Ubuntu下内核编译(一)
- linux kernel 学习笔记一 编译内核
- Linux内核:编译内核
- VMware中Linux内核2.6.14.4编译全过程(终于编译通过了!!!)
- Linux内核源码系列(一):编译Linux-2.6.18
- 【LINUX内核】LINUX内核编译
- 了解电脑启动的过程
- 告别人工智能之父、Lisp语言发明者John McCarthy
- 接着我的论坛来
- 计算结构体大小
- Android UI开发第六篇——仿QQ的滑动Tab
- 007.Vmware-Linux 内核编译一
- 诸葛亮《诫子书》
- linux内存检测
- 开发搜索引擎初步(二)搜索(Lucene实现)
- 一个反射的实例
- oracle日期函数集锦【转】
- 用Crosstool工具构建交叉工具链
- 基于Google GWT的WEB图形编辑框架gwt-html5-graph发布了
- 重新认识excel(2):坐标