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