मूल बातें

लिनक्स क्या है: कर्नल, डिस्ट्रीब्यूशन और फ़ाइल सिस्टम सरल भाषा में

अपडेट किया गया: · Skillaria.Top

लिनक्स एक ऑपरेटिंग सिस्टम का कर्नल है, यानी वह प्रोग्राम जो प्रोसेसर, मेमोरी, डिस्क और नेटवर्क को संभालता है; कर्नल के साथ शेल, यूटिलिटी, पैकेज मैनेजर और init सिस्टम मिलकर डिस्ट्रीब्यूशन बनाते हैं, जैसे Ubuntu, Debian या Fedora। ज़्यादातर सर्वर, कंटेनर और क्लाउड मशीनें लिनक्स पर चलती हैं, इसलिए इसमें काम करना DevOps इंजीनियर और सिस्टम एडमिनिस्ट्रेटर का बुनियादी कौशल है।

लिनक्स एक ओपन-सोर्स ऑपरेटिंग सिस्टम का कर्नल है, जिसके चारों ओर पूरी सिस्टम बनाए जाते हैं: सर्वर, डेस्कटॉप और एम्बेडेड डिवाइस। जब लोग कहते हैं «लिनक्स वाला सर्वर», तो उनका मतलब एक अकेला प्रोग्राम नहीं होता, बल्कि एक डिस्ट्रीब्यूशन होता है, यानी कर्नल के साथ यूटिलिटी, लाइब्रेरी, पैकेज मैनेजर और init सिस्टम का पूरा सेट। आइए समझते हैं कि लिनक्स असल में क्या है, इसके हिस्से कैसे जुड़े हैं और हर DevOps इंजीनियर को इसकी ज़रूरत क्यों पड़ती है।

लिनक्स एक कर्नल है, पूरी सिस्टम नहीं

सख़्त अर्थ में, लिनक्स केवल कर्नल (kernel) है। कर्नल वह प्रोग्राम है जो बूटलोडर के बाद सबसे पहले चलता है और कंप्यूटर के चालू रहने तक मेमोरी में बना रहता है। यह प्रोसेसर का समय प्रोसेस के बीच बाँटता है, मेमोरी देता है, ड्राइवर के ज़रिए डिस्क और नेटवर्क कार्ड से बात करता है और एक्सेस के अधिकारों पर नज़र रखता है।

आम प्रोग्राम हार्डवेयर को सीधे नहीं छूते। जब एडिटर कोई फ़ाइल सेव करता है, तो वह सिस्टम कॉल (open, write, close) करता है, और फिर कर्नल तय करता है कि डेटा डिस्क के किस ब्लॉक में लिखा जाएगा और क्या प्रोसेस को ऐसा करने की अनुमति है। इस बँटवारे से सिस्टम स्थिर रहता है: गिरा हुआ प्रोग्राम पूरे कंप्यूटर को नहीं गिराता।

कर्नल का वर्शन एक ही कमांड से देखा जा सकता है:

$ uname -r
6.8.0-45-generic

कर्नल को 1991 में लिनस टोरवाल्ड्स ने बनाया था, और तब से यह खुले तौर पर विकसित हो रहा है: सोर्स कोड GNU GPL version 2 लाइसेंस के तहत है, और कोई भी उसे पढ़, बदल और उसी शर्तों पर बाँट सकता है।

लिनक्स डिस्ट्रीब्यूशन क्या है

अकेला कर्नल काफ़ी नहीं है। कमांड टाइप करने के लिए शेल चाहिए, फ़ाइलों के लिए यूटिलिटी चाहिए, लाइब्रेरी और प्रोग्राम इंस्टॉल करने का टूल चाहिए। बुनियादी यूटिलिटी (ls, cp, bash, grep) ज़्यादातर GNU प्रोजेक्ट ने दी हैं, इसलिए इस सिस्टम को कभी-कभी GNU/Linux भी कहा जाता है। कर्नल और यह पूरा सेट, जो एक साथ इकट्ठा और टेस्ट किया गया हो, डिस्ट्रीब्यूशन कहलाता है।

डिस्ट्रीब्यूशन मुख्य रूप से पैकेज मैनेजर, अपडेट की नीति और इस बात में अलग होते हैं कि वे किसके लिए बने हैं।

ead>
परिवारउदाहरणपैकेजकहाँ मिलता है
DebianDebian, Ubuntu, Linux Mint.deb, aptसर्वर, क्लाउड, वर्कस्टेशन
Red HatRHEL, Fedora, Rocky Linux, AlmaLinux.rpm, dnfकॉरपोरेट सर्वर
AlpineAlpine Linuxapkछोटे आकार वाले Docker इमेज
ArchArch Linux, Manjaropacmanउत्साही उपयोगकर्ता, ताज़ा पैकेज वर्शन

