개요
Ventoy는 ISO나 WIM파일등을 USB장치에 굽지 않고 직접 그 파일로 부팅할 수 있게 해주는 소프트웨어입니다.
부팅하려는 PC의 환경과 사용하려는 설치미디어에 따라 약간의 호환성 이슈가 있긴 하지만, 단순한 윈도우 설치부터 PE부팅까지 할 수 있어 굉장히 유용한 소프트웨어입니다.
iVentoy는 Ventoy를 PXE부팅을 이용해 네트워크 부팅에서 이용할 수 있게 만든 것으로, USB에 이미지 파일을 복사하는 수고조차 덜어줄 수 있는 소프트웨어입니다.
도커로 사용하려는 이유
제 설치 미디어 파일들은 전부 TrueNAS에 올라가 있고, Proxmox에서는 아래처럼 해당 풀을 SMB로 마운트 해 사용중이었습니다.
한 곳에 이쁘게 몰아놓고 잘 사용중인 파일들을 불필요하게 복사하지 않고 사용할 방법을 찾던 중, Navystack이라는 한국인 분이 만드신 도커 이미지를 찾아 TrueNAS에서 바로 iVentoy를 실행시켜보며 이 글을 작성하게 되었습니다.
그냥 공식 리눅스용 클라이언트도 있으니, VM 하나 만들어서 TrueNAS 풀을 마운트하고 docker-compose하면 되지 않을까 싶으실텐데, TrueNAS에서 SMB/NFS 관련 설정을 하나 건들때마다 VM을 하나하나 찾아가서 설정 건드려주는 일을 만들고 싶지 않았습니다 =ㅅ=;.. 바꿔 말하면 관리해야 할 부분을 최대한 줄이고 싶었습니다.
iVentoy 도커 구동하기
Pull Image
이 글 작성 시점 현재 TrueNAS의 버전은 23.10.2(SCALE)입니다.
TrueNAS의 Apps 페이지에서 우측 상단에서 Settings – Manage Container Images를 순서대로 클릭합니다.
우측 상단의 Pull Image를 클릭합니다.
아래와 같은 창이 나타나는데, Image Name에 도커 이미지 이름을 적고 Save버튼을 클릭하면 이미지 다운로드는 완료 됩니다.
iVentoy 설치하기
Apps화면에서 우측 상단의 Discover Apps 버튼을 클릭합니다.
다시 우측 상단의 Custom App을 클릭합니다.
그러면 아래처럼 검은 건 바탕이요, 흰 것은 글씨로다 싶은 페이지가 나타납니다.
여기서 값을 아래처럼 하나하나 입력해 줍니다.
Application Name
Application Name은 자유롭게 붙일 수 있지만, iVentoy임을 알아보기 쉬운 편이 좋습니다.
Container Images
Image repository에는 Pull Image단계에서 입력한 이미지 이름을 기입해줍니다.
Conatiner Environment Variables
iVentoy는 Container Entrypoint에서 건드릴 것은 없으니 넘어가고,
Container Environment Variables에서,
Environment Variable Name = AUTO_START_PXE
Environment Variable Value = true
를 각각 입력해 줍니다.
Networking
Host Interface는 TrueNAS에서 외부와 통신하기 위해 사용하는 인터페이스를 선택해 줍니다.
bond나 bridge(br)를 생성했다면 해당 인터페이스를, 각각의 랜 포트를 개별로 사용하고 있다면 eno, ens, enp1s0 등의 이름을 가진 인터페이스를 선택합니다.
IPAM Type에서 Use static IP를 선택합니다. iVentoy에 TrueNAS의 IP와 별개의 고정IP를 부여하기 위함입니다.
Use DHCP를 선택해 라우터로부터 별도의 IP를 받는 선택을 할 수도 있지만, 고정된IP로 구동할 필요가 있으므로 이렇게 진행합니다.
이후 하단의 Static IP에 사용할 IP주소를 입력하고 오른쪽의 서브넷 마스크 각자의 환경에 맞게 /24 /16 /8을 선택합니다.
일반적인 가정내 공유기 환경이라면 /24입니다.
Storage
Storage탭에는 Host Path Volumes, Memory Backend Volumes, Volumes 3가지의 탭이 있는데
이 중 Host Path Volumes를 선택한 뒤,
Host Path에서는 ISO이미지가 모여 있는 폴더를 선택하고,
Mount Path에는 /app/iso라고 입력해 줍니다.
Workload Deatils
Privileged Mode 하나만 체크해주시면 됩니다.
Install
이후 최하단의 Install버튼을 눌러 iVentoy를 실행합니다.
최초 실행 시 구동에 상당한 시간이 걸리니 3~5분 정도의 여유를 가진 후
설정한 IP(예시 글에선 10.20.10.106):26000으로 접속할 수 있습니다.
iVentoy 시작하기
브라우저를 통해 설정한 IP:26000 으로 접속하면 iVentoy의 WEB UI를 만날 수 있습니다.
좌측 메뉴 중 Configuaration에 진입하여 Boot Configuration 부분을 아래와 같이 설정해 줍니다.
iVentoy의 DHCP Server Mode는 External로 설정하고, 공유기의 dnsmasq에서 iVentoy를 연결하는 것이 정석에 가깝지만, 별다른 연계 없이 윈도우 설치용 정도로 쓰려면 이 설정으로도 문제 없이 사용할 수 있습니다.
Image Management에서는 아래처럼 부팅 이후 끼워넣을 파일(Injection File)이나 자동 설치 스크립트 파일을 지원하고 있어, 필요 시 개별적으로 지정하여 사용할 수 있습니다.
특히, 특정 ISO파일로 부팅 후, 랜카드 드라이버가 없어 부팅 중 필요한 파일을 불러오지 못해 에러가 발생하는 경우가 있는데 Injection기능을 이용해 드라이버 파일을 넣어줄 수도 있습니다.
이제 Boot Information 탭에서 재생 버튼을 눌러 iVentoy를 시작합니다.
그리고, 부팅하려는 컴퓨터의 부팅 순서에서 랜카드를 제일 위로 올리거나, 랜카드만 활성해 줍니다.
BIOS나 UEFI에서 할 수 있으며, 혹은 각 메인보드마다 가지고 있는 부트메뉴 팝업 기능을 활용해 1회성으로 랜카드를 선택해서 부팅할 수도 있습니다.
예시에서는 Proxmox의 VM에서 랜 부팅을 제일 위로 올려보겠습니다.
이후 전원을 넣어 부팅을 시도하면, 아래처럼 iVentoy로 성공적으로 진입하는 모습을 확인할 수 있고,
설치 미디어도 잘 작동되는 것을 보실 수 있습니다.
마무리
이렇게 간단하게 구축만 해 놓아도, 집 안에서 OS를 설치할 때 귀찮게 USB를 준비하는 수고를 덜어낼 수 있습니다.
ISO파일이 저장된 풀을 SMB로 공유해 놓고, 다운받은 파일을 네트워크 환경에서 직접 복사해서 넣으면 되니까요.
혹은 저처럼 Proxmox에도 Storage로 등록한 경우, Proxmox의 Download from URL 기능을 이용해 Proxmox가 다운로드해서 TrueNAS의 저장소에 바로 들어가게 할 수도 있습니다.
iVentoy가 iSCSI나 http부팅을 지원하진 않지만, 각각의 ISO파일들에 대해 http주소로 접근할 수 있게 해주기 때문에, 다른 서비스와 간단하게 연동하기에도 좋기 때문에, 딱 한 번만 구축해 두면 귀차니즘을 조금 덜어줄 수 있을 것으로 생각합니다.