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设置启动地址即可。

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

发表回复

您的电子邮箱地址不会被公开。

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