zoukankan      html  css  js  c++  java
  • linux 移植概述

    所谓移植,主要任务:搭建自己的交叉编译环境,编译制作bootloader, 编译制作内核镜像,编译制作根文件系统,烧写到目标板。

    1.

    关于搭建交叉编译环境,其实就是制作交叉编译工具链toolchain。就是用pc上的编译器,编译产生目标板的编译链接工具。

    需要准备相关的很多源码,大体分为编译工具和lib和include库两类,比如glibc, binutils,  gcc (目标板),crosstool(制作用脚本)等。要注意版本,合适的cross toolchain是进行后续工作的基础。

    2.

    制作bootloader,bootloader主要完成硬件初始化,自搬移,加载操作系统几方面的工作,整个u-boot的源码包含了很多个平台的支持,通过make XXX_config设置,使得编译时选择相应部分的源码。可以根据自己的具体需求,对参与编译的相应部分进行删改,使得bootloader符合要求。

    3.

    编译制作系统镜像,同样,下载来得源码包通常也是包含多种平台支持的,通过修改Kconfig文件和menuconfig配置,确定对平台的支持,通过对内核模块的增减来适应自己开发板,是生产的内核最精简。

    4.

    只有内核,通常还是不够的,一个比较完备的应用,通常还需要文件系统,linux的工作方式是把分区挂载到目录,所以我们通常需要一个根文件系统rootfs,常见的根文件系统很多,制作过程后面补充。

    -------------------------------------------------------------------------------------------

    补充:一个根文件系统可以从内容和格式两方面来理解它,内容包括了可执行文件,运行时的脚本,设备文件等;有一定格式是实际烧写到外存的需要。

    制作内容可以使用busybox来生成常用命令(就是linux非常熟悉的/bin /sbin /usr/bin /usr/sbin里面的东西),创建根文件系统目录,如sys etc dev proc var tmp root lib; 按照一定的格式编写启动脚本,比如rcS inittab fstab profile等;mknod创建/dev/console /dev/null; 把编译busybox和内核的交叉编译工具链的lib里的可执行库中的内容拷贝到文件系统的lib里(一定要对应版本)。

    制作为一定的格式的镜像,要制作好得文件系统内容和一定的制作工具,可以用linux自带的工具制作成cramfs格式,可以用开源工具mkdfs.jffs2制作成jffs2格式。

  • 相关阅读:
    超简单tensorflow入门优化程序&&tensorboard可视化
    tf.random_normal()函数
    tensorflow中创建多个计算图(Graph)
    tensorflow中有向图(计算图、Graph)、上下文环境(Session)和执行流程
    配置错误 在唯一密钥属性“fileExtension”设置为“.log”时,无法添加类型为“mimeMap”的重复集合项
    取奇偶数
    DNS添加/修改/查询/删除A记录
    IE自动化
    Get-ChildItem参数之 -Exclude,Filter,Recurse应用
    自动下载
  • 原文地址:https://www.cnblogs.com/liujiahi/p/2205351.html
Copyright © 2011-2022 走看看