从零开始学习 sg200x 多核开发之 TF 存储卡根文件系统扩容

入式 Linux 镜像制作时,考虑体积等因素,会把根文件系统做的比较小,镜像包较小,方便量产;有时,我们的 tf 或 emmc 的容量较大,烧写镜像后,有较大的空余空间未使用,现尝试把未分区的空间分配到跟文件系统中(存储介质连续)。

1、查看分区空间占用情况

[root@sg200x]~# df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/root               232.0M      9.3M    204.8M   4% /
devtmpfs                 14.6M         0     14.6M   0% /dev
tmpfs                    14.7M         0     14.7M   0% /dev/shm
tmpfs                    14.7M      8.0K     14.7M   0% /tmp
tmpfs                    14.7M      4.0K     14.7M   0% /run
tmpfs                    14.7M      4.0K     14.7M   0% /run
tmpfs                    14.7M      8.0K     14.7M   0% /tmp
tmpfs                    14.7M         0     14.7M   0% /var/empty

2、列出计算机中的所有磁盘和分区

[root@sg200x]~# fdisk -l
Disk /dev/mmcblk0: 15 GB, 15720251392 bytes, 30703616 sectors
479744 cylinders, 4 heads, 16 sectors/track
Units: sectors of 1 * 512 = 512 bytesDevice       Boot StartCHS    EndCHS        StartLBA     EndLBA    Sectors  Size Id Type
/dev/mmcblk0p1    0,32,33     16,113,33         2048     264191     262144  128M 83 Linux
/dev/mmcblk0p2    16,113,34   49,20,35        264192     788479     524288  256M 83 Linux

总磁盘大小为15GB

  • /dev/mmcblk0p1 是 boot 分区
  • /dev/mmcblk0p2 是预装了一些命令
  • /dev/mmcblk0p3 是 root 分区
    这里要记住p2分区的起始地址,这个很重要

3、使用fdisk进入磁盘分区工具

  1. 输入 p,查看当前分区情况
  2. 输入 d,删除 p2 分区
  3. 输入 n,新建 p2 分区, 输入p2起始分区地址, 输入p2结束分区地地址 不输入直接回车就好,他会把剩下的内存都分配
  4. 输入 w,保存
[root@sg200x]~# fdisk /dev/mmcblk0The number of cylinders for this disk is set to 479744.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs(e.g., DOS FDISK, OS/2 FDISK)Command (m for help): p
Disk /dev/mmcblk0: 15 GB, 15720251392 bytes, 30703616 sectors
479744 cylinders, 4 heads, 16 sectors/track
Units: sectors of 1 * 512 = 512 bytesDevice       Boot StartCHS    EndCHS        StartLBA     EndLBA    Sectors  Size Id Type
/dev/mmcblk0p1    0,32,33     16,113,33         2048     264191     262144  128M 83 Linux
/dev/mmcblk0p2    16,113,34   49,20,35        264192     788479     524288  256M 83 LinuxCommand (m for help): d
Partition number (1-4): 2Command (m for help): n
Partition typep   primary partition (1-4)e   extended
p
Partition number (1-4): 2
First sector (16-30703615, default 16): 264192
Last sector or +size{,K,M,G,T} (264192-30703615, default 30703615): 
Using default value 30703615Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table
fdisk: WARNING: rereading partition table failed, kernel still uses old table: Resource busy

1> 记录需要调整分区的起始 StartLBA;
2> 删除需要调整的分区;
3> 创建新分区,起始位置输入第一步记录StartLBA的值;
4> 写入磁盘,此时执行fdisk -l,可以看到需要调整的分区,容量已经是调整过了,重启系统。

4、重启系统

$ reboot
  • 重启后,查看分区空间占用情况
[root@sg200x]~# df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/root               223.7M     39.0M    166.8M  19% /
devtmpfs                 14.4M         0     14.4M   0% /dev
tmpfs                    14.5M         0     14.5M   0% /dev/shm
tmpfs                    14.5M     36.0K     14.5M   0% /tmp
tmpfs                    14.5M     20.0K     14.5M   0% /run
  • 列出计算机中的所有磁盘和分区
