当前位置: 首页 > news >正文

IMX6ULL ARM Linux开发板SD卡启动,SD卡的分区与分区格式化创建

一、确定TF卡挂载到ubuntu上的设备名称及分区情况
  • 1. 在ubuntu不接入TF卡的情况下, 使用df -lh /dev/sd*命令查看当前"/dev/sd开头"的设备。
##输入df -lh /dev/sd*命令,敲回车键
~$ df -lh /dev/sd*

  • 2.将TF卡接入到ubuntu,再次使用df命令,进行查看,多出来的设备即是TF卡挂载到ubuntu的设备名称

如图所示,多出来的/dev/sdb1 /dev/sdb2即为TF卡的挂载分区,TF设备名称为/dev/sdb

注:因为我之前已经对SD卡进行过分区,分出两个区,sdb1为分区1(存放Linux内核及设备树文件),sdb2为分区2(存放根文件系统) uboot存放在默认sdb。如果你的SD卡未分过区,仅显示/dev/sdb 或者sd* (*为b c d....)

  • 可以使用cat  /proc/partitions命令,查看设备的分区情况

如图所示,SD卡sdb分出sdb1 sdb2两个分区。

二、删除SD卡原分区,对SD卡进行重新分区

1.取消SD卡挂载,准备进行分区操作

~$ sudo umount /dev/sdb

2.使用fdisk对SD卡进行格式化,输入sudo fdisk /dev/sdb命令,按m查看fdisk帮助信息

qhw@qhw:~$ sudo fdisk /dev/sdb欢迎使用 fdisk (util-linux 2.31.1)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。命令(输入 m 获取帮助): m帮助:DOS (MBR)a   开关 可启动 标志b   编辑嵌套的 BSD 磁盘标签c   开关 dos 兼容性标志常规d   删除分区F   列出未分区的空闲区l   列出已知分区类型n   添加新分区p   打印分区表t   更改分区类型v   检查分区表i   打印某个分区的相关信息杂项m   打印此菜单u   更改 显示/记录 单位x   更多功能(仅限专业人员)脚本I   从 sfdisk 脚本文件加载磁盘布局O   将磁盘布局转储为 sfdisk 脚本文件保存并退出w   将分区表写入磁盘并退出q   退出而不保存更改新建空磁盘标签g   新建一份 GPT 分区表G   新建一份空 GPT (IRIX) 分区表o   新建一份的空 DOS 分区表s   新建一份空 Sun 分区表命令(输入 m 获取帮助): 

3.按照显示信息,一直按d及对应分区序号,删除sdb设备下所有分区,至到提示“还没有定义分区”为止。

4.按n进行重新分区,

分区大小根据个人实际需要进行定义,

