소개
기존에 쓰던 방법은 버전이 너무 오래되었거나 자신의 환경에 맞게 설치하기가 어려웠다.
Windows 10, 11 에서 WSL2를 이용한 Alpine 설치를 최종 정리한다.
설치 뿐만 아니라 필요한 환경(docker, git 등)을 자동으로 구성하도록 한다.
기본적인 테스트를 하고 추가 패키지를 보완한 후 이미지를 백업한다.
추후 Windows를 재설치하거나 기타 문제가 발생할 경우 백업 이미지를 복원한다.
또는 다른 PC로 백업 이미지를 사용할 때도 유용하다.
최소설치만 적용해서 설치파일이나 백업파일을 만들어 두면 빠른 백업, 복구를 할 수 있다.
나머지는 모두 git으로 불러오면 그만이다.
Windows version: 11
WSL version: 2.5.9.0
alpine version: 3.22
docker version: 28.2.2
git version 2.49.0
설치: Install
- 먼저 적당한 작업 폴더(ex D:\Linux)를 만들고 PowerShell을 실행한다.
- 작업 폴더에 alpine minirootfs를 다운 받는다.
- PowerShell에서 wsl로 설치한다.
- 설치완료 후 바로 alpine으로 연결되고 # 프롬프트가 뜬다.
- 이 경우 작업 폴더가 유지되므로 vi로 스크립트를 작성하고 실행해준다.
- 또는 쉘 내에서 필요한 작업을 직접해도 된다.
- 작업이 끝나면 wsl를 종료하고 재실행한다.
- 추후에 재설치 작업을 할 경우 기존 wsl alpine을 제거하고 wsl 설치와 스크립트만 실행하거나 백업된 이미지를 복원하는 방식으로 진행하면 되겠다.
Alpine minirootfs 설치
- Alpine mini root filesystem (x86_64)를 다운로드
- wsl에 설치: PowerShell
--name <WSL 이름> --from-file <Alpine minirootfs파일 경로>
PS> wsl --install --name Alpine322 --from-file alpine-minirootfs-3.22.0-x86_64.tar.gz
- wsl 설치 폴더:
%userprofile%\AppData\Local\Packages\Canonical...\LocalState\ext4.vhdx
- Windows 탐색기 경로:
\\wsl$\Alpinexxx
path - WSL Alpine에서 윈도우즈 파일 시스템 접근:
cd /mnt/c/Users/XXXX
이후 패키지 설치 및 설정 작업
- Alpine Linux Add Packgage and Setup
- 다음 스크립트를 작성하고 실행한다.
/etc/wsl.conf
에 필요한 설정을 포함한다. 다음을 참고.- https://learn.microsoft.com/en-us/windows/wsl/wsl-config
# ./install-alpine-wsl.sh
# exit
- PowerShell에서 alpine 재실행
PS> wsl --shutdown
PS> wsl -d Alpine322
- Install Setup Script:
D:\Linux\install-alpine-wsl.sh
- 다음을 참고해서 자신에게 필요한 내용을 첨삭하면 된다.
- 아래의 경우는 User를 생성하고 Local Time을 KST로 했다.
- Docker를 위해 openrc, docker설치 및 일반유저(borisu)에게 그룹권한 설정을 적용.
- Shell은 최소한의 쉘 ash를 사용 (대부분의 사용환경은 Docker를 이용할 예정)
- ssh, git 설치와 전에 사용 중이던 .ssh 폴더를 사용자 홈에 추가.
#!/bin/sh
# install-alpine-wsl.sh
# Var Set
HOST='Alpine322'
USER='borisu'
TZ='Asia/Seoul'
PKGS='tzdata doas git openssl openssh openrc docker'
WSLCONF='/etc/wsl.conf'
# HostName Set: $HOST: wsl change method
echo -e "[network]\nhostname = $HOST\n" > $WSLCONF
# TimeZone Set: Asia/Seoul
echo "---> Time Zone Set: $TZ"
cp /usr/share/zoneinfo/$TZ /etc/localtime && \
echo $TZ > /etc/timezone
# User Set
echo "---> User Set: ${USER} id:1000"
adduser -D -h /home/${USER} -s /bin/ash $USER
addgroup borisu docker
echo "permit nopass $USER as root" > /etc/doas.d/doas.conf
echo -e "[user]\ndefault = borisu\n" >> $WSLCONF
# Openrc Setup
echo "---> Openrc Setup for Docker of user $USER"
touch /etc/network/interfaces
rc-update add docker default
#rc-update
echo -e "[boot]\ncommand = \"openrc default\"\n" >> $WSLCONF
# Copy Files User Data
echo "---> Copy Files User Data: .profile .ashrc .gitconfig .ssh/ "
su - $USER -c "mkdir git"
su - $USER -c "tar xvf $PWD/user.tar"
- default user setup: PowerShell (
/etc/wsl.conf
에 설정해서 넣어두면 아래 작업 불필요)
PS> wsl --manage Alpine322 --set-default-user borisu
백업: Export
- 사용 중 어느 시점에서 백업하는 방법이다.
- 현재 디렉토리에 Alpine322.tar로 백업된다.
- 백업 전에
wsl -t
로 alpine 중지.
PS> wsl -l -v
PS> wsl -t Alpine322
PS> wsl --export Alpine322 .\Alpine322.tar
제거: Unregister
- 설치된 WSL을 제거하는 방법이다.
- 제거 전에 반드시 백업이 되어 있는 지 확인한다.
PS> wsl -l -v
PS> wsl -t Alpine322 # optional
PS> wsl --unregister Alpine322
PS> wsl -l -v
복구: Import
복구할 경우에는 아래 세 개의 인자가 있으므로 유의한다.
복구할 때 기존 다른 WSL과 이름이 충돌하지 않도록 한다.
복구 시 두 번째 인자(WSL_STORE_DIR)에 이미지가 저장되므로 유의하자.
usage:
wsl --import <WSL_NAME> <WSL_STORE_DIR> <WSL_IMPORT_FILE_DIR>
Imported Folder : <WSL_STORE_DIR> (ex.
c:\WSL\Alpine322\ext4.vhdx
)
PS> wsl --import Alpine322 c:\WSL\Alpine322 .\Alpine322.tar