lv12 linux内核的安装与加载

目录

1 tftp加载Linux内核及rootfs

1.1 uboot内核启动命令 

1.2 uboot自启动参数环境变量 

1.3 实验

2 EMMC加载Linux 内核及rootfs 

​编辑

 2.1 emmc中写入uimage

​编辑

 2.2 emmc中写入dtb

 2.3 emmc中写入根文件系统

2.4 设置环境变量 

3 tftp加载Linux内核nfs挂载rootfs

3.1 复制rootfs压缩包到nfs服务器目录 

3.2 设置环境变量

3.3 启动检测 

4 最后EMMC加载boot

4.1 复制uboot到tftp服务器目录

4.2 写入emmc​编辑

4.3 重新上电 

5 练习


1 tftp加载Linux内核及rootfs

tftp即通过网络把远端服务器中的的linux内核、设备树、根文件系统辅助到内存中运行。

1.1 uboot内核启动命令 

bootm启动指定内存地址上的Linux内核并为内核传递参数bootm kernel-addr ramdisk-addr dtb-addr注:kernel-addr:	内核的下载地址  ramdisk-addr:	根文件系统的下载地址  	dtb-addr:		设备树的下载地址若不使用相应的地址,对应的位置写“-”eg: bootm 0x41000000 - 0x42000000	

 

1.2 uboot自启动参数环境变量 

bootargseg:setenv bootargs root=/dev/nfs nfsroot=xxx.xxx.xxx.xxx:/opt/4412/rootfs     rw console=ttySAC2,115200 init=/linuxrc ip=***.***.***.***注:root		根文件系统类型(nfs)nfsroot		网络文件系统路径(xxx.xxx.xxx.xxx:/opt/4412/rootfs)rw      	操作网络文件系统的权限(rw)console		控制台(使用串口2,波特率115200)init        	init进程的位置(/linuxrc)ip          	linux启动后自身的IP(***.***.***.***)

1.3 实验

详细信息参考实验手册

将资料中“ Linux 内核镜像”目录下的“ uImage ”和“ exynos4412-fs4412.dtb ”拷贝到 ubuntu 中 tftp 工作目录下
将资料中“根文件系统镜像”目录下的“ramdisk ”也拷贝到 ubuntu tftp 工作目录下

步骤一:建立tftp服务器目录,/home/linux/tftpboot(具体如何搭建参考手册)

步骤二:修改uboot内核启动命令,保存环境变量

setenv ipaddr [本机ip]setenv serverip ]tftp服务器ip]setenv gatewayip [网关]setenv bootcmd tftp 0x41000000 uImage\;tftp 0x42000000 exynos4412-fs4412.dtb\;tftp 0x43000000 ramdisk.img\;bootm 0x41000000 0x43000000 0x42000000saveenv

 步骤三:重启开发板

 

2 EMMC加载Linux 内核及rootfs 

通过上述方式我们虽然可以加载 Linux 内核和根文件系统并正常运行,但上述方式我们是把
内核镜像、设备树、根文件系统镜像都放到了 tftp 服务器上,然后开发板上电之后再通过
tftp 去下载这些文件到开发板的内存中运行;但在实际做一个产品的时候我们不可能每次开
机都通过网络去服务器上下载这些镜像,所以以下步骤我们就将这些镜像安装到开发板上
的 EMMC 中,然后从 EMMC 启动内核

 2.1 emmc中写入uimage

查看uimage大小,计算需要占用多少个扇区,我们从0x800开始,前面以后留个uboot。后面需要1708个扇区,所以给了2000个扇区存放。

  

 2.2 emmc中写入dtb

直接从0x2800开始刷,主要比43大就行,实验中分了800

 2.3 emmc中写入根文件系统

0x2800+0x800=0x3000,大小计算同上

2.4 设置环境变量 

setenv bootcmd 'mmc read 0 0x41000000 0x800 0x2000\;mmc read 0 0x42000000 0x2800 0x800\;mmc read 0 0x43000000 0x3000 0x2000\;bootm 0x41000000 0x43000000 0x42000000'
saveenv

3 tftp加载Linux内核nfs挂载rootfs

这种方式,开发效率较高。

