1P by neo 18일전 | favorite | 댓글 1개
  • Alpine Linux의 역사

    • Alpine Linux는 독립적이고 비상업적인 범용 Linux 배포판으로, 보안, 단순성, 자원 효율성을 중요시하는 파워 유저를 위해 설계됨
    • 모든 userland 바이너리는 PIE(Position Independent Executables)로 컴파일되고 stack smashing protection이 적용되어, zero-day 취약점 등의 전체 클래스의 익스플로잇을 사전에 방지함
    • 2005년에 Natanael Copa가 프로젝트의 시작을 논의했으며, BSD와 마찬가지로 임베디드 시스템, 라우터, 모바일 기기뿐만 아니라 범용 서버와 데스크톱에서도 사용되고 있음
    • 컴팩트한 크기와 제한된 의존성으로 인해 Linux 컨테이너의 베이스로도 인기가 있음
    • chroot(8)에서 쉽게 실행할 수 있는 툴체인도 제공되어, NetBSD chroots(8)과 FreeBSD jail을 광범위하게 사용하는 사람들에게 흥미로움
  • Alpine Linux의 설치

    • ARM, PPC64, x86, x86_64용 빌드를 포함한 여러 가지 버전으로 제공됨
    • 설치 과정은 매우 단순하며, 라이브 환경에서 root로 로그인하고 setup-alpine을 실행하면 됨
    • 키맵, 네트워킹, 시간대, root 인증 등 기본적인 질문을 받고, SSH 키를 처음부터 주입할 수도 있어 오케스트레이션 도구로 VM이나 서버 집합을 배포하거나 미디어가 제공되지 않는 호스팅 제공업체에 배포할 때 유용함
    • 선호하는 OpenSSH와 openntpd를 선택할 수 있는 몇 가지 SSH 서버와 ntp 클라이언트 중에서 선택할 수 있으며, Xen에서 동작하는 것도 정확히 식별함
    • LVM을 구성할 수도 있지만, 현재는 ext4를 사용하는 Alpine의 표준 sys 파티션을 고수함
  • 설치 후 탐색

    • Alpine을 처음 부팅하면 특별한 이유를 알 수 있음: dmesg(1)는 OpenRC를 실행 중이라고 알려줌
    • 이동성이 있고, 작고, 빠르고, 효율적이고, 투명하며, 안전함
    • rc 스크립트 작성에 익숙한 BSD 사용자에게 매우 친숙함
    • /etc/rc.confcrond(8)의 존재는 기쁨을 줌
    • Devuan, Gentoo, Alpine 등 Linux 배포판에서 이를 사용하는 것은 매우 반가운 일이며, Linux를 다시 재미있게 만들어줌
    • OpenRC와 함께 musl과 busybox가 번들로 제공되어 기본 시스템의 크기와 공격 표면을 더욱 줄여줌
    • llvm과 선호하는 대화형 셸 중 하나인 MirBSD Korn 셸도 사용 가능함
  • 패키지

    • Alpine의 기본 패키지 관리자는 apk이며, Linux에서 일반적인 것처럼 기본 시스템과 모든 패키지를 구분하지 않고 업데이트를 처리함
    • BSD에서와 같이 비권한 사본을 실행할 수 있는지 확인해보고 싶지만 아직 확인하지 않았으며, pkgsrc도 있어서 문제가 되지 않음
    • 구성은 /etc/apk/repositories에 있으며, 설치 프로그램에서 제공한 두 번째 URL의 주석을 해제하여 community 저장소를 활성화할 수 있음
    • Alpine에는 testing 저장소도 있으며, 자체 저장소를 추가할 수도 있음
    • 사용법은 쉽지만, 오래된 습관 때문에 여전히 apk add 대신 apt install을 잘못 입력하고 있음
    • 공식 웹 인터페이스가 있으며, Alpine 저장소는 pkgs.org에 있음
    • zfs 패키지가 가장 놀라웠으며, 커널 모듈을 설치하고 로드하는 데 단 두 개의 명령만 필요했음 (root on ZFS는 더 복잡할 것임)
  • 결론

    • 표면만 살짝 긁어봤지만, 테스트와 서버를 위한 주요 Linux 배포판으로 전환하는 것을 진지하게 고려할 만한 충분한 이유가 있음
    • htop(1)lsof(1)가 인식할 수 있는 프로세스의 작은 목록만 표시하고, OpenRC를 사용하며, 패키지 관리가 간단해 보이고, 구성이 매우 단순한 점이 마음에 듦
    • 현대적이고 기능적인 "Occam의 Linux"가 어떤 모습일지 궁금했는데, 이것이 바로 그것임
    • busybox보다 더 필요한 것이 있다면 uutils가 실행되는지 확인해보고 싶지만, 서버의 경우 의심스러움

