क्या वर्चुअल मशीन का उपयोग करके लिनक्स मॉड्यूल को विकसित करना / परीक्षण करना सुरक्षित है?


18

मैं एक ऑपरेटिंग सिस्टम क्लास में हूँ। आ रहा है, हमें कर्नेल कोड को संशोधित करने के लिए कुछ काम करना होगा। हमें सलाह दी गई है कि हम परीक्षण करने के लिए व्यक्तिगत मशीनों का उपयोग न करें (मुझे लगता है कि इसका मतलब है इसे स्थापित करें) क्योंकि हम खराब कोड लिख सकते हैं और हमें कहीं और नहीं लिखना चाहिए। हमें सुरक्षित रहने के लिए एक लैब में मशीन तक पहुंच दी गई है।

अगर मैं एक वीएम का उपयोग करके परीक्षण कर रहा था, तो क्या यह संभावित असुरक्षित कोड से होस्ट सिस्टम की रक्षा करेगा? मैं वास्तव में स्कूल में एक प्रणाली के लिए फंसना नहीं चाहता हूं और स्नैपशॉट उपयोगी होगा।

यदि यह अभी भी उच्च जोखिम है, तो मुझे सुरक्षित रूप से परीक्षण करने के लिए क्या विचार करने की आवश्यकता है पर कोई सुझाव?

हम शुरू करने के लिए linuxmint की तरह कुछ का उपयोग किया जाएगा। अगर कोई भी यह देखना चाहता है कि वर्तमान परियोजना में क्या होगा: http://www.cs.fsu.edu/~cop4610t/assignments/project2/writeup/specification.pdf


यह ईमानदारी से वास्तविक हार्डवेयर पर करने के लिए इतना जोखिम नहीं है, खासकर यदि आप बैकअप लेते हैं। मेरे पास है, और मुझे यकीन है कि कई अन्य देवों के पास भी है।
हॉब्स

@ होब्स इसलिए क्योंकि हममें से बहुत से लोग खतरनाक तरीके से जीना पसंद करते हैं, आमतौर पर इसे पछतावा करने के लिए लंबे समय तक। यदि आप एक छोटे से मॉड्यूल पर काम करने वाले सावधान डेवलपर हैं तो आपकी वास्तविक मशीन पर काम करना ठीक है। बड़े विकासों (या लापरवाह देवों) के लिए , संभवतः एक पृथक वातावरण पर काम करना सबसे अच्छा है। "स्वच्छ वितरण" पर काम करना भी एक अच्छा विचार हो सकता है, यह सुनिश्चित करने के लिए कि कोई कर्नेल-स्तर अनुकूलन आपके मॉड्यूल के साथ हस्तक्षेप नहीं कर सकता है। ध्यान रखें कि कर्नेल मॉड्यूल विकास वह जगह है जहां सबसे छोटी गलती के सबसे भयानक परिणाम हो सकते हैं: D
जॉन WH Smith

जवाबों:


28

कर्नेल मॉड्यूल विकसित करने में मुख्य जोखिम यह है कि आप अपने सिस्टम को नियमित कोड की तुलना में बहुत आसानी से क्रैश कर सकते हैं, और आप शायद पाएंगे कि आप कभी-कभी ऐसे मॉड्यूल बनाते हैं जिन्हें अनलोड नहीं किया जा सकता है जिसका मतलब है कि आपको फिर से लोड करना होगा आप उन्हें ठीक करने के बाद क्या गलत है।

हां, इस तरह के विकास के लिए एक वीएम ठीक है और जब मैं कर्नेल मॉड्यूल पर काम कर रहा हूं तो इसका उपयोग करता हूं। VM आपके परीक्षण वातावरण को आपके रनिंग सिस्टम से अलग करता है।

यदि आप स्नैपशॉट लेने और पुनर्स्थापित करने जा रहे हैं, तो आपको VM के बाहर एक संस्करण नियंत्रण रिपॉजिटरी में अपने स्रोत कोड की जांच करनी चाहिए, ताकि आप VM की वर्तमान स्थिति को त्यागने पर गलती से अपना नवीनतम कोड खो न दें।


3
या वीएम के केवल कुछ पहलुओं को स्नैपशॉट करना संभव हो सकता है। उदाहरण के लिए, एक अलग वर्चुअल डिस्क पर सोर्स कोड रखना। बेशक, एक आउट-ऑफ-वीएम स्रोत कोड रिपॉजिटरी जिसे आप नियमित रूप से कोड में जांचते हैं, वैसे भी एक अच्छा विचार है; यह आपको कई शर्मनाक गलतियों से बचा सकता है, और यह अच्छा कोडिंग अभ्यास सिखाता है।
बजे एक CVn

आपके सिस्टम को अधिक आसानी से क्रैश करने का दूसरा पक्ष यह है कि जब आप अपने सिस्टम को क्रैश करते हैं, तो आपके पास संपार्श्विक भ्रष्टाचार के कारण होने की संभावना अधिक होती है।
user253751

14

मान लें कि आप वास्तविक हार्डवेयर के लिए ड्राइवर लिखने की कोशिश नहीं कर रहे हैं, यह मॉड्यूल पर काम करने का एक शानदार तरीका है। आप कार्य प्रणाली को स्नैपशॉट कर सकते हैं, और यदि आप कुछ उड़ाते हैं, तो बस स्नैपशॉट पर वापस जाएं।

यदि आप कर सकते हैं, तो VM का एक पूर्ण डुप्लिकेट बनाएं, बस अगर स्नैपशॉट सिस्टम मेरे विचार से अजीब है। :)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.