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格式。

  • 相关阅读:
    php发送http请求带json格式数据
    a标签跳转,打开一个新页面
    echarts图例多行显示,并且全部对齐
    原子性,有序性,可见性
    winds消息大全
    C#中的结构体和对象区别
    装饰者模式
    hashMapp
    linux 定时任务
    windsServer2008设置定时重启
  • 原文地址:https://www.cnblogs.com/liujiahi/p/2205351.html
Copyright © 2011-2022 走看看