实验基于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内核安装包的更多相关文章

  1. linux多种安装包格式的安装方法

    linux多种安装包格式的安装方法 一.rpm包安装方式步骤:1.找到相应的软件包,比如soft.version.rpm,下载到本机某个目录: 2.打开一个终端,su -成root用户: 3.cd s ...

  2. NSIS:制作软件升级安装包

    原文 NSIS:制作软件升级安装包 相信不是每个人写的软件都只发布一次就可以了,肯定要有修改和维护的情况发生.在这种情况下,您可能就需要一个软件的升级安装包了.   现在,我们就来一步步把这个安装包做 ...

  3. Advanced Installer 制作.NetWeb部署安装包

    原文:Advanced Installer 制作.NetWeb部署安装包 因为是.Net的Web应用程序,所以想用Advanced Installer 调用Dll实现安装部署. 因为我需要自己定制参数 ...

  4. IS2009制作Oracle 静默安装包(二) 感谢空白先生特许授权

    原文:IS2009制作Oracle 静默安装包(二) 感谢空白先生特许授权 上一篇: IS2009制作Oracle 静默安装包(一)感谢空白先生特许授权本文经原作者特许授权于海洋女神发布,转载请务必注 ...

  5. IS2009制作Oracle 静默安装包(一)感谢空白先生特许授权

    原文:IS2009制作Oracle 静默安装包(一)感谢空白先生特许授权 上一篇: MyEclipse中消除frame引起的“the file XXX can not be found.Please ...

  6. 制作iis自动安装包

    原文:制作iis自动安装包 MS 一直没有提供可独立安装的 IIS 安装包,Windows 的缺省安装没有安装它,通常要到控制面板的"添加/删除 Windows 程序"中去选择安装 ...

  7. 用Inno Setup制作WEB程序安装包

    原文 用Inno Setup制作WEB程序安装包 最近做了一个WEB程序的安装包,我把制作的过程做个介绍,贴出源码给大家做个参考 看看inno 的脚本 [Setup] AppCopyright=tes ...

  8. C# 制作Windows服务安装包

    C# 制作Windows服务安装包   这两天公司要用C#写一个windows服务,做成安装安装包.制作的过程中遇到了一些问题,写完之后总结一下.如果以后在用到的话可以可以参考一下,而且由于原来没有做 ...

  9. 使用NSIS制作可执行程序的安装包

    使用NSIS制作可执行程序的安装包: 1,NSIS下载地址:https://pan.baidu.com/s/1GzzQNXgAlJPJWgjBzVwceA 下载完成之后解压缩,打开安装程序,默认安装即 ...

随机推荐

  1. linux svn服务器svnserve 安装配置

    svnserve 是一个轻量级的服务, 使用自定义的协议通过TCP/IP与客户端通讯.客户端通过由 svn:// 或者 svn+ssh:// 开始的URL访问svnserve服务器. svn服务器有两 ...

  2. 动态链接库(DLL)总结

    以前的学习笔记,记录库的一点学习心得.主要是Windows下的静态库和动态链接库,动态链接库只写了关于非MFC的DLL,比较初级,适合和我一样的新手看看.有不对的地方请指出,有疏漏的地方请补充,如果您 ...

  3. C/C++ 结构体 函数传递

    #include <stdio.h> #include <stdlib.h> struct student{ int num; ]; double dec; }; void s ...

  4. 厦门BRT 硬币型非接触式IC卡分析

    前几天去厦门玩顺便多买了一张BRT的票 也就是如图所示的这种硬币型非接触式IC卡 回来之后用Proxmark3分析了卡内数据得到如下16进制dump内容 UID.发卡日期时间. 最近好懒 懒得写了 有 ...

  5. Python数据

    读取文件中数据的最高分数 highest_score=0 result_f=open("results.txt") for line in result_f: (name,scor ...

  6. Android--Retrofit的简单使用(一)

    1,如果不太了解retrofit的同学可以先去官网学习一下简单使用:http://square.github.io/retrofit/,这里我们以一个简单的Get请求的例子来练习一下 2,https: ...

  7. 在linux中的info手册的用法

    就是一些快捷键 空格键向下翻页,当处在当前节点的底部时,空格键跳转到下一个节点. <DEL> 或者 <BACKSPACE> 向上翻页,当处在当前节点的顶部的时候,这两个键可以跳 ...

  8. jsp通过jQuery返回json数据到页面

    1.首先要导入json的包,自己去网站找,总共6个jar包! 2. 在servlet里的写法(仅共参考) JSONObject json = new JSONObject(); String a = ...

  9. enbale blakboxing

    chrome://flags/#enable-devtools-experiments

  10. Windows便笺 快捷键

    便笺快捷键 便笺快捷键多数与Office相同 Ctrl+N 新建 Alt+F4 关闭便笺,下次打开内容还在 Ctrl+D 删除 Ctrl+E 居中 Ctrl+R 右对齐 Ctrl+L 左对齐 Ctrl ...