क्या यह बताना संभव है कि क्या मेरा लिनक्स कर्नेल कस्टम (यानी संकलित) है जो डिस्ट्रो के विपरीत है?


10

उबंटू का उदाहरण लें तो हम बता सकते हैं गिरी कस्टम क्या distro के साथ आता है के बजाय संकलित किया गया था?


इस धागे की जाँच करें: unix.stackexchange.com/questions/43164/…
nomadrc

2
ठीक है, बस बाइनरी पैकेज फ़ाइल के साथ तुलना करें ... और देखें, क्या यह मूल कर्नेल है या क्या इसे बदल दिया गया है ..
क्रैविमीर

जवाबों:


13

ज़रूर, बस जाँच करें कि क्या dpkgइसके बारे में जानता है।

पहले आपके द्वारा चलाए जा रहे कर्नेल संस्करण की जाँच करें।

uname -a
Linux orwell 3.2.0-4-amd64 #1 SMP Debian 3.2.65-1+deb7u2 x86_64 GNU/Linux

फिर डेटाबेस dpkgमें कर्नेल इमेज फ़ाइल को खोजने के लिए कहें dpkg

dpkg -S /boot/vmlinuz-3.2.0-4-amd64
linux-image-3.2.0-4-amd64: /boot/vmlinuz-3.2.0-4-amd64

या, बेहतर, पैकेज dlocateसे उपयोग करें dlocatedlocateपहले dpkgडेटाबेस से कैश बनाता है , और उसका उपयोग करता है। इसलिए यह तेज है।

dlocate /boot/vmlinuz-3.2.0-4-amd64
linux-image-3.2.0-4-amd64: /boot/vmlinuz-3.2.0-4-amd64

अंत में, जांचें कि डेबियन अभिलेखागार में यह पैकेज है।

apt-cache policy linux-image-3.2.0-4-amd64

linux-image-3.2.0-4-amd64:
  Installed: 3.2.68-1+deb7u1
  Candidate: 3.2.68-1+deb7u1
  Version table:
 *** 3.2.68-1+deb7u1 0
        500 http://security.debian.org/ wheezy/updates/main amd64 Packages
        100 /var/lib/dpkg/status
     3.2.65-1 0
        500 http://httpredir.debian.org/debian/ wheezy/main amd64 Packages

वे नहीं करते हैं, तो यह एक कस्टम पैकेज है। बेशक, अगर dpkg छवि फ़ाइल के बारे में नहीं जानता है, तो आपका कर्नेल एक पैकेज का हिस्सा नहीं है, लेकिन इसे स्थानीय रूप से संकलित किया गया है।

ध्यान दें कि apt कर सकते हैं डेबियन संग्रह में एक पैकेज और एक ही नाम के एक स्थानीय रूप से संकलित एक के बीच अंतर बताने। मुझे लगता है कि यह पैकेज के md5sum की जांच करता है, लेकिन मैं यह विवरण भूल जाता हूं कि यह कैसे करता है। बाइनरी पैकेज में हैश के बारे में जानकारी होती है apt-cache show linux-image-3.2.0-4-amd64, उदाहरण के लिए नीचे देखें । जैसे

Package: linux-image-3.2.0-4-amd64
Source: linux
Version: 3.2.68-1+deb7u1
Installed-Size: 105729
[...]
Size: 23483788
MD5sum: f9736f30f8b68ae79b2747d8a710ce28
SHA1: 64bfde903892801dccd04b52b12316901a02cd96
SHA256: 775814b3eff4a964b593c0bdeaac20587a4e3ddb1257a9d2bfcf1e9d3b9bfd15

1
कृपया एक्ससुम के उत्तर पर मेरी टिप्पणी देखें। क्या होगा यदि आप अलग-अलग विकल्पों के साथ एक ही कर्नेल को फिर से जोड़ते हैं, लेकिन इसे दूसरा नाम न दें?
terdon

@terdon संपादन देखें।
फहीम मीठा

2
आह, हाँ, हैश करना चाहिए, चतुर!
terdon

यद्यपि यह दृष्टिकोण ज्यादातर मामलों में काम करता है, यह मेरे लिए काम नहीं करता है क्योंकि मेरे पास स्थानीय रूप से संकलित पैकेजों के लिए एक निजी भंडार है, इसलिए यह स्थानीय स्तर पर संकलित पैकेज का उपयोग करने पर भी विक्रेता पैकेज के रूप में दिखाई देता है। बेशक आप अंतर को आसानी से देख सकते हैं क्योंकि विक्रेता के पैकेज में संस्करण के हिस्से के रूप में विक्रेता का नाम होता है, जहां मेरे पैकेज में मेरा नाम होता है।
रुकावट

1
@bytefire apt-cache show ...काम करता है। मुझे लगता है मैं गलत समझ रहा हूं। अब सही हो रहा है।
फहीम मीठा

7

न्यूनतम रूप से, uname -rकर्नेल संस्करण देगा, जैसे कि 3.18.6। हालांकि, जब कर्नेल संकलित किया जाता है, तो एक अतिरिक्त स्ट्रिंग को कॉन्फ़िगर किया जा सकता है और उससे जुड़ा होता है और डिस्ट्रो आमतौर पर अपने स्वयं के पैच स्तर (डैश के बाद) और स्वाद को इंगित करने के लिए ऐसा करता है, जैसे 3.18.6-32-generic। यह एक सुराग है; जब आप कस्टम कर्नेल बनाते हैं तो स्पष्ट रूप से अपनी स्वयं की स्ट्रिंग का उपयोग करना एक और हो सकता है।

uname -v एक स्ट्रिंग जो डिफ़ॉल्ट रूप से कुछ इस तरह से देता है

