bcachefs 调试环境搭建

记录一下调试 bcachefs 的环境搭建。

编译内核的时候要打开 bcachefs 相关的选项,选为 built-in

下载 bcachefs-tools,根据文档编译。因为主机上的内核还没有 bcachefs 的支持,而且我把 bcachefs 作为根文件系统方便调试,因此编译时要打开 fuse 方便拷数据(需要额外安装 libfuse3-dev):

BCACHEFS_FUSE=1 make -j`nproc`

然后制作 rootfs:

truncate -s 1073741824 /path/to/bcachefs.raw
/path/to/bcachefs-tools/target/release/bcachefs format /path/to/bcachefs.raw
/path/to/bcachefs-tools/target/release/bcachefs fusemount /path/to/bcachefs.raw mnt

挂载到 mnt 之后就可以开始往里拷执行环境了(tar 解压备份的系统到 mnt 中)。

启动命令为:

qemu-system-x86_64 -enable-kvm -kernel /path/to/linux/arch/x86_64/boot/bzImage -hda /path/to/bcachefs.raw -append "root=/dev/sda console=ttyS0 rootfstype=bcachefs rw" -nographic -s -S -cpu host

这里加上了 kvm 支持,性能会好很多。

bcachefs-tools 里面包含了完整的 bcachefs 代码,标准的文件系统功能(读写,创建/删除/查看目录等)也可以直接通过 fuse 来 debug:

sudo gdb --args /path/to/bcachefs-tools/target/release/bcachefs fusemount /path/to/bcachefs.raw mnt

但是如果要查看 subvolume/snapshot 等非标准 posix 接口的功能,就只能 debug 内核了,环境搭建可以参考 这里

发表回复

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