अगर हर बार अपने लिनक्स को पुनः स्थापित करें या फॉर्मेट करें आप सिस्टम को "बिल्कुल अपनी पसंद के अनुसार" सेट करने में पूरी दोपहर बर्बाद कर रहे हैं—आपको इसे अभी स्वचालित करने की आवश्यकता है। एक अच्छी पोस्ट-इंस्टॉलेशन स्क्रिप्ट आपको एक ही कमांड से यह सुविधा देती है। अपने सिस्टम को अपडेट करें, अपने आवश्यक प्रोग्राम इंस्टॉल करें और सुरक्षा सेटिंग्स लागू करें। और यहां तक कि आप कमांड दर कमांड जाए बिना अपने डेस्कटॉप वातावरण और डॉटफाइलों को भी बेहतर बना सकते हैं।
इसका विचार बहुत सरल है: एक या अधिक तैयार करें पुन: प्रयोज्य बैश स्क्रिप्ट इसे बूट करने योग्य मल्टीबूट यूएसबी ड्राइव, अपने कॉन्फ़िगरेशन रिपॉजिटरी या बाहरी हार्ड ड्राइव में सेव करें और अपने डिस्ट्रो को इंस्टॉल करने के तुरंत बाद इसे लॉन्च करें। इसके बाद, सिस्टम ऑटोपायलट मोड में चलता रहेगा और आपको केवल बड़ी त्रुटियों पर नज़र रखने की आवश्यकता होगी। आइए देखें कि इसे विभिन्न स्थितियों में कैसे किया जाता है: एक सामान्य नए उबंटू इंस्टॉलेशन से लेकर कई डिस्ट्रो वाले अधिक उन्नत परिदृश्यों तक, जिनमें स्वचालित इंस्टॉलेशन टूल भी शामिल हैं।
लिनक्स में पोस्ट-इंस्टॉलेशन स्क्रिप्ट क्या होती है और इसका उपयोग किस लिए किया जाता है?
पोस्ट-इंस्टॉलेशन स्क्रिप्ट इससे अधिक कुछ नहीं है निष्पादन योग्य पाठ फ़ाइल बैश कमांड की मदद से आप Linux इंस्टॉल करने के तुरंत बाद मैन्युअल रूप से किए जाने वाले सभी कार्यों को क्रम से पूरा कर सकते हैं। "sudo apt install this", "sudo apt install that" टाइप करने, फ़ायरवॉल को ठीक करने, स्नैप इंस्टॉल करने आदि के बजाय, आप इसे एक बार लिखते हैं और जितनी बार चाहें उतनी बार इसका उपयोग कर सकते हैं।
इस प्रकार की स्क्रिप्ट आमतौर पर इसके लिए जिम्मेदार होती है सामान्य सेटअप कार्य: डिस्ट्रीब्यूशन को अपडेट करें, बुनियादी प्रोग्राम (ब्राउज़र, ऑफिस सूट, सुरक्षा उपकरण, मल्टीमीडिया) इंस्टॉल करें, फ़ायरवॉल को सक्रिय और कॉन्फ़िगर करें, ग्राफ़िकल वातावरण के कुछ व्यवहारों को समायोजित करें (उदाहरण के लिए GNOME डॉक) और, यदि आप चाहें, तो अन्य स्क्रिप्ट चलाएँ जो आपकी डॉटफ़ाइलें, Vim कॉन्फ़िगरेशन, आपका टर्मिनल या जो कुछ भी आप दैनिक आधार पर उपयोग करते हैं, उसे लाती हैं।
एक बुनियादी पोस्ट-इंस्टॉलेशन बैश स्क्रिप्ट बनाएं
चलिए सबसे सीधे तरीके से शुरुआत करते हैं: आपके घर में एक बैश स्क्रिप्ट जिसे आप कॉपी करके किसी भी नए इंस्टॉलेशन में पेस्ट कर सकते हैं। यह उन लोगों के लिए उपयोगी है जो अलग-अलग डिस्ट्रीब्यूशन को बार-बार इंस्टॉल करते हैं, या दूसरों के लिए सिस्टम बनाते समय एक दोहराने योग्य स्क्रिप्ट रखने के लिए उपयोगी है।
सबसे पहले, स्क्रिप्ट फ़ाइल बनाएं, उदाहरण के लिए install.sh:
touch install.sh
फिर इसे निष्पादन योग्य बनाएं, ताकि आप इसे लॉन्च कर सकें। ./install.shयहां इसका आमतौर पर उपयोग किया जाता है परिवर्तन विद्या सभी उपयोगकर्ताओं के लिए अनुमतियों के साथ, और अक्सर sudo का उपयोग तब किया जाता है जब फ़ाइल ऐसे स्थान पर होती है जहां उच्च अनुमतियों की आवश्यकता होती है:
sudo chmod a+x install.sh
अब अपनी पसंद के एडिटर से फ़ाइल को एडिट करें। आप इसका उपयोग कर सकते हैं। Vim, Nano, Emacs, Gedit, Kate या फिर जो भी आपके पास सबसे आसानी से उपलब्ध हो। Vim का उपयोग करके एक क्लासिक उदाहरण यह होगा:
sudo vim install.sh
फ़ाइल की शुरुआत में दो लगभग अनिवार्य पंक्तियाँ हैं। पहली पंक्ति यह इंगित करती है कि स्क्रिप्ट को कौन सा इंटरप्रेटर निष्पादित करेगा ("शीबैंग"):
#!/bin/bash
दूसरी पंक्ति का उपयोग आमतौर पर इंगित करने के लिए किया जाता है कोडिंगयह तब उपयोगी होता है जब आप टिप्पणियों या संदेशों में उच्चारण चिह्न, 'ñ' या अन्य विशेष वर्णों का उपयोग करने जा रहे हों:
# -*- ENCODING: UTF-8 -*-
वितरण के अनुसार सिस्टम को अपडेट करें
लिनक्स इंस्टॉल करने के बाद हर कोई सबसे पहले जो काम करता है, वह है... अद्यतन पैकेजवह चरण भी आपकी स्क्रिप्ट में होना चाहिए, लेकिन यह ध्यान रखना महत्वपूर्ण है कि प्रत्येक डिस्ट्रो अलग-अलग तरीके अपनाता है। एक अलग पैकेज प्रबंधकसामान्यतः, आपकी स्क्रिप्ट किसी विशिष्ट ऑपरेटिंग सिस्टम (उदाहरण के लिए, डेबियन/उबंटू) के लिए डिज़ाइन की जाती है, और यदि आप कई ऑपरेटिंग सिस्टम के साथ काम करते हैं, तो प्रत्येक के लिए एक अलग स्क्रिप्ट होनी चाहिए।
इस शैली के वितरण के लिए डेबियन, उबंटू और इसके व्युत्पन्नसामान्य क्रम इस प्रकार हो सकता है:
sudo apt update && sudo apt -y upgrade
अन्य वितरणों में स्थिति भिन्न होती है। उदाहरण के लिए, CentOS और Red Hat को "पसंद" है परंपरागत रूप से उपयोग किया जाता रहा है यम:
sudo yum update
यह फेडोरा के नए संस्करणों में दिखाई दिया। DNF यम के विकास के रूप में, बहुत समान वाक्य संरचना के साथ। इस प्रकार, फेडोरा आप निम्न का उपयोग कर सकते हैं:
sudo dnf update
की दशा में openSUSEपैकेज सिस्टम को सामान्यतः इसके साथ प्रबंधित किया जाता है zypper और सामान्य अपडेट इस प्रकार किया जाता है:
sudo zypper update
दुनिया में आर्क लिनक्स, मंज़रो, एंटरगोस, काओएस और पैकमैन पर आधारित अन्य गेमों के लिए, समकक्ष यह होगा:
sudo pacman -Syu
यदि आप yaourt (जिसे आजकल yay और अन्य AUR सहायकों द्वारा प्रतिस्थापित किया गया है) जैसे बाहरी उपकरणों का भी उपयोग करते हैं, तो कुछ वातावरणों में यह कुछ इस तरह दिखता था:
yaourt -Syua
अन्य लोग पसंद करते हैं जेंटू या स्लैकवेयर उनके अपने अपडेट मैनेजर और कमांड होते हैं। ऐसे में, आपकी स्क्रिप्ट आपके द्वारा उपयोग किए जाने वाले (emerge, slapt-get, आदि) के अनुसार अनुकूलित हो जाएगी, लेकिन मूल विचार हमेशा एक ही रहता है: सिस्टम डेटाबेस को अद्यतन रखें जैसे ही पोस्ट-इंस्टॉलेशन शुरू होता है।
प्रोग्राम इंस्टॉलेशन को श्रेणी के अनुसार व्यवस्थित करें
सिस्टम अपडेट हो जाने के बाद, अब समय आ गया है कि... आपको आवश्यक सभी सॉफ़्टवेयर इंस्टॉल करेंस्क्रिप्ट को अव्यवस्थित होने से बचाने के लिए, पैकेजों को तार्किक समूहों में वर्गीकृत करना और टिप्पणियों को स्पष्ट रखना एक अच्छा विचार है। एक सामान्य रूपरेखा में इस प्रकार की श्रेणियां हो सकती हैं:
- यूटिलिटीजसिस्टम टूल्स, कंप्रेसर, मॉनिटर आदि।
- इंटरनेटब्राउज़र, ईमेल क्लाइंट, मैसेजिंग।
- Juegosस्टीम, ल्यूट्रिस, नेटिव गेम्स, आदि।
- से / डेस्क: ग्राफिकल वातावरण और प्लगइन्स।
- मल्टीमीडिया: वीडियो और ऑडियो प्लेयर, इमेज एडिटर।
- उत्पादकताऑफिस सूट, नोट लेने वाले ऐप, टास्क मैनेजर।
- विकास: कंपाइलर, आईईडी, डिबगिंग उपकरण।
स्क्रिप्ट में, आप इन अनुभागों में टिप्पणियाँ जोड़ सकते हैं, जिससे प्रत्येक ब्लॉक को ढूँढना आसान हो जाएगा। कुछ इस तरह:
# Utilidades
# Desarrollo
# Internet
# Juegos
# DE's y WM's
# Multimedia
# Productividad
प्रत्येक टिप्पणी वाले ब्लॉक के नीचे, आप अपने डिस्ट्रो के लिए उपयुक्त इंस्टॉलेशन कमांड जोड़ते हैं। एक सिस्टम पर आधारित आर्क लिनक्सआपके पास कुछ इस तरह का हो सकता है:
sudo pacman -S chromium
sudo pacman -S steam
sudo pacman -S gnome-shell gnome-extra
लक्ष्य यह है कि जब आप स्क्रिप्ट चलाते हैं, तो सभी... आप आमतौर पर जिन ऐप्स का उपयोग करते हैंयदि आप कभी भी अपने चयन को बदलना चाहते हैं (कोई प्रोग्राम जोड़ना या हटाना चाहते हैं), तो बस उस श्रेणी में पैकेजों की सूची को संशोधित करें और आपका काम हो गया।
स्क्रिप्ट चलाएं और सर्वोत्तम प्रक्रियाओं का पालन करें।
एक बार जब आप अपनी स्क्रिप्ट लिख लें और उसे सेव कर लें install.shटर्मिनल से, आपको बस उस फ़ोल्डर में जाना है जहाँ यह स्थित है और इसे लॉन्च करना है। एक सुविधाजनक तरीका यह है कि डायरेक्टरी को बदलें और इसे एक साथ चलाएं:
cd /ruta/del/script && ./install.sh
उबंटू या डेबियन उपयोगकर्ताओं के लिए एक और बहुत ही सरल विकल्प यह है: बैश को सीधे कॉल करें फ़ाइल के बारे में:
bash nombre-script.sh
पुष्टिकरण की प्रतीक्षा से बचने के लिए, कई इंस्टॉलेशन कमांड पैरामीटर का उपयोग करते हैं। -y (या समकक्ष) जो डिफ़ॉल्ट रूप से "क्या आप जारी रखना चाहते हैं?" प्रश्न स्वीकार करता है। इस तरह स्क्रिप्ट बिना किसी हस्तक्षेप के शुरू से अंत तक निष्पादित किया जाना है।यह तब सुविधाजनक होता है जब आप सिस्टम इंस्टॉल करने के तुरंत बाद इसे लॉन्च करते हैं और इसे अपडेट, इंस्टॉलेशन और क्लीनिंग करते हुए छोड़ देते हैं जबकि आप कुछ और काम करते हैं।
उबंटू में पोस्ट-इंस्टॉलेशन स्क्रिप्ट का व्यावहारिक उदाहरण