[root@sg200x]~# fdisk -l
Disk /dev/mmcblk0: 15 GB, 15720251392 bytes, 30703616 sectors
479744 cylinders, 4 heads, 16 sectors/track
Units: sectors of 1 * 512 = 512 bytesDevice       Boot StartCHS    EndCHS        StartLBA     EndLBA    Sectors  Size Id Type
/dev/mmcblk0p1    0,32,33     16,113,33         2048     264191     262144  128M 83 Linux
/dev/mmcblk0p2    1023,3,16   1023,3,16       264192   30703615   30439424 14.5G 83 Linux

5、调整大小

[root@sg200x]~# resize2fs  /dev/mmcblk0p2
resize2fs 1.46.2 (28-Feb-2021)
resize2fs: Resource busy while trying to open /dev/mmcblk0
Couldn't find valid filesystem superblock.
[root@sg200x]~# resize2fs  /dev/mmcblk0p2
resize2fs 1.46.2 (28-Feb-2021)
Filesystem at /dev/mmcblk0p2 is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 2
The filesystem on /dev/mmcblk0p2 is now 3804928 (4k) blocks long.[root@sg200x]~# 

完成分区

加启动脚本里,即可完成分区。

EOF

在shell编程中,“EOF”通常与“<<”结合使用,“<<EOF” 表示后续的输入作为子命令或子shell的输入,直到遇到“EOF”,再次返回到主调用shell,可将其理解为分界符(delimiter)。

EOF是End of file的缩写,自定义终止符。

既然是分界符,那么形式自然不是固定的,这里可以将”EOF“可以进行自定义,但是前后的”EOF“必须成对出现且不能和shell命令冲突。其使用形式如下:

交互式程序 << EOF
command1
command2
...
EOF

”EOF“中间的内容将以标准输入的形式输入到”交互式程序“,当shell看到”<<“知道其后面输入的分界符,当shell再次看到分界符时,两个分界符中间的部分将作为标准输入。
"EOF"一般常和cat命令连用,通过cat配合重定向能够生成文件并追加操作,在它之前先熟悉几个特殊符号:
<:输入重定向

:输出重定向

:输出重定向,进行追加,不会覆盖之前的内容
<<:标准输入来自命令行的一对分隔号的中间内容

注意:最后的”EOF“必须单独占一行。

可以试试开启 Overlay,这种方式自动调整 overlay 分区到最大。

挂载第三个分区

感觉分给rootfs空间也够了,也可以sd卡把剩的空间分成第三个区,然后挂载到/media/下使用,存一些用户数据。

/etc/init.d/S99user启动脚本下面添加mount /dev/mmcblk0p3 /media/重启自动挂载

自动化处理

用工具烧录 img 后,除了 sd 卡有剩余部分没有被使用,每次都手动去操作较为麻烦,可通过脚本自动化处理。

#!/bin/sh# 判断磁盘是否已经剩余的部分进行了分区
if  (( $(fdisk -l /dev/mmcblk0|grep "^/dev/mmcblk0"|wc -l) > 2  ))
thenecho "mmcblk0 has completed partitioning the remaining space."mount /dev/mmcblk0p3  /media   exit  #退出脚本,后面的命令不再执行
fi# 第1步:磁盘分区
# 使用 fdisk 交互式方式创建分区,使用 here document 方式,解决交互式传递参数的问题
fdisk /dev/mmcblk0 <<EOF
p
n
p
3w
EOF
echo "##########Partitioning complete###############"
fdisk -l /dev/mmcblk0
echo "##############################################"# 第2步:格式化
mkfs.ext4 /dev/mmcblk0p3reboot

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

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

相关文章

[C++] 智能指针

