{{{#!wiki style="margin: -10px -10px;" | <tablebordercolor=#ffdf33> |
Linux 배포판 |
1. 개요
Alpine Linux (알파인 리눅스)A Linux Powered Integrated Network Engine
공식 홈페이지
공식 다운로드 페이지
공식 패키지 페이지
공식 위키
리눅스 커널을 기반으로 한 리눅스 배포판 가운데 하나이며 타 배포판과는 다르게 Musl과 BusyBox를 기반에 두었다. MIT 라이선스 아래에 배포되었으며 LEAF 리눅스 의 포크 버전이다. 알파인 리눅스는 '작고', '보안이 뛰어나고', '간단함'을 염두에 두고 만들어졌으며 이는 LEAF 리눅스 때와 같다. 하지만 시간이 지나면서 이 장점들을 더욱이 다양하게 활용하고 싶은 사람들이 늘어났고 그 결과로 커널을 제외한 배포판의 용량이 8MB 밖에 되지 않으면서 그 위에 수많은 패키지들을 설치할 수 있는 지금의 상태가 되었다.
기본적으로 타 리눅스 배포판보다 훨씬 가볍고 깔끔한 것이 장점이기 때문에 Docker 컨테이너에 사용되는 예는 매우 많고 유명하다. 위에서 커널을 제외한 배포판의 용량이 8MB 밖에 되지 않는다고 하였고 실제로 Docker에 올라가는 Alpine Linux는 그렇다. 그 이유는 Docker가 호스트 운영체제의 커널 위에 격리를 시켜주는 반가상화 시스템이기 때문이다. 이러한 가벼움 덕분에 Docker를 사용하여 많은 패키지를 가상화하여 올리는 경우나 정말로 서버에 올리고 싶은 것만 깔끔히 올리고 싶은 경우에 Alpine Linux를 사용한다. 리눅스를 데스크톱으로 사용하는 경우에는 직접 모든 것을 세팅하는 시간보다 다른 사용성에 더 중점을 맞춘 배포판을 설치하는 시간이 더 짧다.
다만 Alpine Linux는 작은 용량에 더욱더 집중한 탓에 공간복잡도를 늘려 속도를 늘리는 방식의 최적화가 제한되어 적용되어 있기 때문에 퍼포먼스를 극한까지 끌어내야하는 경우에는 권장하지 않는다. 이런 경우에는 흔히 사용하는 RHEL이나 우분투와 같은 다른 리눅스 배포판을 쓰는 것이 좋다.
2. 미러 서버
공식 미러 페이지Alpine Linux는 주로 호스트 환경보다 특정 애플리케이션을 서비스만 하면 되는 컨테이너 환경에서 사용할 수만 있으면 되기 때문에 미러 서버의 규모가 타 배포판에 비해 크지는 않다. 그렇기 때문에 또한 대부분의 아시아 미러 서버는 중국에 위치하여 있다. 기본 미러 서버(dl-cdn.alpinelinux.org)도 국내에서 준수하게 약 100Mbps 정도 수준에서 다운로드할 수 있기 때문에 국내 미러가 필수는 아닌 수준이다. 미러 서버와 같은 경우는 설치 시에 미러 서버를 선택하는 창에서 f 옵션을 사용하면 지연 속도에 기반하여 가장 빠른 미러를 선택해준다.
3. 특징
3.1. 가벼운 용량
가벼운 용량을 컨셉으로 잡은 덕분에 패키지 하나하나의 용량이 매우 작고 기본적으로 man 문서를 분리하여 용량에서 더 많은 이점을 가져갔다고 볼 수 있다.- 각 패키지의 man 문서는 패키지이름-doc 형태로 분리되어 있다.
- Glibc가 아닌 Musl을 사용하여 더더욱 임베디드에서 가볍게 동작한다.
- BusyBox 기반으로 단일 바이너리의 용량을 줄였다.
3.2. Musl libc
타 리눅스 배포판과 달리 Musl libc로 컴파일되었기 때문에 포팅이 되지 않은 패키지나 프로그램의 경우에는 Musl libc로 다시 컴파일하여야 사용할 수 있는 경우가 간혹 생길 수 있다. Alpine Linux의 공식 홈페이지의 설명에는 Musl을 통해 타 GNU/Linux 배포판들보다 더 가볍고 효율적인 자원 분배를 이루었다고는 하나 Musl과 Glibc는 서로간의 장단점이 있기 때문에 무조건 한 편이 나쁘다고 할 수 없다. 그 결과로 작업에 따라 격차가 많이 생길 수 있음을 인지하고 사용해야 한다. 또한 호환성의 격차를 줄이기 위하여 BusyBox도 사용한다.-
gcompat 패키지가 제공되므로 glibc용으로 컴파일된 바이너리 사용에는 문제가 없다. 비슷한 맥락으로 GNU coreutils 환경용으로 제작된 스크립트에 busybox에는 빠진 기능이 포함될 경우 coreutils 패키지를 설치하고 기본 환경을 변경해줄 수도 있다.
도커를 사용해 GNU 환경이 메인인 타 배포판 이미지를 불러와 그 위에서 바이너리나 스크립트를 실행하는 방법도 있다. 도커 컨테이너 레이어에 있는 파일을 핸들링하긴 좀 귀찮겠지만.
3.3. APK 패키지 관리자
알파인 리눅스에서는 APK를 패키지 관리자로 사용한다. 저장소(레포지토리/브랜치)의 경우에는 /etc/apk/repositories 파일을 수정하면 된다. APK 패키지 관리자의 구성은 타 배포판과 달리 마찬가지로 매우 단순하며 유용하다. 기본적으로 다음과 같은 문법을 따른다.apk [옵션] <명령> [인자...]
명령 | 설명 |
apk update | 패키지 저장소 목록을 업데이트한다. |
apk upgrade | 패키지 저장소 목록을 업데이트하고, 현재 설치되어 있는 패키지의 새 버전을 설치한다. |
apk search <패키지> | 패키지 저장소 목록에서 패키지를 검색한다. v 옵션을 추가하면 설명도 출력된다. 혹은 알파인 리눅스 패키지 페이지에서도 검색할 수 있다. |
apk add <패키지[=버전]> | 특정 패키지를 설치한다. 뒤에 >나 = 등을 붙여 버전 정보를 추가로 작성할 수 있다. |
apk del <패키지> | 특정 패키지를 제거한다. |
apk cache clean | 패키지 캐시를 모두 제거한다. |
apk cache -v sync | 패키지 캐시를 초기화하고 부족한 패키지를 자동으로 다운로드한다. |
apk info | 현재 설치되어 있는 패키지의 목록을 출력한다. |
apk stats | 현재 패키지 저장소에서 사용가능한 패키지나 설치된 패키지 등의 정보를 불러온다. |
apk fix | 복구가 필요한 패키지를 복구하거나 종속성을 제외하고 업그레이드한다. |
- 기본 저장소 구성에는 v3.19(2024년 1월 26일 기준 최신 버전) 브랜치만 추가되어 있지만 대부분의 패키지들을 사용하려면 /etc/apk/repositories에서 edge 브랜치의 주석을 해제하면 된다. 단, Alpine Linux 자체도 Edge 브랜치로 업데이트되기 때문에 각별한 주의가 필요하다.
- -U 옵션을 붙이면 캐시를 무시하고 항상 저장소 서버에서 가져온다. 그렇기 때문에 apk update를 실행할 필요가 없다.
- 버전을 업그레이드하기 위해서는 단순히 브랜치를 변경하면 된다. 예를 들어서 v3.18에서 v3.19로 업그레이드 시에는 /etc/apk/repositories에서 버전을 변경하면 된다.
3.4. OpenRC
Alpine Linux는 부트 스트랩이나 백그라운드 서비스 데몬을 관리하는 init 시스템으로 OpenRC를 채택했다. 데비안 계열에서 사용하는 systemd와 같은 역할을 한다. 기본적인 사용법은 공식 위키를 참고하자.백그라운드 서비스로 구동되어야 하는 패키지는 대부분 OpenRC에 서비스 등록이 가능한 설정 파일을 함께 설치해주니 쉬운 편이다. 문제는 이런 설정 스크립트가 제공되지 않는다거나, 패키지 설치가 아닌데[1] 부팅 단계에서 백그라운드 서비스로 호출할 필요가 있는 경우는 까다로울 수 있다. [2] [3]
4. 기반으로 한 다른 소프트웨어
현재 섹션에서는 Alpine Linux를 기반으로한 다른 소프트웨어 혹은 운영체제를 나열하고 설명합니다.4.1. Alpine WSL
Alpine Linux에서 공식적으로 지원하고 있지는 않으나 Microsoft Store에서 Alpine Linux를 WSL로 사용 가능하다. Alpine WSL에서는 기본 계정이 Root가 아니지만 su -l root를 통해 root 계정으로 액세스가 가능하다.[4]
4.2. postmarketOS
스마트폰에서 사용하기 적합하도록 만들어진 배포판.
2022년 1월 현 시점에서 이 배포판이 가장 온전하게 돌아가는 기기는 처음부터 리눅스 스마트폰으로 개발된 PinePhone과 Librem 5이다. 안드로이드 기기들도 개인 개발자들에 의해 지원되기는 하지만 기능이 온전하게 작동하는 것은 많지 않다. POCO F1과 OnePlus 6/6T가 너무 구형이 아니면서도 잘 지원되는 편이다.
4.3. iSH
아이폰과 아이패드에서 작동하는 리눅스에뮬레이터로 알파인 리눅스를 베이스로 한다. 탈옥은 필요 없고 앱을 설치하거나 지우는 것으로 모든것은 해결된다. 아이폰과 아이패드에서 셸을 사용할 수 있게 해주는 a-Shell이나 LibTerm과 같이 iOS/iPadOS의 네이티브 셸을 사용하지 않고 에뮬레이터 방식을 사용하지만 이들 터미널은 사용가능한 명령어의 수도 제한적이고 접근 가능한 디렉터리도 앱 내로 한정되지만 iSH는 에뮬레이터 방식인 대신 루트권한을 가질수 있다는 것이 장점이다. 앱으로 설치하는 리눅스 배포판 개념이기에 그냥 별도의 리눅스가 설치된다고 보면 된다. 물론 앱이기에 별도의 부팅은 없고 앱을 실행하면 웰컴메시지와 셸이 뜬다.
본래 애플의 앱스토어 등록앱에 대한 사전검열 및 사후검열을 통과하지 못하여 퇴출된적이 있었으나 이후 애플과 협의하여 기본 패키지 저장소에 포함되는 앱에 대해서도 애플의 검수를 받는 조건으로 다시 앱스토어에 등록되었다. 다만 이 패키지 저장소는 다른 저장소로 바꿔치기 하는 것도 가능하다.
본래 애플의 앱스토어 등록앱에 대한 사전검열 및 사후검열을 통과하지 못하여 퇴출된적이 있었으나 이후 애플과 협의하여 기본 패키지 저장소에 포함되는 앱에 대해서도 애플의 검수를 받는 조건으로 다시 앱스토어에 등록되었다. 다만 이 패키지 저장소는 다른 저장소로 바꿔치기 하는 것도 가능하다.
안드로이드의
Termux에 비해서 사실상 앱으로 설치하는 리눅스 배포판 개념이기에 자유도는 높지만 iOS/iPadOS의 시스템 제한으로 인해 SSH/X-Window 등 타 기기를 통한 원격 접속을 사용할때에는 반드시 기기 화면이 켜져있어야 하고[5] 다른 앱으로 전환하면 iSH앱이 비활성화되어 원격접속이 중단되는 치명적인 단점이 있다.
로컬에서는 X-Winow 구동이 불가능하나 관련 패키지 설치 후 원격 접속을 이용하면 시도는 가능하다. 하지만 위 문단에서 말한 시스템 제한으로 인해 제대로된 사용은 어렵고 된다는 것을 확인하는 정도에 의의가 있다.
5. 유용한 문서 혹은 명령
- Alpine Linux Intel Video 지원, 기본적으로 Linux에서 Intel Video 드라이버는 Xorg의 한 부분이었다.
- Alpine Linux 미러 서버 만들기, Alpine Linux 위키에서는 공식적으로 미러 서버를 만드는 방법을 설명한다.
[1]
사용자가 스스로 컴파일한, 또는 인터넷 등에서 다운로드한 바이너리 등
[2]
공식 위키는 기본적인 사용 문법만을 설명하고 있다.
[3]
/etc/init.d/ 디렉토리 내에는 현재 사용 가능한 서비스들의 설정 파일이 들어있다. 이 파일들이 어떤 형식으로 작성되어 있고 실제 셸에서의 명령을 어떤 식으로 운용해야 백그라운드 프로세스로 작동하는지 참고해서, 내게 필요한 서비스를 생성하고 데몬으로 등록해 부팅시에 별다른 조작 없이 호출할 수 있다.
[4]
스토어 설치가 아닌, MINI ROOT SYSTEM을 다운로드하고 WSL에 수동으로 등록했다면 기본적으로 root 계정을 사용한다. 필요에 맞게 설치하고 운용하자.
[5]
이때 '화면 켜짐 상태 유지' 기능은 지원되지 않으므로 주기적으로 화면 터치나 키보드 조작 등으로 기기의 화면이 꺼지지 않게 유지해 줘야 한다.