Mac OS에서 Virtualbox VM 실행시 NS_ERROR_FAILURE (0x80004005)에러 발생 해결 방법

MacOS에 Virtualbox 커널 확장 드라이버가 정상적으로 로딩 되지 않아 NS_ERROR_FAILURE (0x80004005) 에러가 발생 하고 있었다.

There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.

Command: ["startvm", "fccacb30-19e0-451b-b625-0e8d44a92cf4", "--type", "headless"]

Stderr: VBoxManage: error: The virtual machine 'test01' has terminated unexpectedly during startup with exit code 1 (0x1)
VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component MachineWrap, interface IMachine

 
Vagrant로 잘 사용하던 Virtualbox VM에서 시뻘건 에러를 토해내고 있는 장면이다. (이러지마라 나 겁많다)

NS_ERROR_FAILURE (0x80004005)
NS_ERROR_FAILURE (0x80004005)

 

1. VirtualBox 6.1.36의 문제

이 문제는 VirtualBox 6.1.36 에서 공통적으로 발생하고 있는 문제였다. (사용중인 MacOS Big Sur 11.6.8 버전에서 발생하고 있다)

문제의 원인: Mac 부팅과정에서 /Library/LaunchDaemons/org.virtualbox.startup.plist 안에 있는VirtualBoxStartup.sh 가 VBoxNetFlt.kext, VBoxNetAdp 등 VM 실행에 필요한 커널드라이버(kernal extension)를 로딩을 해놓도록 되어 있다.

그런데 부팅 과정의 문제로 Virtualbox 커널드라이버가 올라오지 않은 상태가 발생을 했고, 때문에 Virtual Machine(VM) 을 시작하는중 필요한 커널 드라이버를 찾을 수 없어 시뻘건 에러가 발생했던 것이다. (아직도 무섭다)

 

2. 수동으로 커널 드라이버를 로딩

부팅중에만 VirtualBox 커널드라이버 로딩이 실패를 하고 있었다. 부팅이 완료된 후 필요한 커널드라이버를 수동으로 로딩 해주면 문제가 발생하지 않는다. (단, 재부팅후 항상 동일한 작업을 해줘야 한다)

## 수동으로 커널드라이버 로딩 스크립트를 실행 해준다.
> sudo /Library/Application\ Support/VirtualBox/LaunchDaemons/VirtualBoxStartup.sh restart

 
또는 아래와 같이 실행해도 문제가 있는 커널드라이버를 로딩할 수 있다. (마찬가지로 재부팅후 항상 동일한 작업을 해줘야 한다)

## 통상적인 Kernel Extension 로딩 방법으로도 필요한 Virtualbox kext로딩이 가능하다.
> sudo kextload -b org.virtualbox.kext.VBoxDrv && sudo kextload -b org.virtualbox.kext.VBoxNetFlt && sudo kextload -b org.virtualbox.kext.VBoxNetAdp  && sudo kextload -b org.virtualbox.kext.VBoxUSB

 

3. VirtualBox 업데이트

문제를 완전히 해결하기 위해서는 VirtualBox v7.x 버전으로 업데이트를 하면 된다.

  • VirtualBox v7 버전에서는 이 문제를 일으키던 관련된 커널드라이버가 완전히 바뀌었다.
  • 업데이트후 /Library/LaunchDaemons/org.virtualbox.startup.plist 때문에 발생하던 NS_ERROR_FAILURE (0x80004005) 문제가 완전히 해결 되었다.

Homebrew로 VirtualBox 업데이트

brew 명령어가 없다면 VirtualBox 사이트에서 최신버전의 Virtualbox를 다운받아 설치 하자.

## Hoebrew Install : /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
> brew install virtualbox
> brew info virtualbox
==> virtualbox: 7.0.12,159484
https://www.virtualbox.org/
/usr/local/Caskroom/virtualbox/7.0.12,159484 (3 files, 125.8MB)
From: https://github.com/Homebrew/homebrew-cask/blob/HEAD/Casks/v/virtualbox.rb
==> Name
Oracle VirtualBox
==> Description
Virtualizer for x86 hardware
==> Artifacts
VirtualBox.pkg (Pkg)
==> Analytics
install: 3,124 (30 days), 9,168 (90 days), 24,978 (365 days)

 

Headless 모드로 정상실행 여부를 확인할 수 있다.

버추얼박스 헤드리스 모드로 실행하면서 로그를 확인 할 수 있다.

## VBoxManage startvm "test01" --type headless
## 또는 해드리스 명령으로 실행한다.
> VBoxHeadless --startvm "test01"
Oracle VM VirtualBox Headless Interface 7.0.12
Copyright (C) 2008-2023 Oracle and/or its affiliates

Starting virtual machine: 10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

 

End. Fixed

버추얼박스 v7.x 버전으로 업데이트후 문제가 완전히 해결된 것을 확인할 수 있었다.

'DevTools > Mac' 카테고리의 다른 글

[Free APP] Stats - 무료 MacOS 모니터링 APP  (0) 2023.03.05