文章目录 智能指针的使用原因及场景分析为什么需要智能指针&#xff1f;异常抛出导致的资源泄漏问题分析 智能指针与RAIIC常用智能指针 使用智能指针优化代码优化后的代码优化点分析 析构函数中的异常问题解决方法 RAII 和智能指针的设计思路详解什么是 RAII&#xff1f;RAII 的…

Android数据存储

前言 在前面&#xff0c;我们已经学了控件和布局&#xff0c;那么我们在存储数据的时候&#xff0c;并不能持久化的存储&#xff0c;所以我们需要来学习一些如何持久化存储数据的方式. 数据存储方式 文件存储&#xff1a;在android中提供了openFileInput()方法和openFileOut…

Java基础——多线程

1. 线程 是一个程序内部的一条执行流程程序中如果只有一条执行流程&#xff0c;那这个程序就是单线程的程序 2. 多线程 指从软硬件上实现的多条执行流程的技术&#xff08;多条线程由CPU负责调度执行&#xff09; 2.1. 如何创建多条线程 Java通过java.lang.Thread类的对象…

【网络】网络层——IP协议

> 作者&#xff1a;დ旧言~ > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;了解在网络层下的IP协议。 > 毒鸡汤&#xff1a;有些事情&#xff0c;总是不明白&#xff0c;所以我不会坚持。早安! > 专栏选自&#xff1a;网络…

获取当前程序运行时的栈大小[C语言]

废话前言 一晃已经毕业了4年&#xff0c;也在某个时间点&#xff0c;从面试者转变成了面试官。 进行第一次面试的时候&#xff0c;我好像比候选人还慌张&#xff0c;压根不知道问什么&#xff0c;好在是同行业&#xff0c;看着简历问了一些协议内容以及模块设计思路&#xff0…

人工智能之数学基础:数学在人工智能领域中的地位

人工智能&#xff08;AI&#xff09;是一种新兴的技术&#xff0c;它的目标是构建能够像人类一样思考、学习、推理和解决问题的智能机器。AI已经成为了许多行业的重要组成部分&#xff0c;包括医疗、金融、交通、教育等。而数学则是AI领域中不可或缺的基础学科。本文将阐述数学…

UE5 第一人称射击项目学习(一)

因为工作需要&#xff0c;需要掌握ue5的操作。 选择了视频资料 UE5游戏制作教程Unreal Engine 5 C作为学习。 第一个目标是跟着视频制作出一款第一人称射击项目。 同时作为入门&#xff0c;这个项目不会涉及到C&#xff0c;而是一个纯蓝图的项目。 项目目标 这个项目将实…

图像分类之花卉识别实验验证

本实验基于37种主流的图像分类算法模型&#xff0c;对64种花卉进行识别。使用包括vgg、resnet、densenet、efficientnet、inception、mobilenet等37种图像分类模型进行实验&#xff0c;评估各种模型对花卉的识别准确度、计算量、参数量&#xff0c;对比不同模型的性能和优缺点。…

Linux基础开发工具使用

目录 1. 软件包管理器yum 1.1 概念介绍 1.2 更换镜像源&#xff08;可选&#xff09; 1.3 工具的搜索/查看/安装/卸载 1.4 优势 2. vim编辑器 2.1 vi和vim 2.2 三种常用模式和操作 2.3 配置vim 3. Linux编译器-gcc/g 4. Linux调试器-gdb 5. make和Makefile 6.…

电脑怎么自动切换IP地址

在现代网络环境中&#xff0c;电脑自动切换IP地址的需求日益增多。无论是出于网络安全、隐私保护&#xff0c;还是为了绕过地域限制&#xff0c;自动切换IP地址都成为了许多用户关注的焦点。本文将详细介绍几种实现电脑自动切换IP地址的方法&#xff0c;以满足不同用户的需求。…

PMBOK® 第六版 控制进度

目录 读后感—PMBOK第六版 目录 制定了明确的计划后&#xff0c;对计划的控制尤为重要。例如&#xff0c;经常提到的“累积效应”&#xff0c;如果某个阶段的评分仅为0.9分&#xff0c;那么五个得分为0.9分的阶段&#xff0c;最终结果可能只是一个0.5分。 特别是在当今这个时…

