chroot에서 uname을 실제로 사용합니까?

chroot에서 uname을 실제로 사용합니까?

부팅과 chrooting의 조합을 통해 OS 이미지를 준비하고 있습니다. 커널 모듈 구축과 같은 일부 작업은 unamechroot 내부에서도 호스트 구성을 보고하는 출력에 의존합니다. 이 구성은 배포되는 구성과 다릅니다. 결과적으로 커널 헤더를 찾을 수 없으며 다른 단계가 혼란스러워집니다.

창의력을 발휘하여 uname이를 가짜 쉘 스크립트로 대체할 수 있지만 보다 실용적인 접근 방식은 무엇입니까?

답변1

Linux는 보고된 값을 변경하는 제한된 방법을 제공합니다 uname.personality시스템 호출은 다음을 통해 호출될 수 있습니다.setarch유틸리티(내장되지 않은 모든 Linux에서 사용 가능한 util-linux 패키지의 일부) 예를 들어 amd64 컴퓨터에서 사용하거나 setarch i386 myprogram프로그램 linux32 myprogram이 32비트 x86 시스템에서 실행되고 있다고 믿게 만들 수 있습니다.

uname그러나 보고서 버전을 임의의 숫자로 변경할 수 있는 방법은 없습니다 .

다음을 사용하여 프로세스 트리의 호스트 이름을 변경할 수도 있습니다.UTS 네임스페이스.

슈루트이러한 매개변수는 chroot 구성에 따라 설정될 수 있습니다.

그러나 컴파일된 소프트웨어의 경우 정보 보고를 변경하는 것만으로 uname는 충분하지 않습니다. 또한 대상 프로세서에 맞는 컴파일러를 사용하고 올바른 코드를 연결해야 합니다. 이것은 ... 불리운다크로스 컴파일, 크로스 컴파일 환경은 빌드 대상과 빌드 방법을 결정하기 위해 호스트 시스템에 대한 정보를 사용하지 않습니다. 그러니 척하는 것을 잊어 uname버리고 대신 계속 읽으세요.커널 모듈 크로스 컴파일,그리고kbuild 문서.

관련 정보