#4 SMP PREEMPT Mon Mar 9 13:55:25 EDT 2015

संख्या इस अर्थ में मनमानी है कि यह उस समय की संख्या है जब पेड़ को रीसेट किए बिना एक विशिष्ट स्रोत पेड़ का उपयोग करके बनाया गया था - यह तब उपयोगी हो सकता है जब आप अपना निर्माण कर रहे हों। SMPएक मल्टी-टास्किंग (यानी, वास्तविक समय नहीं) इंगित करता है कर्नेल और PREEMPT शेड्यूलर के "प्रीमेशन मॉडल" से संबंधित एक और कॉन्फ़िगरेशन विकल्प है। लेकिन यहां बड़ा सुराग शायद उस समय का था जब इसे बनाया गया था। इसका उपयोग कर्नेल पर संशोधन / परिवर्तन टाइमस्टैम्प के खिलाफ मेल करने के लिए किया जा सकता है, यह ध्यान में रखते हुए कि बदला जा सकता है, जैसे, के साथ touch। उदाहरण के लिए, statकर्नेल इस तरह दिखता है:

  File: ‘3.19-goldilocksSpecial’
  Size: 6858880         Blocks: 13400      IO Block: 4096   regular file
Device: 801h/2049d      Inode: 3156605     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2015-02-15 15:32:29.000000000 -0500
Modify: 2015-03-03 13:55:21.000000000 -0500
Change: 2015-03-03 14:02:26.767045553 -0500
 Birth: -

जो बहुत लाइन में है Mon Mar 9 13:55:25 EDT 2015


2

किसी अन्य के रूप में भी

sudo apt-cache policy linux-generic

पैकेज प्रबंधक द्वारा स्थापित संस्करण है और

uname -r

संस्करणों की तुलना करें

मेरे लिए इसके

linux-generic:
  Installed: 3.19.0.15.14
  Candidate: 3.19.0.15.14

तथा

3.19.0-15-generic

जो एक ही संस्करण को दर्शाता है


1
यदि आप अलग-अलग विकल्पों के साथ एक ही संस्करण को फिर से जोड़ते हैं तो क्या यह बदल जाएगा? मैं यह नहीं देखता कि संस्करण स्ट्रिंग उस स्थिति में क्यों बदलेगी।
terdon

मुझे यकीन नहीं है कि एक ही नाम के साथ 2 स्थापित होंगे। मैंने कोशिश नहीं की है। व्यक्तिगत रूप से जब विभिन्न विकल्पों के साथ recompiling मैं संघर्ष को खत्म करने के लिए पैकेज प्रबंधक से संस्करण को हटा देता हूं
एक्सयूज़म

मुझे लगता है कि एक ही नाम बस में लिखा जाएगा /boot। मेरा कहना यह है कि मैं यह नहीं देखता कि आप unameकुछ विकल्पों को बदलते समय सिर्फ recompile करते हैं तो आप बदलाव के आउटपुट की उम्मीद क्यों करेंगे । उस मामले में, मुझे लगता है कि उम्मीद थी apt-cacheऔर uname -rएक ही जानकारी वापस आ जाएगी, तथ्य यह है कि आप स्थानीय रूप से recompiled है, के बावजूद।
terdon

@terdon संस्करण स्ट्रिंग को कर्नेल कॉन्फ़िगरेशन में अनुकूलित किया जा सकता है, जो एक अच्छा विचार है यदि आप डिस्ट्रो स्रोत का उपयोग कर रहे हैं।
गोल्डीलॉक्स

@goldilocks हाँ, मैंने देखा कि आपके उत्तर में और यह समझ में आता है। हालाँकि, अगर मैं ऐसा करने के लिए पर्याप्त रूप से मूर्ख नहीं था, और अभी-अभी अपने डिस्ट्रो के स्टॉक कर्नेल को कुछ विकल्पों को बदलकर पुनः स्थापित किया है, तो संस्करण के तार समान होंगे, है ना? बिल्डरों की संख्या के बारे में आपका सुझाव मदद कर सकता है, लेकिन जहाँ तक मुझे पता है, यहाँ जो सुझाव दिया गया है, वह नहीं।
terdon

0

मैं कहूंगा कि सबसे आम तौर पर सही जवाब "नहीं, आप नहीं कर सकते हैं"। विभिन्न तरीके हैं जो कुछ मामलों में मदद कर सकते हैं और ये पहले से ही सुझाए गए हैं, लेकिन ये सभी याद करने लगते हैं कि यह स्थिति वास्तव में कैसे बनी। सच में, यदि आप एक कस्टम कर्नेल का उपयोग कर रहे हैं, तो वह कर्नेल कुछ भी कर सकता है, जिसमें उसकी उपस्थिति छिपाना या एक अलग कर्नेल दिखाई देना शामिल है।

मुझे चिंता होगी यदि आप वास्तव में एक कस्टम कर्नेल चला रहे हैं और यह नहीं जानते हैं। यह जानने का एकमात्र विश्वसनीय तरीका है कि किस कर्नेल का उपयोग किया जा रहा है, यह ध्यान से रखें कि आप किस कर्नेल का संकलन और संस्थापन कर रहे हैं।

यदि आप वास्तव में यह सुनिश्चित नहीं कर रहे हैं कि सिस्टम क्या कर्नेल चला रहा है या यह कर्नेल किन स्रोतों से बनाया गया है या कहाँ से आया है, तो मैं गंभीरता से ओएस को ज्ञात अच्छी छवि से पुन: स्थापित करने और भविष्य में किन कर्नेल की कोशिश करने और बूट करने के बारे में अधिक सावधान रहने पर विचार करूंगा। से या उपयोग।

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