a1ive@github

闷声大发财

FatFs

​ FAT/exFAT 文件读写功能

加载 FatFs 模块

insmod fatfs

路径格式

​ FatFs 最多同时支持挂载 10 个分区。

​ 用户最多可挂载 9 个分区,盘符分别为 1:, 2:, 3:, …, 9:。盘符 0: 为系统保留。

​ 路径表示为 X:/path/to/file,例如 2:/EFI/BOOT/bootx64.efi,且不区分大小写。

挂载分区

mount PARTITION NUM[1-9]

​ 示例:

mount (hd0,1) 2 将分区 (hd0,1) 挂载到 2:

卸载分区

umount NUM[1-9]

​ 示例:

umount 2 卸载 2:

查看分区挂载情况

mount status

创建文件夹

mkdir PATH

​ 示例:

mkdir 1:/foo/bar/new_dir

复制文件

cp SRC_FILE DST_FILE

​ 源文件既可以是 GRUB 文件路径,也可以是 FatFs 文件路径

​ 示例:

cp 1:/foo/bar/sys.vhd 2:/boot.vhd

cp (hd0,2)/foo/bar/sys.vhd 2:/boot.vhd

重命名文件/文件夹

rename SRC_FILE DST_FILE

​ 目标文件必须与源文件所在磁盘必须相同,相当于在同一磁盘下移动文件。

​ 示例:

rename 1:/foo/bar.tar.gz 1:/abc.gz

删除文件/文件夹

rm FILE

​ 不能删除非空文件夹。

​ 示例:

rm 1:/foo/bar.txt

移动文件

mv SRC_FILE DST_FILE

​ 目标文件若与源文件在同一磁盘,则等同于 rename 操作。

​ 示例:

mv 1:/foo/bar.tar.gz 2:/abc.gz

创建文件/修改文件访问时间

touch FILE [YEAR MONTH DAY HOUR MINUTE SECOND]

​ 若不指定时间,则修改文件时间戳为当前时间。若文件不存在,则创建一个空文件。

​ 示例:

touch 1:/foo/bar.txt

touch 1:/foo/bar.txt 2000 1 1

修改文件

write_file FILE STRING [OFFSET]

​ 在文件偏移 OFFSET 字节处向文件写入字符串。若文件大小不足,则自动扩充文件大小。

​ 示例:

write_file 1:/foo/bar.txt "The quick brown fox jumps over the lazy dog"

write_file 1:/foo/bar.txt "I am not a journalist, but I have seen too much. " 0x786