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