Mac OS X 10.8에서 Mac OS X 10.6을 사용하여 chroot 환경을 만들려고합니다. 디스크 이미지를 만들고 Mac OS X 10.6.3을 설치하고 10.6.8에 콤보 업데이트를했습니다. 내가 달릴 때. chroot /path/to/mounted/image /bin/echo test
(설치 프로그램을 실행하는 데 사용되는) 10.6.8을 실행하는 내부 가상 시스템은 정상적으로 작동하지만 호스트 OS (10.8.4)에서 동일한 작업을 수행하면 SIGBUS를 수신하고 충돌합니다.
다음은 충돌 보고서입니다.
Process: echo [29464]
Path: /Volumes/VOLUME/bin/echo
Identifier: echo
Version: 170
Code Type: X86-64 (Native)
Parent Process: zsh [27539]
User ID: 0
Date/Time: 2013-09-01 21:00:40.910 +0100
OS Version: Mac OS X 10.8.4 (12E55)
Report Version: 10
Crashed Thread: 0
Exception Type: EXC_BAD_ACCESS (SIGBUS)
Exception Codes: KERN_PROTECTION_FAILURE at 0x00007fffffe00600
VM Regions Near 0x7fffffe00600:
Submap 00007fffc0000000-00007fffffe00000 r--/rwx process-only submap
--> Submap 00007fffffe00000-00007fffffe01000 r--/r-- process-only submap
shared memory 00007fffffe00000-00007fffffe01000 [ 4K] r--/r-- SM=SHM
Application Specific Information:
dyld: launch, running initializers
/usr/lib/libSystem.B.dylib
Thread 0 Crashed:
0 ??? 0x00007fffffe00600 0 + 140737486259712
1 libSystem.B.dylib 0x000000010cb3f10d mach_init_doit + 81
2 libSystem.B.dylib 0x000000010cb3f076 libSystem_initializer + 19
3 dyld 0x00007fff6c748378 ImageLoaderMachO::doModInitFunctions(ImageLoader::LinkContext const&) + 236
4 dyld 0x00007fff6c748762 ImageLoaderMachO::doInitialization(ImageLoader::LinkContext const&) + 46
5 dyld 0x00007fff6c74506e ImageLoader::recursiveInitialization(ImageLoader::LinkContext const&, unsigned int, ImageLoader::InitializerTimingList&) + 380
6 dyld 0x00007fff6c744fc4 ImageLoader::recursiveInitialization(ImageLoader::LinkContext const&, unsigned int, ImageLoader::InitializerTimingList&) + 210
7 dyld 0x00007fff6c744eba ImageLoader::runInitializers(ImageLoader::LinkContext const&, ImageLoader::InitializerTimingList&) + 54
8 dyld 0x00007fff6c736fc0 dyld::initializeMainExecutable() + 207
9 dyld 0x00007fff6c73ab04 dyld::_main(macho_header const*, unsigned long, int, char const**, char const**, char const**, unsigned long*) + 3060
10 dyld 0x00007fff6c736397 dyldbootstrap::start(macho_header const*, int, char const**, long, macho_header const*, unsigned long*) + 761
11 dyld 0x00007fff6c73605e _dyld_start + 54
Thread 0 crashed with X86 Thread State (64-bit):
rax: 0x00007fffffe00600 rbx: 0x0000000000000000 rcx: 0x000000010cb3ed6e rdx: 0x00007fff530cab00
rdi: 0x000000010cd18cc0 rsi: 0x0000000000001908 rbp: 0x00007fff530ca270 rsp: 0x00007fff530ca268
r8: 0x00007fff6c76a1a8 r9: 0x0000000000000001 r10: 0x000000010cd42a28 r11: 0x000000010cb3f000
r12: 0x0000000000000d07 r13: 0x0000000000000001 r14: 0x00007fff6c771b38 r15: 0x0000000000000000
rip: 0x00007fffffe00600 rfl: 0x0000000000010202 cr2: 0x00007fffffe00600
Logical CPU: 2
Binary Images:
0x10cb35000 - 0x10cb35ff7 echo (170) <A9BC6D8D-19CF-3DF3-8EB4-9677BA9F265D> /bin/echo
0x10cb3e000 - 0x10ccfffef libSystem.B.dylib (125.2.11) <9AB4F1D1-89DC-0E8A-DC8E-A4FE4D69DB69> /usr/lib/libSystem.B.dylib
0x10cd93000 - 0x10cd97ff7 libmathCommon.A.dylib (315) <95718673-FEEE-B6ED-B127-BCDBDB60D4E5> /usr/lib/system/libmathCommon.A.dylib
0x7fff6c735000 - 0x7fff6c76993f dyld (210.2.3) <A40597AA-5529-3337-8C09-D8A014EB1578> /usr/lib/dyld
External Modification Summary:
Calls made by other processes targeting this process:
task_for_pid: 0
thread_create: 0
thread_set_state: 0
Calls made by this process:
task_for_pid: 0
thread_create: 0
thread_set_state: 0
Calls made by all processes on this machine:
task_for_pid: 41894
thread_create: 1
thread_set_state: 2793
VM Region Summary:
ReadOnly portion of Libraries: Total=2568K resident=2396K(93%) swapped_out_or_unallocated=172K(7%)
Writable regions: Total=8508K written=24K(0%) resident=68K(1%) swapped_out=0K(0%) unallocated=8440K(99%)
REGION TYPE VIRTUAL
=========== =======
STACK GUARD 56.0M
Stack 8192K
__DATA 384K
__LINKEDIT 532K
__TEXT 2036K
shared memory 12K
=========== =======
TOTAL 66.9M
동시에 /path/to/mounted/image/bin/echo test
잘 작동합니다.
내가 놓친 게 무엇입니까? 올바르게 작동시키는 방법?
업데이트 : 나는 그것을 포기합니다. 분명히 Mac OS X의 chroot는 완전히 망가졌습니다. 심지어 chroot 내에서 (호스트에있는 것처럼 동일한 OS 버전을 chroot에 설치하여) 바이너리를 실행 한 후에도 도메인 이름 조회가 실패하고 어떻게 든 고칠 수 있더라도 대부분 다른 문제가있는 것으로 보입니다.
chroot 된 환경에서도 커널 이미지는 여전히 호스트 시스템 중 하나입니다 (귀하의 경우 10.8.4). 따라서 커널을 호출하는 10.6 바이너리 / 라이브러리가 문제가 될 수 있습니다. chroot를 사용하여 가상화를 시뮬레이션 할 수 있다고 생각하지 않습니다.
—
nohillside
10.6 (글쎄, 최소한 / bin / echo)의 바이너리는 chroot없이 10.8에서 정상적으로 작동합니다. 나는 가상화를 시뮬레이션하고 싶지 않다. 나는 고립 된 빌드 환경을 원한다.
—
gelraen
file /Volumes/VOLUME/bin/echo
,otool -h -L /Volumes/VOLUME/bin/echo
과uname -a
...에 양자 모두 OS X 10.6.8 과 OS X 10.8.4를 다운로드하고 질문에 출력을 추가 하시겠습니까?