Skip to main content

3 posts tagged with "Virtual Environment"

Virtual Environment

View All Tags

Apple silicon 맥북에 VM으로 Windows OS 설치하기

· 3 min read
te
Sofrware Engineer

file_f6ZO0497NcTFYzukm1

file_QFTapskg5XV6I29XmO

Macbook M3를 기준으로 작성했습니다.

맥북에 윈도우를 실행하기 위해, LLM을 사용하며 질의응답한 내용을 문서로 정리하여 공유드립니다.

1. Windows ARM ISO 얻기

하단의 링크에서 윈도우 iso 파일을 준비합니다. Microsoft Windows OS ARM64

2. UTM 설치

https://mac.getutm.app/

  1. UTM 공식 사이트(또는 Mac App Store/공식 릴리스)에서 UTM 앱 다운로드 → 애플리케이션 폴더로 드래그.
  2. UTM 실행(보안 경고 나오면 시스템 환경설정 → 보안 및 개인 정보 → 허용).

3. 새 VM 만들기 — 권장 설정 (Step-by-step)

  1. UTM 열고 + Create a New Virtual Machine 클릭.
  2. Virtualize 선택 (에뮬레이션 대신 가상화; Apple Hypervisor 사용).
    • 이유: 성능 향상. M3에서는 Virtualize → ARM64 타입으로 진행해야 함.
  3. Operating System: Windows 선택.
  4. Boot ISO: 앞서 받은 Windows 11 ARM64 ISO 파일을 지정(Attach).
  5. System / CPU & Memory
    • CPU: 4 vCPU 이상 권장 (M3이면 4~8 할당 가능).
    • Memory: 8 GB 권장(가능하면 16GB).
  6. Drives / Storage
    • New Drive → Disk type: qcow2 또는 raw (qcow2는 스냅샷·공간 효율에서 유리).
    • Size: 최소 64 GB 권장 (개발/툴 설치 고려).
    • 부팅 순서(Boot Order): **CD/DVD(ISO)**가 하드 디스크보다 먼저 오도록 설정(설치 미디어로 부팅해야 하므로).
  7. Display
    • Display device: VirtIO GPU (또는 SPICE 관련 드라이버 옵션) 선택.
    • Enable SPICE/Display 기능(UTM UI에 따라 Display 추가).
    • 이 항목을 빠뜨리면 “Display output is not active” 같은 메시지가 뜰 수 있음 — 반드시 추가.
  8. Network
    • NIC: virtio-net-pci (Shared Network / NAT) 선택 — 인터넷 연결 위해.
  9. Sound / USB: 필요하면 추가(선택).
  10. Advanced: QEMU arguments나 기타를 건들 필요는 없음(고급 사용자용).

저장 후 VM 생성 완료.


4. VM 시작 및 Windows 설치

  1. 생성한 VM 선택 → ▶ Start.
  2. 부팅 시 Windows 설치 화면이 뜨면 평소대로 파티션 선택 → Windows 설치 진행.
    • 설치 중 드라이버 오류가 나면 UTM에서 virtio 드라이버/guest tools를 마운트해서 설치해야 함(아래 참고).
  3. 설치가 끝나고 재부팅되면 Windows ARM 환경으로 진입.

5. 필수 게스트 도구(성능/통합 향상)

설치 직후 아래 항목을 설치하면 그래픽, 네트워크, 커서/클립보드 공유 등이 정상 동작한다.

  1. SPICE Guest Tools (Windows용)
    • SPICE 툴은 클립보드 공유, 개선된 그래픽/커서, 드래그 앤 드롭 등을 도와줌.
    • UTM에서는 보통 Spice Guest Tools 또는 SPICE 패키지를 mounting 옵션으로 제공하거나, 외부에서 설치 파일을 얻어 VM 내부에서 실행.
  2. QEMU Guest Agent / VirtIO 드라이버
    • 네트워크(virtio-net), 블록 드라이버(virtio-blk), GPU(virtio-gpu) 등 드라이버가 빠지면 네트워크 안 되거나 성능 저하 발생.
    • UTM에서 제공하는 virtio ISO를 VM에 마운트한 다음 Windows에서 드라이버 설치(장치관리자 → 드라이버 업데이트 → ISO 경로 지정)하여 적용.

네트워크(virtio-net), 블록 드라이버(virtio-blk), GPU(virtio-gpu) 등 드라이버가 빠지면 네트워크 안 되거나 성능 저하 발생.

설치 방법: UTM VM 설정 → Drives → New Drive → Import 또는 Attach에서 SPICE/virtio ISO 선택 → Windows 내부 탐색기에서 실행(.exe) / 장치관리자에서 수동 설치.