在后续的课程中我们会经常修改内核和设备数的源码,也会经常向根文件系统中添加一些
驱动或应用程序,这样每次修改之后我们都要重新将内核或根文件系统安装到 EMMC 中,
步骤会比较繁琐,开发效率也比较低,所以在 开发阶段 我们经常使用的方式是通过 tftp
载内核和设备树再通过 nfs 挂载根文件系统(后续课程都是使用这种方式),这样步骤
简单,效率也比较高,待产品定型之后在安装到 EMMC

3.1 复制rootfs压缩包到nfs服务器目录 

 

3.2 设置环境变量

3.3 启动检测 

  

 

4 最后EMMC加载boot

系统脱离SD卡的启动方式

sd默认是第1块启动,第0块是分区表,但是emmc不一样,默认是第0块启动

4.1 复制uboot到tftp服务器目录

4.2 写入emmc

4.3 重新上电 

5 练习

1.简述uboot中bootargs环境变量的功能?

1 bootargs 是一个环境变量,用于指定 Linux 内核启动时的参数。它是 U-Boot 启动 Linux 内核时传递给内核的第一个参数,也是内核启动时使用的命令行参数。U-Boot 在启动 Linux 内核前,将 bootargs 环境变量的值拼接成一个字符串,并传递给内核。这个字符串包含了启动内核所需的所有参数和信息,内核启动后会解析这个字符串并按照其中的参数和信息进行配置和初始化.它直接影响到内核启动后的配置和运行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/218154.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Echarts 热力图与折线图的结合

热力图与折线图结合使用(文末含源码) 这种需求并不多见,遇到后第一时间翻看了Echars官方文档,并没有发现类似的例子。于是自己动手合并了双轴,后发现折线图会被遮盖。经过排查发现了一个关键参数:visualMap的配置。这个配置在热力…

C# 雪花算法生成Id工具类

写在前面 传说自然界中并不存在两片完全一样的雪花的,每一片雪花都拥有自己漂亮独特的形状、独一无二;雪花算法也表示生成的ID如雪花般独一无二,该算法源自Twitter。 雪花算法主要用于解决分布式系统的唯一Id生成问题,在生产环境…

IDEA新建jdk8 spring boot项目

今天新建spring boot项目发现JDK版本最低可选17。 但是目前用的最多的还是JDK8啊。 解决办法 Server URL中设置: https://start.aliyun.com/设置完成后,又可以愉快的用jdk8创建项目了。 参考 https://blog.csdn.net/imbzz/article/details/13469117…

Pytorch从零开始实战13

Pytorch从零开始实战——ResNet与DenseNet探索 本系列来源于365天深度学习训练营 原作者K同学 文章目录 Pytorch从零开始实战——ResNet与DenseNet探索环境准备数据集模型选择开始训练可视化总结 环境准备 本文基于Jupyter notebook,使用Python3.8,P…

【学习笔记】JavaScript中的GC算法

1、内存管理 内存:由可读写单元组成,标识一片可操作的空间 管理: 认为的去操作一篇空间的申请、使用和释放 内存管理:开发者主动申请空间、使用空间、释放空间 管理流程: 申请-使用-释放 // 申请 let obj {} //使…

蓝牙物联网智慧工厂解决方案

蓝牙物联网智慧工厂解决方案是一种针对工厂管理的智能化解决方案,通过蓝牙、物联网、大数据、人工智能等技术,实现工厂人员的定位、物资的定位管理、车间的智慧巡检、智慧安防以及数据的可视化等功能。 蓝牙物联网智慧工厂解决方案构成: 人员…

华为数通——企业双出口冗余

目标:默认数据全部经过移动上网,联通低带宽。 R1 [ ]ip route-static 0.0.0.0 24 12.1.1.2 目的地址 掩码 下一条 [ ]ip route-static 0.0.0.0 24 13.1.1.3 preference 65 目的地址 掩码 下一条 设置优先级为65 R…

Axios入门案例——后端学习

目录 后端准备 导入依赖 解决跨域 User实体类 DemoController测试接口 前端准备 项目结构 axios.js axios.html 开始测试 后端结果 前端结果 后端准备 导入依赖 案例会用到以下的三个依赖。 <dependency><groupId>org.springframework.boot</gro…

基于以太坊的智能合约开发Solidity(事件日志篇)

//声明版本号&#xff08;程序中的版本号要和编译器版本号一致&#xff09; pragma solidity ^0.5.17; //合约 contract EventTest {//状态变量uint public Variable;//构造函数constructor() public{Variable 100;}event ValueChanged(uint newValue); //事件声明event Log(…

Python 自动化之收发邮件(二)

