BSD Kullanıcısının Alpine Linux Macerası
(rubenerd.com)-
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
rootolarak oturum açıpsetup-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
ext4kullanan Alpine'in standartsysbö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.confvecrond(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
- Alpine'i ilk kez önyüklediğinizde bunun özel bir nedeni olduğunu görürsünüz:
-
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/repositoriesiçindedir ve kurulum aracının verdiği ikinci URL'deki yorum işaretini kaldırarak community deposunu etkinleştirebilirsiniz - Alpine'de ayrıca
testingdeposu vardır ve kendi deponuzu da ekleyebilirsiniz - Kullanımı kolaydır, ancak eski alışkanlıklar yüzünden hâlâ
apk addyerine yanlışlıklaapt installyazı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)velsof(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
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-srcile paketler kaynaktan derlenebilirAlpine'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
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/worlddosyasını düzenleyip ardındanapk fixçalıştırarak bildirime dayalı paket yönetimi yapılabilmesiSlackware, 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