在根目录创建文件
前言
根分区自 macOS 10.15(Catalina)起只读,无法直接在 / 下创建文件或目录。官方提供 /etc/synthetic.conf,由内核在启动早期合成虚拟软链接或空目录到根目录(常用于为包管理器建立根目录),详见 man synthetic.conf。
synthetic.conf 配置示例
编辑 /etc/synthetic.conf(以 vim 为例,文件不存在会自动创建):
sudo vim /etc/synthetic.conf
写入示例内容创建软链接:
data Users/$USER_NAME/data
data1 Users/$USER_NAME/data1
| 注意 |
|---|
| 每行的两项配置前面都不能加 “/”(可以理解系统会帮我们加前缀“/”)。 |
“data” 与 Users/$USER_NAME/data 之间一定要使用 TAB 进行分隔,否则重启后无效。如果指定目录(如 Users/$USER_NAME/data)不存在记得创建。 |
示例中的 $USER_NAME 是用户名的意思,别忘记替换为自己用户名,如 foo。 |
| 记得重启Mac。 |
重启后用 ls -l / 查看,根目录下会出现两个软链接目录:
$ ls -l /
...
lrwxr-xr-x 1 root wheel 46 7 24 13:34 data -> Users/ituknown/data
lrwxr-xr-x 1 root wheel 46 7 24 13:34 data1 -> Users/ituknown/data1
synthetic.conf 配置不生效?
如果发现 /data 目录没有被创建,那么一定要仔细检查下你的 /etc/synthetic.conf 文件里的 Tab 分隔符是否被正确配置了。
| NOTE |
|---|
有的机器的 vim 配置了 set expandtab,导致Tab被自动转换成了多个空格。 |
可在插入模式下先按 CTRL+V 再按 TAB 输入真实 Tab。用 xxd 查看:Tab 的 ASCII 码是 09,空格是 20。
以下面的配置为例:
$ cat synthetic.conf
data Users/ituknown/Downloads/data
vim 配置了 set expandtab,导致 TAB 键被替换为空格:
$ xxd /etc/synthetic.conf
00000000: 6461 7461 2020 2020 5573 6572 732f 6974 data Users/it
00000010: 756b 6e6f 776e 2f44 6f77 6e6c 6f61 6473 uknown/Downloads
00000020: 2f64 6174 610a /data.
注意第一行的 2020 2020,TAB 被替换成了 4 个空格。
现在重新使用 vim 编辑配置文件:
sudo vim /etc/synthetic.conf
进入插入模式删掉空格后,按 CTRL+V 进入字面字符输入模式(vim 左下角可能显示 ^),再按 TAB 插入真实 Tab。
保存之后再使用 xxd 命令查看下:
$ xxd /etc/synthetic.conf
00000000: 6461 7461 0955 7365 7273 2f69 7475 6b6e data.Users/itukn
00000010: 6f77 6e2f 446f 776e 6c6f 6164 732f 6461 own/Downloads/da
00000020: 7461 0a ta.
注意看第一行出现了 0955,其中 09 表示的就是 TAB 键!