6. 권장 리소스/설정 (성능·안정성)

  • CPU: min 4 vCPU, 권장 6~8(여유 메모리 대비)
  • Memory: 8~16 GB
  • Disk: 64GB 이상, 가능하면 qcow2
  • Network: Shared (NAT)으로 설정 후 내부 Windows에서 인터넷 작동 여부 확인
  • 스냅샷: 중요한 변경 전 스냅샷(또는 VM 파일 백업) 권장

7. 라이선스 & Windows 업데이트

  • Insider Preview는 제한된 기간 동안 무료로 사용 가능하지만, 정식 라이선스 정책은 MS 정책 따름.
  • Windows Update 통해 최신 드라이버·보안 업데이트 적용.

Kali Linux에 devilbox 설치 및 local DB 연결하기

· 4 min read
te
Sofrware Engineer

XAMPPHeidiSQL를 사용해야 하는 강의를 들었는데, VM 리눅스 환경과 호환이 좋지 않았습니다. 여러 차례 vm 재설치, 리눅스 재설치 등 삽질을 좀 했습니다. 실습 환경을 그대로 재현하는 건 빠르게 포기하고, debian-linux에서 강의에서 봤던 것과 유사한
AMP 웹 서버 환경 구성과 데이터베이스 관리 툴 dbeaver 을 사용하는 방법을 기록합니다.

❓LAMP Stack (Linux + Apache + MySQL + PHP)

LAMP 스택은 개발자가 웹 사이트와 웹 애플리케이션을 빌드하는 데 사용하는 4가지 소프트웨어 기술의 번들입니다. LAMP는 Linux(운영 체제), Apache(웹 서버), MySQL(데이터베이스 서버), PHP(프로그래밍 언어)의 두문자어입니다. 이 4가지 기술 모두 오픈 소스이므로 커뮤니티에서 유지 관리되며 누구나 무료로 사용할 수 있습니다. 개발자는 LAMP 스택을 사용하여 웹 콘텐츠를 생성, 호스팅 및 유지 관리합니다. LAMP 스택은 오늘날 일반적으로 사용하는 많은 웹 사이트를 지원하는 널리 사용되는 솔루션입니다.

https://aws.amazon.com/ko/what-is/lamp-stack/


Environment

VM : VMware Fusion OS : Kali Linux debian-12-arm

uname -a
Linux kali-blue 6.12.38+kali-arm64
#1 SMP Kali 6.12.38-1kali1 (2025-08-12) aarch64 GNU/Linux

1. install devilbox

xampp를 대체할 오픈 소스 프로젝트 devilbox 를 VM에 설치했습니다. 설치 방법은 레포 README에 잘 설명되어 있습니다.

https://github.com/cytopia/devilbox

# devilbox kali linux에 설치
git clone https://github.com/cytopia/devilbox
cd devilbox
cp env-example .env # 환경 변수는 공유하면 안됩니다

devilbox는 도커 컴포즈에서 실행됩니다.

칼리 리눅스에 dockerdocker-compose를 우선 설치해야 합니다.

sudo apt install docker.io

dockerdocker compose 를 모두 설치했다고 가정하고,
devilbox 를 실행합니다:

docker compose up httpd php mysql

file_pwOFWhod5vNEdNr3Xm

devilbox 를 사용한 이유는 :

  1. xampp 를 대체할 만한 오픈 소스를 찾고 있었고,

  2. devilboxLAMP 개발 환경을 만들어보고 싶었고,

  3. (칼리) 리눅스와 도커를 익히기에도 좋을 것 같았습니다.

  4. 격리된 컨테이너 단위로 취약점 테스트를 수행하는 것이 좋지 않을까 싶었습니다.

file_QUMzluLEUUfHr5ZrWqfile_JesE4pNLPtLSMa0hg7

