맥북에서 ROS 2 Humble 환경 구축하기 - UTM 가상머신 활용
맥북에서 UTM 가상머신을 활용하여 ROS 2 Humble 개발 환경을 구축하는 가이드 입니다. Ubuntu 22.04 ARM64 설치부터 Publisher/Subscriber 테스트까지 단계별로 설명합니다.

들어가며
ROS 2는 Ubuntu를 공식 지원하기 때문에, macOS 환경에서는 가상머신이나 컨테이너를 통해 개발 환경을 구성하는 것이 일반적입니다.
이 글에서는 UTM 가상머신을 활용해 맥북에 ROS 2 Humble 개발 환경을 구축하는 과정을 처음부터 끝까지 단계별로 정리했습니다. ROS 2를 처음 접하는 분들도 그대로 따라 하면 설치와 기본 동작 확인까지 무리 없이 진행할 수 있도록 구성했습니다.
이 글에서 다루는 내용
- UTM 설치 및 Apple Silicon 최적화 설정
- Ubuntu 22.04 ARM64 설치
- ROS 2 Humble 설치 및 환경 설정
- 첫 실습: Publisher / Subscriber 통신 테스트
- SSH 접속을 활용한 효율적인 개발 환경 구성
- 설치 과정에서 자주 발생하는 문제와 해결 방법
필요한 사양
- 맥북: 리눅스 PC가 있다면 굳이 UTM 가상머신에 올릴 필요가 없이 바로 ROS2 설치 부분 보시면 됩니다. :)
- 메모리: 16GB 이상 권장 (8GB에서도 가능하나 전반적인 속도 저하 발생)
- 디스크: 최소 50GB 이상의 여유 저장 공간
- 소요 시간: 전체 설치 과정에 약 2~3시간 필요
1. UTM 설치
UTM이란? UTM은 Apple Silicon 환경에 최적화된 무료 가상머신 소프트웨어로, Parallels나 VMware Fusion과 같은 유료 대안 없이도 macOS에서 안정적으로 Linux 가상 환경을 구성할 수 있습니다.
1-1. UTM 다운로드
UTM은 공식 웹사이트를 통해 직접 다운로드하거나, Homebrew를 이용해 터미널에서 간편하게 설치할 수 있습니다.
방법 1: 공식 웹사이트 이용
- 접속 주소: https://mac.getutm.app/
- 상단의 “Download” 버튼 클릭
UTM.dmg파일 다운로드 후 설치
방법 2: Homebrew 사용 (터미널) Homebrew가 이미 설치되어 있다면, 명령어 한 줄로 UTM을 빠르게 설치할 수 있어 관리와 업데이트 측면에서 편리합니다.
brew install --cask utm
1-2. UTM 설치
- 다운로드한
UTM.dmg파일 실행 - UTM.app을 Applications 폴더로 드래그
- Applications 폴더에서 UTM 실행
- 보안 경고가 나오면 열기 클릭

2. Ubuntu 22.04 ARM64 설치
2-1. Ubuntu 이미지 다운로드
ROS 2 Humble은 Ubuntu 22.04(Jammy Jellyfish)를 공식 지원합니다. Apple Silicon 환경에서는 반드시 ARM64 아키텍처용 Ubuntu 이미지를 사용해야 합니다.
- 다운로드 링크 : https://cdimage.ubuntu.com/releases/22.04/release/
- 파일명 :
ubuntu-22.04.5-live-server-arm64.iso - 파일 크기 : 약 2GB

2-2. UTM에서 새 가상머신 생성하기
Step 1: 새 가상머신 생성 시작
UTM 애플리케이션을 실행합니다.
-
화면 상단의 + 버튼을 클릭해서 '새로운 가상 머신 생성'을 시작합니다.

-
가상화 방식 선택 화면에서 '가상화'를 선택합니다.
-
Apple Silicon 환경에서는 '가상화' 방식을 사용해야 하드웨어 가속을 최대한 활용할 수 있습니다.

Step 2: 운영체제 선택
- "Linux" 선택 합니다.

