ARM版Oracle安装包_如何把Linux移植到手机

ARM版Oracle安装包_如何把Linux移植到手机  linux作为一款流行的嵌入式系统,目前已经有多种架构的MCU支持Linux移植,arm64就是其中一种。今天在这里想做一个笔记,记录一下完整的arm64移植过程。嵌入式Linux系统组成部分嵌入式Linux移植到开发板上时,主要有四个组成部分,下面一一列举。  在启动过程中,bootloader加载设备树文件(dtb),之后启动内核(Startkernel),进而加载根文件系统(debian或者ubuntu),最后进入系统。  那么我们所做的工作可以分为以下三部分:1、进行bootlo

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

  linux作为一款流行的嵌入式系统,目前已经有多种架构的MCU支持Linux移植,arm64就是其中一种。今天在这里想做一个笔记,记录一下完整的arm64移植过程。

嵌入式Linux系统组成部分

嵌入式Linux移植到开发板上时,主要有四个组成部分,下面一 一列举。
在这里插入图片描述
  在启动过程中,bootloader加载设备树文件(dtb),之后启动内核(Start kernel),进而加载根文件系统(debian或者ubuntu),最后进入系统。

  那么我们所做的工作可以分为以下三部分:
1、进行bootloader的编译开发和移植。
2、进行内核文件的编译和移植(Image和dtb)。
3、进行根文件系统的编译和移植。

bootloader的移植

  每个开发板的bootloader开发不太一样,个人经历的两块板子,bootloader和uboot移植过程就大相径庭,如果你手头有板子的话,建议以原厂提供的方式为准。

  这里不介绍bootloader的移植和uboot的移植,感兴趣的话,请参考自己的开发板资料或者网上资料。

根文件系统的生成

  根文件系统的生成可以参考链接 构建debian for ARM
  我们假定最后生成的根文件系统为 debian_stretch文件夹。

Linux内核的移植

  Linux内核的移植,主要是移植最后生成的内核镜像Image文件以及设备树文件dtb
  Linux内核的编译,也是为了生成Image以及dtb

1、准备工作
  (1)原厂提供的内核源代码。
  (2)linaro官网下载的交叉编译工具 aarch64-linux-gnu- 。
  (3)linux系统的pc机一台。
2、进行交叉编译的配置工作
  交叉编译的意思是在你x86的pc上,编译出能够在arm64上运行的程序,充当的是“翻译”的角色。
进入到/opt目录

cd /opt

解压下载的交叉编译工具

sudo tar -jxvf gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz

进行环境变量设置

sudo vim /etc/profile

在代码底部,加入环境变量

export PATH=$PATH:/opt/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin

之后保存退出,执行立即生效

source /etc/profile

接下来,当你在终端拼写aarch64并按下tab键时,命令行会自动补全如下信息。

debian:~$ aarch64-linux-gnu-
aarch64-linux-gnu-addr2line      aarch64-linux-gnu-gcov-tool
aarch64-linux-gnu-ar             aarch64-linux-gnu-gdb
aarch64-linux-gnu-as             aarch64-linux-gnu-gdb-add-index
aarch64-linux-gnu-c++            aarch64-linux-gnu-gfortran
aarch64-linux-gnu-c++filt        aarch64-linux-gnu-gprof
aarch64-linux-gnu-cpp            aarch64-linux-gnu-ld
aarch64-linux-gnu-dwp            aarch64-linux-gnu-ld.bfd
aarch64-linux-gnu-elfedit        aarch64-linux-gnu-ld.gold
aarch64-linux-gnu-g++            aarch64-linux-gnu-nm
aarch64-linux-gnu-gcc            aarch64-linux-gnu-objcopy
aarch64-linux-gnu-gcc-7.5.0      aarch64-linux-gnu-objdump
aarch64-linux-gnu-gcc-ar         aarch64-linux-gnu-ranlib
aarch64-linux-gnu-gcc-nm         aarch64-linux-gnu-readelf
aarch64-linux-gnu-gcc-ranlib     aarch64-linux-gnu-size
aarch64-linux-gnu-gcov           aarch64-linux-gnu-strings
aarch64-linux-gnu-gcov-dump      aarch64-linux-gnu-strip

说明交叉编译工具配置成功

3、进行内核(kernel)的配置与编译。

(1)给内核打实时补丁(可选,不打实时补丁的话,可以跳到第二步)
  将网上下载的rt补丁放到内核源码目录,之后执行

sudo patch -p1 < patch-4.19.132-rt59.patch

这样补丁就打好了

(2)进行内核配置。
  导入原厂的默认配置

make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-  xxx_defconfig

  说明:xxx_defconfig是我从原厂内核源代码arch/arm64/configs那里拷贝过来的内核配置文件,里面包含了原厂已经做好的,对板子的基本配置。这也是我为什么开头推荐下载内核源码要从开发板原厂下载的原因。否则linux官网的内核可能没对你这款MCU进行支持和配置,即使你以后能编译,也无法生成dtb文件。
  进行自定义内核配置