GN⁺의 의견

  • Alpine Linux는 컨테이너 기반 배포에 최적화되어 있어, Docker와 같은 컨테이너 플랫폼에서 널리 사용되고 있습니다. 컨테이너를 활용한 마이크로서비스 아키텍처 구현 시 고려해볼만한 배포판이라고 생각합니다.

  • 기본으로 musl libc를 사용하는 것이 장점이자 단점이 될 수 있습니다. musl은 glibc에 비해 경량화되고 보안에 강점이 있지만, 일부 애플리케이션과 호환성 문제가 있을 수 있습니다. 따라서 사용할 애플리케이션의 호환성을 미리 확인해볼 필요가 있습니다.

  • 기본 쉘로 ash를 사용하는 것도 특이한 점입니다. ash는 bash에 비해 기능이 제한적이지만 매우 가볍고 빠른 쉘로, 임베디드 시스템 등 자원이 제한된 환경에서 유용할 것 같습니다. 반면 일반 사용자에겐 다소 불편할 수도 있겠네요.

  • BSD 계열 OS를 주로 사용하시는 분들이라면 익숙한 환경을 제공하는 Alpine Linux가 매력적으로 느껴질 것 같습니다. 다만 아직 데스크탑 환경 지원이 미흡해 보여서, 서버나 임베디드 용도로 사용하기에 적합해 보입니다.

  • 전반적으로 Alpine Linux는 가볍고 보안에 최적화된 배포판으로서 나름의 존재감을 가지고 있는 것 같습니다. 다만 자체 생태계가 그리 크지 않아 문제 발생 시 커뮤니티 지원이 다소 부족할 수 있다는 점은 고려해야 할 것 같네요. 하지만 시간이 지나면서 Alpine Linux의 장점들로 인해 점점 더 많은 사용자들을 확보해 나갈 것으로 기대됩니다.

Hacker News 의견

요약:

  • Linux 바이너리는 PIE(Position Independent Executable)로 컴파일되어 보안성이 높음

  • GLIBC는 힙 구현이 가장 경화되어 있어 이중 해제 등의 힙 취약점에 대한 완화 기능이 더 많음

  • Alpine은 musl을 사용하므로 GLIBC에 비해 보안성이 떨어짐. 작고 이해하기 쉬운 시스템이 보안에 도움됨

  • Illumos(OpenSolaris)는 수십년간 리눅스를 사용한 후 모든 것이 더 단순해짐

  • Solaris 10에서 작동하던 대부분이 약간의 수정으로 현재까지 적용됨

  • zone은 docker 컨테이너보다 10배 우수하며, ZFS 지원 내장됨

  • SMF로 서비스 관리. XML로 구성하는 것이 유일한 단점

  • OmniOS와 SmartOS 서버 사용 경험 공유

  • BSD 사용자로서 bhyve에서 Alpine을 처음 실행해봄

  • busybox 기반으로 /bin, /sbin 유틸리티가 분리된 바이너리일 필요가 없어 사용자 공간이 작고 부팅이 빠름

  • tmux, zsh로 대부분의 유닉스 용도에 충분

  • 많은 apk 설치 필요했지만 전반적으로 최고의 Linux 경험이었음

  • ZFS 내장되고 bhyve용 virtio 바인딩 지원되면 좋겠음

  • Void Linux도 BSD 사용자에게 추천. NetBSD 개발자가 만들었고 glibc/musl 버전 있음. runit을 init 시스템으로 사용

  • xbps-src로 소스에서 패키지 빌드 가능

  • Alpine에 기본으로 man 페이지가 포함되지 않아 사용을 꺼림

  • 패키지 설치 시 문서를 자동으로 설치하는 옵션이 있는지 궁금함

  • Docker에서 Alpine 성능 관련 포스트들 있었음. Debian/Ubuntu 사용 권장

    • Alpine이 느린 이유: Python 속도 저하, Ubuntu 이미지 대비 50% 느림
    • Alpine 옹호 포스트: Debian과 성능 비교 벤치마크
  • 이 내용이 아직 유효한지 궁금해 함

  • OpenRC 등이 매력적인 이유 모르겠음. 감독 기반 옵션이 PID 파일 관리보다 낫다고 봄

  • 자동 재시작 안 되는 게 장점이라는 점은 인정

  • syslog에 크게 의존하는 것도 80년대 기술

  • 여러 도구의 이벤트 순서를 알기 위해 중앙 집중식 뷰 개선 필요성은 동의

  • Alpine의 장점: Nix 없이 /etc/apk/world 편집 후 apk fix로 선언적 패키지 관리 가능

  • Slackware는 BSD와 Linux의 절충안. Unix 스럽고 복잡하지 않음. Slackbuilds로 풍부한 포트 트리 제공

  • musl이 pthread_attr_setaffinity_np 지원 안 해서 PyTorch 등 일부 소프트웨어 실행 불가