आपके सामने कौन-सा डिस्ट्रीब्यूशन है, यह /etc/os-release फ़ाइल से पता चलता है:

$ cat /etc/os-release
PRETTY_NAME="Ubuntu 24.04.1 LTS"
NAME="Ubuntu"
VERSION_ID="24.04"
ID=ubuntu
ID_LIKE=debian

सीखने और सर्वर के लिए अक्सर Ubuntu LTS या Debian चुना जाता है: इनके बारे में दस्तावेज़ बहुत हैं, और इंटरनेट पर दिए गए निर्देश लगभग बिना बदलाव के काम कर जाते हैं।

सिस्टम की बनावट: कर्नल, शेल और यूज़र स्पेस

लिनक्स को परतों में समझना आसान है। सबसे नीचे हार्डवेयर है। उसके ऊपर कर्नल। उसके ऊपर यूज़र स्पेस: सिस्टम सर्विस, लाइब्रेरी (जैसे glibc) और प्रोग्राम। इंसान और सिस्टम के बीच शेल होता है, जो अक्सर bash होता है और कमांड लेकर प्रोग्राम चलाता है।

  • कर्नल — प्रोसेस, मेमोरी, फ़ाइल सिस्टम, नेटवर्क और ड्राइवर।
  • Init सिस्टम — PID 1 वाला पहला प्रोसेस; ज़्यादातर आधुनिक डिस्ट्रीब्यूशन में यह systemd है। यही बाक़ी सर्विस शुरू करता है।
  • सर्विस (डेमन) — वेब सर्वर, SSH सर्वर, cron, लॉग।
  • शेल और यूटिलिटी — वे चीज़ें जिनके साथ आप टर्मिनल में काम करते हैं।

सर्वर पर आमतौर पर ग्राफ़िकल इंटरफ़ेस होता ही नहीं: एडमिनिस्ट्रेटर SSH से जुड़कर कमांड लाइन पर काम करता है। इसीलिए लिनक्स सीखने का मतलब मुख्य रूप से टर्मिनल सीखना है।

लिनक्स फ़ाइल सिस्टम: सब कुछ / से शुरू होता है

लिनक्स में C: और D: जैसी ड्राइव नहीं होतीं। एक ही डायरेक्टरी ट्री है, जो जड़ (root) / से शुरू होता है। सारी डिस्क, USB ड्राइव और नेटवर्क फ़ोल्डर इसी ट्री की किसी डायरेक्टरी में माउंट किए जाते हैं। एक और सिद्धांत: लिनक्स में लगभग सब कुछ फ़ाइल के रूप में दिखता है: साधारण फ़ाइलें, डायरेक्टरी, डिवाइस, यहाँ तक कि प्रोसेस की जानकारी भी।

$ ls /
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr

डायरेक्टरी की जगह FHS (Filesystem Hierarchy Standard) मानक तय करता है, इसलिए हर डिस्ट्रीब्यूशन में कॉन्फ़िग लगभग एक ही जगह मिलते हैं।

ead>
डायरेक्टरीक्या रहता है
/etcसिस्टम और सर्विस की कॉन्फ़िगरेशन: /etc/passwd, /etc/ssh/sshd_config, /etc/fstab
/homeयूज़र की होम डायरेक्टरी: /home/alice
/rootसुपरयूज़र root की होम डायरेक्टरी
/varबदलने वाला डेटा: लॉग /var/log में, पैकेज कैश, डेटाबेस, मेल की कतारें
/usrइंस्टॉल किए गए प्रोग्राम और लाइब्रेरी: /usr/bin, /usr/lib
/bin, /sbinबुनियादी कमांड; आधुनिक डिस्ट्रीब्यूशन में ये /usr/bin और /usr/sbin के लिंक हैं
/bootकर्नल (vmlinuz-*), initramfs और बूटलोडर की फ़ाइलें
/devडिवाइस की फ़ाइलें: /dev/sda, /dev/null
/proc, /sysवर्चुअल फ़ाइल सिस्टम: कर्नल इनके ज़रिए प्रोसेस और सेटिंग दिखाता है
/tmpअस्थायी फ़ाइलें, अक्सर रीबूट पर साफ़ हो जाती हैं
/optपूरी तरह से बाहर से आने वाले तीसरे पक्ष के प्रोग्राम
/mnt, /mediaडिस्क और हटाने योग्य मीडिया के माउंट पॉइंट

एब्सोल्यूट और रिलेटिव पाथ

