1 poin oleh GN⁺ 2024-04-28 | 1 komentar | Bagikan ke WhatsApp
  • Sejarah Alpine Linux

    • Alpine Linux adalah distribusi Linux umum yang independen dan nonkomersial, dirancang untuk power user yang mengutamakan keamanan, kesederhanaan, dan efisiensi sumber daya
    • Semua biner userland dikompilasi sebagai PIE (Position Independent Executables) dan dilengkapi stack smashing protection, sehingga secara proaktif mencegah eksploit untuk seluruh kelas kerentanan seperti zero-day
    • Pada 2005, Natanael Copa mulai membahas dimulainya proyek ini, dan seperti BSD, Alpine digunakan pada sistem embedded, router, perangkat mobile, serta server dan desktop umum
    • Karena ukurannya ringkas dan dependensinya terbatas, Alpine juga populer sebagai basis container Linux
    • Alpine juga menyediakan toolchain yang mudah dijalankan di chroot(8), sehingga menarik bagi mereka yang banyak menggunakan NetBSD chroots(8) dan FreeBSD jail
  • Instalasi Alpine Linux

    • Tersedia dalam berbagai versi, termasuk build untuk ARM, PPC64, x86, dan x86_64
    • Proses instalasinya sangat sederhana: login sebagai root di lingkungan live lalu jalankan setup-alpine
    • Anda akan diberi pertanyaan dasar seperti keymap, jaringan, zona waktu, dan autentikasi root; Anda juga bisa menyuntikkan SSH key sejak awal, yang berguna saat menerapkan VM atau kumpulan server dengan alat orkestrasi atau saat deploy ke penyedia hosting yang tidak menyediakan media
    • Anda dapat memilih di antara beberapa SSH server dan klien ntp, termasuk opsi OpenSSH dan openntpd yang disukai, dan sistem ini juga mengenali dengan tepat saat berjalan di Xen
    • Anda juga bisa mengonfigurasi LVM, tetapi untuk saat ini penulis tetap memakai partisi sys standar Alpine yang menggunakan ext4
  • Menjelajahi setelah instalasi

    • Saat pertama kali boot ke Alpine, Anda bisa langsung memahami salah satu alasannya: dmesg(1) memberi tahu bahwa sistem menjalankan OpenRC
    • Portabel, kecil, cepat, efisien, transparan, dan aman
    • Sangat familier bagi pengguna BSD yang terbiasa menulis skrip rc
    • Kehadiran /etc/rc.conf dan crond(8) terasa menyenangkan
    • Sangat menyenangkan melihat ini digunakan di distribusi Linux seperti Devuan, Gentoo, dan Alpine, dan hal itu membuat Linux terasa menyenangkan lagi
    • Bersama OpenRC, musl dan busybox juga dibundel untuk lebih mengurangi ukuran sistem dasar dan attack surface
    • llvm dan salah satu shell interaktif favorit penulis, MirBSD Korn shell, juga tersedia
  • Paket

    • Pengelola paket bawaan Alpine adalah apk, dan seperti yang umum di Linux, ia menangani pembaruan tanpa memisahkan sistem dasar dan semua paket
    • Seperti di BSD, penulis ingin melihat apakah bisa menjalankan salinan tanpa hak istimewa, tetapi belum sempat memastikannya; selain itu ada juga pkgsrc, jadi bukan masalah besar
    • Konfigurasinya ada di /etc/apk/repositories, dan Anda bisa mengaktifkan repositori community dengan membuka komentar pada URL kedua yang disediakan installer
    • Alpine juga memiliki repositori testing, dan Anda juga bisa menambahkan repositori sendiri
    • Penggunaannya mudah, tetapi karena kebiasaan lama, penulis masih sering salah mengetik apt install alih-alih apk add
    • Tersedia antarmuka web resmi, dan repositori Alpine juga ada di pkgs.org
    • Paket zfs adalah yang paling mengejutkan; hanya diperlukan dua perintah untuk memasang dan memuat modul kernel (meski root on ZFS kemungkinan akan lebih rumit)
  • Kesimpulan

    • Meski baru menyentuh permukaannya, sudah ada cukup banyak alasan kuat untuk serius mempertimbangkan beralih ke Alpine sebagai distribusi Linux utama untuk pengujian dan server
    • Penulis menyukai bahwa htop(1) dan lsof(1) hanya menampilkan daftar kecil proses yang bisa dikenali, sistem memakai OpenRC, pengelolaan paket tampak sederhana, dan konfigurasinya sangat simpel
    • Penulis bertanya-tanya seperti apa "Occam's Linux" yang modern dan fungsional, dan inilah jawabannya
    • Jika membutuhkan sesuatu yang lebih dari busybox, penulis ingin memeriksa apakah uutils bisa berjalan, meski untuk server rasanya meragukan

