1 puan yazan GN⁺ 2024-04-28 | 1 yorum | WhatsApp'ta paylaş
  • Alpine Linux'un geçmişi

    • Alpine Linux, güvenlik, sadelik ve kaynak verimliliğine önem veren ileri düzey kullanıcılar için tasarlanmış, bağımsız ve ticari olmayan genel amaçlı bir Linux dağıtımıdır
    • Tüm userland ikili dosyaları PIE(Position Independent Executables) olarak derlenir ve stack smashing protection uygulanır; böylece zero-day zafiyetleri gibi tüm bir açık sınıfındaki exploit'ler en baştan engellenir
    • 2005'te Natanael Copa projenin başlangıcını tartıştı ve BSD'de olduğu gibi gömülü sistemler, yönlendiriciler ve mobil cihazların yanı sıra genel amaçlı sunucular ve masaüstlerinde de kullanılmaktadır
    • Kompakt boyutu ve sınırlı bağımlılıkları nedeniyle Linux konteynerleri için taban olarak da popülerdir
    • chroot(8) içinde kolayca çalıştırılabilen bir toolchain de sunar; bu da NetBSD chroots(8) ve FreeBSD jail'i yoğun kullananlar için ilgi çekicidir
  • Alpine Linux'un kurulumu

    • ARM, PPC64, x86 ve x86_64 için derlemeler dahil çeşitli sürümlerle sunulur
    • Kurulum süreci oldukça basittir; canlı ortamda root olarak oturum açıp setup-alpine çalıştırmanız yeterlidir
    • Klavye düzeni, ağ, saat dilimi, root kimlik doğrulaması gibi temel sorular sorulur; ayrıca SSH anahtarlarını en baştan enjekte edebilirsiniz, bu da orkestrasyon araçlarıyla VM veya sunucu kümeleri dağıtırken ya da medya sağlamayan hosting sağlayıcılarına kurulum yaparken faydalıdır
    • Tercih ettiğiniz OpenSSH ve openntpd'yi seçebileceğiniz birkaç SSH sunucusu ve ntp istemcisi arasından seçim yapabilirsiniz; ayrıca Xen üzerinde çalıştığını da doğru biçimde algılar
    • LVM yapılandırılabilir, ancak şimdilik ext4 kullanan Alpine'in standart sys bölüm düzenine bağlı kalınmıştır
  • Kurulum sonrası keşif

    • Alpine'i ilk kez önyüklediğinizde bunun özel bir nedeni olduğunu görürsünüz: dmesg(1), OpenRC çalıştığını söyler
    • Taşınabilir, küçük, hızlı, verimli, şeffaf ve güvenlidir
    • rc betikleri yazmaya alışkın BSD kullanıcılarına çok tanıdık gelir
    • /etc/rc.conf ve crond(8) varlığı memnuniyet verir
    • Devuan, Gentoo ve Alpine gibi Linux dağıtımlarında bunun kullanılıyor olması çok sevindirici ve Linux'u yeniden eğlenceli hale getiriyor
    • OpenRC ile birlikte musl ve busybox paketlenmiş gelir; bu da temel sistemin boyutunu ve saldırı yüzeyini daha da küçültür
    • llvm ve tercih edilen etkileşimli kabuklardan biri olan MirBSD Korn Shell de kullanılabilir
  • Paketler

    • Alpine'in varsayılan paket yöneticisi apk'dir ve Linux'ta yaygın olduğu gibi temel sistem ile diğer tüm paketleri ayırmadan güncellemeleri yönetir
    • BSD'deki gibi ayrıcalıksız bir kopyanın çalıştırılıp çalıştırılamadığını görmek isteniyor, ancak henüz denenmedi; ayrıca pkgsrc de mevcut olduğundan bu büyük bir sorun değil
    • Yapılandırma /etc/apk/repositories içindedir ve kurulum aracının verdiği ikinci URL'deki yorum işaretini kaldırarak community deposunu etkinleştirebilirsiniz
    • Alpine'de ayrıca testing deposu vardır ve kendi deponuzu da ekleyebilirsiniz
    • Kullanımı kolaydır, ancak eski alışkanlıklar yüzünden hâlâ apk add yerine yanlışlıkla apt install yazılıyor
    • Resmi bir web arayüzü vardır ve Alpine depoları pkgs.org üzerinde de bulunur
    • En şaşırtıcı paket zfs oldu; çekirdek modülünü kurup yüklemek için yalnızca iki komut gerekti (ZFS üzerinde root daha karmaşık olacaktır)
  • Sonuç

    • Yalnızca yüzeyi hafifçe kazımış olunsa da, test ve sunucu işleri için başlıca Linux dağıtımı olarak buna geçmeyi ciddi biçimde düşünmek için yeterince sebep var
    • htop(1) ve lsof(1) tarafından tanınabilecek süreçlerin kısa bir listesini göstermesi, OpenRC kullanması, paket yönetiminin basit görünmesi ve yapılandırmanın son derece sade olması beğeniliyor
    • Modern ve işlevsel bir "Occam'ın Linux'u" nasıl olur diye merak ediliyordu; işte tam olarak bu
    • busybox'tan daha fazlasına ihtiyaç duyulursa uutils'in çalışıp çalışmadığını görmek ilginç olurdu, ancak sunucu tarafında bundan şüphe duyuluyor

