在Linux系统中对SD卡进行分区是一项常见操作,通常用于制作启动盘、扩展存储空间或实现数据隔离,由于SD卡容量较小且需兼容多种设备,分区时需谨慎操作,避免数据丢失,本文将详细介绍Linux环境下分区的完整流程,包括准备工作、工具选择、具体操作步骤及注意事项。
准备工作
在开始分区前,需完成以下准备工作,确保操作安全且高效:
识别SD卡设备名
插入SD卡后,通过命令行识别其设备名(如/dev/sdb
、/dev/mmcblk0
等),避免误操作其他存储设备。
- 使用
lsblk
命令:lsblk
输出结果中,容量与SD卡匹配的设备即为SD卡(例如
/dev/sdb
,容量为32GB)。 - 使用
fdisk -l
命令:sudo fdisk -l
注意:若设备名以
mmcblk
开头(如/dev/mmcblk0
),表示是嵌入式设备的内置存储器(如树莓派),而/dev/sd*
通常为外接存储设备。
备份重要数据
分区会清空SD卡所有数据,若SD卡中有重要文件,需提前备份至其他存储设备,可通过cp
或rsync
命令备份,
sudo cp -r /path/to/sdcard/* /path/to/backup/
安装必要工具
Linux系统通常已内置分区工具(如fdisk
、parted
),若无可通过包管理器安装:
- Ubuntu/Debian:
sudo apt install parted gdisk
- CentOS/RHEL:
sudo yum install parted gdisk
分区工具选择
Linux中常用的分区工具包括fdisk
(MBR分区表)、parted
(支持MBR/GPT)和gparted
(图形界面),本文以fdisk
(适合新手)和parted
(功能更强大)为例展开说明,两者对比如下:
工具 | 支持分区表 | 特点 | 适用场景 |
---|---|---|---|
fdisk |
MBR | 简单易用,交互式操作 | 小容量SD卡(≤2TB),MBR分区表 |
parted |
MBR/GPT | 支持大容量分区,可调整分区大小 | 大容量SD卡(>2TB),需GPT分区表 |
gparted |
MBR/GPT | 图形界面,可视化操作 | 不熟悉命令行的用户 |
具体分区步骤
以常见的“FAT32启动分区+ext4根分区”为例(适用于树莓派等单板电脑),演示fdisk
和parted
的分区流程。
(一)使用fdisk
分区(MBR分区表)
fdisk
适合小容量SD卡,操作简单,但最大支持2TB容量和4个主分区。
卸载SD卡
分区前需确保SD卡未被挂载,使用umount
命令卸载(若提示“device is busy”,需先关闭占用进程):
sudo umount /dev/sdb1 # 卸载分区(若有多个分区需逐个卸载) sudo umount /dev/sdb # 卸载整个设备(若已挂载)
启动fdisk
并创建分区表
sudo fdisk /dev/sdb
进入交互模式后,按以下步骤操作:
- 输入
o
:清空原有分区表,创建新的MBR分区表。 - 输入
n
:创建新分区。- 提示
Partition type
时,输入p
选择主分区(Primary)。 - 提示
Partition number
时,输入1
(分区号默认从1开始)。 - 提示
First sector
时,直接回车(默认从起始扇区开始)。 - 提示
Last sector
时,输入+100M
(设置启动分区大小为100MB,可根据需求调整)。
- 提示
- 输入
n
:创建第二个分区(根分区)。- 分区类型选
p
,分区号2
,起始扇区回车,结束扇区输入+30G
(剩余空间全部分配,若SD卡为32GB则用+32G
)。
- 分区类型选
- 输入
a
:激活启动分区(将第一个分区设为可启动)。 - 输入
w
:保存分区表并退出。
格式化分区
- 格式化启动分区为FAT32(兼容性最好):
sudo mkfs.vfat -F 32 /dev/sdb1
- 格式化根分区为ext4(Linux文件系统):
sudo mkfs.ext4 /dev/sdb2
(二)使用parted
分区(GPT分区表)
parted
支持大容量分区和GPT分区表,适合SD卡容量超过2TB的场景。
卸载SD卡
同fdisk
,先卸载SD卡及其所有分区。
创建GPT分区表
sudo parted /dev/sdb
进入parted
交互模式后:
- 输入
mklabel gpt
:创建GPT分区表(替代MBR)。 - 输入
mkpart primary fat32 1MiB 512MiB
:创建第一个分区(FAT32,启动分区,起始1MiB对齐性能,大小512MB)。 - 输入
mkpart primary ext4 512MiB 100%
:创建第二个分区(ext4,根分区,剩余空间全部分配)。 - 输入
set 1 boot on
:激活第一个分区的启动标志。 - 输入
quit
:退出parted
。
格式化分区
- 格式化启动分区为FAT32:
sudo mkfs.vfat -F 32 /dev/sdb1
- 格式化根分区为ext4:
sudo mkfs.ext4 /dev/sdb2
挂载与验证
分区格式化后,需挂载分区以验证是否成功,并设置开机自动挂载(可选)。
创建挂载点
sudo mkdir -p /mnt/sdcard/boot # 启动分区挂载点 sudo mkdir -p /mnt/sdcard/root # 根分区挂载点
临时挂载
sudo mount /dev/sdb1 /mnt/sdcard/boot # 挂载启动分区 sudo mount /dev/sdb2 /mnt/sdcard/root # 挂载根分区
验证挂载
df -h # 查看挂载信息,确认分区已挂载 ls -l /mnt/sdcard/boot # 检查启动分区内容 ls -l /mnt/sdcard/root # 检查根分区内容
卸载测试
sudo umount /mnt/sdcard/boot sudo umount /mnt/sdcard/root
设置开机自动挂载(可选)
通过修改/etc/fstab
实现开机自动挂载,需先获取分区的UUID:
sudo blkid /dev/sdb1 # 获取启动分区UUID sudo blkid /dev/sdb2 # 获取根分区UUID
编辑/etc/fstab
:
sudo nano /etc/fstab ``` 替换UUID为实际值):
UUID=xxxx-xxxx /mnt/sdcard/boot vfat defaults,utf8,umask=000 0 2
UUID=xxxxxxxxxxxx /mnt/sdcard/root ext4 defaults 0 2
保存后,执行`sudo mount -a`测试是否自动挂载成功。
### **五、常见问题处理**
1. **分区后SD卡无法识别**
- 原因:未刷新分区表或设备未正确卸载。
- 解决:执行`sudo partprobe`或重启系统;若仍无法识别,检查SD卡是否损坏。
2. **挂载时提示“权限不足”**
- 原因:普通用户无权限操作设备。
- 解决:挂载时加`sudo`,或通过`sudo chmod 777 /mnt/sdcard/*`调整挂载点权限(不推荐,存在安全风险)。
3. **分区大小显示错误**
- 原因:文件系统开销导致实际可用容量小于标注容量(正常现象)。
- 解决:通过`df -h`查看实际可用空间,标注容量为理论值。
### **六、相关问答FAQs**
**问题1:为什么用`fdisk`分区后,SD卡在Windows系统中无法识别?**
解答:`fdisk`默认创建MBR分区表,而Windows系统可能无法识别MBR分区的引导标志,若需在Windows中使用,可通过`diskpart`命令清除引导标志(`select partition 1`,`attribute clear readonly`),或直接使用`parted`创建GPT分区表(Windows 10及以上版本支持GPT启动)。
**问题2:如何删除SD卡所有分区并恢复为原始状态?**
解答:
1. 卸载SD卡:`sudo umount /dev/sdb*`。
2. 使用`fdisk`或`parted`清空分区表:
- `fdisk`:`sudo fdisk /dev/sdb`,输入`d`删除所有分区,输入`w`保存。
- `parted`:`sudo parted /dev/sdb`,输入`mklabel msdos`或`mklabel gpt`重建分区表。
3. 格式化整个设备:`sudo mkfs.vfat -I /dev/sdb`(`-I`表示强制格式化整个设备,忽略分区表),完成后SD卡将恢复为未分区的原始状态。
通过以上步骤,即可在Linux系统中完成SD卡的分区操作,需注意,分区操作具有风险,务必提前备份数据并仔细确认设备名,避免误操作导致其他存储设备数据丢失。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/28070.html