이더넷을 통해 연결된 Linux 2.6.37을 실행하는 3개의 임베디드 CPU 시스템이 있습니다. 각 CPU에는 자체 NAND 플래시 메모리가 있습니다. 그 중 하나는 "주" CPU 번호 0이고, 나머지 2개는 그의 동료입니다. RootFS 파일에서 가능한 업데이트/변경 횟수가 3배로 늘어나는 것을 방지하기 위해 CPU0에 있는 동일한 루트 파일 시스템에서 세 파일을 모두 실행하고 싶습니다.
이를 위해 CPU0의 NFS를 통해 "/"(루트 파일 시스템)을 내보내고 CPU1과 CPU2는 NFS(nfsroot)를 통해 CPU0에서 부팅하려고 합니다.
그러나 이것은 작동하지 않는 것 같습니다. "/" 내보내기 시도는 다음 메시지와 함께 실패합니다: importfs:/는 NFS 내보내기를 지원하지 않습니다.
"/" 내보내기에 제한이 있나요? 그렇다면 목표를 달성하기 위해 무엇을 할 수 있는지 아이디어가 있습니까? 매우 감사합니다.
추가/업데이트:
각 CPU는 해당 번호를 알고 있으며 부트 로더(u-boot)는 NAND(CPU0) 또는 NFS(CPU1-2)에서 부팅하기 위해 Linux 명령줄에 올바른 매개변수를 입력합니다. 동일한 토큰으로 CPU0은 NFS 서버를 시작하지만 CPU1-2는 시작하지 않습니다.
이제 루트 파일 시스템이 읽기 전용으로 마운트되었으므로 "개인" 파일은 필요하지 않습니다. 단지 각 CPUx마다 자체적인 전용 NAND가 있다는 것인데, 저는 그것을 제거하고 싶습니다.
이는 "디스크 없는" 경우와 다릅니다. 디스크 없는 경우 일부 하위 디렉터리를 루트 파일 시스템으로 내보내는 반면 제 경우에는 모든 루트 파일 시스템을 내보내야 하기 때문입니다.
NAND에서 하위 디렉터리를 내보내는 것이 잘 작동한다는 점에 유의해야 합니다(적어도 몇 개는 시도했습니다). "/"만 내보내면 실패합니다.
답변1
예를 들어 CPU가 전체 루트 파일 시스템을 공유하는 경우 여기에는 nfs 구성을 포함한 모든 구성이 포함됩니다. 그들이 기본인지 동반자인지 어떻게 알 수 있습니까?
한 가지 접근 방식은 가장 큰 디렉터리에 대해 플래시에 파티션을 생성하고(seek 사용 du -sm /*|sort -n
) 가능하면 이를 동반 항목에서 마운트하는 것입니다(사용하거나 /home
실행할 수 있지만 /usr
사용할 수는 없음 /etc
).
그러나 시스템이 아직 개발 중인 경우 각 파티션에 얼마나 많은 공간이 필요한지 알 수 없으므로 작은 파티션과 마운트할 수 있는 것과 같은 /root
큰 다른 파티션을 갖는 것이 좋습니다 . /shared
그런 다음 심볼릭 링크(예: )를 만들어야 합니다 ln -s /shared/home /home
. 하지만 시스템이 차단되지 않도록 하세요! /bin
공유 파티션으로 이동하려고 하면 /bin/mount
부팅 시 찾을 수 없습니다.
답변2
루트 디렉터리를 다른 곳에 비재귀적으로 바인딩합니다 /srv/nfs/root
. 예를 들면 다음과 같습니다.
mount --bind / /srv/nfs/root
그런 다음 /srv/nfs/root
.
재귀적으로 바인딩하지 마십시오( --rbind
). 그렇지 않으면 /proc, /sys 및 /dev와 같은 디렉터리도 내보내집니다.