本文分区如下:

  • 前面10MB空间留给uboot (SD卡一个扇区为512字节,2048个扇区容量为1MB
  • uboot空间之后建立分区1给内核和设备树,给100MB
  • 分区1之后建立分区2给根文件系统,剩余全部空间
命令(输入 m 获取帮助): n
分区类型p   主分区 (0个主分区,0个扩展分区,4空闲)e   扩展分区 (逻辑分区容器)
选择 (默认 p): p
分区号 (1-4, 默认  1): 1
第一个扇区 (2048-122152959, 默认 2048): 20480    #SD卡一个扇区512字节,2048个扇区为1MB;
上个扇区,+sectors 或 +size{K,M,G,T,P} (20480-122152959, 默认 122152959): +204800  #加100M空间创建了一个新分区 1,类型为“Linux”,大小为 100 MiB。命令(输入 m 获取帮助): n 
分区类型p   主分区 (1个主分区,0个扩展分区,3空闲)e   扩展分区 (逻辑分区容器)
选择 (默认 p): p
分区号 (2-4, 默认  2): 2
第一个扇区 (2048-122152959, 默认 2048): 225281         
上个扇区,+sectors 或 +size{K,M,G,T,P} (225281-122152959, 默认 122152959): 创建了一个新分区 2,类型为“Linux”,大小为 58.1 GiB。

分区完成后,按p打印分区表,查看是否修改成功。

命令(输入 m 获取帮助): p
Disk /dev/sdb:58.3 GiB,62542315520 字节,122152960 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x2d530f15设备       启动   起点      末尾      扇区  大小 Id 类型
/dev/sdb1        20480    225280    204801  100M 83 Linux
/dev/sdb2       225281 122152959 121927679 58.1G 83 Linux

确认修改成功后,按w进行保存 

命令(输入 m 获取帮助): w
分区表已调整。
正在同步磁盘。
三、格式化/dev/sdb1分区为vfat格式,用来存放内核与设备树文件

使用mkfs.vfat命令,格式化/dev/sdb1分区为vfat格式

  • 1.取消SD卡分区1挂载,准备进行格式化操作
~$ sudo umount /dev/sdb1
  • 2.格式化/dev/sdb1分区
qhw@qhw:~$ sudo mkfs.vfat /dev/sdb1
mkfs.fat 4.1 (2017-01-24)
四、格式化/dev/sdb2分区为ext4格式,用来存放根文件系统
  • 1.取消SD卡分区2挂载,准备进行格式化操作
~$ sudo umount /dev/sdb2
  • 2.格式化/dev/sdb2分区
qhw@qhw:~$ sudo mkfs.ext4 /dev/sdb2
mke2fs 1.44.1 (24-Mar-2018)
创建含有 15240959 个块(每块 4k)和 3817472 个inode的文件系统
文件系统UUID:55a36819-e9fd-45d5-9bd4-22dad621be41
超级块的备份存储于下列块: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424正在分配组表: 完成                            
正在写入inode表: 完成                            
创建日志(65536 个块) 完成
写入超级块和文件系统账户统计信息: 已完成 

至此,SD卡分区及分区格式化操作完成。

五、将uboot写入SD卡
sudo dd if=u-boot-dtb.imx of=/dev/sdb bs=1K seek=1 && sync

具体操作待补充。。。

六、将内核、设备树文件写入SD卡
##创建内核与设备树挂载目录
mkdir kernel_dtb##挂载/dev/sdb1到kernel_dtb目录
sudo mount /dev/sdb1 kernel_dtb##复制zImage文件到挂载目录
sudo cp zImage kernel_dtb/##复制.dtb设备树文件到挂载目录  拷贝自己实际设备树名称
sudo cp imx6ull-14x14-evk.dtb kernel_dtb/##取消挂载
sudo umount kernel_dtb
七、将根文件系统写入SD卡
##创建内核与设备树挂载目录
mkdir mount_rootfs##挂载/dev/sdb2到mount_rootfs目录
sudo mount /dev/sdb2 mount_rootfs##复制根文件系统目录下所有文件到挂载目录:nfs/rootfs目录下为创建编译好的具体根文件系统
sudo cp nfs/rootfs/* mount_rootfs/ -drf##取消挂载
sudo umount mount_rootfs
八、设置uboot启动环境变量

设置bootcmd,从SD卡启动内核与设备树文件

setenv bootcmd 'mmc dev 0;fatload mmc 0:1 80800000 zImage;fatload mmc 0:1 83000000 imx6ull-14x14-evk.dtb;bootz 80800000 - 83000000'

 设置bootargs,从SD卡启动根文件系统

setenv bootargs 'consoe=ttymxc0,115200 root=/dev/mmcblk0p2 rootwait rw'

保存设置并重启

saveenv

reset

附:uboot启动错误解决,设置网卡mac、IP、服务器等地址

进入调试界面对EHT mac地址进行设置

=> setenv ipaddr 192.168.1.128         ##设置开发板IP地址
=> setenv gatewayip 192.168.1.2        ##设置网关
=> setenv netmask 255.255.255.0        ##设置子网掩码
=> setenv ethaddr ca:38:29:c3:28:30    ##设置eth0地址
=> setenv eth1addr 76:7d:33:a8:f0:e7   ##设置eth1地址
=> setenv serverip 192.168.1.17        ##设置服务器IP,也就是与开发板连接的ubuntu IP地址
=> saveenv      ##保存
Saving Environment to MMC... Writing to MMC(0)... OK
=> reset        ##重启

 

相关文章:

IMX6ULL ARM Linux开发板SD卡启动,SD卡的分区与分区格式化创建

一、确定TF卡挂载到ubuntu上的设备名称及分区情况 1. 在ubuntu不接入TF卡的情况下, 使用df -lh /dev/sd*命令查看当前"/dev/sd开头"的设备。 ##输入df -lh /dev/sd*命令,敲回车键 ~$ df -lh /dev/sd* 2.将TF卡接入到ubuntu,再次使…...

去哪里找图标?

2023年9月27日,周三下午 为了准备软件工程的期末项目,我需要找给项目找一些图标 目录 1、iconfont 2、material-design-icons 3、Font-Awesome 4、feather 5、Bootstrap 官方图标库 1、iconfont iconfont-阿里巴巴矢量图标库 这个需要注册&…...

Js数组去重都有哪些方法?

1. indexOf 定义: indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。如果没有找到匹配的字符串则返回 -1。注意:iindexOf() 方法区分大小写。语法: string.indexOf(searchvalue,start)//;searchvalue必需。searchvalue可选…...

Vue简单使用

1.Vue使用环境 安装nodejs,新版nodejs集成npm;使用node -v和npm -v验证是否安装成功 修改npm镜像为淘宝npm镜像,然后使用cnpm指令代替npm npm install -g cnpm --registryhttp://registry.npm.taobao.org插件安装 Vetur Vue智能提示...

2309C++nlohmann数格示例2

JSON指针和JSON补丁 该库支持JSON指针(RFC6901)来处理结构化值.而,JSONPatch(RFC6902)允许描述两个JSON值之间的差异,有效地允许Unix已知的补丁和差异操作. //一个JSON值 json j_original R"({"baz": ["one", "two", "three"]…...

企业沟通平台私有部署,让沟通更高效数据更安全

在现代企业中,高效的内部沟通对于保持团队合作、提升工作效率至关重要。而企业沟通平台私有部署则成为了越来越多企业的选择,以满足数据安全性、合规性以及定制化需求。WorkPlus 作为领先品牌,提供高质量的企业沟通平台私有部署解决方案&…...

Java流的体系结构(一)

文章目录 一、文件读写操作FileReader和FileWriter1.main()2.FileReader1.说明:2.代码案例 3.对read()操作升级:使用read的重载方法4.FileWriter的使用1.说明2.代码 4.FileReader和FileWriter综合使用 二、使用步骤1.引入库 二、测试FileInputStream和Fi…...

什么是Redux?它的核心概念有哪些?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 什么是Redux?⭐ 它的核心概念有哪些?⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发…...

细胞机器人系统中的群体智能

摘要 细胞机器人系统具有“智能”行为能力。本文分析了这种智能的含义。本文根据上述不可思议智能行为的不可预测性来定义机器人智能和机器人系统智能。对不可预测性概念的分析与(1)统计不可预测、(2)不可访问、(3&am…...

【办公自动化】用Python将PDF文件转存为图片(文末送书)

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…...

不容易解的题9.26

想编写这一版,是因为之前复习字符串或者双指针等其他栏目时候没有写文章,但是现在回过头来刷,所以想着写一篇,我在leetcode的收藏夹里收藏了一些我自认为需要多加练习的题目,它们并非是很难的,极不易理解的…...

易点易动固定资产管理系统:精准管理与科学采购,降本增效的利器

在现代企业管理中,固定资产的精准管理和科学采购已成为提升企业效率和降低成本的重要环节。为了满足企业管理的需求,我们自豪地介绍易点易动固定资产管理系统,这是一款功能强大的软件解决方案,旨在帮助企业实现固定资产的精准管理…...

人大金仓分析型数据库外部表(二)

外部表错误数据 默认情况下,如果外部表数据中包含有一个错误,命令就会失败并且不会有数据被载入到目标数据库表中。gpfdist 文件服务器使用 HTTP 协议。使用 LIMIT的外部表查询会在检索到所需的 行后结束连接,导致一个HTTP 套接字错误。 如…...

rtp流广播吸顶喇叭网络有源吸顶喇叭

SIP-7043 rtp流广播吸顶喇叭网络有源吸顶喇叭 一、描述 SIP-7043是我司的一款SIP网络有源吸顶喇叭,具有10/100M以太网接口,内置有一个高品质扬声器,将网络音源通过自带的功放和喇叭输出播放,可达到功率20W。SIP-7043作为SIP系统的…...

Spring学习笔记12 面向切面编程AOP

Spring学习笔记11 GoF代理模式_biubiubiu0706的博客-CSDN博客 AOP(Aspect Oriented Programming):面向切面编程,面向方面编程. AOP是对OOP的补充延申.底层使用动态代理实现. Spring的AOP使用的动态代理是:JDK动态代理_CGLIB动态代理技术.Spring在这两种动态代理中灵活切换.如…...

【0225】源码分析postgres磁盘块(disk block)定义

相关阅读: 【0040】 PostgreSQL数据库表文件底层结构布局分析 1. postgres磁盘块定义 在学习本文之前,需要对关系表的结构原理有一定的理解。如果不清楚PG磁盘数据表文件的布局,可阅读:...

第九章 动态规划 part11 123. 买卖股票的最佳时机III 188. 买卖股票的最佳时机IV

第五十天| 第九章 动态规划 part11 123. 买卖股票的最佳时机III 188. 买卖股票的最佳时机IV 一、123. 买卖股票的最佳时机III(难难难难难) 题目链接:https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iii/ 题目介绍&#xff…...

阿里云服务器共享型和企业级独享有什么区别?

阿里云ECS云服务器共享型和企业级有什么区别?企业级就是独享型,共享型和企业级云的主要区别CPU调度模式,共享型是非绑定CPU调度模式,企业级是固定CPU调度模式,共享型云服务器在高负载时计算性能可能出现波动不稳定&…...

Vue.js基本语法上

🎬 艳艳耶✌️:个人主页 🔥 个人专栏 :《Spring与Mybatis集成整合》《springMvc使用》 ⛺️ 生活的理想,为了不断更新自己 ! 目录 1.插值 1.1 文本 1.2 v-v-html 1.3 数据双向绑定数据(v-model) 1.4 属性&#xff…...

【1333. 餐厅过滤器】

来源:力扣(LeetCode) 描述: 给你一个餐馆信息数组 restaurants,其中 restaurants[i] [idi, ratingi, veganFriendlyi, pricei, distancei]。你必须使用以下三个过滤器来过滤这些餐馆信息。 其中素食者友好过滤器 v…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

django filter 统计数量 按属性去重

在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...

工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配

AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

企业如何增强终端安全?

在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...

Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?

Redis 的发布订阅(Pub/Sub)模式与专业的 MQ(Message Queue)如 Kafka、RabbitMQ 进行比较,核心的权衡点在于:简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...