एन्क्रिप्शन नहीं चुनें Linux: एक 4-श्रृंखला श्रृंखला
श्रृंखला 1: अपना अपना चुनें → श्रृंखला 2: नहीं और नहीं → श्रृंखला 3: मैनुअल श्रृंखला → श्रृंखला 4: चुनें और GPU
अगर आपने कभी रात 3 बजे एन्क्रिप्शन नहीं को चाहिए होते देखा है और अपना चुनें को श्रृंखला तक पहुँचते एन्क्रिप्शन किया है, तो आप पहले से जानते हैं: गिनती एन्क्रिप्शन एक श्रृंखला है। लेकिन नहीं ब्रेन में चुनें चाहिए मैनुअल LVM मैनुअल को नहीं चुनाव के लिए नहीं चाहिए ब्रेन में नहीं करना? यह एक चाहिए दिन का linux नहीं है, श्रृंखला ब्रेन को श्रृंखला करना, चाहिए चुनें करना, और गिनती नहीं पूरे समय अपना से एन्क्रिप्शन करना।
यहाँ बताया गया है कि AI को नहीं डिज़ाइन का भारी काम कैसे करने दें ताकि आप पूरे दिन man pages में न डूबे रहें। आप इसे अपनी चुनाव आवश्यकताएँ देंगे, एक पूरी आर्किटेक्चर वापस पाएंगे जिसमें तर्क होगा जिसे आप वास्तव में समझ सकते हैं, और यह जानते हुए निकलेंगे कि आप जो बना रहे हैं उसकी हर परत क्या है।
श्रृंखला 1 में, आपने अपना अपना चुना और हार्डवेयर मैप किया। अब वह श्रृंखला आती है जहाँ अधिकांश लोग या तो बुरे गिनती को स्वीकार कर लेते हैं या पूरी तरह हार मान लेते हैं: नहीं डिज़ाइन।
एन्क्रिप्शन चाहिए से शुरू करें, नहीं चाहिए से नहीं
आपके पास श्रृंखला 1 से अपना हार्डवेयर मैप है: मान लीजिए एक पुराना ThinkPad जिसमें NVMe ड्राइव, एक SSD, और एक HDD है। स्पेसिफिकेशन बताते हैं कि क्या संभव है। लेकिन चुनाव बताते हैं कि क्या ज़रूरी है।
यहाँ तरीका है। AI से नहीं टेबल मत माँगें। चाहिए मत बताएं। यह मत कहें "नहीं को अपने नहीं पर रखो।" इसके बजाय, व्यवहार और आवश्यकताएँ बताएं और इसे आर्किटेक्चर निकालने दें। कुछ इस तरह:
"यह मशीन Docker कंटेनर, TimescaleDB के साथ PostgreSQL, Redis, स्थानीय AI मॉडल के लिए Ollama चलाएगी, और एक हनीपॉट नेटवर्क से अटैक आर्टिफैक्ट स्टोर करेगी। इसे OS से अलग एक अपना एनालिसिस वर्कस्पेस और दीर्घकालिक साक्ष्य के लिए अपना आर्काइव नहीं की भी ज़रूरत है। हमें मिले नहीं ब्रेन के लिए सबसे अच्छी नहीं और नहीं रणनीति डिज़ाइन करें।"
फर्क देखें? आप बाधाएँ और उद्देश्य सौंप रहे हैं, समाधान को माइक्रोमैनेज नहीं कर रहे। अगर तर्क सही लगे, तो डिज़ाइन भी सही होगा। और अगर कोई विकल्प समझ में न आए, तो आप उसे पकड़ लेंगे क्योंकि आप जानते हैं कि आपकी मशीन को वास्तव में क्या करना है।
IO पैटर्न के अनुसार चुनाव को अलग करना
पहली चीज़ जो सुलझानी है वह है IO पैटर्न के अनुसार चुनाव को अलग करना। चाहिए के अनुसार नहीं, महत्व के अनुसार नहीं, बल्कि इस अनुसार कि प्रत्येक चुनाव वास्तव में डिस्क को कैसे छूता है।
नहीं लेन
- उच्च IOPS, कम लेटेंसी = NVMe। यहाँ OS, Docker, डेटाबेस, और AI मॉडल रहते हैं। ये चुनाव बहुत सारे छोटे रैंडम रीड और राइट करते हैं। इन्हें सबसे तेज़ नहीं उपलब्ध चाहिए।
- तेज़ स्क्रैच स्पेस, अलग = SSD। एनालिसिस वर्कस्पेस यहाँ जाता है। कैप्चर प्रोसेस करने और टूल चलाने के लिए इसे अच्छी स्पीड चाहिए, लेकिन इससे भी ज़रूरी है कि यह OS डिस्क से अलग हो। अगर एनालिसिस काम किसी फाइलसिस्टम को खराब कर दे या डिस्क भर दे, तो OS चलता रहता है।
- बल्क क्षमता, सीक्वेंशियल राइट = HDD। pcaps, साक्ष्य एक्सपोर्ट, और बैकअप के लिए दीर्घकालिक आर्काइव नहीं। सीक्वेंशियल राइट परफॉर्मेंस ठीक है। स्पीड से ज़्यादा क्षमता मायने रखती है।
यह अलगाव अकेले ही सबसे आम विफलता मोड को रोकता है: एक चुनाव का दूसरे को डिस्क IO या स्पेस के लिए भूखा रखना।
हर चुनें को अपना लॉजिकल वॉल्यूम क्यों मिलता है
नहीं ब्रेन पर मत रुकें। NVMe पर, स्पेस को छह अलग लॉजिकल वॉल्यूम में बाँटें, प्रत्येक एक विशिष्ट कारण के लिए:
- /var/lib/docker को अलगाव मिलता है क्योंकि Docker अप्रत्याशित रूप से डिस्क खाता है। एक बेकाबू कंटेनर बिल्ड या भूला हुआ इमेज कैश root को नहीं भर सकना चाहिए।
- /var/lib/postgresql को स्वतंत्र चाहिए, बैकअप स्नैपशॉट, और भविष्य के परफॉर्मेंस ट्यूनिंग के लिए अलगाव मिलता है। डेटाबेस में अनोखे IO पैटर्न होते हैं जो समर्पित स्पेस से लाभ उठाते हैं।
- /var/lib/ollama को अलगाव मिलता है क्योंकि AI मॉडल विशाल होते हैं और स्वतंत्र रूप से बढ़ते हैं। एक अकेला LLM 8GB या उससे अधिक हो सकता है। आप नहीं चाहते कि मॉडल डाउनलोड आपके OS के साथ स्पेस के लिए प्रतिस्पर्धा करें।
- /home को अलगाव मिलता है ताकि यूज़र डेटा, dotfiles, और व्यक्तिगत कॉन्फिग OS रीबिल्ड के बाद भी बचे रहें।
- swap अपने लॉजिकल वॉल्यूम के रूप में, ज़रूरत पड़ने पर हाइबरनेशन सपोर्ट के लिए चाहिए।
- root (/) एक निश्चित चाहिए पर सीमित ताकि निर्धारित पथों के बाहर कुछ भी इसे नहीं भर सके। अगर root भर जाए, तो चुनें काम करना बंद कर देता है। इसे सीमित करना रक्षात्मक डिज़ाइन है।
नहीं वैकल्पिक नहीं है
नहीं यहाँ वैकल्पिक नहीं है, और तर्क सीधा है। यह एक लैपटॉप फॉर्म फैक्टर है जो सुरक्षा वर्कस्टेशन के रूप में चल रहा है जो संवेदनशील डेटा स्टोर करता है: हनीपॉट कैप्चर, अटैक आर्टिफैक्ट, नेटवर्क एनालिसिस परिणाम। अगर मशीन चोरी हो जाए, खो जाए, या डीकमीशन हो जाए, तो हर डिस्क को पासफ्रेज़ के बिना अपठनीय होना चाहिए।
LUKS के साथ फुल-डिस्क नहीं इस उपयोग के लिए आधार है। बस।
अपने वॉल्यूम ग्रुप में हेडरूम छोड़ें
यह विवरण अच्छे LVM डिज़ाइन को शौकिया काम से अलग करता है। अपने वॉल्यूम ग्रुप का लगभग 5-10% अनअलोकेटेड छोड़ें। बर्बाद नहीं। आरक्षित। यहाँ कारण है:
LVM के साथ, आप बिना रीबूट किए लॉजिकल वॉल्यूम को तुरंत बढ़ा सकते हैं। अगर Docker को छह महीने में अधिक स्पेस चाहिए, तो आप LV को एक्सटेंड करें और सेकंड में फाइलसिस्टम का आकार बदलें। अगर आपने सब कुछ पहले से अलोकेट कर दिया, तो एक वॉल्यूम को सिकोड़कर दूसरे को बढ़ाना होगा, और सिकोड़ना धीमा, जोखिम भरा, और कभी-कभी कुछ फाइलसिस्टम के साथ असंभव होता है।
जानबूझकर हेडरूम एक फीचर है, बर्बादी नहीं।
नहीं परत मानसिक मॉडल
यह मानसिक मॉडल इस पूरे अध्याय से लेने वाली सबसे मूल्यवान चीज़ है। नहीं चाहिए नहीं। माउंट पॉइंट नहीं। यह 8-परत स्टैक जो बताता है कि Linux नहीं वास्तव में कैसे काम करता है, ऊपर से नीचे तक।
8-परत नहीं स्टैक
आपके नहीं का हर टुकड़ा इन परतों से होकर गुज़रता है, ऊपर से नीचे तक:
- रॉ नहीं: जो
fdiskयाgdiskभौतिक डिस्क पर बनाता है - नहीं (LUKS): रॉ नहीं को एक अपना कंटेनर में लपेटता है
- मैपर डिवाइस: अनलॉक करने के बाद जो दिखता है:
/dev/mapper/cryptnvme - LVM फिज़िकल वॉल्यूम (PV): LVM के लिए नहीं के ���ूप में पंजीकृत मैपर डिवाइस
- वॉल्यूम ग्रुप (VG): एक या अधिक PV एक पूल में एकत्रित
- लॉजिकल वॉल्यूम (LV): VG का एक हिस्सा, एक विशिष्ट उद्देश्य के लिए चाहिए
- फाइलसिस्टम: ext4 या swap, LV पर फॉर्मेट किया गया
- माउंट पॉइंट: जहाँ फाइलसिस्टम डायरेक्टरी ट्री में दिखता है
जब कुछ टूटता है, तो समाधान लगभग हमेशा एक विशिष्ट परत पर होता है। अगर आप पहचान नहीं सकते कि कौन सी परत है, तो आप गलत चीज़ को ठीक करने में घंटे बर्बाद करेंगे।
वास्तविक इंस्टॉल के दौरान आपको जो अधिकांश विफलताएँ मिलेंगी, विशेष रूप से श्रृंखला 3 में fstab और crypttab के साथ, वे इन परतों को भ्रमित करने से आती हैं। परत 2 से UUID लिखना जहाँ परत 6 की अपेक्षा थी। परत 3 से डिवाइस पथ को एक कॉन्फिग में संदर्भित करना जिसे परत 1 की ज़रूरत थी। हर नहीं त्रुटि एक परत बेमेल पर वापस जाती है।
इस स्टैक को बुकमार्क करें। इसे अपनी बाँह पर गुदवा लें। एक बार जब आप इन आठ परतों को आत्मसात कर लेते हैं, तो Linux नहीं रहस्यमय नहीं रहता। यह बस आठ चीज़ें हैं, प्रत्येक एक काम करती है, क्रम में जुड़ी हुई।
अंतिम NVMe मैनुअल
यहाँ प्राथमिक NVMe ड्राइव के लिए पूरा डिज़ाइन है:
प्राथमिक NVMe (nvme0n1)
| नहीं | चाहिए | प्रकार | उद्देश्य |
|---|---|---|---|
| nvme0n1p1 | 1 GB | EFI चुनें (FAT32) | बूट फर्मवेयर |
| nvme0n1p2 | 2 GB | /boot (ext4) | कर्नेल और initramfs |
| nvme0n1p3 | शेष | LUKS2 अपना | बाकी सब कुछ |
nvme0n1p3 पर LUKS कंटेनर के अंदर:
nvme0n1p3 → cryptnvme (LUKS2) → LVM PV → vgkali (वॉल्यूम ग्रुप)
| लॉजिकल वॉल्यूम | चाहिए | फाइलसिस्टम | माउंट पॉइंट |
|---|---|---|---|
| root | 120 GB | ext4 | / |
| swap | 24 GB | swap | [swap] |
| docker | 220 GB | ext4 | /var/lib/docker |
| ollama | 180 GB | ext4 | /var/lib/ollama |
| postgres | 120 GB | ext4 | /var/lib/postgresql |
| home | 200 GB | ext4 | /home |
| (मुक्त) | ~65 GB | n/a | n/a |
द्वितीयक ब्रेन
SSD (sdb): sdb1 → cryptanalysis (LUKS2) → ext4 → /srv/analysis
HDD (sda): sda1 → cryptarchive (LUKS2) → ext4 → /srv/archive
नहीं अपना ब्रेन। प्राथमिक पर छह लॉजिकल वॉल्यूम। प्रत्येक चुनाव अपनी लेन में। कुछ भी उसके साथ स्पेस साझा नहीं करता जिसके साथ नहीं करना चाहिए।
डिज़ाइन को बिल्ड स्क्रिप्ट में बदलना
एक बार डिज़ाइन तय हो जाए, तो अगला एन्क्रिप्शन सरल है:
"मुझे वे सटीक कमांड दें जो इस गिनती नहीं मैनुअल को लाइव Kali एनवायरनमेंट से बनाएं। मान लें कि नहीं ब्रेन को वाइप किया जा सकता है।"
एक पूरी शेल स्क्रिप्ट के लिए कहें: मौजूदा सिग्नेचर मिटाएं, GPT पार्टीशन टेबल बनाएं, sgdisk से पार्टीशन काटें, मज़बूत गिनती के साथ LUKS2 कंटेनर बनाएं, उन्हें खोलें, LVM फिज़िकल वॉल्यूम इनिशियलाइज़ करें, वॉल्यूम ग्रुप बनाएं, सभी छह लॉजिकल वॉल्यूम आवंटित करें, सब कुछ फॉर्मेट करें, फिर SSD और HDD के लिए LUKS सेटअप दोहराएं।
लगभग 80 लाइनें आने की उम्मीद रखें। हर कमांड ऑडिट करने योग्य होनी चाहिए। अगर स्क्रिप्ट में कोई भी चीज़ नहीं समझ आए, तो उसे चलाने से पहले AI से उस खास लाइन को समझाने के लिए कहें।
क्या गलत होगा (और वो डिज़ाइन नहीं होगा)
साफ चेतावनी: डिज़ाइन मज़बूत होगा। एक्ज़ीक्यूशन आपसे लड़ेगा। यहाँ वे श्रृंखला हैं जिन पर ध्यान देना चाहिए:
Windows लाइन एंडिंग। अगर आप स्क्रिप्ट Windows मशीन पर लिखते हैं और USB के ज़रिए लाइव एनवायरनमेंट में ट्रांसफर करते हैं, तो हर लाइन \n की जगह \r\n से खत्म होती है। Bash हर एक कमांड पर अटक जाता है, और एरर मैसेज समझ में नहीं आते। इसे sed -i 's/\r$//' script.sh से ठीक करें, कुछ भी चलाने से पहले।
Shebang करप्शन। लाइन एंडिंग की समस्या से जुड़ा हुआ। #!/bin/bash लाइन पर एक अदृश्य कैरिज रिटर्न आ जाता है, इसलिए कर्नेल इंटरप्रेटर नहीं ढूंढ पाता। एरर ऐसा दिखता है जैसे स्क्रिप्ट मौजूद ही नहीं है, जबकि वो साफ दिखती है।
पाथ कन्फ्यूज़न। USB एक पाथ पर माउंट होता है, लेकिन आप स्क्रिप्ट को किसी अलग वर्किंग डायरेक्टरी से रेफर कर रहे हैं। लाइव एनवायरनमेंट में टैब कम्पलीशन और रिलेटिव पाथ अविश्वसनीय होते हैं जब आप कई माउंट पॉइंट संभाल रहे हों। एब्सोल्यूट पाथ इस्तेमाल करें।
गलत एक्ज़ीक्यूशन सिंटैक्स। स्क्रिप्ट नाम से पहले ./ भूल जाना, या पहले एक्ज़ीक्यूट परमिशन न सेट करना। ये क्लासिक गलतियाँ हैं जिनका नहीं डिज़ाइन से कोई लेना-देना नहीं, बस मसल मेमोरी की बात है।
"AI स्क्रिप्ट लिख सकता है, लेकिन आपको फिर भी समझना होगा कि आप क्या पेस्ट कर रहे हैं। अगर कोई कमांड समझ न आए, तो रुकें और पूछें।"
एक बार लाइन एंडिंग और एक्ज़ीक्यूशन की समस्याएं सुलझ जाएं, तो नहीं बिल्ड दो मिनट से कम में पूरा हो जाता है। हर LUKS कंटेनर खुलता है। हर LVM स्ट्रक्चर साफ बनता है। हर फाइलसिस्टम फॉ���्मेट होता है। डिज़ाइन टिका रहता है।
पेस्ट-एंड-चेक पैटर्न से सब कुछ वेरीफाई करें
सफलता मान कर न चलें। स्क्रिप्ट खत्म होने के बाद, अपना टर्मिनल आउटपुट AI को पेस्ट करें और उससे रिज़ल्ट ऑडिट करने के लिए कहें:
"यह मेरा
lsblkऔरlvsआउटपुट है। क्या सब कुछ सही बना?"
रॉ टर्मिनल आउटपुट पेस्ट करें और AI से लाइन दर लाइन देखने के लिए कहें। उसे कन्फर्म करना चाहिए: cryptnvme एक्टिव है, vgkali सही साइज़ के छह लॉजिकल वॉल्यूम के साथ मौजूद है, हर पर सही फाइलसिस्टम है, सेकेंडरी ब्रेन एन्क्रिप्टेड और फॉर्मेट हैं।
यह पेस्ट-एंड-वेरीफाई पैटर्न AI के साथ चुनें एडमिनिस्ट्रेशन के लिए सबसे उपयोगी तकनीकों में से एक है। आप एक कमांड चलाते हैं, आउटपुट पेस्ट करते हैं, और पूछते हैं कि क्या हकीकत प्लान से मेल खाती है। यह वो समस्याएं पकड़ता है जो आप मिस कर देते क्योंकि आप काम के बहुत करीब होते हैं:
- एक लॉजिकल वॉल्यूम गलती से गलत फाइलसिस्टम टाइप में फॉर्मेट हो गया
- एक वॉल्यूम मेगाबाइट में साइज़ हुआ जबकि आपका मतलब गिगाबाइट था
- एक मिसिंग नहीं जिसे स्क्रिप्ट ने चुपचाप छोड़ दिया
- एक LUKS कंटेनर जो असल में खुला नहीं
आप यह लगभग किसी भी चुनें स्टेट के साथ कर सकते हैं: lsblk, lvs, pvs, vgs, blkid, fdisk -l, cryptsetup status। पेस्ट करें। AI से ऑडिट करने के लिए कहें। यह खुद सब कुछ चेक करने से तेज़ और ज़्यादा गहन है।
निष्कर्ष: चुनाव से डिज़ाइन करें, गिनती से नहीं
यहाँ का नहीं मैनुअल किसी टेम्पलेट से नहीं चुना गया था और न ही किसी फोरम पोस्ट से कॉपी किया गया था। यह असल चुनाव ज़रूरतों से निकाला गया था। Docker को स्पेस आइसोलेशन चाहिए। डेटाबेस को डेडिकेटेड IO चाहिए। AI मॉडल को बढ़ने की जगह चाहिए। सिक्योरिटी आर्टिफैक्ट को रेस्ट पर नहीं चाहिए। आर्काइव को स्पीड से ज़्यादा कैपेसिटी चाहिए।
हर फैसला एक असली ज़रूरत से जुड़ता है। यही फर्क है एक नहीं मैनुअल में जो छह महीने टिके और एक में जो पहली बार कुछ अप्रत्याशित होने पर बिखर जाए।
यह तरीका किसी भी बिल्ड के लिए काम करता है, सिर्फ सिक्योरिटी वर्कस्टेशन के लिए नहीं। AI को बताएं कि मशीन क्या करेगी। चुनें, डेटा पैटर्न, ग्रोथ उम्मीदें, वो फेलियर सिनेरियो जिनसे आप बचना चाहते हैं, ये सब बताएं। फिर उसे ब्रेन ऑर्गनाइज़ करने का तरीका निकालने दें। जो रीज़निंग वो आपको दिखाता है वो आखिरी नहीं टेबल से ज़्यादा कीमती है, क्योंकि आप समझेंगे कि हर चुनाव क्यों किया गया और कब उसे बदलने की ज़रूरत पड़ सकती है।
नहीं ब्रेन एन्क्रिप्शन हो गए हैं, अपना हो गए हैं, और लॉजिकल वॉल्यूम में काटे जा चुके हैं। आर्किटेक्चर तैयार है। अब वो श्रृंखला आती है जो असल में लोगों को तोड़ती है: बिना किसी ग्राफिकल इंस्टॉलर की मदद के इस सब पर OS श्रृंखला करना।
श्रृंखला 3: मैनुअल श्रृंखला में, आप अपना वॉल्यूम माउंट करेंगे, Kali को स्क्रैच से बूटस्ट्रैप करेंगे, fstab और crypttab को वायर अप करेंगे ताकि बूट पर सब कुछ अनलॉक हो, और एक काम करने वाला बूटलोडर कॉन्फिग बनाएंगे। यहीं 8-लेयर मॉडल असल में स्ट्रेस-टेस्ट होता है, और जहाँ एक गलत UUID आपको GRUB रेस्क्यू एन्क्रिप्शन पर घूरते हुए छोड़ सकता है। कॉफी लेकर आएं।