systemctl भन्छ systemd PID 1 होइन: त्यसो भए के?
PID 1 को सन्देश OpenVPN होइन, वातावरणको बारेमा हो। PID 1 को रूपमा के चलिरहेको छ जाँच्नुहोस्, जहाँ समर्थन छ त्यहाँ systemd सक्षम गर्नुहोस्, र त्यसपछि साँच्चैको त्रुटि पढ्नुहोस्।
जब systemctl start openvpn-client@office चलाइन्छ र प्रणाली systemd सँग बुट भएको छैन भन्ने सन्देश आउँछ, त्यो सेवा असफलता जस्तो देखिन्छ। यो सेवा असफलता नै होइन: तपाईंले बोलाउनुभएको systemctl बोल्नको लागि चलिरहेको कुनै प्रबन्धक भेट्दैन, त्यसैले OpenVPN बारे केही पनि जाँचिएको छैन। sudo प्रबन्धक बनाउँदैन, र unit फाइल स्थापना गर्दा पनि त्यो बन्दैन। आदेश र मेसिन दुई भिन्न संसारबाट आउँछन्, र त्रुटि नै त्यो देखा परेको एक मात्र ठाउँ हो।
पहिले सोध्नुहोस् कि आदेश चल्ने ठाउँमा PID 1 कुन प्रक्रियाको स्वामित्वमा छ, किनकि त्यही उत्तरले unit हरू छन् कि छैनन् भन्ने निर्धारण गर्छ।
त्रुटिले OpenVPN होइन, वातावरणको नाम लिन्छ
systemctl क्लाइन्ट हो, प्रबन्धक होइन। यो socket मार्फत प्रणाली प्रबन्धकसँग जोडिन्छ, र अर्को छेउमा प्रबन्धक नभएमा मानिसहरूले फोरममा टाँस्ने सन्देश नै छाप्छ। ps -p 1 -o pid=,comm= वास्तवमा के PID 1 को रूपमा चलिरहेको छ देखाउँछ, र उत्तर प्रायः shell, init आवरण वा कन्टेनरको आफ्नै प्रवेश बिन्दु हुन्छ। त्यस्तो अवस्थामा unit फाइल पूर्ण रूपमा मान्य हुन सक्छ र तैपनि कहिल्यै पढिँदैन। आदेशलाई root को रूपमा दोहोर्याउँदा क्लाइन्टको प्रमाणहरू मात्र परिवर्तन हुन्छन्।
पहिलो लाइन अघि पूरै सन्देश पढ्नुहोस्। प्रबन्धकबाटै आउने त्रुटि, जस्तै हराएको unit वा असफल सर्त, भन्नु तपाईं त्यहाँ पुग्नुभयो; यो त्रुटिले पुग्नुभएन भन्ने बुझाउँछ।
WSL: systemd सक्षम गर्नु कन्फिग परिवर्तन हो
WSL ले पछिका संस्करणहरूमा systemd समर्थन पायो, तर यो सुविधा प्रत्येक वितरणका लागि छुट्टै सक्षम गरिन्छ र स्थापित WSL संस्करणले समर्थन गर्ने ठाउँमा मात्र काम गर्छ। wsl --version Windows तर्फ तपाईंसँग के छ देखाउँछ, र वितरणको /etc/wsl.conf फाइलमा [boot] खण्ड छ, जसमा systemd=true छ। पहिले नै भएका खण्ड नहटाई त्यो फाइल सम्पादन गर्नुहोस्, त्यसपछि परिवर्तन लागू हुन WSL इन्स्टेन्स पुनः सुरु गर्नुहोस्। wsl --shutdown चलिरहेका सबै वितरण रोक्छ, त्यसैले पहिले आफ्नो काम सुरक्षित गर्नुहोस्।
फेरि खोलेपछि, OpenVPN unit लाई छुनु अघि प्रबन्धक पुष्टि गर्नुहोस्: ps -p 1 -o comm= देखाउनुपर्छ systemd. systemd सक्षम गर्दा कुनै प्रोफाइल, प्रमाण वा इन्स्टेन्स नाम मिल्दैन, त्यसैले अर्को त्रुटि PID 1 होइन, तीमध्ये एकको बारेमा हुनेछ।
कन्टेनरहरू आफ्नो प्रवेश बिन्दु चलाउँछन्, unit होइन
सामान्य कन्टेनरले आफ्नो प्रवेश बिन्दु वा आदेशले निर्धारण गरेको कुरा सुरु गर्छ, र तपाईंले जुनसुकै प्याकेज स्थापना गर्नुभए पनि त्यो systemd सँग बुट भएको मेसिन होइन। इमेजमा systemctl थप्दा जोड्न केही नभएको क्लाइन्ट मात्र पाइन्छ। Community OpenVPN का लागि समर्थित ढाँचा सामान्यतया अग्रभागमा चल्ने प्रक्रिया हो, openvpn --config /path/to/client.conf, जसलाई प्रवेश बिन्दुले सुरु गर्छ र बाहिरबाट निगरानी गरिन्छ। त्यही मालिकले सुरुवात, सङ्केत र बन्द गर्ने काम सम्हाल्छ, र सुरुङ व्यवस्थापन गर्ने एक मात्र वस्तु त्यही हुनुपर्छ।
जुन प्रवेश बिन्दुले पहिले नै त्यो सुरुङ व्यवस्थापन गरिरहेको छ, त्यसको छेउमा कहिल्यै अन्तरक्रियात्मक प्रतिलिपि नचलाउनुहोस्, किनकि दुई प्रक्रिया उपकरण र मार्गहरूका लागि लड्नेछन्. कन्टेनर भित्रको न्यूनतम init प्रक्रियाले सन्तान जम्मा गर्छ र सङ्केत अगाडि पठाउँछ; त्यसले इमेजलाई unit भएको होस्ट बनाउँदैन।
यदि कुनै तैनाथीलाई साँच्चै कन्टेनर भित्र systemd चाहिन्छ भने, त्यसका लागि जानाजान डिजाइन गरिएको इमेज चाहिन्छ, systemctl गुनासो गर्न छोडेसम्म थपिने अतिरिक्त विशेषाधिकार होइन।
प्रबन्धक भएपछि अर्को त्रुटि पढ्नुहोस्
साँचो प्रबन्धकले सेवा सुरु गर्ने बित्तिकै उपयोगी त्रुटिहरू सुरु हुन्छन्। उपकरण अनुमति असफलता, कन्फिग पार्सिङ त्रुटि, हराएको प्रमाण र पुग्न नसकिने साथी — यी PID 1 सन्देशले कहिल्यै नजाँचेका चार फरक समस्या हुन्। unit ले तिनीहरू उत्पन्न गरेको क्रममा पढ्नुहोस्, journalctl -u openvpn-client@office -n 50 प्रयोग गरेर systemd होस्टमा, वा प्रबन्धक नभएको ठाउँमा क्लाइन्ट अग्रभागमा चलाएर। अग्रभागमा चलाउनु प्रोफाइल आफैं काम गर्छ भनी पुष्टि गर्ने सबैभन्दा छिटो उपाय पनि हो।
आफ्ना नोटमा दुवै वातावरण छुट्टाछुट्टै राख्नुहोस्: सुरुङ चलाउने होस्ट, र तपाईं आदेश टाइप गर्ने ठाउँ।