Step 3: 하드웨어 설정
권장 설정은 다음과 같습니다.
- 메모리(RAM): 8192 MB (8GB)
- 16GB 맥북: 8GB 할당
- 32GB 맥북: 12~16GB 할당 가능
- CPU 코어: 4 cores (기본값)
- OpenGL 가속: 활성화 (Gazebo 및 GUI 성능 향상)

Step 4: ISO 파일 선택
- Apple 가상화 사용: 활성화 (Apple Silicon 최적화)
- 부팅 이미지 종류 : Boot from ISO image 선택
- "찾아보기"를 클릭합니다.
- 다운로드한
ubuntu-22.04.5-live-server-arm64.iso파일을 선택합니다. - "계속"을 클릭합니다.

Step 5: 스토리지 설정
- 디스크 크기: 최소 30GB, 권장 50GB 선택합니다.
- ROS 2, Gazebo, 추가 패키지 설치 시 약 20~30GB의 디스크 공간이 사용됩니다.

Step 6: 공유 폴더 (선택)
- 맥북과 Ubuntu 간 파일 공유가 필요한 경우 설정합니다.
- 지금은 건너뛰어도 이후에 추가 가능합니다. 건너뛰도록 합니다.

Step 7: VM 이름 설정
- 이름:
ros2-humble-dev(또는 원하는 이름) - 저장 클릭합니다.

3. Ubuntu 설치
3-1. VM 시작
- UTM에서 생성한 가상 머신(VM)을 선택합니다.
- 상단의 재생 버튼을 클릭합니다. (또는 VM을 더블클릭합니다)
- Ubuntu 설치 화면이 표시됩니다.
- 'Try or Install Ubuntu Server' 선택합니다.

3-2. Ubuntu 설치 과정
언어 선택
- English 선택 (권장)
- 한국어도 선택 가능하지만, ROS 2 공식 문서와 튜토리얼이 대부분 영어로 제공되므로 English 사용을 추천합니다

키보드 레이아웃
- Layout: English (US) 또는 Korean
- 입력 테스트 후 적절한 레이아웃 선택

설치 타입 설정
- Ubuntu Server 선택 (기본값 유지)
- "Done" 클릭

네트워크 설정
- DHCP 자동 설정 (기본값 유지)
- "Done" 클릭

프록시 설정
- 입력 없이 비워둠
- "Done" 클릭

미러 설정
- 기본값 유지 또는 한국 서버 사용 - http://kr.ports.ubuntu.com/ubuntu-ports
- "Done" 클릭

디스크 파티션
- "Use an entire disk" 선택 (기본값)
- "Done" 클릭 후 "Continue"로 확인


프로필 설정
중요! 여기 정보 기록해두세요:
- Your name: [원하는 이름]
- Your server's name: ros2-dev (추천)
- Username: [사용자명]
- Password: [비밀번호]

Upgrade to Ubuntu Pro
- 선택하지 않고 "Done"

SSH 설정
- "Install OpenSSH server" 체크 (권장)
- 나중에 터미널 접속 편함

Featured Server Snaps
- 선택하지 않고 "Done"

설치 시작
- 설치 진행 (약 10-20분)
- 완료되면 "Reboot Now" 클릭

3-3. 첫 부팅
- 재부팅 후 로그인 화면
- 설정한 username/password 입력
- 로그인 성공!

3-4. 좀 더 편하기 위한 팁 : SSH로 맥북 터미널에서 접속하기
UTM 콘솔 환경에서는 복사·붙여넣기가 안 되어 작업 효율이 떨어집니다. 아니 답답해서 공부하기 어렵습니다. OpenSSH 서버를 설치해 두었다면, 맥북 터미널에서 SSH로 접속하는 방식을 적극 추천합니다.
이 방식의 장점은
- 명령어 복사·붙여넣기 가능해서 터미널 오타 감소하고
- VS Code Remote-SSH 확장과 연동 가능 합니다.
ROS 2 개발을 장기간 진행할 예정이라면 사실상 필수적인 설정입니다.
SSH 접속 방법
1단계: Ubuntu VM에서 IP 주소 확인
UTM의 Ubuntu 터미널에서 아래 명령으로 ip 주소 확인합니다.
hostname -I
예시 출력: 192.168.64.5 (이런 형식의 IP 주소)
2단계: 맥북 터미널에서 SSH 접속
맥북에서 새 터미널을 열고:
ssh [username]@[IP주소]
실제 예시:
ssh nadomola@192.168.64.5
처음 접속 시:
Are you sure you want to continue connecting (yes/no/[fingerprint])?
→ yes 입력
비밀번호 입력 → 접속 완료!
이제 맥북 터미널에서 Cmd+C, Cmd+V로 복사-붙여넣기가 가능합니다.

