制作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 下载完成之后解压缩,打开安装程序,默认安装即 ...
随机推荐
- Java并发控制:ReentrantLock Condition使用详解
生产者-消费者(producer-consumer)问题,也称作有界缓冲区(bounded-buffer)问题,两个进程共享一个公共的固定大小的缓冲区.其中一个是生产者,用于将消息放入缓冲区:另外一个 ...
- (地址)eclipse插件开发攻略的访问地址
园子地址: http://www.cnblogs.com/liuzhuo/category/257208.html 关键字: Eclipse插件开发彻底攻略 eclipse插件开发基础篇之
- WEB压力测试工具Pylot试用
Pylot介绍 转载自[http://www.freehao123.com/pylot-web/] 为了能够准确地评估网站服务器对网络流量的承受能力,我们一般会采取模拟网站用户访问,通过不断地增加并发 ...
- java学习规划
今天在网上看到一位大学生的java学习线路规划,觉得蛮适合我,就详细阅读了一下,规划路线应该适用于大部分学习java语言的人,贴出来与大家共勉. 在学习的过程中,不能急于去学习更多的知识,因为知识是无 ...
- [原创]如何设计Lighthoused定位接收电路
本文使用最新出来的专用芯片TS3633 1)电路设计说明 1.电源电路 利用LM317低线性稳压芯片将5V或者12V的电源电压稳压到3.3V为TS3633提供工作电压.其中,磁珠L1主要用于抑制电源线 ...
- Android中悬浮窗口
调用WindowManager,并设置WindowManager.LayoutParams的相关属性,通过WindowManager的addView方法创建View,这样产生出来的View根据Wind ...
- 数据库连接driverClass和jdbcUrl大全
一.MySQL: driverClass:com.mysql.jdbc.Driver org.gjt.mm.mysql.Driver jdbcUrl:j ...
- TCMalloc的使用
Windows下: 1. 编译libtcmalloc_minimal,编成静态的动态的都可以. 2. 在链接中设置附加依赖库libtcmalloc_minimal.lib,并且强制符号引用要加上__t ...
- 人工智能系统Google开源的TensorFlow官方文档中文版
人工智能系统Google开源的TensorFlow官方文档中文版 2015年11月9日,Google发布人工智能系统TensorFlow并宣布开源,机器学习作为人工智能的一种类型,可以让软件根据大量的 ...
- Events in ASP.NET Master and Content Pages
Content page PreInit event. Master page controls Init event. Content controls Init event. Master pag ...