已安装驱动器上的符号链接在卸载后将起作用

已安装驱动器上的符号链接在卸载后将起作用

因此,我正在编写某种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

相关内容