패키지 설치 도중에 VM 디스크 공간이 부족해
시스템 부하가 걸린 순간이 몇번 있었는데, 용량을 늘려 gparted로 할당도 해보고
df -h , du -sh /* 로 용량도 확인하면서 리눅스 fs를 여러 면으로 탐색했습니다.


VM에서 메모리가 부족하여 docker compose up 을 했더니

도커 이미지 pulling과정에서 시스템이 다운되었습니다 😅

file_pYJ9vUtsCRr4CUKvfk로컬호스트에 설치된 devilbox를 확인할 수 있습니다.

다음으로 dbeaver 를 설치하도록 하겠습니다. snap 패키지 설치 이후 다음 명령어로 쉽게 다운받을 수 있습니다.

sudo snap install dbeaver-ce

.deb 인스톨러 설치 방법은 아래와 같습니다.

https://dbeaver.io/download/

.deb 파일이 다운됩니다. 이 파일에 적절한 권한 설정을 해준 뒤 루트 권한으로 설치파일을 apt 대신 dpkg로 실행합니다. 이 부분을 잘 몰라서 시간 소요가 조금 있었습니다.

sudo chmod +x ./dbeaver-{version}-installer.deb
dpkg -i ./dbeaver-{v}-installer.deb

dpkg

dpkgapt 차이가 궁금해서 검색한 내용을 정리합니다.

  • dpkg: .deb 파일을 직접 설치/삭제하는 저수준(low-level) 패키지 관리 도구

    • .deb 파일을 설치 및 삭제하는 기본 도구
    • 로컬에 있는 .deb 파일만 설치 가능
    • 의존성 문제 자동으로 해결하지 못함
  • apt: dpkg의 기능을 활용하며 의존성 문제를 자동으로 해결하고 원격 저장소에서 패키지를 다운로드하는 고수준(high-level) 도구

    • dpkg를 기반으로 작동하는 고수준 도구
    • 원격 저장소에서 패키지를 자동으로 다운로드 및 설치 가능
    • 의존성 문제 자동으로 해결함
  • 일반적으로 더 편리한 apt를 사용하고, dpkg는 특정 상황에서 사용

npm vs yarn 같은 패키지 매니저 비교로 이해하니 한결 수월합니다. 개인적으로 apt , dpkg 명령어를 잘 모르고 사용하면서 의존성 문제가 많이 생겼던 것 같습니다.


다운로드 완료 이후, 명령어dbeaver 를 입력하면, 브라우저로 DBeaver 웹 UI가 실행됩니다.

file_VPl2o4CDq4pNqsNh40xamppp 의 데이터베이스 조회/조작과 거의 동일한 기능을 제공합니다.

이제 상단의 메뉴바에서 Database > Connect를 실행하여 로컬 MySQL과 연결합니다.

file_GX1v0xTsQdPR0azREofile_KDHlpTEFzloM0WzXzK

file_s4hm3mFvwRMnRmrRfwfile_kCKfk5fLBlRPMWxqf5

사실 devilbox 에도 myAdminPHP 웹 UI를 제공합니다. 여기에서 데이터베이스를 조회/조작할 수 있습니다.

file_zva15F9cg8goHJThSI

Vagrant로 VM Linux 실행하기

· 2 min read
te
Sofrware Engineer

VMware Fusion의 GUI로 매번 칼리 리눅스를 실행하는게 번거로워,
Vagrant를 통해 CLI로 칼리 리눅스를 실행해보고자 합니다.

Mac M3 Sequoia 최신 버전을 기준으로 작성했습니다.

Vagrant

Vagrant는 가상 머신(VM)을 생성하고 관리하는 하이퍼바이저Hypervisor를 사용하여 개발 환경을 자동화 및 관리해주는 도구입니다. 관련 글
VM 실행 환경을 Ruby 파일로 설정하고, vagrant ssh로 vm 환경과 터미널로 연결하여 사용할 수 있습니다. 사용 목적은 개인적으로 Kali Linux에서 거의 대부분 작업을 CLI로 하고 있어 번거롭게 느껴진 부분이 많았기 때문입니다.

Steps

1단계

사전 준비

VMware Fusion 설치: VMWare Fusion을 다운로드 받아 설치합니다.

  • Rosetta 설치 (Mac ARM 환경): M1/M2/M3 등 ARM 기반 Mac의 경우, Rosetta를 먼저 설치해야 합니다.
/usr/sbin/softwareupdate --install-rosetta --agree-to-license
  • Vagrant 설치: Homebrew를 사용하여 Vagrant를 설치합니다.
brew install vagrant
  • vagrant-vmware-utility: vmware fusion을 vagrant에서 실행하기 위해 필요합니다.
  • Vagrant-vmware-desktop 플러그인 설치: VagrantVMware를 연결하기 위한 플러그인을 설치합니다.
brew install --cask vagrant-vmware-utility
vagrant plugin install vagrant-vmware-desktop

2단계

Vagrant 설정 및 실행

VMware Fusion 실행: 처음 실행 시 시스템 설정에서 VMware를 허용해야 할 수 있습니다.

Vagrantfile 생성: Vagrantfile은 가상 머신의 설정 파일로, Ruby로 작성됩니다. 프로젝트 디렉토리에서 vagrant init 명령어로 생성합니다. 아래 명령어로 Kali Linux 전용의 Vagrantfile을 생성합니다.

vagrant init kalilinux/rolling
vagrantfile

Box 지정: Vagrantfile에서 사용할 운영체제 이미지를 지정합니다. 가상 머신 생성 및 실행: vagrant up 명령어를 실행하여 가상 머신을 생성하고 시작합니다. 이후 SSH 접속 vagrant ssh 명령어로 생성된 가상 머신에 접속할 수 있습니다

vagrantfile
vagrant up
vagrant ssh
vagrantfile

vagrant up으로 kalilinux/vagrant.box를 받는 것이 생각보다 오래 걸립니다. vagrant 실행이 완료되면, VM Fusion이 열립니다.