एक सामान्य परिदृश्य में Ubuntu 22.04 LTS या इसके बाद का संस्करणAPT और Snap को मिलाकर एक स्क्रिप्ट बनाना समझदारी भरा कदम होगा, क्योंकि कुछ एप्लिकेशन केवल Snap फॉर्मेट में ही उपलब्ध होते हैं। एक उदाहरण के तौर पर, यह प्रक्रिया इस प्रकार हो सकती है: अपडेट करना, मानक पैकेज इंस्टॉल करना, सिस्टम को साफ करना, मुख्य Snap इंस्टॉल करना, फ़ायरवॉल सक्रिय करना और डेस्कटॉप पर कुछ बदलाव करना।
उस प्रकार की स्क्रिप्ट के एक सरल ढांचे में इस तरह के ब्लॉक हो सकते हैं:
#!/bin/bash
# पैकेज सूची को अपडेट करें
सुडो एपीटी अद्यतन
# बिना पूछे उपलब्ध अपडेट इंस्टॉल करें
sudo apt -y अपग्रेड
# उन पैकेजों को हटाएँ जिनकी अब आवश्यकता नहीं है और सफाई करें
sudo apt -y autoremove
सुडो एप्टोलाइन
# APT के माध्यम से सामान्य एप्लिकेशन इंस्टॉल करें
sudo apt -y install vlc gimp clamav chkrootkit lynis
# स्नैप्स जैसे सामान्य ऐप्स इंस्टॉल करें
sudo snap install chromium brave
# UFW (लिनक्स कर्नेल फ़ायरवॉल) को सक्षम करें
सुडो ufw सक्षम करें
# ग्नोम डॉक के व्यवहार को समायोजित करें
gsettings set org.gnome.shell.extensions.dash-to-dock click-action 'minimize'
इतनी कॉम्पैक्ट चीज़ से आप कवर कर रहे हैं अपडेट, क्लीनअप, बेस सॉफ्टवेयर, सुरक्षा और उपयोगिता में मामूली सुधारबेशक, आप इस स्क्रिप्ट को अपनी इच्छानुसार विस्तारित कर सकते हैं: इसमें डेवलपमेंट टूल इंस्टॉलेशन, बैकअप कॉन्फ़िगरेशन, गिट से आपकी डॉटफाइल डाउनलोड करने वाली स्क्रिप्ट आदि जोड़ सकते हैं।
उन्नत टूल का उपयोग करें: Ansible, Chef और इसी तरह के अन्य टूल।
यदि आप कई मशीनों के साथ काम करते हैं या सर्वर, लैपटॉप और डेस्कटॉप पर अपने वातावरण को दोहराने की आवश्यकता है, तो एक ऐसा बिंदु आता है जहां एक साधारण बैश स्क्रिप्ट अपर्याप्त साबित होती है। यहीं पर बैश जैसे टूल काम आते हैं। एंसिबल, शेफ और कंपनी, जो आपको किसी सिस्टम की वांछित स्थिति (इंस्टॉल किए गए पैकेज, कॉन्फ़िगरेशन फ़ाइलें, सक्रिय सेवाएं) का वर्णन करने और इसे प्रतिलिपि योग्य तरीके से लागू करने की अनुमति देती है।
कुछ उपयोगकर्ता जो उबंटू में हर बार एक ही तरह की पोस्ट-इंस्टॉलेशन कॉन्फ़िगरेशन करते-करते थक चुके हैं, वे इन कॉन्फ़िगरेशन प्रबंधन प्रणालियों या पहले से तैयार परियोजनाओं का सहारा लेते हैं। विशिष्ट पोस्ट-इंस्टॉलेशनइसका एक वास्तविक उदाहरण उबंटू में पोस्ट-इंस्टॉलेशन को स्वचालित करने के लिए समर्पित एक रिपॉजिटरी है, जहां बैश स्क्रिप्ट को पैकेज परिभाषाओं, थीम, फोंट और अन्य प्राथमिकताओं के साथ जोड़ा जाता है।
फिर भी, कई डेस्कटॉप मामलों के लिए सबसे व्यावहारिक समाधान यही रहता है कि बाह्य निर्भरताओं के बिना बैश स्क्रिप्टविशेष रूप से यदि आप कुछ ऐसा ढूंढ रहे हैं जिसे यूएसबी ड्राइव पर आसानी से ले जाया जा सके या जिसे आप अतिरिक्त बुनियादी ढांचा स्थापित किए बिना किसी नई स्थापित मशीन पर कॉपी कर सकें।
इंस्टॉलर के भीतर से ही स्वचालन: %post और Kickstart स्क्रिप्ट
टाइप वितरण की दुनिया में रेड हैट, सेंटओएस, रॉकी और इसके व्युत्पन्न शब्दों का उपयोग करना बहुत आम बात है। प्रारंभब बिना किसी की देखरेख के इंस्टॉलेशन के लिए। किकस्टार्ट फ़ाइल के भीतर एक सेक्शन को परिभाषित किया जा सकता है। %post जो बेस सिस्टम की स्थापना पूरी होने पर स्वचालित रूप से चलता है।
विचार यह है कि, यदि आपने परिभाषित किया है नेटवर्क सेटिंग्स किकस्टार्ट में, पोस्ट-इंस्टॉलेशन सेक्शन में प्रवेश करते ही, नेटवर्क पहले से ही चालू होगा। वहां आप कोई भी कमांड डाल सकते हैं जिसे आप स्वचालित करना चाहते हैं: अतिरिक्त पैकेज इंस्टॉल करना, सेटिंग्स में बदलाव करना, स्क्रिप्ट डाउनलोड करना, सिस्टम संदेशों को बदलना आदि।
एक सरल उदाहरण के रूप में, कोई व्यक्ति इसे बदल सकता है आज का संदेश (MOTD) नए स्थापित सिस्टम को अनुभाग में रखकर %post इसके समतुल्य कुछ:
%post
echo "Bienvenido a tu nuevo servidor" > /etc/motd
%end
इंस्टॉलर में पोस्ट-इंस्टॉलेशन स्क्रिप्ट को एम्बेड करने का यह तरीका बड़े पैमाने पर तैनाती के लिए बहुत शक्तिशालीचूंकि पूरी प्रक्रिया 100% स्वचालित है: इंस्टॉलेशन शुरू होता है, विभाजन और बेस पैकेज लागू किए जाते हैं, इंस्टॉलेशन के बाद की स्क्रिप्ट निष्पादित की जाती हैं, और सिस्टम उपयोग के लिए तैयार हो जाता है।
विभिन्न वितरणों के बीच इंस्टॉलेशन को दोहराने में आने वाली सीमाएँ
जब आप किसी एक सामान्य पोस्ट-इंस्टॉलेशन तंत्र का उपयोग करने का प्रयास करते हैं बहुत अलग वितरणयहीं से परेशानी शुरू होती है। उनमें से सभी अपडेट, निर्भरता और पैच को एक ही तरीके से प्रबंधित नहीं करते हैं, और न ही वे अपने रिपॉजिटरी में समान सॉफ़्टवेयर संस्करण प्रदान करते हैं।
हमें एक ओर उस लिपि से अंतर करना होगा जो केवल गणना करती है इंस्टॉल करने के लिए पैकेज और यह डिस्ट्रो के डिपेंडेंसी मैनेजर को डिपेंडेंसी को हल करने देता है (जैसे apt-get या zypper, dnf, urpmi जैसे टूल), और दूसरी ओर, एक सिस्टम जो इसे संभालने का इरादा रखता है सुरक्षा पैच, बैकपोर्ट और नए संस्करण उन प्रोग्रामों के बारे में जो मूल वितरण में उपलब्ध ही नहीं हैं।
एक डिस्ट्रो में जैसे डेबियनहजारों पैकेजों और एक विशाल इकोसिस्टम के साथ, इंस्टॉलर और apt जैसे टूल डिस्ट्रीब्यूशन द्वारा बनाए रखी गई सॉफ़्टवेयर निर्भरताओं को संभालते हैं। अन्य डिस्ट्रीब्यूशनों में, विशेष रूप से व्यावसायिक डिस्ट्रीब्यूशनों में, सिद्धांत अलग है: वे आपको उन पैकेजों और पैचों का सेट देते हैं जिन्हें उन्होंने समर्थन देने के लिए चुना है, और इसके अलावा, आप एक ऐसे क्षेत्र में प्रवेश करते हैं जहाँ... निर्भरताओं और अपडेटों के समाधान की गारंटी नहीं है।.
एक उदाहरण: SuSE 8.2 पहले, अगर आप apt कमांड का इस्तेमाल करके PostgreSQL को डिस्ट्रीब्यूशन के मूल संस्करण से नए संस्करण में अपडेट करना चाहते थे, तो apt पहले आधिकारिक CD में मौजूद संस्करण पूछता था। आपको YaST में जाकर, संबंधित CD से मूल पैकेज चुनकर इंस्टॉल करना पड़ता था, और उसके बाद ही apt अपने रिपॉजिटरी से अतिरिक्त अपडेट स्वीकार करता था। इस तरह की खामियों के कारण PostgreSQL को अपडेट करना मुश्किल हो जाता था। एक ऐसा उपकरण जो सभी मामलों में बिना किसी हस्तक्षेप के काम करता है.
कई वितरण इंस्टॉलर पहले से ही इसके लिए तंत्र शामिल करते हैं। रिकॉर्ड पैकेज चयन और उन्हें अन्य मशीनों पर पुनः उपयोग किया जा सकता है (उदाहरण के लिए, पैकेज सूची को फ्लॉपी डिस्क या बाहरी मीडिया में सहेजना और उसे नए इंस्टॉलेशन में लोड करना)। इन स्थितियों में, इंस्टॉलर निर्भरताओं की पुनर्गणना करता है, आपको अनुपस्थित चीज़ों के बारे में चेतावनी देता है, इसे स्वचालित रूप से हल कर सकता है या आपसे अतिरिक्त पैकेज स्वीकार करने के लिए कह सकता है, या यहां तक कि आपको "संभावित विसंगतियों के बावजूद आगे बढ़ने" का जोखिम भरा विकल्प भी दिखा सकता है।
इसके अलावा, जब हम बात करते हैं विषम मशीन फार्मविभिन्न हार्डवेयर और सॉफ़्टवेयर प्रोफाइल के साथ, जटिलता बहुत बढ़ जाती है। एक सामान्य पोस्ट-इंस्टॉलेशन प्रतिकृति उपयोगिता के लिए विभिन्न वितरणों में अच्छी तरह से काम करने के लिए, या आप प्रत्येक डिस्ट्रो के लिए सभी बाइनरी, पैच और डिपेंडेंसी को स्वयं पैकेज और मेंटेन करते हैं।या फिर आपको वितरण प्रदाताओं से ही उस एकीकृत प्रणाली के लिए आधिकारिक समर्थन प्राप्त करने की आवश्यकता होगी, जो कि वर्तमान व्यावसायिक संदर्भ में संभव नहीं है।
कस्टम वातावरण और एलएफएस में पोस्ट-इंस्टॉलेशन स्क्रिप्ट
पहले से तैयार किए गए वितरणों के बिल्कुल विपरीत, वे वातावरण होते हैं जिनमें आप स्वयं निर्माण करते हैं। आपका लिनक्स सिस्टम बिल्कुल शुरुआत सेलिनक्स फ्रॉम स्क्रैच (एलएफएस) की शैली में। यहां, पोस्ट-इंस्टॉलेशन अब पैकेजों की सूची नहीं रह जाती है, बल्कि एक निर्देशित चरणों की बहुत लंबी श्रृंखला: टूल का संकलन, विभाजनों का निर्माण, फाइल सिस्टम को माउंट करना, टूलचेन समायोजन, बुनियादी सेवाओं का विन्यास आदि।
विस्तृत एलएफएस गाइड का पालन करना या अधिक सरलीकृत दृष्टिकोण अपनाना आपको सिस्टम को निम्नतम स्तरों से समझने में मदद करेगा: कंपाइलर, लिंकर, सी लाइब्रेरी, शेल, बुनियादी उपयोगिताएँ, कर्नेल तक और जीआरयूबी के साथ बूट करना। यह प्रक्रिया लंबी हो सकती है। कई दिन (आसानी से 3 से 5 के बीच)इसके लिए धैर्य और यूनिक्स एडमिनिस्ट्रेशन के एक निश्चित स्तर की आवश्यकता होती है, लेकिन बदले में यह आपको देता है क्या स्थापित किया जाए इस पर पूर्ण नियंत्रण और सिस्टम को कैसे असेंबल किया जाता है।
वास्तविक दुनिया के एक उदाहरण में, वर्चुअल मशीन के भीतर होस्ट सिस्टम के रूप में डेबियन का उपयोग करते हुए VirtualBoxयह प्रक्रिया उदाहरण के लिए, 30 जीबी की डिस्क वाली एक वर्चुअल मशीन (VM) बनाकर, आधार के रूप में डेबियन 10 स्थापित करके और रिपॉजिटरी को ठीक करके शुरू होती है। /etc/apt/sources.list बिल्ड पैकेज तक पहुँचने में सक्षम होने के लिए (बिल्ड-एसेंशियल, लिनक्स-हेडर-एएमडी64आदि) और फिर इंस्टॉल करें VBoxLinuxAdditions मेजबान के साथ पूर्ण एकीकरण स्थापित करने के लिए।
एक बार जब मूल प्रणाली के साथ काम करना सुविधाजनक हो जाए (पूर्ण स्क्रीन, संकलन निर्भरताएँ हल हो जाएँ), तो एक दूसरा वर्चुअल डिस्क ड्राइवयह दूसरी डिस्क, जिसका आकार भी निश्चित है, वह स्थान होगा जहाँ नया कस्टम लिनक्स सिस्टम स्थापित किया जाएगा। इस दूसरी डिस्क को डेबियन (उदाहरण के लिए) से विभाजित किया गया है। /dev/sdb) जैसे उपकरणों के साथ जुदाएमएसडीओएस प्रकार की एक विभाजन तालिका परिभाषित की जाती है और प्राथमिक और तार्किक विभाजन (रूट, स्वैप, /होम) पहली डिस्क के समान योजना का पालन करते हुए बनाए जाते हैं।
इसके बाद इन विभाजनों को उपयुक्त फाइल सिस्टम के साथ फॉर्मेट किया जाता है और उनकी सामग्री प्राप्त की जाती है। यूयूआईडी जैसे उपयोगिताओं के साथ blkid और प्रविष्टियाँ जोड़ी जाती हैं /etc/fstab होस्ट सिस्टम के, उन्हें ऐसे बिंदुओं पर माउंट करने के लिए जैसे कि /mnt/lfs, /mnt/lfs/home और सक्षम करने के लिए विनिमयवहां से, मूल संरचना का निर्माण होता है, और निर्देशिकाएँ जैसे कि $LFS/sources y $LFS/toolsपैकेजों की एक लंबी सूची डाउनलोड की जाती है wget एक फ़ाइल का उपयोग करना wget-list और एक समर्पित उपयोगकर्ता बनाया जाता है, उदाहरण के लिए lfs, उसके साथ .bash_profile y .bashrc संकलन वातावरण के अनुकूल बनाया गया।
यह प्रक्रिया जारी रहती है चेकर (एक संस्करण नियंत्रण स्क्रिप्ट) जो यह सत्यापित करती है कि सभी आवश्यक उपकरण मौजूद हैं (बैश, बिनयूटिल्स, जीसीसी, आदि), कई मामलों में मुख्य पैकेज और इसके विकास संस्करण दोनों को स्थापित करती है।-देव o -देवलमहत्वपूर्ण प्रतीकात्मक लिंक भी बनाए जाते हैं, जैसे कि बनाना /bin/sh इसे बैश की ओर इंगित करें, और इस तरह के पैकेज एक-एक करके संकलित हो जाते हैं। binutils, gcc, glibc, tcl, expect, dejagnu, m4, ncurses, bison, bzip2, coreutils, diffutils, file, findutils, gawk, gettext, grep, gzip, make, patch, perl, Python, sed, tar, texinfo, xz और कई अन्य, दो चरणों में (अस्थायी टूलचेन और chroot के अंदर अंतिम टूलचेन)।
रास्ता आमतौर पर साफ किया जाता है डिबगिंग प्रतीक स्थान बचाने के लिए अनावश्यक लाइब्रेरी हटा दी जाती हैं, गैर-जरूरी स्टैटिक लाइब्रेरी को समाप्त कर दिया जाता है, टूलचेन को इस तरह समायोजित किया जाता है कि सभी नए बिल्ड नई स्थापित लाइब्रेरी का उपयोग करें, और वातावरण में प्रवेश किया जाता है। चुरोट की तैयारी /dev, /proc, /sys, /run और नोड्स बनाना जैसे /dev/console y /dev/null.
मानक निर्देशिका ट्री chroot के भीतर बनाया जाता है (/bin, /sbin, /usr, /var, /etc…), जो प्रोग्राम अभी मौजूद नहीं हैं उनके लिए अस्थायी प्रतीकात्मक लिंक उत्पन्न किए जाते हैं, और उन्हें आरंभ किया जाता है / Etc / पासवर्ड y / आदि / समूह न्यूनतम रूट उपयोगकर्ता के साथ, और लॉग फ़ाइलें तैयार की जाती हैं /var/log सही अनुमतियों के साथ। निम्नलिखित को भी कॉन्फ़िगर किया गया है: स्थानीय जैसे टूल के साथ locale-gen या समकक्ष, समय क्षेत्र का चयन इसके साथ किया जाता है tzselect और एक लिंक बनाया जाता है /etc/localtime चुने हुए क्षेत्र में /usr/share/zoneinfo.
एक और महत्वपूर्ण पहलू है विन्यास। nsswitch.conf ताकि नेटवर्क पर नाम रिज़ॉल्यूशन और अन्य सेवाएं सुचारू रूप से काम कर सकें, और ld.so.conf बगल में ldconfig नई डायनामिक लाइब्रेरी के पथों को पंजीकृत करने के लिए। फिर, glibc और अंतिम कंपाइलरों के साथ, प्रमुख पैकेजों को पुनः संकलित किया जाता है ताकि यह सुनिश्चित हो सके कि सब कुछ सही ढंग से लिंक हो रहा है।
इसके साथ ही, नए सिस्टम पर नेटवर्क एक्सेस को कॉन्फ़िगर किया जा रहा है: फाइलें बनाई जा रही हैं। /etc/sysconfig/ifconfig.eth0 (या संबंधित इंटरफ़ेस नाम), आईपी पता, गेटवे और मास्क परिभाषित किए जाते हैं, और निम्नलिखित उत्पन्न होता है: / Etc / resolv.conf उचित DNS सर्वरों के साथ, वे ठीक हो गए हैं। मेजबाननाम y / Etc / hosts मशीन की जानकारी के साथ।
स्क्रिप्ट और बूट फ़ाइलें भी इस प्रकार कॉन्फ़िगर की गई हैं / etc / inittab, /etc/sysconfig/घड़ी, /etc/sysconfig/console y /etc/sysconfig/rc.siteजहां डिफ़ॉल्ट रनलेवल, सिस्टम लॉग हैंडलिंग, कंसोल भाषा, कीबोर्ड मैप और स्टार्टअप पर सेवा व्यवहार जैसे विवरणों को समायोजित किया जाता है।
शेल का अनुभव अनुकूलित है / Etc / प्रोफ़ाइल और इस प्रकार की फाइलें ~ / .bash_profile y ~ / .bashrc, प्लस /etc/inputrc रीडलाइन लाइब्रेरी के लिए (कीबोर्ड शॉर्टकट, कमांड हिस्ट्री व्यवहार आदि को नियंत्रित करना)। / आदि / गोले वैध शेल की सूची और एक के साथ / Etc / fstab नए विभाजनों (रूट, होम, स्वैप, /बूट यदि मौजूद हो) के अनुसार अनुकूलित।
अगला चरण संकलन करना है। लिनक्स कर्नेल: चयनित संस्करण को संपीड़ित किया जाता है (उदाहरण के लिए एक linux-5.x.y), एक मूल कॉन्फ़िगरेशन फ़ाइल से शुरू करते हुए, प्रमुख विकल्पों की समीक्षा की जाती है जैसे कि CONFIG_DEVTMPFS और udev और VM हार्डवेयर से संबंधित अन्य चीजों के लिए, आप कॉन्फ़िगरेशन मेनू में प्रवेश करते हैं (make menuconfig) डिफ़ॉल्ट होस्टनाम और कई सुविधाओं को समायोजित करने के लिए, और अंत में इसे संकलित किया जाता है (make, make modules_install) और कर्नेल तथा उसके घटक स्थापित किए जाते हैं /boot.
अंतिम चरण आमतौर पर इंस्टॉल और कॉन्फ़िगर करना होता है। GRUB बूट लोडर के रूप में। GRUB को सही डिस्क के MBR में लिखने के लिए कमांड निष्पादित किए जाते हैं, जिससे एक उत्पन्न होता है। grub.cfg नए कर्नेल और, यदि लागू हो, तो अन्य सिस्टमों के लिए प्रविष्टियों के साथ। इस विशिष्ट संदर्भ में, चूंकि होस्ट डिस्ट्रीब्यूशन डेबियन का उपयोग केवल एक "ढांचे" के रूप में किया गया था, इसलिए इसकी वर्चुअल डिस्क को अंततः मशीन से हटा दिया जाता है, ताकि जो डिस्क शुरू में थी वह बनी रहे। /dev/sdb ऐसा भी होता है देव / / sda और नया लिनक्स सिस्टम स्वचालित रूप से बूट हो जाता है।
जब सब कुछ व्यवस्थित हो जाता है, तो पहचान फाइलें बनाई जाती हैं, जैसे कि /etc/lsb-रिलीज़ y /आदि/ओएस-रिलीज़ नए डिस्ट्रो के नाम के साथ (उदाहरण के लिए "S4viOS"), एक Bashrc रूट और भविष्य के उपयोगकर्ताओं के लिए सुखद है, और महत्वपूर्ण क्षण से पहले अंतिम फ़ाइल सिस्टम अनमाउंट किया जाता है: वीएम को रीबूट करना, जीआरयूबी में संबंधित प्रविष्टि का चयन करना और देखना। आपने जो लिनक्स सिस्टम शुरू से बनाया है, उसे पहली बार कैसे बूट करें.
कब इतनी मेहनत करना उचित होता है, और कब एक साधारण स्क्रिप्ट ही पर्याप्त होती है?
यह पूरी यात्रा, सरल APT या pacman स्क्रिप्ट कस्टम कर्नेल और GRUB के साथ LFS सिस्टम स्थापित करने से भी, यह स्पष्ट रूप से दर्शाता है कि पोस्ट-इंस्टॉलेशन को स्वचालित करने के मामले में लिनक्स में आपके पास कितनी संभावनाएं हैं।
रोजमर्रा की जिंदगी के लिए, लगभग हर किसी के लिए सबसे व्यावहारिक चीज एक या अधिक रखना है। वितरण के अनुसार पोस्ट-इंस्टॉलेशन स्क्रिप्टजहां आप उन चीजों को अपडेट, इंस्टॉल और फाइन-ट्यून करते हैं जिनका आप हमेशा उपयोग करते हैं; यदि आप कई मशीनों या मिश्रित वातावरणों के साथ काम करते हैं, तो %post सेक्शन के साथ Ansible या Kickstart काम आता है; और यदि आप वास्तव में Linux को गहराई से समझना चाहते हैं, तो LFS-प्रकार का मार्ग, हालांकि लंबा है, आपको नियंत्रण का वह स्तर प्रदान करता है जो कोई भी व्यावसायिक डिस्ट्रो डिफ़ॉल्ट रूप से प्रदान नहीं करता है। गाइड को साझा करें ताकि अधिक उपयोगकर्ता विषय के बारे में जान सकें.