Opini GN⁺

  • Alpine Linux dioptimalkan untuk deployment berbasis container, sehingga banyak digunakan di platform container seperti Docker. Ini tampak seperti distribusi yang layak dipertimbangkan saat membangun arsitektur microservices berbasis container.

  • Penggunaan musl libc secara default bisa menjadi kelebihan sekaligus kekurangan. musl lebih ringan dan unggul dalam aspek keamanan dibanding glibc, tetapi bisa menimbulkan masalah kompatibilitas dengan sebagian aplikasi. Karena itu, ada baiknya memeriksa kompatibilitas aplikasi yang akan digunakan terlebih dahulu.

  • Penggunaan ash sebagai shell bawaan juga merupakan hal yang khas. ash memang lebih terbatas fiturnya dibanding bash, tetapi sangat ringan dan cepat, sehingga berguna di lingkungan dengan sumber daya terbatas seperti sistem embedded. Di sisi lain, bagi pengguna umum ini mungkin agak kurang nyaman.

  • Bagi mereka yang terutama menggunakan OS keluarga BSD, Alpine Linux kemungkinan terasa menarik karena menawarkan lingkungan yang familier. Namun, dukungan lingkungan desktop tampaknya masih kurang matang, jadi distro ini terlihat lebih cocok untuk penggunaan server atau embedded.

  • Secara keseluruhan, Alpine Linux tampaknya punya posisi tersendiri sebagai distribusi yang ringan dan berfokus pada keamanan. Namun, karena ekosistemnya tidak terlalu besar, dukungan komunitas saat terjadi masalah bisa saja agak terbatas. Meski begitu, seiring waktu Alpine Linux diperkirakan akan terus menarik lebih banyak pengguna berkat keunggulan-keunggulannya.

1 komentar

 
GN⁺ 2024-04-28
Komentar Hacker News

Ringkasan:

  • Biner Linux dikompilasi sebagai PIE (Position Independent Executable) sehingga lebih aman

  • GLIBC memiliki implementasi heap yang paling diperkeras, sehingga memiliki lebih banyak fitur mitigasi terhadap kerentanan heap seperti double free

  • Alpine menggunakan musl, sehingga keamanannya lebih rendah dibanding GLIBC. Sistem yang kecil dan mudah dipahami membantu keamanan

  • Illumos (OpenSolaris) menjadi jauh lebih sederhana setelah puluhan tahun menggunakan Linux

  • Sebagian besar hal yang berjalan di Solaris 10 masih berlaku hingga sekarang dengan sedikit penyesuaian

  • zone 10 kali lebih unggul daripada container Docker, dan dukungan ZFS sudah bawaan

  • Layanan dikelola dengan SMF. Satu-satunya kekurangan adalah konfigurasi menggunakan XML

  • Berbagi pengalaman menggunakan server OmniOS dan SmartOS

  • Sebagai pengguna BSD, untuk pertama kalinya mencoba menjalankan Alpine di bhyve

  • Berbasis busybox, jadi utilitas /bin dan /sbin tidak harus berupa biner terpisah; ruang pengguna kecil dan boot cepat

  • Dengan tmux dan zsh, sudah cukup untuk sebagian besar penggunaan Unix

  • Perlu memasang banyak paket apk, tetapi secara keseluruhan ini adalah pengalaman Linux terbaik

  • Akan lebih baik jika ZFS bawaan tersedia dan ada dukungan binding virtio untuk bhyve

  • Void Linux juga direkomendasikan untuk pengguna BSD. Dibuat oleh pengembang NetBSD, tersedia versi glibc/musl. Menggunakan runit sebagai sistem init

  • Dengan xbps-src, paket bisa dibangun dari source

  • Enggan menggunakan Alpine karena halaman man tidak disertakan secara default

  • Bertanya-tanya apakah ada opsi untuk memasang dokumentasi secara otomatis saat memasang paket

  • Pernah ada beberapa posting tentang performa Alpine di Docker. Disarankan memakai Debian/Ubuntu

    • Alasan Alpine lambat: Python melambat, 50% lebih lambat dibanding image Ubuntu
    • Posting yang membela Alpine: benchmark perbandingan performa dengan Debian
  • Bertanya apakah hal ini masih berlaku

  • Tidak paham apa yang membuat OpenRC dan sejenisnya menarik. Berpendapat opsi berbasis supervisor lebih baik daripada pengelolaan file PID

  • Mengakui bahwa tidak ada restart otomatis memang bisa menjadi kelebihan

  • Ketergantungan besar pada syslog juga merupakan teknologi era 80-an

  • Setuju bahwa perlu perbaikan tampilan terpusat untuk mengetahui urutan event dari berbagai alat

  • Kelebihan Alpine: tanpa Nix, bisa mengelola paket secara deklaratif dengan mengedit /etc/apk/world lalu menjalankan apk fix

  • Slackware adalah kompromi antara BSD dan Linux. Terasa seperti Unix dan tidak rumit. Slackbuilds menyediakan port tree yang kaya

  • musl tidak mendukung pthread_attr_setaffinity_np, sehingga beberapa perangkat lunak seperti PyTorch tidak bisa dijalankan