![已安装驱动器上的符号链接在卸载后将起作用](https://linux22.com/image/230013/%E5%B7%B2%E5%AE%89%E8%A3%85%E9%A9%B1%E5%8A%A8%E5%99%A8%E4%B8%8A%E7%9A%84%E7%AC%A6%E5%8F%B7%E9%93%BE%E6%8E%A5%E5%9C%A8%E5%8D%B8%E8%BD%BD%E5%90%8E%E5%B0%86%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
因此,我正在编写某种bash
脚本,它基本上用作工业 PC 安装程序。基本上,它的作用是安装 HDD(或 SSD),使用 复制工作映像模板dd
,然后修改其内容以匹配需要安装的确切设备。这包括创建目录、文件、修改配置等。
然后卸载它,断开连接,放入新电脑,启动,新电脑就可以使用了。
该过程的一部分是为某些目录创建符号链接。例子:ln -s /mnt/custom/home/user/original/path/source/subfolder /mnt/custom/home/user/symlnk
然而,正如您可能猜到的那样。在卸载硬盘并自行运行后,此符号链接不起作用。符号链接是这样的:/home/user/original/path/source/subfolder -> /mnt/custom/home/user/symlnk
所以,我的问题是,如何在已安装的硬盘驱动器上执行此操作,以获得此符号链接:
/home/user/original/path/source/subfolder -> /home/user/symlnk
何时卸载并启动驱动器?
有可能吗?
答案1
这不可能。所有的符号链接都是一个指针,上面写着“嘿,你可以找到这文件结束那里。”如果“那边”位于不再安装的路径上,则符号链接将被破坏,直到:
- 重新安装目标位置,或者
- 新文件被放置在目标位置
如果您想要从访问权限可预见被破坏的位置获取文件副本,并且在访问权限丢失时可用,则需要制作文件的实际副本并将该副本存储在本地(即在访问权限可访问的位置)是不可预见的易碎的)。
你能理论上,将文件放置在该目标位置,该位置将被安装的文件系统屏蔽,但实际结果是您的符号链接将指向不同的未安装目标位置时的文件。该文件将以除路径之外的所有方式不同于已安装驱动器上的路径,并且不会与其“同级文件”保持“同步”。
说了这么多,你能创建一个损坏的符号链接固定的当驱动器被卸载时。如果你:
$ ln -s /home/user/original/path/source/subfolder /mnt/custom/home/user/symlnk
当驱动器安装在 时/mnt/custom
,显然该链接将不起作用,但是当该驱动器安装在 时/
,它应该指向正确的位置。
另一种选择是将符号链接设置为相对路径而不是绝对路径,然后只要链接位于同一离散分区内,它们就应该在安装该分区的任何地方仍然有效。
答案2
答案确实是chroot
,我是这样做的,并且它的工作原理:
chroot /mnt/custom ln -s /home/user/original/path/source/subfolder /home/user/symlnk