ELF 2 开发板搭载 Desktop 22.04 系统时,对挂载的 TF 卡存在文件系统兼容性问题:
● 不支持exFAT格式
● 支持NTFS格式,但需手动挂载
针对上述问题,本文将详细介绍如何通过系统配置修改实现这两种文件系统的支持与自动挂载。
Windows 系统格式化存储设备
在使用 TF 卡前,需通过 Windows 自带工具将其格式化为目标文件系统(exFAT 或 NTFS),操作步骤如下:
1. 将 U 盘插入电脑的 USB 接口,确保系统识别到设备。
2. 打开“此电脑”。
3. 在 U 盘图标上右键单击,选择 “格式化”。
4. 在弹出的格式化窗口中选择所需的文件系统格式(exFAT或NTFS)。
5. 点击 “开始”,完成存储设备的格式化操作。
内核添加文件系统支持
通过内核配置添加 exFAT 和 NTFS 格式支持,需完成以下步骤:
打开图形配置界面
1. 进入源码目录并启动配置工具
在 Ubuntu 终端中执行以下命令:
elf@ubuntu:~/work/ELF2-linux-source$ ./build.sh kconfig
2. 配置文件系统支持项
在弹出的内核配置界面中,导航至DOS/FAT/EXFAT/NT Filesystems菜单,勾选以下选项:
保存配置并退出。
编译文件系统镜像
1. 执行编译命令
配置保存后,在终端中运行:
elf@ubuntu:~/work/ELF2-linux-source$ ./build.sh kernel
2. 获取输出文件
编译完成后,生成的文件系统镜像会存储在output/firmware目录下,其中boot.img即为需要烧录到开发板的镜像。
更新系统到开发板
参考《ELF 2 开发板编译手册》中 "5.3 更新内核" 章节的详细步骤,将生成的boot.img镜像烧录至 ELF 2 开发板,完成系统更新。
测试验证
手动挂载
exFAT
1. 查看文件系统挂载点
执行 df -h 命令,无 TF 卡挂载信息:
root@elf2-desktop:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 14G 4.6G 8.6G 35% /
tmpfs 7.8G 0 7.8G 0% /dev/shm
tmpfs 3.2G 2.5M 3.2G 1% /run
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 7.8G 12K 7.8G 1% /tmp
/dev/mmcblk0p7 123M 12M 108M 10% /oem
/dev/mmcblk0p8 96G 284M 92G 1% /userdata
tmpfs 1.6G 84K 1.6G 1% /run/user/1000
tmpfs 1.6G 56K 1.6G 1% /run/user/0
2. 确认设备节点
执行 fdisk -l 命令查看 TF 卡分区信息,确认 TF 卡设备节点为 /dev/mmcblk1:
root@elf2-desktop:~# fdisk -l
Disk /dev/ram0: 4 MiB, 4194304 bytes, 8192 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk /dev/mmcblk0: 115.23 GiB, 123731968000 bytes, 241664000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 83480000-0000-4658-8000-52E4000055BA
Device Start End Sectors Size Type
/dev/mmcblk0p1 16384 24575 8192 4M unknown
/dev/mmcblk0p2 24576 32767 8192 4M unknown
/dev/mmcblk0p3 32768 163839 131072 64M unknown
/dev/mmcblk0p4 163840 425983 262144 128M unknown
/dev/mmcblk0p5 425984 491519 65536 32M unknown
/dev/mmcblk0p6 491520 29851647 29360128 14G unknown
/dev/mmcblk0p7 29851648 30113791 262144 128M unknown
/dev/mmcblk0p8 30113792 241663966 211550175 100.9G unknown
Disk /dev/mmcblk1: 59.48 GiB, 63864569856 bytes, 124735488 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000
Device Boot Start End Sectors Size Id Type
/dev/mmcblk1p1 4294967295 8589934589 4294967295 2T ff BBT
/dev/mmcblk1p2 4294967295 8589934589 4294967295 2T ff BBT
/dev/mmcblk1p3 4294967295 8589934589 4294967295 2T ff BBT
/dev/mmcblk1p4 4294967295 6854241533 2559274239 1.2T ff BBT
3. 手动挂载
创建 exfat_fs 目录作为 exFAT 格式 TF 卡的挂载点,-t exfat 指定文件系统类型为 exFAT,将 dev/mmcblk1 挂载到 exfat_fs/。
root@elf2-desktop:~# mkdir exfat_fs
root@elf2-desktop:~# mount -t exfat /dev/mmcblk1 exfat_fs/
4. 查看文件系统挂载点
再次查看挂载状态,确认 dev/mmcblk1 已挂载到 exfat_fs/(验证挂载成功)。
root@elf2-desktop:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 14G 4.6G 8.6G 35% /
tmpfs 7.8G 0 7.8G 0% /dev/shm
tmpfs 3.2G 2.5M 3.2G 1% /run
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 7.8G 12K 7.8G 1% /tmp
/dev/mmcblk0p7 123M 12M 108M 10% /oem
/dev/mmcblk0p8 96G 284M 92G 1% /userdata
tmpfs 1.6G 84K 1.6G 1% /run/user/1000
tmpfs 1.6G 56K 1.6G 1% /run/user/0
/dev/mmcblk1 60G 896K 60G 1% /root/exfat_fs
5. 读写验证
root@elf2-desktop:~# echo 1 > exfat_fs/test.txt
root@elf2-desktop:~# sync
root@elf2-desktop:~# cat exfat_fs/test.txt
1
6. 卸载TF卡
TF 卡使用完成后,在弹出 TF 卡前,需要使用 umount 命令卸载 TF 卡:
root@elf2-desktop:~# umount exfat_fs
NTFS
1. 查看文件系统挂载点
执行 df -h 命令,无 TF 卡挂载信息:
root@elf2-desktop:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 14G 4.6G 8.5G 36% /
tmpfs 7.8G 0 7.8G 0% /dev/shm
tmpfs 3.2G 2.5M 3.2G 1% /run
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 7.8G 12K 7.8G 1% /tmp
/dev/mmcblk0p7 123M 12M 108M 10% /oem
/dev/mmcblk0p8 96G 284M 92G 1% /userdata
tmpfs 1.6G 88K 1.6G 1% /run/user/1000
tmpfs 1.6G 56K 1.6G 1% /run/user/0
2. 确认设备节点
执行 fdisk -l 命令查看 TF 卡分区信息,确认 TF 卡设备节点为 /dev/mmcblk1:
root@elf2-desktop:~# fdisk -l
Disk /dev/ram0: 4 MiB, 4194304 bytes, 8192 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk /dev/mmcblk0: 115.23 GiB, 123731968000 bytes, 241664000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 50530000-0000-4F1D-8000-4315000064BF
Device Start End Sectors Size Type
/dev/mmcblk0p1 16384 24575 8192 4M unknown
/dev/mmcblk0p2 24576 32767 8192 4M unknown
/dev/mmcblk0p3 32768 163839 131072 64M unknown
/dev/mmcblk0p4 163840 425983 262144 128M unknown
/dev/mmcblk0p5 425984 491519 65536 32M unknown
/dev/mmcblk0p6 491520 29851647 29360128 14G unknown
/dev/mmcblk0p7 29851648 30113791 262144 128M unknown
/dev/mmcblk0p8 30113792 241663966 211550175 100.9G unknown
Disk /dev/mmcblk1: 59.48 GiB, 63864569856 bytes, 124735488 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x73736572
Device Boot Start End Sectors Size Id Type
/dev/mmcblk1p1 1920221984 3736432267 1816210284 866G 72 unknown
/dev/mmcblk1p2 1936028192 3889681299 1953653108 931.6G 6c unknown
/dev/mmcblk1p3 0 0 0 0B 0 Empty
/dev/mmcblk1p4 27722122 27722568 447 223.5K 0 Empty
Partition table entries are not in disk order.
3. 手动挂载
创建 ntfs_fs 目录作为 NTFS 格式 TF 卡的挂载点,-t ntfs-3g 指定使用 ntfs-3g 驱动挂载 NTFS 格式(Linux 下 NTFS 读写的常用驱动),将 dev/mmcblk1 挂载到 ntfs_fs/。
root@elf2-desktop:~# mkdir ntfs_fs
root@elf2-desktop:~# mount -t ntfs-3g /dev/mmcblk1 ntfs_fs/
4. 查看文件系统挂载点
root@elf2-desktop:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 14G 4.6G 8.5G 36% /
tmpfs 7.8G 0 7.8G 0% /dev/shm
tmpfs 3.2G 2.5M 3.2G 1% /run
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 7.8G 12K 7.8G 1% /tmp
/dev/mmcblk0p7 123M 12M 108M 10% /oem
/dev/mmcblk0p8 96G 284M 92G 1% /userdata
tmpfs 1.6G 88K 1.6G 1% /run/user/1000
tmpfs 1.6G 56K 1.6G 1% /run/user/0
/dev/mmcblk1 60G 88M 60G 1% /root/ntfs_fs
5. 读写验证
root@elf2-desktop:~# echo 1 > ntfs_fs/test.txt
root@elf2-desktop:~# sync
root@elf2-desktop:~# cat ntfs_fs/test.txt
1
6. 卸载TF卡
TF 卡使用完成后,在弹出 TF 卡前,需要使用 umount 命令卸载 TF 卡:
root@elf2-desktop:~# umount ntfs_fs
自动挂载
exFAT
1. 确认设备节点
执行 fdisk -l 命令查看 TF 卡分区信息,确认 TF 卡设备节点为 /dev/mmcblk1:
root@elf2-desktop:~# fdisk -l
Disk /dev/ram0: 4 MiB, 4194304 bytes, 8192 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk /dev/mmcblk0: 115.23 GiB, 123731968000 bytes, 241664000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: D06F0000-0000-4C4B-8000-216D000071A3
Device Start End Sectors Size Type
/dev/mmcblk0p1 16384 24575 8192 4M unknown
/dev/mmcblk0p2 24576 32767 8192 4M unknown
/dev/mmcblk0p3 32768 163839 131072 64M unknown
/dev/mmcblk0p4 163840 425983 262144 128M unknown
/dev/mmcblk0p5 425984 491519 65536 32M unknown
/dev/mmcblk0p6 491520 29851647 29360128 14G unknown
/dev/mmcblk0p7 29851648 30113791 262144 128M unknown
/dev/mmcblk0p8 30113792 241663966 211550175 100.9G unknown
Disk /dev/mmcblk1: 59.48 GiB, 63864569856 bytes, 124735488 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000
Device Boot Start End Sectors Size Id Type
/dev/mmcblk1p1 4294967295 8589934589 4294967295 2T ff BBT
/dev/mmcblk1p2 4294967295 8589934589 4294967295 2T ff BBT
/dev/mmcblk1p3 4294967295 8589934589 4294967295 2T ff BBT
/dev/mmcblk1p4 4294967295 6854241533 2559274239 1.2T ff BBT
2. 查看 TF 卡 UUID 或设备名
root@elf2-desktop:~# blkid
/dev/mmcblk0p7: LABEL="oem" UUID="5fce90f2-82c7-401e-8ccd-b265d1d1a04e" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="oem" PARTUUID="a9390000-0000-4339-8000-737c00004c7d"
/dev/mmcblk0p5: PARTLABEL="backup" PARTUUID="0b7f0000-0000-484e-8000-37da00004385"
/dev/mmcblk0p3: PARTLABEL="boot" PARTUUID="7a3f0000-0000-446a-8000-702f00006273"
/dev/mmcblk0p1: PARTLABEL="uboot" PARTUUID="fa0f0000-0000-4829-8000-6e9700004422"
/dev/mmcblk0p8: LABEL="userdata" UUID="0ab8136a-151e-4ecb-8c4e-bcba85a0ef17" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="userdata" PARTUUID="59490000-0000-4b30-8000-47ea00003767"
/dev/mmcblk0p6: UUID="4d1b5f8b-020c-499a-bac9-269c5104f9e7" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="rootfs" PARTUUID="614e0000-0000-4b53-8000-1d28000054a9"
/dev/mmcblk0p4: PARTLABEL="recovery" PARTUUID="8e500000-0000-4554-8000-7a1500002ce6"
/dev/mmcblk0p2: PARTLABEL="misc" PARTUUID="4d2e0000-0000-4d59-8000-14bb00003cfd"
/dev/mmcblk1: LABEL="M-fM-^VM-0M-eM-^JM- M-eM-^MM-7" UUID="24BD-6CCA" BLOCK_SIZE="512" TYPE="exfat"
3. 创建挂载点目录
root@elf2-desktop:~# mkdir -p /mnt/sdcard
4. 编辑 /etc/fstab文件
root@elf2-desktop:~# vi /etc/fstab
文件内容如下:
# <file system> <mount pt> <type> <options> <dump> <pass>
/dev/root / ext4 rw,noauto 0 1
proc /proc proc defaults 0 0
devpts /dev/pts devpts defaults,gid=5,mode=620 0 0
tmpfs /dev/shm tmpfs mode=0777 0 0
tmpfs /tmp tmpfs mode=1777 0 0
tmpfs /run tmpfs mode=0755,nosuid,nodev 0 0
sysfs /sys sysfs defaults 0 0
debug /sys/kernel/debug debugfs defaults 0 0
pstore /sys/fs/pstore pstore defaults 0 0
/dev/mmcblk0p7 /oem ext4 defaults 0 0
/dev/mmcblk0p8 /userdata ext4 defaults 0 0
/dev/mmcblk1 /mnt/sdcard exfat defaults,nofail 0 0
含义:
/dev/mmcblk1 TF 卡设备节点
/mnt/sdcard 挂载点
exfat 文件系统类型
defaults 使用默认挂载选项(读写、异步等)
nofail 若 TF 卡未插入,系统启动不报错
0 0 不启用备份(dump)和开机检查(fsck)
5. 保存重启
root@elf2-desktop:~# sync
root@elf2-desktop:~# reboot
6. 查看文件系统挂载点
重启后 TF 卡自动挂载到 /mnt/sdcard(自动挂载成功):
root@elf2-desktop:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 14G 4.6G 8.5G 36% /
tmpfs 7.8G 0 7.8G 0% /dev/shm
tmpfs 3.2G 2.5M 3.2G 1% /run
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 7.8G 12K 7.8G 1% /tmp
/dev/mmcblk0p7 123M 12M 108M 10% /oem
/dev/mmcblk0p8 96G 284M 92G 1% /userdata
/dev/mmcblk1 60G 768K 60G 1% /mnt/sdcard
tmpfs 1.6G 84K 1.6G 1% /run/user/1000
tmpfs 1.6G 56K 1.6G 1% /run/user/0
7. 读写验证
root@elf2-desktop:~# echo 1 > /mnt/sdcard/test.txt
root@elf2-desktop:~# sync
root@elf2-desktop:~# cat /mnt/sdcard/test.txt
1
NTFS
1. 确认设备节点
执行 fdisk -l 命令查看 TF 卡分区信息,确认 TF 卡设备节点为 /dev/mmcblk1:
root@elf2-desktop:~# fdisk -l
Disk /dev/ram0: 4 MiB, 4194304 bytes, 8192 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk /dev/mmcblk0: 115.23 GiB, 123731968000 bytes, 241664000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 50530000-0000-4F1D-8000-4315000064BF
Device Start End Sectors Size Type
/dev/mmcblk0p1 16384 24575 8192 4M unknown
/dev/mmcblk0p2 24576 32767 8192 4M unknown
/dev/mmcblk0p3 32768 163839 131072 64M unknown
/dev/mmcblk0p4 163840 425983 262144 128M unknown
/dev/mmcblk0p5 425984 491519 65536 32M unknown
/dev/mmcblk0p6 491520 29851647 29360128 14G unknown
/dev/mmcblk0p7 29851648 30113791 262144 128M unknown
/dev/mmcblk0p8 30113792 241663966 211550175 100.9G unknown
Disk /dev/mmcblk1: 59.48 GiB, 63864569856 bytes, 124735488 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x73736572
Device Boot Start End Sectors Size Id Type
/dev/mmcblk1p1 1920221984 3736432267 1816210284 866G 72 unknown
/dev/mmcblk1p2 1936028192 3889681299 1953653108 931.6G 6c unknown
/dev/mmcblk1p3 0 0 0 0B 0 Empty
/dev/mmcblk1p4 27722122 27722568 447 223.5K 0 Empty
Partition table entries are not in disk order.
2. 查看 TF 卡 UUID 或设备名
root@elf2-desktop:~# blkid
/dev/mmcblk0p7: LABEL="oem" UUID="5fce90f2-82c7-401e-8ccd-b265d1d1a04e" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="oem" PARTUUID="a9390000-0000-4339-8000-737c00004c7d"
/dev/mmcblk0p5: PARTLABEL="backup" PARTUUID="0b7f0000-0000-484e-8000-37da00004385"
/dev/mmcblk0p3: PARTLABEL="boot" PARTUUID="7a3f0000-0000-446a-8000-702f00006273"
/dev/mmcblk0p1: PARTLABEL="uboot" PARTUUID="fa0f0000-0000-4829-8000-6e9700004422"
/dev/mmcblk0p8: LABEL="userdata" UUID="0ab8136a-151e-4ecb-8c4e-bcba85a0ef17" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="userdata" PARTUUID="59490000-0000-4b30-8000-47ea00003767"
/dev/mmcblk0p6: UUID="4d1b5f8b-020c-499a-bac9-269c5104f9e7" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="rootfs" PARTUUID="614e0000-0000-4b53-8000-1d28000054a9"
/dev/mmcblk0p4: PARTLABEL="recovery" PARTUUID="8e500000-0000-4554-8000-7a1500002ce6"
/dev/mmcblk0p2: PARTLABEL="misc" PARTUUID="4d2e0000-0000-4d59-8000-14bb00003cfd"
/dev/mmcblk1: LABEL="M-fM-^VM-0M-eM-^JM- M-eM-^MM-7" BLOCK_SIZE="512" UUID="14B26844B2682C84" TYPE="ntfs"
3. 创建挂载点目录
root@elf2-desktop:~# mkdir -p /mnt/sdcard
4. 编辑 /etc/fstab文件
root@elf2-desktop:~# vi /etc/fstab
文件内容如下:
# <file system> <mount pt> <type> <options> <dump> <pass>
/dev/root / ext4 rw,noauto 0 1
proc /proc proc defaults 0 0
devpts /dev/pts devpts defaults,gid=5,mode=620 0 0
tmpfs /dev/shm tmpfs mode=0777 0 0
tmpfs /tmp tmpfs mode=1777 0 0
tmpfs /run tmpfs mode=0755,nosuid,nodev 0 0
sysfs /sys sysfs defaults 0 0
debug /sys/kernel/debug debugfs defaults 0 0
pstore /sys/fs/pstore pstore defaults 0 0
/dev/mmcblk0p7 /oem ext4 defaults 0 0
/dev/mmcblk0p8 /userdata ext4 defaults 0 0
/dev/mmcblk1 /mnt/sdcard ntfs-3g defaults,nofail 0 0
含义:
/dev/mmcblk1 TF 卡设备节点
/mnt/sdcard 挂载点
ntfs-3g 指定NTFS驱动
defaults 使用默认挂载选项(读写、异步等)
nofail 若 TF 卡未插入,系统启动不报错
0 0 不启用备份(dump)和开机检查(fsck)
5. 保存重启
root@elf2-desktop:~# sync
root@elf2-desktop:~# reboot
6. 查看文件系统挂载点
重启后 TF 卡自动挂载到 /mnt/sdcard(自动挂载成功):
root@elf2-desktop:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 14G 4.6G 8.6G 35% /
tmpfs 7.8G 0 7.8G 0% /dev/shm
tmpfs 3.2G 2.5M 3.2G 1% /run
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 7.8G 12K 7.8G 1% /tmp
/dev/mmcblk0p7 123M 12M 108M 10% /oem
/dev/mmcblk0p8 96G 284M 92G 1% /userdata
/dev/mmcblk1 60G 88M 60G 1% /mnt/sdcard
tmpfs 1.6G 88K 1.6G 1% /run/user/1000
tmpfs 1.6G 56K 1.6G 1% /run/user/0
7. 读写验证
root@elf2-desktop:~# echo 1 > /mnt/sdcard/test.txt
root@elf2-desktop:~# sync
root@elf2-desktop:~# cat /mnt/sdcard/test.txt
1
|
|