本文译者是一位开源理念的坚定支持者,所以本文虽然不是软件,但是遵照开源的精神发布。
本文译者十分愿意与他人分享劳动成果,如果你对我的其他翻译作品或者技术文章有兴趣,可以在如下位置查看现有的作品集:
由于译者水平有限,因此不能保证译文内容准确无误。如果你发现了译文中的错误(哪怕是错别字也好),请来信指出,任何提高译文质量的建议我都将虚心接纳。
binfmt.d — 在系统启动时为可执行文件配置 额外的二进制格式
/etc/binfmt.d/*.conf
/run/binfmt.d/*.conf
/usr/lib/binfmt.d/*.conf
每个配置文件都包含一个 binfmt_misc 内核二进制格式规范的列表。参见内核的 binfmt-misc.rst 文档以了解如何注册额外的二进制格式,以及如何编写规则。 [译者注]《如何在Linux下指定特定类型的文件用特定的程序打开》也是篇不错的参考文章。
空白行和以 # 或 ; 开头的行将被忽略。 这意味着不能在二进制格式规则中 将 # 与 ; 用作分隔符。
配置文件依次从
/etc/
, /run/
, /usr/lib/
目录中读取。
配置文件的名称必须符合
格式。
对于不同目录下的同名配置文件,仅以优先级最高的目录中的那一个为准。
具体说来就是:
filename
.conf/etc/
的优先级最高、
/run/
的优先级居中、
/usr/lib/
的优先级最低。
软件包应该将自带的配置文件安装在
/usr/lib/
目录中。
/etc/
目录仅供系统管理员使用。
所有的配置文件(无论位于哪个目录中),
统一按照文件名的字典顺序处理。
如果在多个配置文件中设置了同一个选项,
那么仅以文件名最靠后(字典顺序)的那一个为准。
为了便于排序,建议给所有配置文件
都加上两位十进制数字的文件名前缀。
如果系统管理员想要屏蔽 /usr/lib/
目录中的某个配置文件,
那么最佳做法是在 /etc/
目录中
创建一个指向 /dev/null
的同名符号链接,
即可彻底屏蔽 /usr/lib/
目录中的同名文件。
如果软件包自带的某个配置文件位于 initrd 镜像中,
那么还必须重新生成 initrd 镜像。
例 1. /etc/binfmt.d/wine.conf 文件:
[译者注]关于Java的实例可以查看 Binfmt misc for Java(ArchLinux Wiki) 以及OpenSuSE的 java-binfmt-misc 软件包。
# 在执行 Windows 程序时启动 WINE :DOSWin:M::MZ::/usr/bin/wine: