오래된 맥미니 OS 업그레이드와 서비스 실행 환경 정리
2012 맥미니를 Catalina로 사용하다 보니 개발 도구를 설치할 때 제약이 생겼습니다. 기존 파일과 앱을 유지하면서 OS를 올리기 위해 OCLP를 사용했습니다.
OS 설치 후에는 Home Assistant VM이 자동으로 시작되지 않았고, VirtualBox 버전과 저장 상태도 정리해야 했습니다. 이 글은 해당 장비에서 진행한 업그레이드와 복구 기록입니다. 기종마다 필요한 패치가 달라 그대로 따라 하는 설치 가이드보다는, 업데이트 과정에서 나눠 확인한 항목을 중심으로 정리했습니다.
최초 업그레이드와 후속 업데이트
9월에는 USB 설치 매체로 Sequoia를 설치했습니다. 재부팅 전 Home Assistant VM을 정상 종료하고, OS 전환 뒤 개발 도구와 VM을 각각 확인했습니다.
10월의 마이너 업데이트에서는 OCLP 앱, 내부 EFI와 부팅 설정, Root Patch 상태를 따로 봤습니다. 패처 앱을 업데이트했다고 실제 부팅에 쓰는 설정이나 현재 OS의 패치까지 모두 바뀐 것은 아니었습니다.
| 확인 대상 | 확인 내용 |
|---|---|
| OCLP 앱 | 패처 프로그램 버전 |
| EFI·부팅 설정 | 실제 부팅에 사용하는 구성 |
| OS | 현재 설치된 빌드 |
| Root Patch | 현재 OS에 필요한 패치 적용 상태 |
| 그래픽 드라이버 | 패치 후 드라이버 로드와 Metal 인식 |
이 장비에서는 OS에 맞는 패치 기록과 HD 4000 드라이버 로드, Metal 인식을 확인했습니다. 이런 확인 항목을 남겨 두면 다음 업데이트에서 앱 버전만 보고 작업을 끝내는 일을 피할 수 있습니다.
Home Assistant 자동 시작 확인
OS 업그레이드 후 HA가 자동으로 올라오지 않아 launchd 등록부터 살펴봤습니다. 등록과 실행 경로는 남아 있었습니다. 문제는 로그인 시 한 번 실행한 작업이 VirtualBox 재설치 전에 실패했고, 설치 후에 다시 실행되지 않았다는 점이었습니다.
작업을 다시 실행해 VM이 시작되는 것을 확인했습니다. 이어 VirtualBox 본체와 Extension Pack 버전이 다른 문제를 정리했습니다. 자동 시작 설정이 사라진 경우와 실행 시점에 의존 프로그램이 준비되지 않은 경우는 조치가 달랐습니다.
저장 상태 오류와 VM 재시작
확장팩을 맞춘 뒤에는 VM의 저장 상태를 복원하는 과정에서 오류가 났습니다. 복구용 설정과 저장 상태를 보존하고, 기존 가상 디스크로 새로 부팅했습니다.
저장 상태에는 실행 중이던 메모리와 장치 상태가 들어갑니다. HA 데이터를 담은 가상 디스크와는 다릅니다. 저장 상태 복원에 실패했다고 데이터 디스크까지 새로 만들 필요는 없었습니다.
VM 시작 명령이 끝난 직후에는 HA 웹이 아직 응답하지 않았습니다. 서비스가 준비될 때까지 기다린 뒤 HTTP 응답과 실제 접속을 확인했습니다.
복구 전에 읽어볼 VM 정보
가상 디스크와 저장 상태를 헷갈리지 않으려면 복구 전에 어떤 파일이 어느 VM에 연결돼 있는지 확인해 두는 편이 좋습니다. 다음은 VirtualBox가 설치된 Mac에서 사용할 수 있는 조회 명령입니다. VM 이름은 예시입니다.
VBoxManage list vms
VBoxManage list runningvms
VBoxManage showvminfo "Home Assistant" --machinereadable
VBoxManage list extpacksshowvminfo에서는 VM의 상태, 메모리와 CPU 설정, 연결한 저장장치 경로를 볼 수 있습니다. 오류가 저장 상태 복원에서 생겼다면 그 파일과 데이터 디스크를 구분해 보관해야 합니다. 기존 디스크로 새로 부팅하는 것은 과거 실행 중이던 메모리 상태를 복원하는 것과 다릅니다.
복구 뒤에는 VM 실행 목록과 HA의 실제 응답을 이어서 봅니다. VM의 부팅과 HA 초기화는 시간이 다를 수 있어 시작 명령 직후의 연결 실패만으로 다시 종료하지 않았습니다. 같은 주소를 일정 시간 간격으로 확인하고, HA 쪽 로그와 Observer도 함께 봤습니다.
대화형 셸과 서비스의 실행 파일
Node 문제도 비슷했습니다. 터미널의 현재 설정을 확인하는 명령과 서비스에 적힌 실행 파일을 확인하는 작업을 나눴습니다.
command -v node
node --version
launchctl print "gui/$(id -u)/com.example.gateway"마지막 label은 예시이므로 등록한 실제 작업 이름으로 바꿔야 합니다. command -v node가 새 버전을 가리키더라도 plist의 ProgramArguments가 예전 실행 파일을 지정했다면 자동 실행은 그 경로를 사용합니다. nvm은 셸에서 선택하는 도구이므로 서비스가 셸 초기화 파일을 읽는다고 기대하지 않았습니다.
| 설정 방식 | 자동 실행에서 확인할 점 |
|---|---|
| 절대 경로의 Node | 지정한 파일이 업데이트 후에도 존재하는지 |
| 실행 래퍼 | 래퍼 안에서 선택하는 버전과 PATH |
| 명령 이름만 지정 | 서비스 환경의 PATH에서 무엇을 찾는지 |
이 구분을 한 뒤에는 실행 경로를 확인하기 위해 OS 전체를 다시 설정할 필요가 줄었습니다. 기본 프로젝트와 OpenClaw의 런타임을 따로 둔 이유도 서로 다른 요구사항을 한꺼번에 바꾸지 않기 위해서였습니다.
OS 업데이트 후 서비스 확인
업데이트 과정에서는 OS 부팅, 그래픽 패치, VM 시작, HA 접속을 별도 항목으로 확인했습니다. OS가 부팅돼도 그 위에서 돌던 서비스가 모두 준비됐다는 의미는 아니었습니다.
OS 전환 뒤 정리한 Node 실행 경로와 컨테이너 도구도 아래에 함께 담았습니다. 여러 서비스를 순서대로 복구하는 점검 절차는 별도 글에서 다룹니다.
Node와 컨테이너 실행 환경 정리
맥미니 OS를 올린 뒤 터미널에서는 새 Node가 실행됐지만 OpenClaw 자동 실행 설정은 예전 Node를 가리키고 있었습니다. nvm use로 현재 셸을 바꾸는 것만으로 서비스 실행 경로까지 바뀌지는 않았습니다.
터미널에서 명령이 동작하는지와 자동 실행 서비스가 같은 환경을 사용하는지를 나눠 확인했습니다. 이 글에서는 Node 경로를 정리한 과정과 같은 장비에 Colima를 설치한 내용을 다룹니다.
기본 런타임과 서비스 런타임 분리
전체 프로젝트의 Node 버전을 한 번에 바꾸지 않고 기본 Node는 LTS 계열로 두되 OpenClaw는 별도 버전을 사용하도록 했습니다.
OpenClaw Gateway의 실행 파일뿐 아니라 서비스의 PATH와 CLI 호출 래퍼도 함께 맞췄습니다. 공용 시작 스크립트는 기본 버전을 선택하고, OpenClaw 래퍼는 전용 버전을 지정하는 방식입니다. 이전 설치를 정리하면서도 설정과 데이터는 유지했습니다.
| 실행 위치 | 확인 대상 |
|---|---|
| 대화형 터미널 | 현재 Node와 nvm 기본값 |
| launchd | plist에 지정된 실행 경로와 PATH |
| OpenClaw Gateway | 실제 사용하는 Node와 준비 상태 |
| 독립 CLI | 실행 파일 위치와 설치 방식 |
터미널에서 설정한 PATH에 기대지 않도록 최소 환경에서도 실행해 봤습니다. 실행 경로가 맞더라도 Gateway가 요청을 받을 때까지는 시간이 걸려, 프로세스 시작과 서비스 준비 상태를 따로 확인했습니다.
Colima 설치와 컨테이너 실행
컨테이너는 Docker Desktop GUI 없이 사용하기 위해 Colima와 Docker CLI, Compose, Buildx를 설치했습니다. GUI 프로그램을 쓰지 않아도 컨테이너용 Linux VM은 필요하므로 자원 설정을 따로 정했습니다.
초기 구성은 CPU 2개, 메모리 2GB, 최대 디스크 30GB였습니다. 여기서 최대 디스크는 VM이 사용할 수 있는 한도입니다. 처음부터 호스트에서 같은 크기의 공간을 모두 차지한다는 뜻은 아닙니다.
설치 후에는 hello-world 실행 외에도 이미지 빌드와 Compose 웹 컨테이너를 확인했습니다. 호스트 공유 파일을 컨테이너에서 읽고 localhost로 HTTP 응답을 받는 것까지 확인해, 제 작업에서 필요한 기본 경로가 연결됐는지 살펴봤습니다.
자동 실행 설정
당시 Colima는 자동 시작을 등록하지 않고 사용 전에 직접 시작하도록 구성했습니다. 설치 확인과 재부팅 후 자동 복구는 별도의 작업으로 남긴 것입니다.
OS 업그레이드 이후에는 Home Assistant의 실행 상태를 확인하고, 터미널과 자동 실행 서비스가 사용하는 Node·CLI 경로를 따로 정리했습니다. 터미널에서 명령이 실행된다는 이유만으로 재부팅 뒤 서비스도 같은 환경으로 올라오는 것은 아니었습니다.
이때 Colima는 필요할 때 직접 시작하는 상태로 뒀습니다. 이후 서비스가 늘면서 자동 시작 설정을 저장하고 복원하는 절차를 추가했으며, 그 내용은 홈서버 점검과 서비스 복구 글에서 이어집니다.