Minix文件系统在Linux 4.19内核的编译
环境
ubuntu16.04虚拟机
内核版本:v4.19
编译Minix并挂载
- minix源码获取:
minix源码在Linux源码/fs/minix/目录 - 进入minix目录,修改Makefile为
obj-$(CONFIG_MINIX_FS) += minix.o minix-objs := bitmap.o itree_v1.o itree_v2.o namei.o inode.o file.o dir.o KERNEL_SOURCE = /usr/src/linux-headers-$(shell uname -r) PWD := $(shell pwd) all: $(MAKE) -C ${KERNEL_SOURCE} SUBDIRS=$(PWD) modules clean: rm *.o *.ko
make
- 创建挂载目录
mkdir tmp
- 创建文件卷
dd bs=4096 count=100 if=/dev/zero of=image
- 挂载minix模块
sudo insmod minix.ko
- 初始化文件卷
mkfs -t minix image
- 挂载文件系统
sudo mount -o loop -t minix image ./tmp/
- 进入tmp目录,进行测试
make报错及解决
1. error: implicit declaration of function ‘current_time’
即将代码中的current_time(inode)替换为CURRENT_TIME or current_kernel_time()
2. error: unknown field ‘free_inode’ specified in initializer
将inode.c中的free_inode修改为destroy_inode
3. error: ‘struct super_block’ has no member named ‘s_time_min’
注释inode.c中代码
// s->s_time_min = 0;
// s->s_time_max = U32_MAX;