linux001.在Oracle VM VirtualBox中ubuntu虚拟系统扩容

1.打开终端切换到virtualBox安装目录 2.输入命令扩容 如上终端中的代码解释&#xff1a; D:\Program Files\Oracle\VirtualBox>.\VBoxManage modifyhd D:\ubuntu18.04\Ubuntu18.04\Ubuntu18.04.vdi --resize 40960如上代码说明&#xff1a;D:\Program Files\Oracle\Virtual…

Web导出Excel表格

背景&#xff1a; 1. 后端主导实现 流程&#xff1a;前端调用到导出excel接口 -> 后端返回excel文件流 -> 浏览器会识别并自动下载 场景&#xff1a;大部分场景都有后端来做 2. 前端主导实现 流程&#xff1a;前端获取要导出的数据 -> 常规数据用插件处理成一个e…

函数栈帧的创建与销毁

我是目录 环境理解栈帧函数栈帧图预备知识寄存器MOV 指令SUB 指令PUSH 指令POP 指令LEA 指令CALL 指令REP STOS 指令 一个简单的C程序栈帧创建栈帧销毁 如何传参数值参数变量参数 如何返回值数值返回变量返回 环境 集成环境&#xff1a;VS2022 x86 编辑语言&#xff1a;C 汇…

服务端高并发分布式结构进阶之路

序言 在技术求知的旅途中&#xff0c;鉴于多数读者缺乏在中大型系统实践中的亲身体验&#xff0c;难以从宏观角度把握某些概念&#xff0c;因此&#xff0c;本文特选取“电子商务应用”作为实例&#xff0c;详细阐述从百级至千万级并发场景下服务端架构的逐步演变历程。同时&am…

Linux:版本控制器git和调试工具cgdb

✨✨所属专栏&#xff1a;Linux✨✨ ✨✨作者主页&#xff1a;嶔某✨✨ 版本控制器 为了能够更⽅便我们管理这些不同版本的⽂件&#xff0c;便有了版本控制器。所谓的版本控制器&#xff0c;就是能让你了解到⼀个⽂件的历史&#xff0c;以及它的发展过程的系统。通俗的讲就是⼀…

【0x001C】HCI_Write_Page_Scan_Activity详解

目录 一、命令概述 二、命令格式和参数说明 2.1. HCI_Write_Page_Scan_Activity命令格式 2.2. Page_Scan_Interval 2.3. Page_Scan_Window 三、响应事件及参数说明 3.1. HCI_Command_Complete事件 3.2. Status 3.3. 示例 四、命令执行流程 4.1. 命令发起阶段(主机端…

云原生之运维监控实践-使用Prometheus与Grafana实现对Nginx和Nacos服务的监测

背景 如果你要为应用程序构建规范或用户故事&#xff0c;那么务必先把应用程序每个组件的监控指标考虑进来&#xff0c;千万不要等到项目结束或部署之前再做这件事情。——《Prometheus监控实战》 去年写了一篇在Docker环境下部署若依微服务ruoyi-cloud项目的文章&#xff0c;当…

突破工业管理新高度:AI多模态引擎赋能设备维护管理

结合AI技术&#xff0c;可以帮助企业提升设备维护效率和管理复杂信息的能力。以下是一个详细流程和思路&#xff1a; 1. 项目背景概述 在高端制造业领域&#xff0c;如飞机、轮船、光刻机等设备的操作手册及零件图纸涉及大量的零配件信息和操作维护流程。传统方式难以高效管理…

C++重写和重定义和重载

重写 概念&#xff1a; 重写发生在类的继承体系中&#xff0c;是指在派生类中重新定义基类中已声明为虚函数&#xff08;使用 virtual 关键字修饰&#xff09;的函数。其目的是让派生类根据自身的需求对基类的虚函数提供不同的具体实现&#xff0c;从而实现运行时多态。 规则及…