美文网首页
三、内核&文件系统编译

三、内核&文件系统编译

作者: 离港时的灯塔 | 来源:发表于2020-03-05 19:59 被阅读0次

    一、编译官方提供的内核源码

    1、解压官方提供的内核源码包

    2、根据官方提供的配置文件对内核进行配置,方式如下
    make  ARCH=arm      xxxxx_defult_config
    cp   arch/arm/xxxxx_config    .config

    3、打开图形界面对内核进行配置,根据需要增加或者删除模块和其他内容

    4、对内核进行编译
    make  ARCH=arm    CROSS_COMPILE=arm-hisiv300-linux-uclibcgnueabi-    uImage  -j6
    或者编辑Makefile文件,对其中的ARCH变量和CROSS_COMPILE变量进行修改,然后执行make uImage

    5、在编译编译的时候回出现mkimage命令缺失,这个命令是UBootr提供的,在编译的UBoot路径下面找到这个命令,即可直接使用

    6、编译的时候各个方面需要一致性,
                    1、编译的内核的交叉编译工具链如果支持硬件浮点数运算那么在配置内核的时候也需要添加硬件浮点数的支持
                            Kernel Features --->
                                [*] Use the ARM EABI to compile the kernel
                    2、在编译的内核的时候注意保持不要做太多的修改,否则会出问题

    7、编译内核模块
        make  ARCH=arm    CROSS_COMPILE=arm-hisiv300-linux-uclibcgnueabi-    modules  -j6

    8、安装内核模块到指定的目录中去
    make modules_install ARCH=arm CROSS_COMPILE=arm-hisiv300-linux-uclibcgnueabi- INSTALL_MOD_PATH=/home/fu/hisi/kernel/build

    9、不要采用内核模块安装的命令来安装内核,因为内核不需要安装,在arch/arm/boot/uImage就是所需要的内核文件

    二、编译官方提供的busybox来构建根文件系统

    1、解压需要编译的busybox源码

    2、进入源码中对busybox进行配置,主要是配置交叉编译工具链
    Busybox Settings --->Build Options ---> 下面有关于busybox是否配置为采用共享库的模式,还有添加交叉编译工具链的前缀

    3、配置需要的文件和命令进行添加或者删除

    4、然后执行命令make -jn   && make install

    5、创建根文件系统需要的其他的文件和目录,在一个空白的目录中首先拷贝busybox/_install下面的bin、sbin、usr目录到空白目录中,在空白目录中创建其余的所需要的目录文件 bin dev etc home lib linuxrc mnt opt proc sbin sys tmp usr var等以上目录

    6、接下来在lib目录中复制内核模块,在编译内核的时候模块安装在了指定的地方,直接拷贝过来就行。

    6、创建文件系统所需要的其他文件,配置文件(最简单的办法就是直接复制busybox文件下面的example文件夹里面的东西)
    1、/etc/inittab     填写或者    一下是最基本的,还有其他的需要填写
    # /etc/inittab
    ::sysinit:/etc/init.d/rcS                    //指定初始化脚本
    ::askfirst:-/bin/sh                            //指定第一次输入回车后打开的shell
    ::ctrlaltdel:/sbin/reboot                //指定这三个按键按下后的反应
    ::shutdown:/bin/umount -a -r        //指定关机是进行的操作

    2、/etc/init.d/rcS                //这个就没有详细额硬性规定了,写入需要初始化的东西即可
    #!/bin/sh
    mount -a

    3、/etc/fstab                        //写入mount -a是要自动挂载的文件系统
    # device mount-point type options dump fsck order
    proc          /proc        proc  defaults        0    0
    tmpfs          /tmp        tmpfs  defaults        0    0

    7、拷贝需要用到的库文件,在交叉编译工具链下面存放
    arm-linux-xxxxxx-gcc/lib
    海思的开发板是在和tahet/lib下面,切记。

    相关文章

      网友评论

          本文标题:三、内核&文件系统编译

          本文链接:https://www.haomeiwen.com/subject/hhkvlhtx.html