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