Linux 内核源代码有一些重叠的文件名,当放在不区分大小写的文件系统上时,这些文件名会崩溃。以下是截至 6.4.7 的列表:
- 在
include/uapi/linux/netfilter/
:xt_CONNMARK.h
和xt_connmark.h
xt_DSCP.h
和xt_dscp.h
xt_MARK.h
和xt_mark.h
xt_RATEEST.h
和xt_rateest.h
xt_TCPMSS.h
和xt_tcpmss.h
- 在
include/uapi/linux/netfilter_ipv4/
:ipt_ECN.h
和ipt_ecn.h
ipt_TTL.h
和ipt_ttl.h
- 在
include/uapi/linux/netfilter_ipv6/
:ip6t_HL.h
和ip6t_hl.h
- 在
net/netfilter/
:xt_DSCP.c
和xt_dscp.c
xt_HL.c
和xt_hl.c
xt_RATEEST.c
和xt_rateest.c
xt_TCPMSS.c
和xt_tcpmss.c
- 在
tools/memory-model/litmus-tests/
:Z6.0+pooncelock+poonceLock+pombonce.litmus
和Z6.0+pooncelock+pooncelock+pombonce.litmus
将源树填充到不区分大小写的文件系统中后,每一对中的一个文件将覆盖另一个文件。显然,在启用 netfilter 的情况下构建 Linux 内核是不可能的。即使文件的两个版本都以不同的名称保存,并且修改源代码以确认这些重命名,API 也会被破坏,谁想要这样呢?
是否可以在没有 netfilter 支持的情况下构建 Linux 内核?在此过程中还可能出现哪些其他挑战?