BSD उपयोगकर्ता का Alpine Linux आज़माने का अनुभव
(rubenerd.com)-
Alpine Linux का इतिहास
- Alpine Linux एक स्वतंत्र और गैर-व्यावसायिक सामान्य-उद्देश्य Linux डिस्ट्रीब्यूशन है, जिसे सुरक्षा, सरलता और संसाधन दक्षता को महत्व देने वाले power users के लिए डिज़ाइन किया गया है
- सभी userland binaries को PIE(Position Independent Executables) के रूप में compile किया जाता है और उन पर stack smashing protection लागू होता है, जिससे zero-day vulnerabilities जैसी पूरी श्रेणी के exploits को पहले से रोका जा सके
- 2005 में Natanael Copa ने इस प्रोजेक्ट की शुरुआत पर चर्चा की थी, और BSD की तरह यह embedded systems, routers, mobile devices के साथ-साथ सामान्य servers और desktops पर भी उपयोग किया जाता है
- इसका compact size और सीमित dependencies इसे Linux containers के base के रूप में भी लोकप्रिय बनाते हैं
- यह ऐसा toolchain भी प्रदान करता है जिसे
chroot(8)में आसानी से चलाया जा सकता है, इसलिए NetBSD chroots(8) और FreeBSD jail का व्यापक उपयोग करने वालों के लिए यह दिलचस्प है
-
Alpine Linux की इंस्टॉलेशन
- यह कई versions में उपलब्ध है, जिनमें ARM, PPC64, x86, x86_64 के builds शामिल हैं
- इंस्टॉलेशन प्रक्रिया बहुत सरल है; live environment में
rootके रूप में login करें औरsetup-alpineचलाएँ - इसमें keymap, networking, timezone, root authentication जैसी बुनियादी चीज़ों के बारे में पूछा जाता है, और शुरुआत से ही SSH keys inject की जा सकती हैं, जो orchestration tools के जरिए VM या server clusters deploy करने या उन hosting providers पर deploy करने में उपयोगी है जहाँ media उपलब्ध नहीं कराया जाता
- आप कई SSH servers और ntp clients में से चुन सकते हैं, जिनमें पसंदीदा OpenSSH और openntpd शामिल हैं, और यह Xen पर चलने को भी सही तरह से पहचानता है
- LVM भी configure किया जा सकता है, लेकिन फिलहाल Alpine के standard
syspartition कोext4के साथ ही रखा गया है
-
इंस्टॉलेशन के बाद की पड़ताल
- Alpine को पहली बार boot करने पर तुरंत समझ आता है कि यह खास क्यों है:
dmesg(1)बताता है कि OpenRC चल रहा है - यह portable, छोटा, तेज़, efficient, transparent और सुरक्षित है
- rc scripts लिखने के आदी BSD users के लिए यह बहुत परिचित महसूस होता है
/etc/rc.confऔरcrond(8)की मौजूदगी खुशी देती है- Devuan, Gentoo, Alpine जैसे Linux distributions में इसका उपयोग देखना बहुत अच्छा लगता है, और यह Linux को फिर से मज़ेदार बना देता है
- OpenRC के साथ musl और busybox bundled आते हैं, जो base system के आकार और attack surface को और कम कर देते हैं
- llvm और पसंदीदा interactive shells में से एक, MirBSD Korn shell, भी उपलब्ध है
- Alpine को पहली बार boot करने पर तुरंत समझ आता है कि यह खास क्यों है:
-
पैकेज
- Alpine का default package manager apk है, और यह Linux में आम तौर पर होने की तरह base system और बाकी packages को अलग किए बिना updates संभालता है
- BSD की तरह क्या इसका unprivileged copy चलाया जा सकता है, यह देखने की इच्छा है, लेकिन अभी तक जाँचा नहीं गया; वैसे pkgsrc भी उपलब्ध है, इसलिए यह बड़ी समस्या नहीं है
- configuration
/etc/apk/repositoriesमें है, और installer द्वारा दिए गए दूसरे URL को uncomment करके community repository को सक्षम किया जा सकता है - Alpine में
testingrepository भी है, और अपनी repository भी जोड़ी जा सकती है - इसका उपयोग आसान है, लेकिन पुरानी आदतों की वजह से अब भी
apk addकी जगह गलती सेapt installटाइप हो जाता है - इसका एक आधिकारिक web interface है, और Alpine repositories pkgs.org पर भी उपलब्ध हैं
- zfs package सबसे चौंकाने वाला था; kernel module install और load करने के लिए सिर्फ दो commands की ज़रूरत पड़ी (हालाँकि root on ZFS शायद अधिक जटिल होगा)
-
निष्कर्ष
- अभी सिर्फ सतह को थोड़ा सा ही खरोंचा गया है, लेकिन इतना जरूर है कि testing और servers के लिए इसे मुख्य Linux distribution बनाने पर गंभीरता से विचार किया जा सकता है
- यह बात पसंद आई कि
htop(1)औरlsof(1)केवल पहचाने जा सकने वाले processes की छोटी सूची दिखाते हैं, यह OpenRC का उपयोग करता है, package management सीधा-सादा लगता है, और configuration बहुत सरल है - अगर कभी सोचा हो कि आधुनिक और कार्यक्षम "Occam’s Linux" कैसा दिखेगा, तो शायद यही है
- अगर busybox से अधिक किसी चीज़ की ज़रूरत हो, तो uutils चलता है या नहीं यह देखना चाहूँगा, हालांकि servers के लिए इस पर संदेह है
GN⁺ की राय
-
Alpine Linux container-आधारित deployment के लिए optimized है, इसलिए Docker जैसे container platforms पर इसका व्यापक उपयोग होता है। containers का उपयोग करने वाली microservices architecture लागू करते समय यह एक विचार योग्य distribution है।
-
डिफॉल्ट रूप से musl libc का उपयोग करना इसकी ताकत भी हो सकता है और कमजोरी भी। musl, glibc की तुलना में हल्का है और सुरक्षा के लिहाज़ से बेहतर हो सकता है, लेकिन कुछ applications के साथ compatibility issues आ सकते हैं। इसलिए जिन applications का उपयोग करना है, उनकी compatibility पहले जाँच लेना ज़रूरी है.
-
डिफॉल्ट shell के रूप में ash का उपयोग भी एक दिलचस्प पहलू है। ash, bash की तुलना में feature-wise सीमित है, लेकिन यह बहुत हल्का और तेज़ shell है, इसलिए embedded systems जैसे resource-constrained environments में उपयोगी हो सकता है। दूसरी ओर, सामान्य users के लिए यह कुछ असुविधाजनक लग सकता है.
-
जो लोग मुख्य रूप से BSD परिवार के OS इस्तेमाल करते हैं, उनके लिए Alpine Linux एक परिचित environment देकर आकर्षक लग सकता है। हालाँकि, desktop environment support अभी भी सीमित दिखता है, इसलिए यह server या embedded उपयोग के लिए अधिक उपयुक्त प्रतीत होता है.
-
कुल मिलाकर Alpine Linux एक हल्का और security-optimized distribution है जिसकी अपनी अलग पहचान है। हालाँकि, इसका ecosystem अभी बहुत बड़ा नहीं है, इसलिए समस्या आने पर community support कुछ सीमित हो सकता है। फिर भी, समय के साथ Alpine Linux की खूबियों के कारण इसके और अधिक users हासिल करने की संभावना दिखती है.
1 टिप्पणियां
Hacker News राय
सारांश:
Linux binaries को PIE(Position Independent Executable) के रूप में compile किया जाता है, इसलिए उनकी security बेहतर होती है
GLIBC का heap implementation सबसे अधिक hardened माना जाता है, इसलिए double free जैसी heap vulnerabilities के खिलाफ इसमें ज़्यादा mitigation features हैं
Alpine, musl का उपयोग करता है, इसलिए GLIBC की तुलना में इसकी security कमज़ोर मानी जाती है। छोटा और समझने में आसान system security में मदद करता है
Illumos(OpenSolaris) में, दशकों तक Linux इस्तेमाल करने के बाद, सब कुछ अधिक सरल लगा
Solaris 10 पर चलने वाली ज़्यादातर चीज़ें थोड़े बदलाव के साथ आज भी लागू हैं
zone, docker containers से 10 गुना बेहतर हैं, और ZFS support built-in है
SMF से service management होता है। XML में configure करना ही इसका एकमात्र नुकसान है
OmniOS और SmartOS servers इस्तेमाल करने का अनुभव साझा किया गया
BSD user के रूप में bhyve में पहली बार Alpine चलाकर देखा
busybox आधारित होने की वजह से /bin, /sbin utilities के लिए अलग binaries की ज़रूरत नहीं होती, इसलिए user space छोटा है और boot तेज़ है
tmux, zsh के साथ यह ज़्यादातर Unix उपयोगों के लिए पर्याप्त है
कई apk installs की ज़रूरत पड़ी, लेकिन कुल मिलाकर यह सबसे अच्छा Linux experience था
अच्छा होगा अगर ZFS built-in हो और bhyve के लिए virtio bindings का support मिले
Void Linux भी BSD users को recommend किया गया। इसे एक NetBSD developer ने बनाया है, इसमें glibc/musl versions हैं, और runit को init system के रूप में उपयोग किया जाता है
xbps-srcसे source से packages build किए जा सकते हैंAlpine में default रूप से man pages शामिल नहीं होते, इसलिए इसे इस्तेमाल करने में हिचक होती है
यह जानना चाहा गया कि package install करते समय documentation को अपने-आप install करने का कोई option है या नहीं
Docker में Alpine performance पर कुछ posts थीं। Debian/Ubuntu इस्तेमाल करने की सिफारिश की गई
यह अभी भी मान्य है या नहीं, इस पर सवाल उठाया गया
OpenRC आदि आकर्षक क्यों माने जाते हैं, यह समझ नहीं आता। supervision-based options, PID file management से बेहतर लगते हैं
अपने-आप restart न होना एक फ़ायदा हो सकता है, यह बात मानी गई
syslog पर बहुत अधिक निर्भरता भी 80s की technology जैसी लगती है
कई tools के event order को समझने के लिए एक centralized view बेहतर होना चाहिए, इस बात से सहमति जताई गई
Alpine का फ़ायदा: Nix के बिना भी /etc/apk/world को edit करने के बाद
apk fixसे declarative package management संभव हैSlackware, BSD और Linux के बीच एक समझौता जैसा है। यह Unix-जैसा है और बहुत complex नहीं है। Slackbuilds के ज़रिए एक समृद्ध ports tree मिलता है
musl, pthread_attr_setaffinity_np को support नहीं करता, इसलिए PyTorch जैसे कुछ software चल नहीं पाते