Linux系统移植(完整版)

前景了解

操作系统的作用?
资源管理,程序控制和人机交互等
Linux操作系统移植的概念

嵌入式操作系统与通用操作系统的最显著的区别之一就是它的可移植性。一款嵌入式操作系统通常可以运行在不同体系结构的处理器和开发板上。为了使嵌入式操作系统可以在某款具体的目标设备上运行,嵌入式操作系统的编写者通常无法一次性完成整个操作系统的代码,而必须把一部分与具体硬件设备相关的代码作为抽象的接口保留出来,让提供硬件的OEM厂商来完成。

为什么要进行操作系统的移植?
不同架构的处理器指令集不兼容,即便是相同的处理器架构,板卡不同驱动代码也是不兼容的。

Linux是一个通用的内核并不是为某一个特定的处理器架构或者板卡设计的,所以从官方获取的Linux源码后我们要先经过相应的配置使其与我们当前的硬件平台相匹配后才能进行编译和安装。
将已有的软件,根据硬件平台的差异,进行少量的代码修改,使得该软件可以在新的硬件平台上运行起来的过程,就是将linux系统经过裁剪,移植到arm开发板上。

Linux系统?

linux系统 = linux内核 + 根文件系统;
根文件系统 = 库(/lib和/usr/lib) + 命令( /bin和/usr/bin) + 配置文件( /etc) + GUI(图形化界面,如:QT)

移植的三大部分?
1.移植uboot:

我们这个板子本身有uboot程序(每个开发板自带),不需要配置,如果需要请了解如下:
https://blog.csdn.net/mxh3600/article/details/129405250
bootloader是什么
BootLoader是在一系列引导加载系统启动的程序的统称,是一个概念并不是具体的代码,只要满足在设备启动初期启动内核功能的代码都可以叫做BootLoader。
u-boot是什么
是一个主要用于嵌入式系统的引导加载程序

1.是一个开源的软件
2.支持多种架构的硬件平台
3.的主要作用是引导加载linux内核或者应用程序启动。一旦内核或应用程序启动,uboot的使命就结束了。
4.源码本质就是一个裸机程序,ARM架构的CPU基本都是使用uboot
5.启动时,主要完成部分硬件的初始化;比如:内存,EMMC, 时钟,串口等
6.主要用于引导linux内核启动,并给内核传递必要的启动参数

2.移植Linux内核

内核是什么

内核是操作系统最基本的部分。它是为众多应用程序提供对计算机硬件的安全访问的一部分软件,这种访问是有限的,并且内核决定一个程序在什么时候对某部分硬件操作多长时间。

CPU与内核之间的关系

“内核是CPU的核心,一个CPU可以有多个内核(也就是多核处理器),而一个内核只能属于一个CPU。
linux内核必须由BootLoader加载和启动,内核本质上也是一个大程序,从上而下执行,最后会进入到一个while(1)。内核一旦启动,BootLoader生命结束,内核永驻内存,直到系统复位重启才消亡。
内核会根据BootLoader传递的参数去某个地方去找根文件系统rootfs,一旦找到rootfs之后的话,内核会将控制权交给根文件系统rootfs。

3.移植根文件系统镜像

linux内核根据BootLoader提供的参数找到了根文件系统rootfs,内核就会运行根文件系统rootfs下/sbin目录下的init一号进程,并且将控制权交给init第一号进程,init进程创建子进程运行/bin/sh程序,就是shell程序,shell终端,shell运行->终端->等待用户输入命令(ls/pwd/……)。

移植内核和移植根文件系统一般是一起执行
采用EMMC加载内核和根文件系统
优势:不需要通过网络去服务器下载镜像,我们将镜像安装到开发版上的EMMC中,然后从EMMC启动内核(交互模式下)
步骤: 给开发板重新上电,在 uboot 交互模式下,去下载并安装这些镜像。
1. 将内核镜像写入到 EMMC 中指定的扇区。
2. 下载根文件系统镜像到内存中。
3. 将根文件系统镜像写入到 EMMC 中指定的扇区。
因为要从 EMMC 驱动,所以还要修改 uboot 的启动参数,并保存。
给开发板重新上电,上电之后观察内核是否能通过 EMMC 加载和启动内核,启动完成后是否能挂载根文件系统(ext4),在终端上输入 linux 下的 shell 命令测试是否正常。
EMMC是什么
eMMC在封装中集成了一个控制器,提供标准接口并管理闪存,使得手机厂商就能专注于产品开发的其它部分,并缩短向市场推出产品的时间。

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将Linux系统移植到ARM架构上,需要执行以下步骤: 1. 确定ARM处理器型号:首先要确定目标ARM处理器的具体型号,因为不同的处理器可能需要不同的内核和驱动支持。 2. 获取Linux内核源代码:从Linux官方网站或其他可靠的源获取适用于目标ARM处理器的Linux内核源代码。 3. 配置内核:根据目标ARM处理器的需求,对内核进行适当配置。这包括选择适当的内核选项、驱动程序和文件系统。 4. 交叉编译工具链:获取适用于ARM架构的交叉编译工具链,并进行安装和配置。这个工具链将用于在x86或其他架构主机上生成ARM平台所需的二进制文件。 5. 编译内核:使用交叉编译工具链编译内核源代码。这将生成适用于ARM平台的内核映像文件。 6. 制作根文件系统:创建适用于ARM平台的根文件系统。可以使用BusyBox等工具来构建一个精简的根文件系统,或者使用已有的根文件系统。 7. 引导加载程序:获取适用于目标ARM处理器的引导加载程序(bootloader),并将其配置为引导Linux内核。 8. 烧录映像文件:将编译好的内核映像文件和根文件系统映像文件烧录到目标ARM设备的存储介质上。 以上是Linux系统移植到ARM架构上的基本步骤,具体的操作步骤可能因为不同的ARM平台和Linux发行版而有所差异。在进行移植过程中,可能需要编写或调整设备驱动程序以确保系统的完整功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值