- BSD 데스크톱과 chroot, jail을 자주 쓰는 사용자가 Alpine Linux를 시험하며, 보안·단순성·자원 효율 중심 설계가 BSD 사용자에게 익숙하게 다가온다고 봄
- 작은 크기와 제한된 의존성 덕분에 Alpine은 컨테이너 베이스 이미지뿐 아니라 임베디드 시스템, 라우터, 모바일 기기, 서버, 데스크톱까지 폭넓게 쓰임
- 설치는 라이브 환경에서
setup-alpine을 실행해 키맵, 네트워크, 타임존, SSH, NTP 같은 기본 설정을 순서대로 잡는 방식임
- 첫 부팅 후에는 OpenRC,
musl, busybox 조합이 드러나며, /etc/rc.conf와 crond(8) 같은 요소가 BSD식 rc 경험과 맞닿아 있음
apk 패키지 관리, 저장소 설정, ZFS 설치 가능성까지 확인한 뒤 테스트와 서버용 주 Linux 배포판 후보로 진지하게 고려할 만큼 좋은 인상을 받음
BSD 사용자에게 익숙한 Alpine의 성격
- Alpine Linux는 보안, 단순성, 자원 효율을 중시하는 파워 유저를 위한 독립·비상업·범용 Linux 배포판임
- 사용자 영역 바이너리는 PIE(Position Independent Executables) 와 stack smashing protection으로 컴파일되어 특정 제로데이와 취약점 악용을 줄이는 데 초점을 둠
- Natanael Copa가 2005년에 프로젝트의 기원을 논의했을 만큼 Alpine은 예상보다 오래된 프로젝트임
- BSD 계열처럼 임베디드 시스템, 라우터, 모바일 기기뿐 아니라 일반 서버와 데스크톱에서도 쓰임
- 작은 크기와 제한된 의존성 때문에 Linux 컨테이너의 베이스 이미지로 널리 쓰이며,
chroot(8)에서 쉽게 실행하기 위한 alpine-chroot-install 같은 도구도 있음
- NetBSD
chroot(8)와 FreeBSD jail을 테스트와 배포에 많이 쓰는 사용자에게 특히 흥미로운 지점임
설치 경험
- Alpine은 ARM, PPC64, x86, x86_64 등 여러 빌드를 제공함
- Xen ISO 이미지를 VM에서 부팅했지만, Dom0를 DomU로 잘못 읽은 선택이었음
- Dom0는 Xen 하이퍼바이저를 뜻하며 게스트가 아님
- 그래도 표준 ISO처럼 부팅과 설치는 진행됨
- 설치는 라이브 환경에서
root와 빈 비밀번호로 로그인한 뒤 setup-alpine을 실행하는 방식임
- 설치 중에는 키맵, 네트워킹, 타임존, root 인증 같은 기본 항목을 차례로 설정함
- 시작 단계에서 SSH 키를 주입할 수 있음
- 이후 오케스트레이션 도구로 VM이나 서버 묶음을 배포할 때 유용함
- OOB 콘솔을 제공하지 않는 호스팅 환경에서도 도움이 됨
- SSH 서버와 NTP 클라이언트를 선택할 수 있어 OpenSSH와 openntpd를 고를 수 있었음
- 설치 과정은 Xen에서 동작 중임을 올바르게 감지함
- LVM 설정도 가능하지만, 이번에는 Alpine이
sys 파티션이라고 부르는 표준 구성을 선택함
첫 부팅 후 보이는 시스템 구성
- 첫 부팅 후
dmesg(1)에서 시스템이 OpenRC를 사용 중임을 확인할 수 있음
- OpenRC는 이식성, 작은 크기, 빠름, 효율, 투명성, 보안을 갖춘 init 시스템임
- BSD식 rc 스크립트 작성에 익숙한 사용자에게 OpenRC는 매우 친숙함
/etc/rc.conf와 crond(8) 같은 요소가 BSD 사용자 경험과 맞닿아 있음
- Devuan, Gentoo, Alpine처럼 OpenRC를 쓰는 Linux 배포판이 있어 Linux가 다시 재미있게 느껴짐
- Alpine은 OpenRC와 함께 musl을 포함하고 busybox를 사용함
- musl과 busybox는 GCC 및 GNU coreutils보다 제한적이지만, 베이스 시스템의 작은 크기와 공격 표면 축소에 기여함
- llvm도 사용할 수 있음
- MirBSD Korn shell도 패키지로 제공되며, 선호하는 대화형 셸 중 하나임
패키지 관리와 저장소
- Alpine의 기본 패키지 관리자는 apk임
- Linux에서 일반적인 방식처럼
apk는 베이스 시스템과 패키지를 구분하지 않고 함께 업데이트함
- BSD에서처럼 권한 없는 복사본으로 실행할 수 있는지는 아직 확인하지 않음
- pkgsrc도 사용할 수 있어 대안이 남아 있음
- 저장소 설정은
/etc/apk/repositories에 있음
- 설치기가 제공한 두 번째 URL의 주석을 해제하면 community 저장소를 활성화할 수 있음
- Alpine에는
testing 저장소도 있으며, 자체 저장소도 추가 가능함
- 사용법은 단순하지만 기존 습관 때문에
apk add 대신 apt install을 잘못 입력하기도 함
- 공식 패키지 웹 인터페이스는 pkgs.alpinelinux.org에 있음
- Alpine 저장소는 pkgs.org에서도 확인할 수 있음
ZFS와 서버용 후보로서의 평가
- 몇 가지 패키지를 설치한 뒤 콘솔 전용 노트북에서 쓰던 “필수 도구” 구성을 갖출 수 있었음
- 가장 놀라웠던 패키지 중 하나는 ZFS였음
- 설치와 커널 모듈 로드는 두 명령으로 가능했음
# apk add zfs zfs-lts
# modprobe zfs
- root 파일시스템을 ZFS로 구성하는 일은 더 복잡할 수 있음
- 업그레이드 후 ZFS 구성이 어떻게 동작할지는 아직 확인하지 않음
- 지금까지의 경험만으로도 테스트와 서버용 주 Linux 배포판으로 전환을 진지하게 고려할 만큼 인상이 좋음
htop(1)과 lsof(1)에서 알아볼 수 있는 소수의 프로세스만 보이는 점, OpenRC 사용, 단순해 보이는 패키지 관리, 쉬운 설정이 장점으로 꼽힘
- 현대적이고 기능적인 “Occam’s Linux”가 있다면 Alpine이 그 모습에 가깝다고 평가함
- busybox보다 더 많은 기능이 필요할 경우 uutils를 실행해볼 수 있겠지만, 서버에서는 필요성이 낮아 보임