다른 아키텍처로 Chroot를 사용하시겠습니까?

다른 아키텍처로 Chroot를 사용하시겠습니까?

ARM 프로세서에서 사용할 파일 시스템 이미지가 있지만 먼저 데스크톱 등의 항목을 설치하고 싶습니다. 그래서 내 Linux 시스템에 파일 시스템을 마운트하고 거기에서 chroot하여 해당 시스템의 항목을 설치하고 싶습니다. 이것이 가능합니까, 아니면 i386과 ARM 소프트웨어의 차이점으로 인해 중단됩니까?

가능하다면 어떻게 해야 하나요? [pathtorootfs]를 chroot하려고 하면 bash를 찾을 수 없다는 오류가 발생합니다.

답변1

다양한 아키텍처를 사용하여 소프트웨어를 실행할 수 있습니다QEMU그리고 binfmt_misc. 투명한 지원을 제공하는 배포판(예를 들어데비안 파생물 사용binfmt-support) 이것은 매우 간단합니다.

  1. binfmt-support메인 시스템에 설치됩니다 .
  2. qemu-user-static메인 시스템(Debian 파생 제품)에 QEMU의 정적 사용자 모드 바이너리를 설치합니다.
  3. 적절한 에뮬레이터를 chroot에 복사합니다 .../usr/bin(귀하의 경우에는 아마도 qemu-arm-static).
  4. chroot귀하의 시스템에.

이것이 바람직한지 여부는 논쟁의 여지가 있습니다. 확실히 소형 ARM 시스템용 SD 카드를 설정하는 데 자주 사용됩니다. 무엇을 하든 chroot위의 QEMU 바이너리 외에 ARM 바이너리만 시스템에 복사해야 합니다. 그렇지 않으면 ARM 장치를 부팅한 후 시스템이 작동하지 않습니다.

문서화된 대로 debootstrap이는 다음과 같은 다른 빌드 도구에서 잘 지원됩니다.schroot예를 들어통과이안 캠벨.

답변2

가능하지만 먼저 몇 가지 조치를 취해야 합니다.

분명히, 귀하의 하드웨어는 기본적으로 ARM 명령어 세트를 지원하지 않습니다. 이는 시스템이 ARM 명령어를 해석하고 이를 i386에 해당하는 명령어로 변환할 수 있도록 하는 일부 소프트웨어를 설치해야 함을 의미합니다. qemu-user이것은 가능합니다.

다음으로, ARM 바이너리를 시작할 때 올바른 qemu-user바이너리가 시작되도록 시스템을 구성해야 합니다. 이는 binfmt-misc하위 시스템에서 가능합니다.

Debian 시스템에서 이 작업을 수행하는 방법에 대한 자세한 지침을 보려면 다음을 방문하세요.데비안 위키

그러나 분명히 이것은 에뮬레이션으로 인해 매우 느리게 실행될 것이므로 그럴 가치가 없을 것입니다.

답변3

아니요, 작동하지 않습니다. 사용하려는 소프트웨어를 크로스 컴파일해야 합니다.처음부터 크로스 Linux또는 대상 아키텍처/머신에서 실행되는 시스템 내에 패키지를 설치하고 명령줄을 사용하세요.

관련 정보