Linux如何给SD卡分区?操作步骤与工具使用指南?

在Linux系统中对SD卡进行分区是一项常见操作,通常用于制作启动盘、扩展存储空间或实现数据隔离,由于SD卡容量较小且需兼容多种设备,分区时需谨慎操作,避免数据丢失,本文将详细介绍Linux环境下分区的完整流程,包括准备工作、工具选择、具体操作步骤及注意事项。

linux 如何给sd卡分区

准备工作

在开始分区前,需完成以下准备工作,确保操作安全且高效:

识别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卡中有重要文件,需提前备份至其他存储设备,可通过cprsync命令备份,

sudo cp -r /path/to/sdcard/* /path/to/backup/

安装必要工具

Linux系统通常已内置分区工具(如fdiskparted),若无可通过包管理器安装:

  • Ubuntu/Debian:sudo apt install parted gdisk
  • CentOS/RHEL:sudo yum install parted gdisk

分区工具选择

Linux中常用的分区工具包括fdisk(MBR分区表)、parted(支持MBR/GPT)和gparted(图形界面),本文以fdisk(适合新手)和parted(功能更强大)为例展开说明,两者对比如下:

linux 如何给sd卡分区

工具 支持分区表 特点 适用场景
fdisk MBR 简单易用,交互式操作 小容量SD卡(≤2TB),MBR分区表
parted MBR/GPT 支持大容量分区,可调整分区大小 大容量SD卡(>2TB),需GPT分区表
gparted MBR/GPT 图形界面,可视化操作 不熟悉命令行的用户

具体分区步骤

以常见的“FAT32启动分区+ext4根分区”为例(适用于树莓派等单板电脑),演示fdiskparted的分区流程。

(一)使用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交互模式后:

linux 如何给sd卡分区

  • 输入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

(0)
酷番叔酷番叔
上一篇 2025年9月22日 05:02
下一篇 2025年9月22日 05:14

相关推荐

  • linux如何查询两个关键字

    Linux中,可使用`grep -E ‘关键字1|关键字2’ 文件名

    2025年8月17日
    14000
  • 如何查看eth0等网卡名?

    命令行激活网络(通用方法)使用 ip 命令(推荐)# 启动网卡(以 enp0s3 为例)sudo ip link set enp0s3 up# 分配IP地址(DHCP自动获取)sudo dhclient enp0s3# 静态IP配置(手动指定)sudo ip addr add 192.168.1.100/24……

    2025年7月4日
    15600
  • Linux hosts文件如何配置?

    hosts文件的位置无论何种Linux发行版,hosts文件均位于 /etc/hosts,这是Linux系统的标准路径,适用于:Ubuntu/DebianCentOS/RHEL/FedoraArch LinuxopenSUSE等可通过命令验证:ls -l /etc/hosts输出示例:-rw-r–r– 1……

    2025年6月20日
    16600
  • Linux系统下查找挂死线程的具体有效方法、步骤及命令有哪些?

    在Linux系统中,线程“挂死”通常指线程处于不可中断睡眠状态(D状态),此时线程无法被信号唤醒(如kill -9),也无法被操作系统调度,常见于等待硬件资源、文件锁、网络I/O或死锁场景,挂死线程会导致进程或系统响应缓慢,甚至引发服务不可用,因此快速定位并解决挂死线程至关重要,以下从基础到进阶,详细说明Lin……

    2025年8月24日
    15800
  • 如何在Linux系统中添加自定义指令的详细步骤?

    在Linux系统中,自定义指令(命令)可以显著提升操作效率,无论是简化复杂命令组合,还是封装常用操作,都能减少重复输入,以下是几种常见的添加自定义指令的方法,涵盖从临时快捷到持久全局的多种场景,使用别名(Alias)简化命令别名适合为短小或常用的命令组合创建快捷方式,例如将ls -la简化为ll,临时别名(当前……

    2025年10月6日
    10800

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信