当前位置:网站首页>在Ubuntu上体验最新版本EROFS

在Ubuntu上体验最新版本EROFS

2020-11-07 23:13:38 写代码有信仰

在Ubuntu上体验最新版本EROFS

目前Linux内核的已经迭代到5.9版本,同时EORFS文件系统驱动也做了特性和稳定性更新,一睹新版功能体验。

准备Linux内核代码,最好是和当前发行版内核一致

1. 获取Ubuntu内核版本

$ uname -a
Linux ubuntu 5.9.6-050906-generic #202011051230 SMP Thu Nov 5 17:35:33 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

2. 下载最新EROFS 源码

$ mkdir ~/erofs && cd erofs
$ git clone https://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs.git linux-erofs
$ git checkout -b erofs-dev remotes/erofs/dev
$ git bra|grep erofs
* erofs-dev
  erofs-master
  remotes/erofs/dev
  remotes/erofs/dev-test
  remotes/erofs/fixes
  remotes/erofs/master

3. 准备makefile

# SPDX-License-Identifier: GPL-2.0-only
EROFS_VERSION = "1.0"
ccflags-y += -DEROFS_VERSION=\"$(EROFS_VERSION)\"
CONFIG_EROFS_FS=y
CONFIG_EROFS_FS_DEBUG=y
CONFIG_EROFS_FS_XATTR=y
CONFIG_EROFS_FS_POSIX_ACL=y
CONFIG_EROFS_FS_SECURITY=y
CONFIG_EROFS_FS_ZIP=y
CONFIG_EROFS_FS_CLUSTER_PAGE_LIMIT=1
obj-m += erofs.o
erofs-objs := super.o inode.o data.o namei.o dir.o utils.o
erofs-$(CONFIG_EROFS_FS_XATTR) += xattr.o
erofs-$(CONFIG_EROFS_FS_ZIP) += decompressor.o zmap.o zdata.o

ifneq ($(KERNELRELEASE),)
# call from kernel build system
obj-m   := erofs.o
else
KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD       := ~/linux-erofs/fs/erofs
default:
        $(MAKE) -C $(KERNELDIR) M=$(PWD) modules
        echo ${KERNELRELEASE}
endif
clean:
        rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions Module.symvers modules.order
depend .depend dep:
        $(CC) $(EXTRA_CFLAGS) -M *.c > .depend
ifeq (.depend,$(wildcard .depend))
include .depend
endif

4. 编译和安装erofs驱动

$ cd ~/erofs/linux-erofs
$ make
# 安装依赖模块
$ sudo modprobe libcrc32c
$ sudo insmod ~/erofs/linux-erofs/fs/erofs.ko
$ lsmod|grep erofs
erofs               33648640  0
libcrc32c              16384  1 erofs

5. 挂着打包好的EROFS镜像test.img

$ sudo mount -t erofs -o loop test.img erofsdir;md5sum erofsdir/*.* srcdir/*.*|sort;sudo umount erofsdir 
[sudo] password for XX:
0a78b672c059739eaa1dd01cc846f685  erofsdir/dmesg.log
0a78b672c059739eaa1dd01cc846f685  srcdir/dmesg.log
52efd0d1126cd0dbf0e6b28b2cf85c3f  erofsdir/inline.txt
52efd0d1126cd0dbf0e6b28b2cf85c3f  srcdir/inline.txt
72b3924faa8f5801e2966c69ddaa7d99  erofsdir/file.list
72b3924faa8f5801e2966c69ddaa7d99  srcdir/file.list
7558009b9427ba921ea05e68c35e98b2  erofsdir/config.c
7558009b9427ba921ea05e68c35e98b2  srcdir/config.c
aa5ae2a4d5d71e32357159d9b32a5c2c  erofsdir/dd_unrandom.bin
aa5ae2a4d5d71e32357159d9b32a5c2c  srcdir/dd_unrandom.bin
c0f56976ed5e0fcf331d30e8d74053bc  erofsdir/file_002.txt
c0f56976ed5e0fcf331d30e8d74053bc  srcdir/file_002.txt
f127e2ae77c615cd7391c5b4d1194d2c  erofsdir/dd_unrandom2.bin
f127e2ae77c615cd7391c5b4d1194d2c  srcdir/dd_unrandom2.bin
fdd480f87d40828ecc561cfa9e371a78  erofsdir/liberofs_la-cache.o
fdd480f87d40828ecc561cfa9e371a78  srcdir/liberofs_la-cache.o

版权声明
本文为[写代码有信仰]所创,转载请带上原文链接,感谢
https://my.oschina.net/230/blog/4707752