4. ROS 2 Humble 설치
4-1. 시스템 업데이트
먼저 Ubuntu 패키지를 최신으로 업데이트합니다.
sudo apt update
sudo apt upgrade -y
4-2. ROS 2 저장소 추가
공식 ROS 2 설치 가이드를 따릅니다.
locale 설정
locale 설정을 하는 이유는, ROS 2와 관련 도구들이 UTF-8 기반 영어 로케일을 전제로 동작해 문자 인코딩 오류나 예기치 않은 실행 문제를 예방하기 위함입니다.
sudo apt install locales -y
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8
ROS 2 GPG 키 추가
ROS 2 GPG 키를 추가하는 이유는 ROS 패키지가 공식적으로 신뢰된 출처에서 왔는지 검증하고, 위·변조된 패키지 설치를 방지하여 시스템 보안을 유지하기 위해서입니다.
sudo apt install software-properties-common -y
sudo add-apt-repository universe -y
sudo apt update && sudo apt install curl -y
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
ROS 2 저장소 추가
Ubuntu 기본 저장소에는 ROS 2가 포함되어 있지 않으므로, ROS 공식 패키지를 apt로 설치·업데이트하기 위해 별도의 저장소를 등록해야 합니다.
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
4-3. ROS 2 Humble 설치
현재 등록된 모든 저장소(Ubuntu + ROS 2)의 패키지 목록을 최신 상태로 갱신하고, ROS 2 Humble의 데스크톱 풀 패키지를 설치합니다.
sudo apt update
sudo apt install ros-humble-desktop -y
설치 시간: 약 10-20분
- 1.5GB 정도의 패키지 다운로드 및 설치
- ROS 2 코어, RViz, rqt 등 GUI 도구 포함

4-4. 환경 설정
bashrc에 source 추가
ROS 2 Humble의 환경 변수를 매번 수동으로 설정하지 않아도 되도록 로그인 시 자동으로 로드하게 하고, 그 설정을 현재 터미널 세션에도 즉시 적용되게 설정합니다.
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc
설치 확인
현재 ROS 2 환경이 정상적으로 초기화되었는지 확인하기 위해, 기본적으로 생성되는 ROS 2 토픽 목록 출력을 확인합니다.
방법 1: 기본 토픽 확인
ros2 topic list
예상 출력:
/parameter_events
/rosout
방법 2: 패키지 목록 확인 설치된 ROS 2 패키지 전체 목록 중 앞의 10개만 출력해 ROS 2가 정상적으로 설치되었는지 빠르게 확인해봅니다.
ros2 pkg list | head -10
예상 출력:
action_msgs
action_tutorials_cpp
action_tutorials_interfaces
...
⚠️ BrokenPipeError 메시지가 나와도 정상입니다 (head 명령어 때문).
방법 3: 환경 변수 확인
printenv | grep ROS
예상 출력:
ROS_VERSION=2
ROS_PYTHON_VERSION=3
ROS_DISTRO=humble

5. 첫 실습: ROS 2 동작 테스트
ROS 2가 제대로 작동하는지 간단한 Publisher/Subscriber 예제로 테스트해봅시다.
5-1. 터미널 2개 준비
SSH를 통해 터미널을 2개 접속합니다.
터미널 1 (이미 접속 중): 현재 SSH 세션 사용
터미널 2 (새로 열기): 맥북에서 새 터미널을 열고 다시 SSH 접속:
ssh [사용자명]@[IP주소]
5-2. Talker 실행 (Publisher)
터미널 1에서 실행: ros2 run demo_nodes_cpp talker 는 ROS 2에 기본으로 포함된 예제 퍼블리셔 노드를 실행하여 /chatter 토픽으로 “Hello World” 메시지를 주기적으로 발행함으로써 ROS 2 노드 실행과 토픽 송신이 정상 동작하는지 확인하기 위한 명령입니다.
ros2 run demo_nodes_cpp talker
출력 예시:
[INFO] [1234567890.123456789] [talker]: Publishing: 'Hello World: 0'
[INFO] [1234567890.223456789] [talker]: Publishing: 'Hello World: 1'
[INFO] [1234567890.323456789] [talker]: Publishing: 'Hello World: 2'
...

