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.mzph.cn/news/224775.shtml

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

相关文章

centos 手动编译安装git

原因 由于centos自带的git版本太低,使用git的时候会出现很多问题,但是尝试了各种办法无法直接更新git版本,所以最后自己手动编译安装git 在github下载源码,下载解压之后,上传到服务器,我上传到 /home/user…

探索多功能SQL数据库编辑器 - Richardson Software RazorSQL

在当今数字化时代,SQL数据库的管理和编辑是许多企业和开发人员必不可少的任务。为了提高生产力和简化数据库操作,Richardson Software推出了一款强大而多功能的SQL数据库编辑器 - RazorSQL。 RazorSQL是一款功能全面的数据库管理工具,可适用…

LeetCode(61)删除链表的倒数第 N 个结点【链表】【中等】

目录 1.题目2.答案3.提交结果截图 链接: 删除链表的倒数第 N 个结点 1.题目 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head [1,2,3,4,5], n 2 输出:[1,2,3,5]示例…

【STM32独立看门狗(IWDG) 】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、看门狗是什么?1.简介2. 主要功能3.独立看门狗如何工作4.寄存器写保护5.看门狗 看门时间 二、使用步骤1.开启时钟2.初始化看门狗3.开启看门狗4.喂…

ACL和NAT

文章目录 ACL和NAT一、ACL概述及产生背景1、ACL访问控制列表2、ACL工作原理3、ACL种类4、ACL命令配置步骤4.1 ACL命令配置4.1 ACL配置步骤 二、NAT(网络地址转换)1、NAT概述2、NAT类型2.1 静态NAT与动态NAT 3、NATPT(端口映射)4、…

详解—【C++】lambda表达式

目录 前言 一、lambda表达式 二、lambda表达式语法 2.1. lambda表达式各部分说明 2.2. 捕获列表说明 三、函数对象与lambda表达式 前言 在C98中&#xff0c;如果想要对一个数据集合中的元素进行排序&#xff0c;可以使用std::sort方法。 #include <algorithm> #i…

服务器被攻击宕机的一些小建议

现在网络攻击屡有发生&#xff0c;任何网站服务器都面临这样的危险&#xff0c;服务器被攻击造成的崩溃宕机是损失是我们无法估量的。网络攻击我们无法预测&#xff0c;但做好防御措施是必须的&#xff0c;建议所有的网站都要做好防范措施&#xff0c;准备相应的防护预案&#…

maven jar sort

1&#xff09;往常项目结构lib包排序 2&#xff09;maven的默认是没有排序的

《数据结构、算法与应用C++语言描述》- 构建哈夫曼树

哈夫曼树 完整可编译运行代码见&#xff1a;Github::Data-Structures-Algorithms-and-Applications/_29huffmanTree 定长编码与可变长编码 定长编码 每个字符都用固定长度的编码来表示。 例如假设一个文本是由字符 a、u、x 和 z 组成的字符串&#xff0c;每个字符用2位二进…

【idea】idea尾部自动删除空格,idea2023.1.2关闭自动去除行尾空格的功能

这个功能是由于git或者svn上的代码有许多空格的时候&#xff0c;会自动把空格去掉&#xff0c;就会导致出现许多更改的地方&#xff0c;会自动删空格。 尾部刚打好空格准备写代码&#xff0c;自动就删掉空格&#xff0c;又得重打空格后继续编码&#xff0c;非常不爽。 设置如…

HTML5 Canvas画布讲解

一、canvas 简介 ​<canvas> 是 HTML5 新增的&#xff0c;一个可以使用脚本(通常为 JavaScript) 在其中绘制图像的 HTML 元素。它可以用来制作照片集或者制作简单(也不是那么简单)的动画&#xff0c;甚至可以进行实时视频处理和渲染。 ​它最初由苹果内部使用自己 MacO…

我的NPI项目之Android 安全系列 -- EMVCo

最近一直在和支付有关的内容纠缠&#xff0c;原来我负责的产品后面还要过EMVCo的认证。于是&#xff0c;就网上到处找找啥事EMVCo&#xff0c;啥是EMVCo&#xff0c;啥是EMVCo。 于是找到了一个神奇的个人网站&#xff1a;Ganeshji Marwaha 虽然时间有点久远&#xff0c;但是用…

黑马点评04集群下的并发安全

实战篇-08.优惠券秒杀-集群下的线程并发安全问题_哔哩哔哩_bilibili 为了应对高并发&#xff0c;需要把项目部署到多个机器构成集群&#xff0c;所以需要配置nginx。 1.如何模拟集群 通过idea的ctrl d修改配置&#xff0c;实现多个tomcat运行模拟集群 然后在nginx上配置节点&…

计算机网络快速刷题

自用//奈奎斯特定理和香农定理计算题 参考博客&#xff1a;UDP协议是什么&#xff1f;作用是什么&#xff1f; 肝了&#xff0c;整理了8张图详解ARP原理 【网络协议详解】——FTP系统协议&#xff08;学习笔记&#xff09; 在OSI参考模型中&am…

Tekton 克隆 git 仓库

Tekton 克隆 git仓库 介绍如何使用 Tektonhub 官方 git-clone task 克隆 github 上的源码到本地。 git-clone task yaml文件下载地址&#xff1a;https://hub.tekton.dev/tekton/task/git-clone 查看git-clone task yaml内容&#xff1a; 点击Install&#xff0c;选择一种…

聊聊Java中的常用类String

String、StringBuffer、StringBuilder 的区别 从可变性分析 String不可变。StringBuffer、StringBuilder都继承自AbstractStringBuilder &#xff0c;两者的底层的数组value并没有使用private和final修饰&#xff0c;所以是可变的。 AbstractStringBuilder 源码如下所示 ab…

最新AI绘画Midjourney绘画提示词Prompt教程

一、Midjourney绘画工具 SparkAi【无需魔法使用】&#xff1a; sparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的…

《Kotlin核心编程》笔记:可空类型平台类型装箱类型数组类型泛型协变与逆变

可空类型 在Kotlin中&#xff0c;我们可以在任何类型后面加上“?”&#xff0c;比如“Int?”&#xff0c;实际上等同于“Int? Int or null”。 通过合理的使用&#xff0c;不仅能够简化很多判空代码&#xff0c;还能够有效避免空指针异常。 注意&#xff1a;由于null只能…

Tomcat 十大安全优化方法(详解版)

目录 1 talnet管理端口保护 2 AJP连接端口保护 3 禁用管理器 4 降权启动 5 控制文件列表的访问 6 隐藏版本信息 7 server header重写 8 限制IP访问 9 修改脚本权限 10 访问日志格式规范 1 talnet管理端口保护 配置内容&#xff1a; &#xff08;1&#xff09;修改默…

HCIA-H12-811题目解析(3)

1、【单选题】 以下关于路由器的描述&#xff0c;说法错误的是&#xff1f; 2、【单选题】某网络工程师在输入命令行时提示如下信息&#xff1a;Error:Unrecognized command foun at position.对于该提示信息说法正确的是&#xff1f; 3、【单选题】如下图所示的网络&#xf…