修改分区

来自Uotan Wiki · 刷机百科

方法一:使用 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/

Parted下载:

https://ftp.gnu.org/gnu/parted/

更多方法如 sgdisk 等工具本篇暂不做解释