MacOS Catalina를 Vagrant 상자에 넣습니다.
일부 시퀀스가 단축되었습니다. 원래 실행 시간 14.5 분.
'vmware_fusion', 'vmware_desktop', 'parallels'또는 'virtualbox'형식에서 상자 생성을 지원합니다.
다음 소프트웨어가 필요합니다. 언급 된 버전 이외의 버전은 작동 할 수 있지만 테스트 된 최신 버전입니다.
macinbox 에서 만든 상자를 부팅하려면 Vagrant가 필요합니다.
상자를 만들려면 MacOS 설치 프로그램 응용 프로그램이 필요합니다. 카탈리나 호스트를 사용하는 경우 카탈리나 설치 프로그램을 사용해야합니다.
Catalina 호스트는 이전에 사용할 수 없으며 (예 : MacOS 10.14 Mojave) 설치 업체는 Catalina 설치 업체를 사용할 수 없습니다.
Mojave 호스트를 사용하는 경우 Mojave 설치 프로그램을 사용해야합니다.
호스트 및 설치 프로그램에 동일한 버전을 사용하는 것이 좋습니다. 그러나 이전 버전의 MACOS 설치 프로그램 (예 : MACOS 10.13 High Sierra)도 Mojave 호스트와 함께 작동 할 수 있으며 그 반대도 마찬가지입니다.
참고 : MACOS 가상화의 허용 가능성에 대해 궁금한 점이 있으면 사용중인 가상화 소프트웨어의 문서와 MacOS의 소프트웨어 라이센스 계약을 검토 할 수 있습니다.
다음 가상화 응용 프로그램 중 하나가 필요합니다.
'vmware_fusion'또는 'vmware_desktop'형식에서 상자를 생성하고 부팅하려면 다음과 같습니다.
'Parallels'형식으로 상자를 작성하고 부팅하려면 다음과 같습니다.
'VirtualBox'형식으로 상자를 작성하고 부팅하려면 다음과 같습니다.
보석 설치 :
$ sudo gem install macinbox
sudo 와 No Arguments로 실행하면 macinbox 도구는 'MacInbox'라는 Vagrant VMware 상자를 생성하고 추가하여 'Vagrant'사용자의 데스크탑에 전체 스크린을 부츠로 부팅합니다.
$ sudo macinbox
시간이 걸릴 수 있으므로 인내하십시오. (2.5GHz MacBookPro11,5에서는 약 11 분 30 초가 소요됩니다.) 도구가 완료된 후 상자와 함께 새로운 Vagrant 환경을 만들어 시작할 수 있습니다.
$ vagrant init macinbox && vagrant up
이 명령을 실행 한 후 잠시 동안 가상 머신 디스플레이가 전체 화면이 나타납니다. (명령 -Control-F를 눌러 전체 화면 모드를 종료하십시오.) 가상 머신에서 부팅이 완료되면 (약 1-2 분) 'Vagrant'사용자의 데스크탑이 표시되고 가상 시스템을 사용하기 시작할 수 있습니다.
Parallels Desktop Box를 만들려면 --box-format 옵션을 전달하십시오.
$ sudo macinbox --box-format parallels
고급 옵션을 보려면 --help 옵션을 전달하십시오.
Usage: macinbox [options]
--box-format FORMAT Format of the box (default: vmware_desktop)
-n, --name NAME Name of the box (default: macinbox)
-d, --disk SIZE Size (GB) of the disk (default: 64)
-t, --fstype TYPE Type for disk format (default: APFS)
-m, --memory SIZE Size (MB) of the memory (default: 2048)
-c, --cpu COUNT Number of virtual cores (default: 2)
-s, --short NAME Short name of the user (default: vagrant)
-f, --full NAME Full name of the user (default: Vagrant)
-p, --password PASSWORD Password of the user (default: vagrant)
--installer PATH Path to the macOS installer app
--installer-dmg PATH Path to a macOS installer app disk image
--vmware PATH Path to the VMware Fusion app
--parallels PATH Path to the Parallels Desktop app
--user-script PATH Path to user script
--no-auto-login Disable auto login
--no-skip-mini-buddy Show the mini buddy on first login
--no-hidpi Disable HiDPI resolutions
--no-fullscreen Display the virtual machine GUI in a window
--no-gui Disable the GUI
--use-qemu Use qemu-img (vmware_desktop only)
--verbose Enable verbose mode
--debug Enable debug mode
-v, --version
-h, --help
디버그 모드를 활성화하면 도구가 정리되지 않고 출구 후 중간 파일 (디스크 이미지, VMDK 및 상자)이 보존됩니다. 경고!!! 이 중간 파일은 매우 크며이 옵션을 사용할 때 디스크 공간이 매우 빠르게 떨어질 수 있습니다.
이 고급 예제는 4 개의 코어, 8GB 또는 RAM 및 128GB 디스크와 함께 'MacInbox-Large-Nogui'라는 상자를 생성하고 추가합니다. 자동 로그인을 끕니다. VM이 시작될 때 VMware GUI가 표시되는 것을 방지합니다.
$ sudo macinbox -n macinbox-large-nogui -c 4 -m 8192 -d 128 --no-auto-login --no-gui
Vagrant_home 환경 변수 세트가 있고 해당 위치의 '박스'디렉토리에 생성 된 상자를 추가하려면 Sudo에게 MacInbox로 전달하도록 지시해야합니다.
$ sudo "VAGRANT_HOME=${VAGRANT_HOME}" macinbox
기본적으로 macinbox HIDPI 해상도를 활성화하도록 게스트 OS를 구성하고 기본 디스플레이 해상도를 사용하도록 가상 시스템을 구성합니다. --no-hidpi 옵션을 사용 하여이 동작을 비활성화 할 수 있습니다.
기본적으로 macinbox VMware 도구가 사전 설치된 'VMware_desktop'형식의 Vagrant Box를 만듭니다.
--box-format 옵션을 사용하여 박스 형식이 'parallels'로 설정되면 Parallels 도구가 대신 사전 설치됩니다.
상자 형식이 'VirtualBox'로 설정된 경우 게스트 확장 기능이 설치되지 않습니다. 일부 기능은 VirtualBox와 다르게 작동합니다. 화면 해상도는 1280x800으로 설정되며 HIDPI 해상도는 지원되지 않습니다. --no-hidpi 옵션을 사용하지 않는 한 GUI 스케일 팩터는 2.0으로 설정됩니다 (VM이 망막 디스플레이가있는 호스트에서 올바르게 표시됨). 마지막으로, SSH 포트 포워드는 기본적으로 호스트가 게스트에 연결할 수 있도록 활성화됩니다.
추가 상자 사용자 정의가 필요한 경우 --user-script 옵션을 사용하여 사용자 스크립트를 지정할 수 있습니다. 스크립트는 OS가 설치된 후에 실행되며 설치 위치로의 경로가 첫 번째이자 유일한 인수로 제공됩니다. 스크립트는 Code Zero와 함께 실행 가능하고 종료해야합니다. 그렇지 않으면 Box Creation이 중단됩니다.
--installer-dmg 옵션을 사용하면 MacOS 설치 프로그램이 포함 된 디스크 이미지로가는 경로를 표시하고 --installer 옵션을 재정의 할 수 있습니다. 지정된 디스크 이미지는 아직 장착되어서는 안됩니다. macinbox 필요에 따라 마운트하고 마운트하지 않습니다. 이 기능을 사용하면 macinbox 워크 플로의 일부로 InstallInstallMacos.py가 작성한 설치자 디스크 이미지를 사용할 수 있습니다.
이 도구는 다음과 같은 작업을 수행합니다.
이 도구로 생성 된 상자에는 다음 기본 Vagrant 동작을 비활성화하는 내장 VagrantFile이 포함되어 있습니다.
기본 SSH 포트 전달을 다시 활성화하려면 환경의 vagrantfile에 다음 줄을 추가 할 수 있습니다.
config.vm.network :forwarded_port, guest: 22, host: 2222, id: "ssh"
기본 동기화 된 폴더를 다시 활성화하려면 다음 줄을 환경의 vagrantfile에 추가 할 수 있습니다.
config.vm.synced_folder ".", "/vagrant"
이 도구는 첫 번째 부팅 전에 MACOS의 새로운 설치에 수행 해야하는 모든 작업을 수행하여 MACOS를 완벽한 사용자 경험으로 부팅하는 Vagrant Box로 전환합니다. 그러나이 도구는 또한 최소한의 구성을 수행하기위한 것입니다. 대신 vagrantfile 또는 packer 템플릿의 프로비저닝 단계로 연기 될 수있는 일은하지 않습니다.
이 프로젝트는 다른 사람들의 위대한 작품에서 영감을 얻었습니다.
이 프로젝트는 Robot 씨의 에피소드에서 영감을 얻습니다. 이 에피소드에서 엘리엇은 신뢰할 수없는 CD-ROM의 내용을 조사하기 위해 신선한 Linux 데스크탑 환경을 실행하는 가상 기계로 보이는 것을 빠르게 부팅합니다. 내가 생각하면서 "나는 MacOS로 그런 종류의 일을 할 수 있기를 원한다!" 분명히 나는 인터넷에서 신뢰할 수없는 소프트웨어를 다운로드 한 유일한 사람이 아니며, 기본 작업 환경을 위험에 빠뜨리지 않고도 쉽게 평가할 수있는 방법이 있기를 바랐습니까?
이 프로젝트는 Tim Sutton의 OSX-VM-Templates Project에서 영감을 얻은 Vagrant-Box-Macos 프로젝트의 직접적인 후임자입니다.
MACOS 10.12.4의 출시로 MACOS 설치를 사용자 정의하기위한 일반적인 기술은 모든 패키지가 Apple에 의해 서명되도록 새로운 설치 프로그램 요구 사항에 의해 방해를 받았습니다. vagrant-box-macos MacOS 10.13 High Sierra를 지원할 수 있도록 다양한 기술을 시도한 후, 나는 상자 생성에 대한 다른 접근법이 필요하다고 결정했고 macinbox 탄생했습니다.
sudo gem install bundler 및 bundle install 실행하여 시작하십시오.
보석을 설치하지 않고 GIT 작업 공간의 루트에서 macinbox 직접 실행하려면 sudo bundle exec macinbox 실행하십시오.
이 보석을 로컬 컴퓨터에 설치하려면 sudo bundle exec rake install 실행하십시오.
실험 할 수있는 대화식 프롬프트를 위해 bin/console 실행할 수도 있습니다. 예를 들어:
opts = Macinbox::CLI::DEFAULT_OPTION_VALUES
opts[:collector] = Macinbox::Collector.new
opts[:full_name] = "Vagrant"
opts[:password] = "vagrant"
opts[:image_path] = "macinbox.sparseimage"
opts[:boxes_dir] = File.expand_path "~/.vagrant.d/boxes"
$debug = $verbose = true
include Macinbox::Actions
opts[:macos_version] = CheckMacosVersions.new(opts).run
CreateImageFromInstaller.new(opts).run
opts[:vmdk_path] = "macinbox.vmdk"
CreateVMDKFromImage.new(opts).run
opts[:box_format] = "vmware_desktop"
opts[:box_path] = "vmware_desktop.box"
CreateBoxFromVMDK.new(opts).run
InstallBox.new(opts).run
opts[:hdd_path] = "macinbox.hdd"
CreateHDDFromImage.new(opts).run
opts[:box_format] = "parallels"
opts[:box_path] = "parallels.box"
CreateBoxFromHDD.new(opts).run
InstallBox.new(opts).run
opts[:vdi_path] = "macinbox.vdi"
CreateVDIFromImage.new(opts).run
opts[:box_format] = "virtualbox"
opts[:box_path] = "virtualbox.box"
CreateBoxFromVDI.new(opts).run
InstallBox.new(opts).run
opts[:collector].cleanup!
새 버전을 해제하려면 version.rb 에서 버전 번호를 업데이트 한 다음 버전에 대한 GIT bundle exec rake release 를 생성하고 GIT 커밋 및 태그를 누르고 .gem 파일을 rubygems.org로 누릅니다.
https://github.com/bacongravy/macinbox에서 버그 보고서 및 풀 요청은 환영합니다.