发邮件之Windows进程监控 文章目录 发邮件之Windows进程监控前言一、基本内容二、基本结构三、库模块四、函数模块1.进程监控2.邮件发送 五、程序运行模块1.获取时间2.用户输入3.进程监控3.1进程启动发邮件3.2进程停止发邮件 总结 前言 上一篇简单写了一下如何进行邮件的收发操…

智能优化算法应用:基于黏菌算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于黏菌算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于黏菌算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.黏菌算法4.实验参数设定5.算法结果6.参考文献7.MA…

云原生之深入解析Kubernetes本地持久化存储方案OpenEBS LocalPV的最佳实践

一、K8s 本地存储 K8s 支持多达 20 种类型的持久化存储&#xff0c;如常见的 CephFS 、Glusterfs 等&#xff0c;不过这些大都是分布式存储&#xff0c;随着社区的发展&#xff0c;越来越多的用户期望将 K8s 集群中工作节点上挂载的数据盘利用起来&#xff0c;于是就有了 loca…

PostgreSQL向量数据插件--pgvector安装(附PostgreSQL安装)

PostgreSQL向量数据插件--pgvector安装 一、版本二、数据库安装1. 在官网下载PostgreSQL14.0的安装包2.增加用户postgres3.解压安装 三、pgvector安装1. 从github上克隆下来2. 安装pgvector插件3. 开始使用pgvector启用pgsql命令行创建扩展 本文为本人在安装pgvector中踩过的坑…

自动驾驶学习笔记(十八)——Lidar感知

#Apollo开发者# 学习课程的传送门如下&#xff0c;当您也准备学习自动驾驶时&#xff0c;可以和我一同前往&#xff1a; 《自动驾驶新人之旅》免费课程—> 传送门 《Apollo 社区开发者圆桌会》免费报名—>传送门 文章目录 前言 Lidar感知 运动补偿 点云分割 总结…

MySQL——表的约束

目录 一.表的约束 二.空属性 ​编辑三.默认值 四.列描述 五.主键 1.主键 2.符合主键 六.自增长 七.唯一键 八.外键 一.表的约束 真正约束字段的是数据类型&#xff0c;但是数据类型约束很单一&#xff0c;需要有一些额外的约束&#xff0c;更好的保证数据的合法性&…

26种主流的神经网络偏微分方程求解方法汇总

偏微分方程&#xff08;PDE&#xff09;是数学中一门重要的分支&#xff0c;应用范围广泛涉及自然科学、工程技术、生物学领域等。然而我们都知道&#xff0c;偏微分方程的求解过程异常艰难&#xff0c;如果碰上了特别复杂的&#xff0c;传统的计算方法可能需要数百万个CPU小时…

一些好用的VSCode扩展

可以在扩展这里直接搜索需要的扩展&#xff0c;点击安装即可。 1.Chinese 中文扩展&#xff0c;就是说虽然咱们懂点英语&#xff0c;但还是中文看着方便 2.Auto Rename Tag 当你重命名一个HTML 标签时&#xff0c;会自动重命名与他配对的HTML 标签 当你选择h4这个标签时&…

Docker及其使用思维导图

Docker的架构 构建分发运行镜像 Client&#xff08;客户端&#xff09;&#xff1a;是Docker的用户端&#xff0c;可以接受用户命令和配置标识&#xff0c;并与Docker daemon通信。Images&#xff08;镜像&#xff09;&#xff1a;是一个只读模板&#xff0c;含创建Docker容器…

DevEco Studio 项目鸿蒙(HarmonyOS)资源引用(自定统和系统)

DevEco Studio 项目鸿蒙&#xff08;HarmonyOS&#xff09;资源引用&#xff08;自定统和系统&#xff09; 一、操作环境 操作系统: Windows 10 专业版 IDE:DevEco Studio 3.1 SDK:HarmonyOS 3.1 二、资源访问 HarmonyOS应用资源分为两类&#xff0c;一类是应用资源&…

【数组Array】力扣-304 二维区域和检索 - 矩阵不可变

目录 题目描述 解题过程 labuladong题解 题目描述 给定一个二维矩阵 matrix&#xff0c;以下类型的多个请求&#xff1a; 计算其子矩形范围内元素的总和&#xff0c;该子矩阵的 左上角 为 (row1, col1) &#xff0c;右下角 为 (row2, col2) 。 实现 NumMatrix 类&#xf…