2012-08-29 3 views
3

저는 리눅스를 사용하여 임베디드 어플리케이션을 개발 중입니다. 나는 HOST 리눅스 배포판 (fedora)과 TARGET 리눅스 배포판 (그것이 무엇인지는 모르지만 그것은 중요하지 않다)을 가지고있다.다른 리눅스 인스턴스에서 사용할 심볼릭 링크 생성하기

대상 파일 시스템은 호스트 파일 시스템의 폴더입니다. 예를 들어, TARGET은 HOST 파일 시스템의/home/paul/target/rootfs에서 nfs를 통해 부팅합니다.이 파일은 일반적인 리눅스 파일 구조입니다.

본인은 TARGET에 데몬 프로그램을 추가하고있다. 나는 그것을 호스트에서 컴파일하고 make target (make install)을 사용하여 TARGET 파일 시스템에 파일을 복사하고 실행할 데몬을 설정한다. 나는

  • 데몬 바이너리
  • 일부 libs와 & 스타트 업 스크립트를 복사
  • 일부 심볼릭 링크 (심볼릭 링크) 그것은 이들의 늦은 데몬

의 자동 시작을 용이하게하기 위해 그 나에게 문제를주고있다. 부팅시 자동으로 시작하려면 /etc/rc.d/rc0.d에있는 TARGET fs에서 rc6.d로 심볼릭 링크를 만들어야합니다.이 스크립트는 내 시작 스크립트 /etc/rc.d/init/d를 가리 킵니다./mdns.

문제는 내가 호스트 시스템에 있지만, TARGET에 의해 사용이 심볼릭 링크를 만들 필요가있다. 따라서 HOST 시스템에서 볼 수있는 전체 경로를 가리킬 수 없으므로 TARGET이 실행될 때 경로를 가리켜 야합니다.

그래서 예를

위해 나는 /home/paul/target/rootfs/etc/rc0.d에 심볼릭 링크를 작성해야하지만 심볼릭 링크에서는 /etc/init.d/에 K16mdns 및 포인트를 호출 할 필요가있다 mDNS를하지 /home/paul/target/rootfs/etc/init.d/mdns

하는 방법은 LN이 작업을 수행하는 명령을 사용할 수 있습니까? ln (-s 플래그 외에)에 3 가지를 지정해야합니다. - 링크 파일 이름, 링크의 대상 및 링크를 작성하는 디렉토리. ln 맨 페이지에서이 조합을 보지 못합니다.

항상 호스트의 /etc/rc.d 디렉토리를 망가 뜨리거나 분명히 실패하는 호스트에만 관련된 경로를 사용하여 TARGET fs의 심볼릭 링크를 만드는 것으로 끝나는 것 같습니다 (TARGET 경로/home 경로가 없습니다. /paul/target/rootfs/etc/init.d/mdns). 내가 목표 명령 줄에서 수동으로 심볼릭 링크를 만들 때

은 모두 잘 작동하지만, 분명이 실용적인 솔루션을 밤은.

미리 감사드립니다.

답변

6

심볼릭 링크 할 때 상대 경로를 사용해야합니다 (예 :

cd /home/paul/target/rootfs/etc/init.d 
ln -s mndns ../rc0.d/K16mdns 
+1

이로 인해 결과적으로 상대적인 심볼릭 링크는 호스트와 대상 모두에서 심볼릭 링크를 사용할 수있게 해줍니다. 원하는 경우 절대 링크를 사용할 수 있지만 호스트에서 역 참조하는 것은 "옳은 일"을하지 않을 것이므로주의하여 프로세스를 조정해야합니다. 특정 작업에'chroot '를 사용하는 것이 좋습니다. 호스트 거기에 - – twalberg

+1

방금'LN -s /etc/init.d/mdns/홈/폴/대상/rootfs을/etc/rc0.d/K16mdns'을 사용하여 절대 심볼릭 링크를 만들 수 있습니다, @ twalberg의 의견에 확장하려면 아마 존재하지 않는 호스트의 파일 시스템상의 어떤 것을 가리킬 것이다. 그러나 목표 파일 시스템이 루트로서 마운트 될 때 그것은 올바른 장소를 가리킬 것이다. – caf

+0

위대한 답변 덕분에, 내가 필요한 것. 나는 타겟 fs에서 다른 상대적인 심볼릭 링크를 발견했다. –