linux内核编译过程

前提条件
一个安装好的linux系统
源码下载 kernel.org

安装好 gcc
安装好 make
//------------------
//
//注意编译前根据要编译的版本中的说明文件安装编译需要的支持软件
//
//-----------------------------
1:编译uboot
    刷固件到开发版
    指令加载启动linux内核文件
2:编译linux 最好在当前运行着那个内核的系统里编译那个版本的内核
    2.1:清理编译痕迹
        make clean 清理所有生成文件保留配置文件 .config 文件
        make mrproper 清理掉所有生成文件和配置文件
        make distclean 全部清理
2.5:生成配置文件方式有以下几种
    make config 基于命令行交互方式
    make menuconfig 基于文本模式的菜单配置 推荐使用 需要ncurse 库支持,apt install libncurses5-dev;还要注意命令行宽高必须19行到80行的高度
        空格可以变换选项中的值
        内容 输入方式 编译方式
        *    y        编译连接
        m    m        编译不链接
        空   空格     不编译链接
     使用空格可以切换这三种输入
    make oldconfig 使用以后的.config,有新功能也需要重新配置
    make xconfig 图形化配置
2.8:编译内核
    make zImage 编译内核,限制于大小(512k) 
    make bzImage
    加 V参数可以看到编译过程
    如:make zImage V=1
    编译过程出现不支持PIC时,打开跟路径下 Makefile 文件,查找KBUILD_CFLAGS 在这个参数最后添加-fno-pie再试
    注意:有可能会报错GNU汇编器版本注意检查 编译汇编器的时候需要makeinfo的支持
    编译过的镜像文件在arch/<平台CPU>/boot/
3:编译模块
    在编译源码的时候进行了编译,注意编译源码时设置成可动态加载的模式,这样后期有模块添加方便
    ->make modules #编译模块
    ->make modules_install #安装模块,将编译好的源代码拷贝 到/lib/modules下 下面制作启动文件时需要用到拷贝的版本目录,有了这个目录才能制作启动文件
4:制作启动文件
    mkinitrd initrd-$version $version
    例:
        mkinitrd initrd-4.1.16 4.1.16 
        注意:版本号不能随便改
        
安装编译后的内核与启动文件
5:拷贝镜像文件到boot目录
    cp arc/<cpu>/boot/zImage /boot/vmlinux-$version 
6:拷贝启动文件到boot目录
    cp initrd-$version /boot
7:修改启/动配置文件 检测启动方式是用的UEFI(grub2-efi.cfg)还是用的BIOS(grub.conf 或者配置 grub2.conf文件)配置的时候注意所有文件已斜杠开头
    可能是grub.conf文件
    可能是lilo.conf文件
    例如:
        vim /etc/grub.conf

修改引导的时候根据自己使用的引导程序进行确定怎么修改
    
    
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值