![/lib/modules/linux version/kernel/fs/에는 ext2/ext3/ext4 디렉토리가 없습니다.](https://linux55.com/image/66224/%2Flib%2Fmodules%2Flinux%20version%2Fkernel%2Ffs%2F%EC%97%90%EB%8A%94%20ext2%2Fext3%2Fext4%20%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC%EA%B0%80%20%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
Linux 3.5 커널을 설치하고 e2fsprogs를 컴파일했습니다. 나는 내 자신의 ext3 파일 시스템 버전을 가지고 있습니다. 이것이 myfs라고 가정해 보겠습니다. 나는 또한 myfs를 컴파일했습니다. 이제 몇 가지 질문이 있습니다.
- myfs 모듈을 삽입하는 방법과 위치는 무엇입니까? modprobe myfs(.ko 파일)를 수행하면 모듈을 찾을 수 없다는 메시지가 나타납니다. 단순히 insmod myfs.ko를 실행하면 작동하지만 .ko 파일이 어디에 저장되어 있는지 잘 모르겠습니다. 마운트된 폴더 내에 디렉터리를 만들려고 하면 mkdir 호출에서 추가한 디스플레이도 표시되지 않습니다(커널 디버그 수준도 8로 설정됨).
myfs 디렉터리의 Makefile은 다음과 같습니다.
KERNEL_TREE ?= /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
obj-m := iext3.o
iext3-objs := balloc.o bitmap.o dir.o file.o fsync.o ialloc.o inode.o \
ioctl.o namei.o super.o symlink.o hash.o resize.o ext3_jbd.o \
xattr.o xattr_user.o xattr_trusted.o acl.o xattr_security.o icefs.o \
transaction.o commit.o recovery.o checkpoint.o revoke.o journal.o
all:
make -C $(KERNEL_TREE) M=$(PWD) modules
clean:
rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions *.markers *.order *.symvers
나는 내 디렉토리인 /home/myname/soft/myfs에서 myfs를 컴파일하고 있습니다.
또한 /lib/modules/linuxversion/kernel/fs/에 ext2/ext3/ext4 디렉토리가 표시되지 않습니다. 이것이 맞는지 틀린지 확실하지 않습니다.
- 설치가 잘 작동합니다. df -a를 실행하면 myfs가 /dev/sda3에 마운트된 것을 볼 수 있습니다. 마운트를 해제하면 - umount: /home/..../mnt: not Mounted라고 표시되고 df -a를 수행하면 파일 시스템이 마운트 해제됩니다. 제거했지만 여전히 오류가 발생하기 때문에 이상합니다.
일부 배경: 모든 것이 있는 디렉토리: /home/soft myfs/ mye2fs/ Linux-3.5/ mnt/
1단계: cd Linux-3.5 --> 1) make 2) make module 3) make module_install 4) make install 5) 다시 시작
2단계: myfs(내 ext3 버전)를 컴파일하고 myfs 커널 모듈 --> cd myfs/ --> make --> insmod myfs.ko를 삽입합니다.
3단계: mye2fs를 mkfs로 컴파일
4단계: mye2fs를 사용하여 장치에 myfilesystem 생성 --> 마운트 --> myfs 모듈 아래에 있는 printk 문 테스트