एब्सोल्यूट पाथ / से शुरू होता है और इस पर निर्भर नहीं करता कि आप कहाँ हैं: /var/log/syslog। रिलेटिव पाथ मौजूदा डायरेक्टरी से गिना जाता है: ../logs/app.log। बिंदु . मौजूदा डायरेक्टरी है, दो बिंदु .. एक ऊपर की डायरेक्टरी, और टिल्ड ~ आपकी होम डायरेक्टरी।

$ pwd
/home/alice
$ cd /var/log
$ cd ..
$ pwd
/var
$ cd ~
$ pwd
/home/alice

/proc: सिस्टम फ़ाइलों के रूप में

/proc डिस्क पर संग्रहीत नहीं होता, इसे कर्नल तुरंत बनाता है। उदाहरण के लिए cat /proc/cpuinfo प्रोसेसर दिखाता है, cat /proc/meminfo मेमोरी, और हर प्रोसेस की अपनी डायरेक्टरी /proc/<PID> होती है, जिसमें उसकी कमांड लाइन और खुली फ़ाइलें होती हैं। ps और top जैसी कई यूटिलिटी बस इन्हीं फ़ाइलों को पढ़ती हैं।

माउंटिंग

df -h दिखाता है कि कौन-सा फ़ाइल सिस्टम कहाँ माउंट है और उसमें कितनी जगह है:

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        40G   12G   26G  32% /
/dev/sda1       1.1G  6.1M  1.1G   1% /boot/efi
tmpfs           393M  1.2M  392M   1% /run

स्थायी माउंट पॉइंट /etc/fstab में लिखे होते हैं, और सिस्टम बूट के समय इसे पढ़ता है।

लिनक्स कैसे बूट होता है: चालू होने से लॉगिन प्रॉम्प्ट तक

बूट प्रक्रिया समझना तब काम आता है, जब सर्वर रीबूट के बाद «उठता» नहीं है। सरल रूप में चेन यह है:

  1. फ़र्मवेयर (UEFI या BIOS) हार्डवेयर जाँचता है और बूटलोडर ढूँढता है।
  2. GRUB बूटलोडर मेन्यू दिखाता है और /boot से कर्नल और initramfs इमेज मेमोरी में लोड करता है।
  3. कर्नल हार्डवेयर शुरू करता है और initramfs की मदद से रूट फ़ाइल सिस्टम ढूँढकर माउंट करता है।
  4. systemd PID 1 के रूप में चलता है और सर्विस सही क्रम में शुरू करता है: नेटवर्क, लॉग, SSH, cron और बाक़ी।
  5. लॉगिन प्रॉम्प्ट कंसोल पर या SSH से दिखता है।

बूट के समय कर्नल के संदेश sudo dmesg या journalctl -k से देखे जा सकते हैं, और हर चरण में लगा समय systemd-analyze से।

यूज़र और अधिकार: बिल्ट-इन सुरक्षा

लिनक्स शुरू से ही मल्टी-यूज़र सिस्टम है। हर फ़ाइल का एक मालिक, एक ग्रुप और पढ़ने, लिखने व चलाने के अधिकार होते हैं। साधारण यूज़र सिस्टम की फ़ाइलें ख़राब नहीं कर सकता, और प्रशासनिक काम sudo से होते हैं। सुपरयूज़र root सब कुछ कर सकता है, इसलिए उसमें लगातार काम करना अच्छा नहीं माना जाता।

$ ls -l /etc/passwd
-rw-r--r-- 1 root root 2847 Oct  1 10:12 /etc/passwd

इस लाइन का अर्थ है: यह साधारण फ़ाइल है, मालिक root पढ़ और लिख सकता है, और बाक़ी लोग केवल पढ़ सकते हैं।

DevOps इंजीनियर को लिनक्स क्यों चाहिए

DevOps इंजीनियर के लिए लिनक्स कोई एक विषय नहीं, बल्कि वह माहौल है जिसमें लगभग सारा काम होता है। यह रोज़ इन जगहों पर सामने आता है:

  • सर्वर। वेब सर्वर, डेटाबेस और क़तारें ज़्यादातर लिनक्स पर चलती हैं।
  • कंटेनर। Docker कर्नल की सुविधाएँ इस्तेमाल करता है: namespaces और cgroups। कंटेनर अलग-थलग किया गया लिनक्स प्रोसेस है, और इमेज Debian या Alpine जैसे डिस्ट्रीब्यूशन पर बनती है।
  • क्लाउड और Kubernetes। क्लाउड की वर्चुअल मशीनें और क्लस्टर के नोड भी लिनक्स हैं।
  • CI/CD। पाइपलाइन की बिल्ड लिनक्स रनर पर चलती हैं, और बिल्ड स्क्रिप्ट bash में लिखी जाती हैं।
  • डायग्नोस्टिक्स। सर्विस गिरने पर जवाब journalctl, top, ss, df में ढूँढा जाता है। इन टूल के बिना घटना की जाँच नहीं हो सकती।