make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-  menuconfig

打了rt补丁的话,需要在menuconfig的界面下,进行如下操作

进入“General setup”
在”Preemption Model”中选择“Fully Preemptible Kernel(Real-Time)”

回到上一层,进入”Device Drivers”中,去掉“Staging drivers”


  之后保存,退出界面
(3)进行交叉编译内核

make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-  all                 //时间较长,可以去喝杯茶

  最后交叉编译完成,会生成arch/arm64/boot/Image 以及arch/arm64/boot/dtbs/xxxx/*******.dtb文件。

  注意:上一行的xxxx为你的开发板或MCU原厂的名字,如Sumsung或者xilinx。*******.dtb对应你的开发板型号。
  这也是我推荐使用原厂内核的原因。

接下来就可以移植Image内核镜像以及dtb设备树了

modules以及headers头文件安装

  上面我们生成了debian_stretch根文件系统,以及Image,dtb 内核镜像和设备树文件,按理来说已经可以进行移植了。但是不要忘了Modules以及headers也是内核里比较重要的两个内容
  modules 是一些内核编译的模块选项,需要你安装到根文件系统中,跟随系统一起启动
  headers 是一些头文件,需要你安装到根文件系统中 。linux安装应用软件经常会用到这些头文件。

(1)安装modules文件
  生成modules

make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- modules

  安装modules到根文件系统

make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- modules_install INSTALL_MOD_PATH=~/debian_stretch/usr

(2)安装headers头文件

make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- headers_install  INSTALL_HDR_PATH=~/debian_stretch/usr

  到现在为止,完整的rootfs(根文件系统),Image(内核镜像),.dtb(设备树文件),都已备齐。

移植到开发板有两种方式

1、下载上述三个文件到flash中
2、下载上述三个文件到SD卡中

之后在bootloader或者uboot设置启动地址即可。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/192657.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 以太坊钱包erc20_xvg币智能合约

    以太坊钱包erc20_xvg币智能合约以太坊被称为区块链2.0,就是因为以太坊在应用层提供了虚拟机,使得开发者可以基于它自定义逻辑,通常被称为智能合约,合约中的公共接口可以作为区块链中的普通交易执行。本文就智能合约发代币流程作一完整介绍(

    2022年8月4日
    2
  • LMDB笔记_pdf怎么做笔记

    LMDB笔记_pdf怎么做笔记作为一个计算机底层小白,在了解一个知识点的时候时常需要恶补很多基础知识。本文记录在了解LMDB过程中接触的知识点。LMDB基本架构一个比较官方的解释:lmdb的基本做法是使用mmap文件映射,不管这个文件存储实在内存上还是在持久存储上。lmdb的所有读取操作都是通过mmap将要访问的文件只读的映射到虚拟内存中,直接访问相应的地址.因为使用了read-only的mmap,同样避免了程序错误将存…

    2022年9月29日
    0
  • 考研-数据库_数据库系统考研看什么书

    考研-数据库_数据库系统考研看什么书文章目录前言一、数据库的概念二、综合知识前言一、数据库的概念1、数据数据:描述事物的符号记录称为数据。特点:数据和关于数据的解释不可分。2、数据库长期存储在计算机内、有组织、可共享的大量的数据的集合。数据库中的数据按照一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。特点:永久存储、有组织、可共享。3、数据库系统(DBS)(DateBaseSystem)数据库系统,指在计算机系统中引入数据库后的系统,一般由数据库、数据

    2022年10月30日
    0
  • 基于java的毕业设计参考文献_java毕业论文参考文献

    基于java的毕业设计参考文献_java毕业论文参考文献一年一度的毕业季,最令毕业生头疼的就是毕业设计以及撰写毕业论文,而毕业论文还需要加上多篇参考文献,有的老师对参考文献的要求是很多的,比如需要国内的和国外的,时间必须是近三年的,满足XXX要求的文献至少

    2022年8月5日
    3
  • 学Python,不需要有编程基础! (二)Python能干什么?[通俗易懂]

    学Python,不需要有编程基础! (二)Python能干什么?[通俗易懂]python作为一种功能强大的编程语言,因其简单易学而受到很多开发者的青睐。那么,Python的应用领域有哪些呢?Python的应用领域非常广泛,几乎所有大中型互联网企业都在使用Python完

    2022年7月6日
    18
  • maven打包常用命令总结

    maven打包常用命令总结maven打包常用命令总结基本命令介绍1、mvnclean2、mvncompile3、mvnpackage4、mvninstall5、mvndeploy生产环境打包举例1、生产环境根据源码构建项目:2、可用用到的其他mvn参数介绍:开发过程中常见以下几个命令,这些命令执行后程序究竟发生了什么变化?生产环境如果使用shell脚本配置jenkins构建项目,如何使用命令呢?下面介绍一下我常…

    2022年6月4日
    46

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号