制作linux内核安装包
实验基于Centos 6.2
升级linux内核
直接在一个有编译环境的设备上,编译升级内核很简单。
make menuconfig
或者
拷贝现有系统的.config文件
修改.config文件 CONFIG_DEBUG_INFO=n (避免编译产生文件过大)
make oldconfig
make all -j4
make modules_install
make install
制作linux内核安装包
有时需要在虚拟机上编译好内核后,安装到另外的设备上,而设备上工具有限,没有编译开发环境等。一种方式是通过nfs挂载,在设备上直接make modules_install,然后make install。
另外一种,就是手动拷贝安装。下面介绍怎么制作一个内核安装包,可以直接在设备上安装。以下以内核3.5.3为例说明。
1、编译
make all -j4
2、准备各种目录及文件
新建文件夹 kernel-3.5.3
export INSTALL_MOD_PATH=kernel-3.5.3
执行make modules_install 模块会安装到文件夹kernel-3.5.3中
拷贝源码目录下scripts中的depmod.sh 到kernel-3.5.3中
拷贝源码目录下arch/x86/boot/bzImage 到kernel-3.5.3中
拷贝源码目录下System.map到kernel-3.5.3中
拷贝源码目录下arch/x86/boot/install.sh 到kernel-3.5.3中
所有文件准备好了
kernel-3.5.3
--lib
--firmware
--modules
--3.5.3
--bzImage
--depmod.sh
--install.sh
--System.map
3、编写安装脚本
在这之前,首先需要修改下install.sh脚本
在文件适当位置加上变量定义
INSTALLKERNEL=installkernel
然后编写安装脚本 install_kernel.sh
#!/bin/bash
PROGRAM=install_kernel.sh
if [ "$0" != "${PROGRAM}" ]; then
if [ "$0" != "./""${PROGRAM}" ]; then
echo "ERROR: ****** !"
exit
fi
fi
echo "0%..."
/bin/cp -rf lib/modules/3.5. /lib/modules/
echo "30%..."
/bin/sh depmod.sh /sbin/depmod 3.5.
echo "60%..."
sh install.sh 3.5. bzImage System.map "/boot"
echo "100%"
echo "install success !"
4、现在有个问题,你会发现,目录下有个install.sh脚本,有个install_kernel.sh脚本,为了避免使用时混乱,我们吧install.sh重命名一下。
mv install.sh kernel_install
mv install_kernel.sh install.sh
然后重新编辑下我们的install.sh(原来的install_kernel.sh),并加入修改grub的功能,默认启动到新内核中。
#!/bin/bash PROGRAM=install.sh
GRUB_CONF="/boot/grub/grub.conf"
line_no="" modify_grub()
{
line_no=`sed -n '/^default/=' $GRUB_CONF`
if [ $line_no ] ;then
sed -i "${line_no}cdefault=0" $GRUB_CONF
fi
} if [ "$0" != "${PROGRAM}" ]; then
if [ "$0" != "./""${PROGRAM}" ]; then
echo "ERROR: ****** !"
exit
fi
fi echo "0%..."
/bin/cp -rf lib/modules/3.5. /lib/modules/ echo "30%..."
/bin/sh depmod.sh /sbin/depmod 3.5. echo "60%..."
sh kernel_install 3.5. bzImage System.map "/boot" echo "90%..." modify_grub echo "100% OK!"
5、打包kernel-3.5.3文件夹下的内容
制作完成,拿到设备上,解压,执行install.sh即可完成内核安装。
制作linux模块编译环境
好,现在你制作了一个内核安装包,现在有人要将以前的驱动,重新编译,以适应这个新的内核。你总不能把你编译的源码打个包给他的吧,太大了。
其实只要拷贝几个必要的目录就可以了,以下还是以3.5.3为例,制作一个模块编译环境的安装包。
新建文件夹 kernel-3.5.3-devel
kernel-3.5.3-devel下新建usr/src/kernel/3.5.3目录
拷贝源码目录下arch/x86 到3.5.3/arch下 (可以把boot文件夹删掉,节省空间)
拷贝源码目录下include到3.5.3下
拷贝源码目录下scripts到3.5.3下
拷贝源码目录下usr 到3.5.3下
拷贝源码目录下 .config Kbuild Kconfig Makefile Module.symvers modules.builtin modules.order System.map到3.5.3下
Kernel-3.5.3下新建目录lib/modules/3.5.3
然后lib/modules/3.5.3中,建立build连接文件,连接到../../../usr/src/kernel/3.5.3
好,打包kernel-3.5.3-devel文件夹下的文件和目录,就做好了一个编译环境的安装包,使用者先使用内核安装包安装内核,然后使用本安装包,直接解压到自己设备的根目录。重启切换到3.5.3内核下,即可进行模块的开发和编译了。
制作linux内核安装包的更多相关文章
- linux多种安装包格式的安装方法
linux多种安装包格式的安装方法 一.rpm包安装方式步骤:1.找到相应的软件包,比如soft.version.rpm,下载到本机某个目录: 2.打开一个终端,su -成root用户: 3.cd s ...
- NSIS:制作软件升级安装包
原文 NSIS:制作软件升级安装包 相信不是每个人写的软件都只发布一次就可以了,肯定要有修改和维护的情况发生.在这种情况下,您可能就需要一个软件的升级安装包了. 现在,我们就来一步步把这个安装包做 ...
- Advanced Installer 制作.NetWeb部署安装包
原文:Advanced Installer 制作.NetWeb部署安装包 因为是.Net的Web应用程序,所以想用Advanced Installer 调用Dll实现安装部署. 因为我需要自己定制参数 ...
- IS2009制作Oracle 静默安装包(二) 感谢空白先生特许授权
原文:IS2009制作Oracle 静默安装包(二) 感谢空白先生特许授权 上一篇: IS2009制作Oracle 静默安装包(一)感谢空白先生特许授权本文经原作者特许授权于海洋女神发布,转载请务必注 ...
- IS2009制作Oracle 静默安装包(一)感谢空白先生特许授权
原文:IS2009制作Oracle 静默安装包(一)感谢空白先生特许授权 上一篇: MyEclipse中消除frame引起的“the file XXX can not be found.Please ...
- 制作iis自动安装包
原文:制作iis自动安装包 MS 一直没有提供可独立安装的 IIS 安装包,Windows 的缺省安装没有安装它,通常要到控制面板的"添加/删除 Windows 程序"中去选择安装 ...
- 用Inno Setup制作WEB程序安装包
原文 用Inno Setup制作WEB程序安装包 最近做了一个WEB程序的安装包,我把制作的过程做个介绍,贴出源码给大家做个参考 看看inno 的脚本 [Setup] AppCopyright=tes ...
- C# 制作Windows服务安装包
C# 制作Windows服务安装包 这两天公司要用C#写一个windows服务,做成安装安装包.制作的过程中遇到了一些问题,写完之后总结一下.如果以后在用到的话可以可以参考一下,而且由于原来没有做 ...
- 使用NSIS制作可执行程序的安装包
使用NSIS制作可执行程序的安装包: 1,NSIS下载地址:https://pan.baidu.com/s/1GzzQNXgAlJPJWgjBzVwceA 下载完成之后解压缩,打开安装程序,默认安装即 ...
随机推荐
- Python基础一. 简介、变量、对象及引用
一.Python简介 Python是一门计算机编程语言,它是由荷兰人Guido van Rossum在1989年圣诞节期间为了打发无聊的圣诞节而编写的,作为ABC语言的继承 特性: 面向对象.解释型. ...
- MVC过滤器详解 面向切面编程(AOP)
面向切面编程:Aspect Oriented Programming(AOP),面向切面编程,是一个比较热门的话题.AOP主要实现的目的是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个 ...
- IOS开始对App Store大扫除:你的APP更新了吗?
成都亿合科技小编从北京商报了解到,对于开发APP应用的要注意啦,IOS要开始对App Store大扫除:你的APP更新了吗? 日前苹果App Store的开发者们发送邮件,表示将实施一个持续评估应用行 ...
- impdp报错: ORA-39064: 无法写入日志文件 ORA-29285: 文件写入错误
windows平台下,oracle 11.2.0.1在使用impdp向测试环境导入数据的时候,报出如下错误: 错误原因: 数据泵在写日志文件的时候,使用的是数据库字符集.如果客户端的环境变量NLS_L ...
- ubuntu 常用命令集合版(二)【大侠勿喷,菜鸟欢迎】(转)
原文:http://page.renren.com/600759338/note/729595757 1.shutdown: 关闭系统,如果停留在TTY,请改用halt, poweroff等命令常用参 ...
- ios -- 教你如何轻松学习Swift语法(三) 完结篇
前言:swift语法基础篇(二)来了,想学习swift的朋友可以拿去参考哦,有兴趣可以相互探讨,共同学习哦. 一.自动引用计数 1.自动引用计数工作机制 1.1 swift和o ...
- 如何快速建立一个测试资源Web服务器及异步获取资源(Unity3D)
背景 1.最近看了几位专栏作家的文章,几篇提到了资源通过网络的动态获取.如何建立一个快速的测试环境,不免是一个问题,也就最简单的就是假设http服务器了,微软系的当然首选的IIS了,别的也能用阿帕奇或 ...
- JDBC连接mysql数据库,添加数据
如下:其中添加/删除/修改只是sql字符串不同 //3.要执行的字符串 String sql="INSERT INTO t_student(NAME,age,email) VALUES('x ...
- 【002: NetBeans 的 代码补全】
在 代码完成中,输入如下内容 q;w;e;r;t;y;u;i;o;p;a;s;d;f;g;h;j;k;z;x;c;v;b;n;m;Q;W;E;R;T;Y;U;I;O;P;A;S;D;F;G;H;J;K ...
- android实现通过浏览器点击链接打开本地应用(APP)并拿到浏览器传递的数据
为了实现这个功能可折腾了我好久,先上一份代码,经楼主验证是绝对可以用的而且也比较清晰的代码!(ps:还是先剧透下吧,第三方大部分浏览器无法成功.) 点击浏览器中的URL链接,启动特定的App. 首先做 ...