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        ##重启

 

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

使用Kalibr工具线对相机+IMU离线标定

传感器标定的准确后面做算法才会更准确,所以对Kalibr进行学习。 一、Kalibr编译 1、下载kalibr包 GitHub下载地址 2、 解压后放到/catkin_ws/src文件夹下 重新命令文件夹为kalibr 3、 安装依赖库 sudo apt-get install python-setuptools python-rosinstall…

你写过的最蠢的代码是?

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

驱动开发练习,platform驱动模型的使用

一.总线模型介绍 linux中将一个挂载在总线上的驱动的驱动模型分为三部分:device、driver和bus; device部分:用来保存设备信息对象,在内核中一个klist_device链表中进行管理; driver部分:用来保存驱动信息对…

爬虫 — 验证码反爬

目录 一、超级鹰二、图片验证模拟登录1、页面分析1.1、模拟用户正常登录流程1.2、识别图片里面的文字 2、代码实现 三、滑块模拟登录1、页面分析2、代码实现(通过对比像素获取缺口位置) 四、openCV1、简介2、代码3、案例 五、selenium 反爬六、百度智能云…

云计算与大数据——部署Hadoop集群并运行MapReduce集群(超级详细!)

云计算与大数据——部署Hadoop集群并运行MapReduce集群(超级详细!) Linux搭建Hadoop集群(CentOS7hadoop3.2.0JDK1.8Mapreduce完全分布式集群) 本文章所用到的版本号: CentOS7 Hadoop3.2.0 JDK1.8 基本概念及重要性 很多小伙伴部署集群用hadoop用mapr…

通讯录的实现(详解)

本篇博客将为大家带来通讯录的实现!!! 目录 通讯录的基本介绍: 通讯录的实现过程: 1.设计通讯录的目录 2.基础菜单的实现: 3.定义人的信息 4.定义通讯录的信息 5.创建通讯录并且初始化 6.添加联系人…

面试问题之如何解释微服务

这次的面试还是感觉非常愉快,没有那么憋屈,问的问题也非常有意思。 问题 假设现在有一个人完全不懂微服务,你能和对方解释下什么是微服务吗? 面试回答 这个问题如果要完全回答好,感觉不是那么容易。 什么是微服务 …

基于springboot高校场馆预订系统

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

JAXB(Java Architecture for XML Binding)下载、使用

简介 JAXB(Java Architecture for XML Binding)就是XML数据绑定的java架构。JAXB可以根据XML Schema生成java类,也能根据java类生成XML Schema,XML数据绑定指定了XML请求和XML响应如何映射成java对象。 JAXB提供了API和工具&…

笔记 | 非素数个数(朴素筛查 || 埃式筛查法)

非素数个数 题目描述朴素筛查方法题解 题目描述 求a-b之间的非素数个数 特别的&#xff0c;1也算作素数&#xff0c;区间是[a, b]。 输入输出格式 输入描述: 多组测试数据。 输入两个正整数数a,b&#xff0c;其中a<b<10^7。 输出描述: 输出答案。 输入输出样例 输入样例…

浅谈SpringMVC的请求流程

目录标题 浅谈SpringMVC的请求流程SpringMVC的介绍SpringMVC的逻辑概念运行图解知识总结 浅谈SpringMVC的请求流程 对于SpringMVC而言重点是了解它的底层运行逻辑&#xff0c;从而可以根据其逻辑来进行实际业务的操作或者是利用原理增强业务的功能性&#xff0c;最终达到项目预…

利用hutool工具类实现验证码功能

hutool工具类实现验证码 一.生成验证码二.校验验证码三.使用案例1.引入hutool工具类2.VerifyCodeResp接口响应体3.VerifyCodeController验证码工具类4.测试验证5.项目结构及源码下载 利用hutool工具类&#xff0c;可以很方便生成不同类型的验证码。这里简单记录下使用过程。 一…

基于OSATE环境的AADL项目——简单的项目构建与分析示例

一、背景 本文描述了一个非常简单的AADL项目的构建&#xff0c;以及一个示例项目的分析过程。本文主要记录了OSATE工具环境的一些基本操作&#xff0c;适用于刚刚了解OSATE之后&#xff0c;对于整个工具环境无从下手的小白。 因为基于OSATE环境的AADL项目的构建和分析的详细示…

LeetCode算法心得——美丽塔 I(HashMap)

大家好&#xff0c;我是晴天学长&#xff0c;hashmap的灵活应用&#xff0c;然后边界的细节处理&#xff0c;需要的小伙伴可以关注支持一下哦&#xff01;后续会继续更新的。 1) .美丽塔 美丽塔 I 给你一个长度为 n 下标从 0 开始的整数数组 maxHeights 。 你的任务是在坐标轴…

Keil 无法烧写程序

问题描述&#xff1a; Keil MDK V5.38 按 F8 键无法烧录程序&#xff0c;提示: Error: Flash Download failed - "Cortex-M7", No Algorithm found for: 08000000H - 080013D3H 解决办法&#xff1a; Debug 工具改为&#xff1a;ST-Link Debugger Debug 的 Conne…

【C++】STL之list深度剖析及模拟实现

目录 前言 一、list 的使用 1、构造函数 2、迭代器 3、增删查改 4、其他函数使用 二、list 的模拟实现 1、节点的创建 2、push_back 和 push_front 3、普通迭代器 4、const 迭代器 5、增删查改(insert、erase、pop_back、pop_front) 6、构造函数和析构函数 6.1、默认构造…

Qt QCustomPlot介绍

介绍 主要介绍qcustomplot及其用法 最新版本:QCustomPlot Patch Release 2.1.1//November 6, 2022 下载:https://www.qcustomplot.com/index.php/download 官网:https://www.qcustomplot.com/index.php 简单使用 mainwindow.h /**************************************…

【pytest】 参数化@pytest.mark.parametrize

1.创建 test_parametrize.py 通过 pytest.mark.parametrize 方法设置参数 import pytestimport math#pytest参数化 pytest.mark.parametrize("base,exponent,expected", # 参数变量名称# 每个元组都是一条测试用例测试数据[(2,2,4),(3,3,9),(1,9,1),(0,9,0)],i…

R语言风险价值:ARIMA,GARCH,Delta-normal法滚动估计VaR(Value at Risk)和回测分析股票数据...

全文链接&#xff1a;http://tecdat.cn/?p24492 此分析的目的是构建一个过程&#xff0c;以在给定时变波动性的情况下正确估计风险价值。风险价值被广泛用于衡量金融机构的市场风险。我们的时间序列数据包括 1258 天的股票收益&#xff08;点击文末“阅读原文”获取完整代码数…