方法一:使用 Parted 工具
简介
Parted 是一个开源的命令行工具,主要用于管理磁盘分区,广泛应用于 Linux 和其他类 Unix 操作系统中。它提供了丰富的功能,支持多种分区表类型,并能够处理多种文件系统格式。Parted 是管理大容量磁盘、处理复杂分区表(如 GPT)的理想选择。
主要功能
Parted 提供了一系列强大的磁盘管理功能,包括但不限于:
•创建、删除和调整分区:允许用户创建新分区、删除现有分区,以及在不丢失数据的情况下调整分区的大小。
•支持多种分区表类型:兼容传统的 MBR(Master Boot Record)和较新的 GPT(GUID Partition Table)分区表,满足不同磁盘布局的需求。
•格式化分区:可以将分区格式化为多种文件系统类型,如 ext4、FAT32、NTFS 等。
•检查和修复分区:具备检测分区错误的能力,并尝试修复可能出现的问题,确保磁盘的健康状态。
•查看磁盘信息:能够显示磁盘的分区布局及详细信息,帮助用户快速了解磁盘的当前配置。
常用命令
在 Parted 交互式终端中,可以使用以下常用命令:
•print:显示磁盘的分区表信息。
•mkpart:创建新分区。
•rm:删除指定的分区。
•resizepart:调整指定分区的大小。
•quit:退出 Parted 终端。
使用方法
使用Parted
对分区表进行操作,你得先找到这个分区表的绝对目录
然后以如下的格式用Parted打开这个分区表
parted <file_path>
例如你要对Android设备中的sda分区表进行Parted操作,那么你就应该输入如下的指令
parted /dev/block/sda
值得注意的是:在Recovery
中使用Parted
的时候需要将其放在system/bin
或者是/bin
中,并且确保其权限为0777
或者是0755
我们不推荐推荐你在系统状态下使用parted对分区进行操作,特别是删除分区的时候,避免删除System分区或者是其他重要系统分区导致手机无法开机只能进行9008刷机处理。
当你利用parted进入sda的时候你会看到如下
GNU Parted 3.2--parted的版本
Using /dev/block/sda--这是你进入的分区表的路径
Welcome to GNU Parted! Type 'help' to view a list of commands. (parted)--parted的命令行
我们现在来举一个例子让你可以更好的理解上述的命令是怎么使用的
首先输入print或者是p
如下是返回结果
(parted)
p
Model: SAMSUNG KLUEG8UHDC-B0E1 (scsi)
Disk /dev/block/sda: 253GB
Sector size (logical/physical): 4096B/4096B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 24.6kB 32.8kB 8192B switch
2 32.8kB 65.5kB 32.8kB ssd
3 65.5kB 98.3kB 32.8kB dbg
4 98.3kB 131kB 32.8kB bk01
5 131kB 262kB 131kB bk02
6 262kB 524kB 262kB bk03
7 524kB 1049kB 524kB bk04
8 1049kB 1573kB 524kB keystore
9 1573kB 2097kB 524kB frp
10 2097kB 4194kB 2097kB countrycode
11 4194kB 8389kB 4194kB misc
12 8389kB 16.8MB 8389kB bk06
13 16.8MB 25.2MB 8389kB logfs
14 25.2MB 33.6MB 8389kB ffu
15 33.6MB 50.3MB 16.8MB oops
16 50.3MB 67.1MB 16.8MB devinfo
17 67.1MB 83.9MB 16.8MB ext4 metadata
18 83.9MB 101MB 16.8MB bk08
19 101MB 134MB 33.6MB splash
20 134MB 168MB 33.6MB bk09
21 168MB 235MB 67.1MB ext4 persist
22 235MB 302MB 67.1MB ext4 persistbak
23 302MB 336MB 33.6MB mtdblk
24 336MB 403MB 67.1MB logdump
25 403MB 503MB 101MB minidump
26 503MB 713MB 210MB rawdump
28 2861MB 12.0GB 9127MB super
29 12.0GB 12.0GB 131kB vbmeta_system_a
30 12.0GB 12.0GB 131kB vbmeta_system_b
31 12.0GB 12.0GB 33.3MB bk010
32 12.0GB 12.2GB 134MB ext4 rescue
33 12.2GB 253GB 241GB userdata
Ok你会看到如下这几个,我会一一介绍他们
Number Start End Size File system Name 分区ID 开始头 结束头 总大小 文件系统 分区名字 其中Size的大小计算是:结束头-开始头
现在介绍一下常用命令的格式(Args)
rm <Number>
mkpart <Name> <File system> <Start> <End>
resizepart <Number> <Size>
假设你现在要对super进行删除并且扩容那么你应该做如下
(parted)
rm 28(Super分区的Number) 这里省略了日志输出,如果有提示是带有ignore的你输入ignore就行了(parted)
mkpart super <File System我不知道待补充> 2861MB 114514MB(MB要大写 如果是GB那也要) PS:这里补充一个东西,分区表是出厂就设置好的所以你想扩容某些分区你就得牺牲userdata的小大,如果你要扩容super你就1g那就必须删除1g的userdata,方法和这一样这里就不过多赘述了,切记删除userdata后需要记得他的Start值然后把它的Start值给扩容的super用,super的End值给userdata的Start值使用,userdata的End值填原本的。(parted)
quit(退出)
总结
读完了本文你学会了Parted的基本使用方法,但是还是要知道对分区操作是极度危险的如果真的不是很会真的别轻易尝试
文献参考:
https://cn.linux-console.net/?p=29398
https://www.gnu.org/software/parted/