Skip to main content

3 posts tagged with "Virtual Environment"

Virtual Environment

View All Tags

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 플러그인 설치: Vagrant와 VMware를 연결하기 위한 플러그인을 설치합니다.
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이 열립니다.

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

· 4 min read
te
Sofrware Engineer

XAMPP 와 HeidiSQL를 사용해야 하는 강의를 들었는데, 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는 도커 컴포즈에서 실행됩니다.

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

sudo apt install docker.io

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

docker compose up httpd php mysql

file_pwOFWhod5vNEdNr3Xm

devilbox 를 사용한 이유는 :

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

  2. devilbox 로 LAMP 개발 환경을 만들어보고 싶었고,

  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

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

  • 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

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 통해 최신 드라이버·보안 업데이트 적용.