mac에서 x86_64등으로 빌드된 프로그램은 실행되지 않는다.
zsh: exec format error mac
이라는 에러와 함께 m기반 cpu로는 실행되지 않는다.
exec 파일은 intel cpu 기반으로 빌드한 것이기 때문에 mac cpu를 기반으로 하는 가상환경에서는 불가능하다.
두 가지 방법이 있는데, 첫번째는 가상머신을 가상화하지 않고 애뮬레이터로 돌리는 것이고 aws를 사용하는 것이다.
방법 1 : UTM 사용하기
1. UTM의 +버튼을 눌러 가상환경을 만들어준다
2. Emulate/linux 선택
Virtualize는 가상화로 현재 내 cpu를 기반으로 가상머신을 만들어준다.
즉, Virtualize로 만들어진 가상환경은 여전히 arm64기반이므로 exec파일을 실행할 수 없다.
따라서 아예 Emulate로 만들어줘야한다.
* Virtualize는 실행이 매우 빠른 대신, Emulate는 실행이 굉장히 느리다는 단점이 있다.
3. amd 파일 업로드
arm이 아닌 amd기반으로 만들어줄 것이므로 amd파일을 다운받아 가상머신에 넣어주어야한다.
에뮬레이터는 현재 cpu와 관련 없이 내가 원하는 새로운 가상 환경을 만드는 것이므로 돌리고 싶은 환경의 iso 파일을 넣어주면 된다.
4. Architecture 선택
내가 만들고 싶은 환경의 Architecture에 맞춰 선택해준다.
exec 파일을 돌리고 싶기 때문에 x86_64(64비트 intel cpu)를 선택
5. 가상머신 설치 후 install
Virtualize와 똑같이 나머지를 설정해준 후, 실행시키면 된다
시간이 굉장히 오래걸리고 부팅 속도가 느리니, 계속 검은색 화면이 뜨더라도 기다려야한다.
방법 2: aws 사용
많이 나와있지만, aws 무료 프론티어 버전을 이용하여 utm 서버를 만든 후 mac의 ssh와 연결시켜주면 된다.
인터넷에 설명이 많아서 생략
방법3 : qemu 사용
1. qemu 설치
brew install qemu
2. Ubuntu 설치
ubuntu를 설치하여 실행할 파일 경로로 이동하여 아래 명령어를 실행한다 .
curl -o ubuntu2204.iso https://releases.ubuntu.com/22.04/ubuntu-22.04.5-live-server-amd64.iso
3. qemu 가상 드라이브에 우분투 파일 생성
qemu-img create -f qcow2 ubuntu2204.qcow2 (크기 : 20 추천)G
qemu-system-x86_64 -hda ubuntu2204.qcow2 -m 4096 -cdrom ubuntu2204.iso
4. ssh 연결을 위해 qemu를 해당 명령어로 열기
qemu-system-x86_64 -m 4G -hda ubuntu2204.qcow2 -net user,hostfwd=tcp::8080-:22 -net nic
5. 이름@localhost 8080포트로 ssh로 연결하면 우분투에 접속할 수 있다.