5-3. Listener 실행 (Subscriber)
터미널 2에서 실행:
ros2 run demo_nodes_py listener는 ROS 2의 예제 구독자 노드를 실행하여 /chatter 토픽으로 발행되는 메시지를 실시간으로 수신·출력함으로써 노드 간 통신이 정상 동작하는지 확인하는 명령입니다.
ros2 run demo_nodes_py listener
출력 예시:
[INFO] [1234567890.124567890] [listener]: I heard: [Hello World: 0]
[INFO] [1234567890.224567890] [listener]: I heard: [Hello World: 1]
[INFO] [1234567890.324567890] [listener]: I heard: [Hello World: 2]
...

5-4. 테스트 결과
이로써 ROS 2의 기본 통신 구조가 정상적으로 동작함을 확인했습니다. 수고하셨습니다!
- Talker 노드는 /chatter 토픽으로 메시지를 발행하고
- Listener 노드는 해당 토픽을 구독하여 메시지를 수신합니다
이는 ROS 2 환경이 올바르게 설치되었고, 노드 간 DDS 기반 통신이 정상적으로 구성되었음을 의미합니다.
6. 트러블슈팅
문제 1: apt upgrade 중 "Daemons using outdated libraries" 팝업
증상:
sudo apt upgrade -y 실행 중 서비스 재시작 확인 팝업이 나타남
해결 방법:
- Tab 키로
<Ok>선택 (기본값) - Enter 키 눌러 확인
- 체크된 서비스들이 자동으로 재시작됨
설명:
- 시스템 업그레이드 시 업데이트된 라이브러리를 사용하는 서비스들을 재시작할지 묻는 정상적인 프롬프트
- 가상머신 첫 설치 환경이므로 모든 서비스 재시작해도 안전
<Ok>선택 권장 (자동 재시작)
7. 마무리
축하합니다! 🎉
이제 맥북 Apple Silicon 환경에서도 ROS 2 Humble을 활용한 개발을 본격적으로 시작할 수 있습니다. 가상머신 기반이지만, SSH와 원격 개발 도구를 활용하면 실제 Ubuntu 머신과 거의 동일한 개발 경험을 얻을 수 있습니다.
다음 단계로는 ROS 2의 핵심 개념을 이해하고, 시뮬레이션과 실제 로봇 프로젝트로 확장해나가 봅시다.
완료한 작업:
- ✅ UTM 가상머신 설치 및 설정
- ✅ Ubuntu 22.04 ARM64 설치
- ✅ SSH 접속으로 편리한 개발 환경 구축
- ✅ ROS 2 Humble 설치 및 환경 설정
- ✅ Publisher/Subscriber 통신 테스트 성공
다음 단계
이제 본격적인 ROS 2 학습을 시작할 수 있습니다:
-
ROS 2 기본 개념
- 노드(Node), 토픽(Topic), 서비스(Service) 이해하기
- ROS 2 공식 튜토리얼: https://docs.ros.org/en/humble/Tutorials.html
-
간단한 로봇 프로젝트
- TurtleSim으로 기본 조작 배우기
- 간단한 노드 직접 작성해보기
-
시뮬레이션 실습
- Gazebo 설치
- TurtleBot3 시뮬레이션
- SLAM (Simultaneous Localization and Mapping) 실습
-
실제 프로젝트 구현
- 센서 데이터 처리
- 자율주행 알고리즘
- Computer Vision 통합
참고 자료
- ROS 2 공식 문서: https://docs.ros.org/en/humble/
- UTM 공식 사이트: https://mac.getutm.app/
- ROS 2 튜토리얼: https://docs.ros.org/en/humble/Tutorials.html