न्यूनतम कौशल: फ़ाइल सिस्टम में सहजता से घूमना, अधिकार समझना, पैकेज इंस्टॉल करना, systemctl से सर्विस संभालना, लॉग पढ़ना, प्रोसेस, नेटवर्क और SSH से काम करना, और सरल bash स्क्रिप्ट लिखना।

लिनक्स सीखना कैसे शुरू करें

मुख्य सिस्टम की जगह लिनक्स इंस्टॉल करना ज़रूरी नहीं है। कुछ सुरक्षित तरीक़े हैं:

  • वर्चुअल मशीन (VirtualBox, VMware) में Ubuntu Server। आप उसे तोड़कर स्नैपशॉट से वापस ला सकते हैं।
  • Windows पर WSL — Windows के टर्मिनल में पूरा Ubuntu माहौल: wsl --install।
  • क्लाउड सर्वर — असली काम के सबसे क़रीब विकल्प, SSH से जुड़कर।
  • Docker कंटेनर — docker run -it --rm ubuntu bash कुछ ही सेकंड में शेल दे देता है।

शुरुआत नेविगेशन (pwd, ls, cd) से करें, फिर फ़ाइलें और अधिकार, फिर पैकेज, प्रोसेस और सर्विस। अंतर्निहित सहायता हमेशा साथ है: man ls या ls --help।

निष्कर्ष

लिनक्स एक कर्नल है, और डिस्ट्रीब्यूशन कर्नल के साथ यूटिलिटी, लाइब्रेरी, पैकेज मैनेजर और systemd को मिलाकर बनता है। पूरा सिस्टम जड़ / से शुरू होने वाला एक ही डायरेक्टरी ट्री है, जहाँ कॉन्फ़िग /etc में, लॉग /var/log में और प्रोग्राम /usr में रहते हैं। लिनक्स क्या है और यह कैसे बूट होता है, यह समझ लेने से सर्वर, कंटेनर और क्लाउड की नींव बन जाती है। फ़ाइल सिस्टम, बूट और एडमिनिस्ट्रेशन हमारे लिनक्स कोर्स में व्यवहार में सिखाए जाते हैं।

अक्सर पूछे जाने वाले प्रश्न

लिनक्स ऑपरेटिंग सिस्टम है या कर्नल?

सख़्त रूप से लिनक्स कर्नल है, और ऑपरेटिंग सिस्टम डिस्ट्रीब्यूशन है: कर्नल के साथ GNU यूटिलिटी, लाइब्रेरी, पैकेज मैनेजर और init सिस्टम। बातचीत में «लिनक्स» आमतौर पर पूरे सिस्टम के लिए कहा जाता है।

क्या लिनक्स मुफ़्त है?

कर्नल और ज़्यादातर डिस्ट्रीब्यूशन (Ubuntu, Debian, Fedora) मुफ़्त और फ़्री सॉफ़्टवेयर लाइसेंस के तहत आते हैं। सपोर्ट की सब्सक्रिप्शन, जैसे Red Hat Enterprise Linux की, पैसे की होती है।

शुरुआती व्यक्ति को कौन-सा डिस्ट्रीब्यूशन चुनना चाहिए?

सर्वर और सीखने के लिए Ubuntu LTS और Debian उपयोगी हैं: इनके वर्शन स्थिर हैं और दस्तावेज़ बहुत हैं। ज्ञान एक डिस्ट्रीब्यूशन से दूसरे में आसानी से जाता है, मुख्य अंतर पैकेज मैनेजर का होता है।

क्या Docker के साथ काम करने के लिए लिनक्स जानना ज़रूरी है?

हाँ, कम से कम बुनियादी स्तर पर। कंटेनर लिनक्स कर्नल की सुविधाओं पर बनते हैं, इमेज के अंदर डिस्ट्रीब्यूशन होते हैं, और डीबगिंग शेल कमांड से होती है।

लिनक्स और Unix में क्या अंतर है?

Unix सिस्टम का एक परिवार है, जो 1970 के दशक में आया, जबकि लिनक्स एक अलग से लिखा गया कर्नल है जो Unix के विचारों और इंटरफ़ेस (POSIX मानक) को दोहराता है। इसलिए दोनों की कमांड और काम करने का तरीक़ा बहुत मिलता-जुलता है।

इस विषय को वीडियो में सीखें

यह विषय “Linux: с нуля до уверенного администрирования” कोर्स में अभ्यास के साथ विस्तार से समझाया गया है।

कोर्स पर जाएँ