zoukankan      html  css  js  c++  java
  • Linux内核配置与编译


    清理文件(在linux源码根目录):
    ·make clean:只清理所有产生的文件
    ·make mrproper:清理所有产生的文件与config配置文件
    ·make distclean:清理所有产生的文件与config配置文件,并且编辑过的与补丁文件

    配置(收集硬件信息如cpu型号,网卡等...):
    ·make config:基于文本模式的交互配置
    ·make menuconfig:基于文本模式的菜单模式(推荐使用)
    ·make oldconfig:使用已有的.config,但会询问新增的配置项
    ·make xconfig:图形化的配置(需要安装图形化系统)
    配置方法:
    1)使用make menuconfig操作方法:
    1>按y:编译>连接>镜像文件
    2>按m:编译
    3>按n:什么都不做
    4>按"空格键":y,n轮换
    配置完并保存后会在linux源码根目录下生成一个.config文件
    注意:在ubuntu11上要执行apt-get install libncurses5-dev来安装支持包
    2)利用已有的配置文件模板(.config)
    1>linux源码根目录/arch/<cpu架构>/configs/<具体某一的CPU文件>,把里面对应的文件copy并改名为.config至linux源码根目录下
    2>利用当前运行已有的文件(要用ls /boot/ -a查看)把/boot/config-2.6.18-53.e15拷贝并改名为.config至linux源码根目录下执行以上操作就可以用make menuconfig在拷贝
    .config文件上面修改文件了

    编译内核:
    1)make zImage
    2)make bzImage
    区别:在X86平台上,zimage只能用于小于512k的内核
    获取详细编译信息:make zimage V=1 或 make bzimage V=1
    编译好的内核在:arch/<cpu>/boot/目录下
    注意:在把.config配置文件cp到根目录编译内核前,必须进入make menuconfig并保存退出(否则生不了效)

    编译并安装模块:
    1)编译内核模块:make modules
    2)安装内核模块:make modules_install INSTALL_MOD_PATH=/lib/modules
    更换本机器内核:将编译好的内核模块从内核源码目录copy至/lib/modules下
    制作init ramdisk():输入执行命令mkinitrd initrd-2.6.39(任意) 2.6.39(可通过查询/lib/modules下的目录得到)
    注意:
    mkinitrd命令为redhat里面的,ubuntu的命令为:mkinitramfs -k /lib/modules/模块安装位置 -o initrd-2.6.39(任意) 2.6.39(可通过查询/lib/modules下的目录得到)
    如果ubuntu里面没有mkinitramfs命令可以用apt-get install initrd-tools进行安装

    安装内核模块:
    1)手动
    1>cp linux根目录/arch/x86/boot/bzImage /boot/mylinux-2.6.39
    2>cp linux根目录/initrd-2.6.39 /boot/initrd-2.6.39
    最后修改/etc/grub.conf或/etc/lilo.conf文件
    2)自动
    1>make install:这个命令会自动完成上面的操作(查看当前内核版本:uname -r)
    -----------------------------------------------------------------------------
    四.linux内核模块开发
    描述:
    linux内核组件非常庞大,内核ximage并不包含某组件,而是在该组件需要被使用的时候,动态的添加到正在运行的内核中(也可以卸载),这种机制叫做“内核模块”的机制。内核模块通常通过使用makefile文件对模块进行编译

    模块安装与卸载:
    1)加载:insmod hello.ko
    2)卸载:rmmod hello
    3)查看:lsmod
    4)加载(自动寻找模块依赖):modprobe hello
    modprobe会根据文件/lib/modules/version/modules.dep来查看要加载的模块,看它是否还依赖于其他模块,如果是,会先找到这些模块,把它们先加载到内核

    1、获取内核源码,解压至/usr/src
               # tar xf linux-3.13.5.tar.xz -C /usr/src
               # ln -sv /usr/src/linux-3.13.5  /usr/src/linux
           2、配置内核特性(选择一种方法就可以了)
               make config:遍历选择所要编译的内核特性
               make allyesconfig:配置所有可编译的内核特性
               make allnoconfig:并不是所有的都不编译
               make menuconfig:这种就是打开一个文件窗口选择菜单
               make kconfig(KDE桌面环境下,并且安装了qt开发环境)
               make gconfig(Gnome桌面环境,并且安装gtk开发环境)
           3、编译内核
               # make [-j #] : #号最多为CPU物理核心总数的两倍,这样会快点哦            
           4、安装内核模块
               # make modules_install
           5、安装内核
               # make install
           6、验正并测试
               # cat /boot/grub/grub.conf
               查看新内核是否已经添加, 而后重启系统并测试

    引用:

    https://blog.csdn.net/baidu_24256693/article/details/80115354

    https://www.cnblogs.com/klb561/p/9192630.html

  • 相关阅读:
    Asible——inventory与大项目管理
    Asible——template
    Ansible——文件管理
    Ansible——处理任务失败
    Ansible——handlers与notify
    ubuntu 16.04 LTS 开发环境的安装及常用软件
    curl 命令详解
    VMware虚拟机三种网络模式详解
    ubantu 16.04 安装有道词典
    OneNote 使用汇总
  • 原文地址:https://www.cnblogs.com/ggzhangxiaochao/p/13083820.html
Copyright © 2011-2022 走看看