pengphei@home:~$

Linux 上 NetBSD 交叉编译环境搭建

Linux 上 NetBSD 交叉编译环境搭建

NetBSD 以高移植性著称,支持众多的处理器架构,并且它的代码和工具稳定性非常高,包括各种接口,工具等。并且由于 BSD 授权的宽松条件,对于构建商业产品非常友好,值得长期的投入和研究。

NetBSD 的基于 build.sh 的交叉编译工具系统,使得它可以很方便的在其他系统上进行系统开发和研究。

我的构建环境。

  • openSUSE 15.1
  • 工具和库依赖
    • cvs 用于更新和下载 NetBSD 系统源码。
    • gcc 用于构建 NetBSD 相关工具。
    • bmake BSD Make 工具,与 gnu make 相区别。
    • bison
    • flex
    • mpfr-devel
    • gmp-devel
    • 其他可能需要的依赖

获取源码

为了快速的获取源码,我们可以从国内清华的 tuna 下载最新的 NetBSD srcxsrc 源码。

  • 具体链接地址: https://mirrors.tuna.tsinghua.edu.cn/NetBSD/NetBSD-current/tar_files/

    • src.tar.gz, 为 NetBSD 核心代码,目前我们主要的关注核心代码和工具压缩包。
    • xsrc.tar.gz 为 NetBSD X11 相关代码。
    • pkgsrc.tar.gz 为 NetBSD pkgsrc 代码。
  • 解压相关代码

     tar -xzvf src.tar.gz
    

更新代码

由于我们通过 tuna 下载的源码,都是定期从 NetBSD 官网更新过来的,为了我们后续直接抓取到最新的代码,我们可以通过 cvs 对仓库进行配置和更新。具体过程如下:

  1. 配置远程仓库地址,以及更新代码:

    export CVSROOT=anoncvs@anoncvs3.de.NetBSD.org:/cvsroot
    export CVS_RSH="ssh"
    cd src
    cvs update -dP
    

    虽然很多人推荐使用日本的 anoncvs 地址,但是经实测,jp 的 cvs 仓库速度没有德国人的快。

    • 日本 cvs 地址::pserver:anoncvs@anoncvs.jp.NetBSD.org:/cvsroot ,密码为 anoncvs
    • 德国 cvs 地址:anoncvs@anoncvs3.de.NetBSD.org:/cvsroot
    • 官方地址:anoncvs@anoncvs.NetBSD.org:/cvsroot
    • 瑞典 cvs 地址:anoncvs@anoncvs.NetBSD.se:/cvsroot;
  2. 首次更新,建立 cvs 仓库比较慢,需要比较长的时间。

构建工具链

  • 构建 mips64 工具链,也是 loongson 2F 可用的工具链 mips64el

    ./build.sh -m evbmips -a mips64el tools
    
  • 构建 aarch64 工具链

     ./build.sh -m evbarm -a aarch64 tools
    

    目前 ARMv8 ,也就是 aarch64 的构建工具链

  • 构建 armv7 工具链,目前 32bit arm 处理器主要的指令集。

     ./build.sh -U -m evbarm -a earmv7hf tools
    

    支持全志的 A20/A31 等系列,以及 IMX6 等芯片

  • 构建 armv5 工具链,比如全志的 suniv-f1c100s 芯片,以及 Freescale IMX2 系列。

     ./build.sh -U -m evbarm -a earmv5 tools
    

构建 NetBSD 内核和安装系统

  • 构建 loongson 内核

    构建龙芯内核:

     ./build.sh -U -m evbmips -a mips64el LOONGSON
    

    构建龙芯安装系统:

     ./build.sh -U -m evbmips -a mips64el INSTALL_LOONGSON
    
  • 构建 imx6ul 内核

    构建 i.MX 6UL 内核:

     ./build.sh -U -m evbarm -a earmv7hf INX6UL-STARTER
    

    构建 i.MX 6UL 安装系统:

     ./build.sh -U -m evbarm -a earmv7hf IMX6UL-STARTER_INSTALL
    
  • 构建全志 generic 内核

    构建 generic 内核:

     ./build.sh -U -m evbarm -a earmv7hf GENERIC
    

    构建 install 安装系统:

     ./build.sh -U -m evbarm -a earmv7hf INSTALL