基于Linux内核的应用程序构造(三)——内核安装
来源:互联网 发布:樱井知香2010年番号 编辑:程序博客网 时间:2024/06/11 03:27
依据oplonu产品为例,着重解析编译过程
Kernel Version:linux2.6.21.5
SDK:https://github.com/DavionKnight/oplonu
if make f23pv1e
thenif make
then
if make install
接下来要进行的就是install过程
该过程oplonu/Makefile.rules,由于该部分代码比较集中,全部贴出如下:
1.重建根文件系统,并将opconn.img复制到root/bin/下
2.编译内核,但是不太明白为什么要判断if [ ! -f $(KERNEL_DIR)/linux-2.6.21.5/scripts/mod/modpost ];
难道只是为了判断内核是否编译过?(在这个地方并没有编译内核)
3.安装busybox,编译各模块,并复制到/root/modules/下
4.删除不用内容,执行mklzma.sh脚本
这个地方才是真正开始编译内核
make -j1 CROSS_COMPILE="mips-linux-uclibc-" ARCH="mips" CONFIG_SHELL="/bin/bash" CC="mips-linux-uclibc-gcc" V=1
-j1上层make 程序为其他make进程传递参数(详见gnu makefile手册)
LX = ../vmlinux
mips_4KC-objcopy --gap-fill=0xff -O binary $(LX) piggy
lzma e piggy piggy.lzma
以上将vmlinux (--gap-fill=0xff )用0xff来填充section之间的空隙。
生成piggy并压缩
uImageLzma: piggy.lzma
@echo $(VERSION)
@echo "make uImage using file $(LX) ... "
@echo $(BUILD_TIME)
@echo "svn=" $(SVN_VERSION)
@echo "cpuid=" $(SOCID)
./mkimage-new -i $(SOCID) -r $(SVN_VERSION) -A mips -O linux -T kernel -C lzma -a 80041000 -e \
0x$(shell grep kernel_entry $(LX_MAP) | awk '{ printf "%s", $$1 }') \
-n 'MIPS Linux-$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)' \
-d piggy.lzma $@
这一部分通过piiggy.lzma通过添加类型/版本/内存首地址,从system.map中查找start_kernel的首地址
-a address 80041000当boot load内核到内存时的地址
生成最后的uImage uImageLzma
- 基于Linux内核的应用程序构造(三)——内核安装
- 基于Linux内核的应用程序构造(一)——内核配置
- 基于Linux内核的应用程序构造(二)——应用程序编译
- Linux内核分析(三)内核启动过程分析——构造一个简单的Linux系统
- Linux内核启动应用程序分析(三)
- Linux内核完全注释—基于0.12内核(赵炯)
- 应用程序调试(三)————配置内核输出应用程序的段错误信息
- Linux内核驱动(三)——内核
- 《Linux内核分析》(三)——跟踪分析Linux内核的启动过程
- 《Linux内核分析》(三)——跟踪分析Linux内核的启动过程
- 内核态下基于动态感染技术的应用程序执行保护(三 获取SSDT)
- 内核态下基于动态感染技术的应用程序执行保护(三 获取SSDT)
- Linux内核分析——构造一个简单的Linux内核MenuOS
- Linux内核分析(三):构造一个简单的Linux系统MenuOS
- linux内核的基础知识(配置内核) --基于嵌入式开发
- Linux 内核的安装
- Linux 内核的安装
- Linux内核的安装
- Redis性能测试
- SSH介绍
- 清除Android工程中没用到的资源
- iBatis.Net+mysql访问存储过程的问题
- FileManager
- 基于Linux内核的应用程序构造(三)——内核安装
- Redis分区
- ubuntu手动删除swap分区后重启,出现no such patition,grub rescue解决方案
- 重温 Win32 API ----- 截屏指定窗口并打印
- 各种TCP版本 之 TCP Reno 与 TCP Vegas 共存
- 快速Android开发系列通信篇之EventBus
- pdf怎么转换成word文字版
- 水晶报表直接输出到页面,不保存PDF文件
- pygame学习