GN⁺ görüşü

  • Alpine Linux, konteyner tabanlı dağıtım için optimize edildiğinden Docker gibi konteyner platformlarında yaygın olarak kullanılıyor. Konteyner kullanan bir mikroservis mimarisi kurarken değerlendirilebilecek bir dağıtım gibi görünüyor.

  • Varsayılan olarak musl libc kullanması hem avantaj hem dezavantaj olabilir. musl, glibc'ye kıyasla daha hafif ve güvenlik açısından güçlüdür, ancak bazı uygulamalarda uyumluluk sorunları yaşanabilir. Bu nedenle kullanılacak uygulamaların uyumluluğunu önceden kontrol etmek gerekir.

  • Varsayılan kabuk olarak ash kullanması da dikkat çekici. ash, bash'e göre daha sınırlı özelliklere sahip olsa da çok hafif ve hızlı bir kabuktur; gömülü sistemler gibi kaynakların kısıtlı olduğu ortamlarda faydalı olabilir. Öte yandan genel kullanıcılar için biraz rahatsız edici olabilir.

  • Ağırlıklı olarak BSD ailesi işletim sistemlerini kullananlar için Alpine Linux'un sunduğu tanıdık ortam çekici gelebilir. Ancak masaüstü ortam desteği hâlâ zayıf göründüğünden, sunucu veya gömülü kullanım için daha uygun duruyor.

  • Genel olarak Alpine Linux, hafif ve güvenlik odaklı bir dağıtım olarak kendine özgü bir yer edinmiş görünüyor. Ancak kendi ekosistemi çok büyük olmadığından, sorun çıktığında topluluk desteği bir miktar sınırlı kalabilir. Buna rağmen zamanla Alpine Linux'un avantajları sayesinde giderek daha fazla kullanıcı kazanması beklenebilir.

1 yorum

 
GN⁺ 2024-04-28
Hacker News görüşleri

Özet:

  • Linux ikilileri PIE(Position Independent Executable) olarak derlenir, bu da güvenliği artırır

  • GLIBC, en sertleştirilmiş heap uygulamasına sahiptir; bu yüzden double free gibi heap zafiyetlerine karşı daha fazla azaltma mekanizması sunar

  • Alpine, musl kullandığı için GLIBC'ye kıyasla daha az güvenlidir. Küçük ve anlaşılması kolay bir sistem olmak güvenliğe yardımcı olur

  • Illumos(OpenSolaris), onlarca yıl Linux kullandıktan sonra her şeyi daha basit hale getiriyor

  • Solaris 10'da çalışan şeylerin çoğu, küçük düzenlemelerle bugün hâlâ kullanılabiliyor

  • zone, docker container'larından 10 kat daha iyidir ve ZFS desteği yerleşik gelir

  • Hizmet yönetimi için SMF kullanılır. XML ile yapılandırma tek dezavantajdır

  • OmniOS ve SmartOS sunucu kullanım deneyimleri paylaşıldı

  • Bir BSD kullanıcısı olarak bhyve üzerinde ilk kez Alpine çalıştırdım

  • busybox tabanlı olduğu için /bin, /sbin yardımcı araçlarının ayrı ikililer olması gerekmez; bu da kullanıcı alanını küçük ve önyüklemeyi hızlı yapar

  • tmux ve zsh ile çoğu Unix kullanımı için fazlasıyla yeterli

  • Birçok apk kurulumu gerekti ama genel olarak en iyi Linux deneyimiydi

  • ZFS'nin yerleşik gelmesi ve bhyve için virtio binding desteği olması güzel olurdu

  • Void Linux da BSD kullanıcılarına öneriliyor. NetBSD geliştiricisi tarafından yapıldı; glibc/musl sürümleri var. init sistemi olarak runit kullanıyor

  • xbps-src ile paketler kaynaktan derlenebilir

  • Alpine'de varsayılan olarak man sayfaları bulunmadığı için kullanmaktan kaçınılıyor

  • Paket kurarken belgeleri otomatik yükleyen bir seçenek olup olmadığı merak ediliyor

  • Docker'da Alpine performansıyla ilgili yazılar vardı. Debian/Ubuntu kullanılması öneriliyordu

    • Alpine'in yavaş olma nedenleri: Python'da hız düşüşü, Ubuntu imajına kıyasla %50 daha yavaş olması
    • Alpine'i savunan yazılar: Debian ile performans karşılaştırma benchmark'ları
  • Bunun hâlâ geçerli olup olmadığı soruluyor

  • OpenRC vb. şeylerin neden çekici olduğu anlaşılmıyor. Denetim tabanlı seçeneklerin PID dosyası yönetiminden daha iyi olduğu düşünülüyor

  • Otomatik yeniden başlatmanın olmamasının avantaj sayılabildiği kabul ediliyor

  • syslog'a bu kadar bağımlı olmak da 80'lerden kalma bir teknoloji

  • Çeşitli araçların olay sırasını görmek için merkezi bir görünümün iyileştirilmesi gerektiği fikrine katılınıyor

  • Alpine'in avantajı: Nix olmadan, /etc/apk/world dosyasını düzenleyip ardından apk fix çalıştırarak bildirime dayalı paket yönetimi yapılabilmesi

  • Slackware, BSD ile Linux arasında bir uzlaşma noktası. Unix benzeri ve karmaşık değil. Slackbuilds ile zengin bir port ağacı sunuyor

  • musl, pthread_attr_setaffinity_np desteği sunmadığı için PyTorch gibi bazı yazılımlar çalışmıyor