मुझे कर्नेल स्रोत कोड कैसे मिलेगा?


25

मैं कुछ डिवाइस ड्राइवरों को लिखने की योजना बना रहा हूं और मुझे लिनक्स कर्नेल स्रोत प्राप्त करने की आवश्यकता है। मेरा लिनक्स कर्नेल संस्करण 3.2.0-23-जेनेरिक-पा है और मैंने इस से छवि डाउनलोड की है । मेरे द्वारा पढ़े गए कई लेखों में, यह मुझे बताता है कि मुझे नए मॉड्यूल सम्मिलित करने के लिए पूरे कर्नेल वृक्ष की आवश्यकता है।

क्या यह पर्याप्त है अगर मैं इस छवि को डाउनलोड करता हूं और इसे usr/src/फ़ोल्डर में पेस्ट करता हूं या मुझे कुछ और करना है?


1
जब मैं अपनी एक मशीन के लिए कस्टम संकलन कर रहा होता हूं, तो मैं आमतौर पर सिंटैप्टिक से 'linux-source' पैकेज स्थापित करता हूं, लेकिन यह देखते हुए कि आप विकास कर रहे हैं, आपको सबसे हाल के संस्करण की आवश्यकता हो सकती है। यह लिंक आपके लिए उपयोगी हो सकता है: help.ubuntu.com/community/Kernel/Compile
मार्क पास्कल

जवाबों:


27

यह स्टॉक कर्नेल का स्रोत प्राप्त करेगा:

apt-get source linux-source

आप जाँच सकते हैं कि कर्नेल का कौन सा संस्करण इस तरह से चल रहा है:

uname -r

जो कुछ इस तरह छपेगा:

3.13.0-46-generic

आप अपने सिस्टम पर उपलब्ध वर्तमान स्रोत पैकेज संस्करणों की एक सूची प्राप्त कर सकते हैं:

apt-cache search linux-source

कर्नेल के अपस्ट्रीम संस्करण को पाने के लिए:

git clone git://kernel.ubuntu.com/ubuntu/ubuntu-trusty.git

उपरोक्त लिंक में, 'भरोसेमंद' उबंटू के संस्करण का कोडनेम है। आपके द्वारा स्थापित उबंटू के संस्करण के लिए आप कोडनाम का पता लगा सकते हैं:

cat /etc/lsb-release

अगर मैं git का उपयोग क्लोन करने के लिए करता हूं तो मैं संस्करण को कैसे निर्दिष्ट करूं। इसके अलावा अगर मैं क्लोन करता हूं तो यह पर्याप्त है अगर मैं एक कॉपी कॉपी करता हूं usr / src फ़ोल्डर में
सब

कि गिट रिपॉजिटरी को विशेष रूप से 3.2.0 पर रखा गया है; यह उबंटू सटीक (12.04) में क्या है। यदि आप एक अलग संस्करण बदलना चाहते हैं तो ubuntu-exact.it को ubuntu-quantal.it या जो भी हो। बस usr / src में कॉपी करना ठीक होना चाहिए।
ब्राइस

ठीक है। थैंक्स- लेकिन आपको वह लिंक कैसे मिला?
सब


और जहां मैं स्रोत पेड़ को खोजने में सक्षम होना चाहिए ... लानत के साथ, मुझे बेहतर पढ़ना चाहिए। जवाब कहता है apt-get sourceनहीं apt-get install। स्रोत पेड़ से आपके वर्तमान मार्ग में समाप्त हो जाएगा ।
प्रो बैकअप

8
apt-get source linux

सबसे आसान तरीका है। यह आपके रिपॉजिटरी से स्रोत को डाउनलोड करेगा - और यह आपके द्वारा चलाए जा रहे संस्करण के समान होगा (यह मानते हुए कि आपने इसे पहले से कस्टमाइज़ नहीं किया है)।

लेकिन अगर आप यह जानना चाहते हैं कि स्रोत कहाँ रखा गया है तो आप चला सकते हैं:

apt-cache showsrc linux

'Vcs-' विशेषता (संस्करण नियंत्रण प्रणाली) के लिए देखें। यह आमतौर पर जीआईटी (वीसीएस-जीआईटी) या मर्क्यूरियल रिपॉजिटरी होगा।

नोट - ये कमांड किसी भी पैकेज के साथ काम करते हैं। जिस पैकेज में आप रुचि रखते हैं, उसके साथ बस 'linux' स्थानापन्न करें। और यह भी ध्यान दें कि 'apt-get source' को sudo एक्सेस की आवश्यकता नहीं है और यह आपके वर्तमान निर्देशिका में स्रोत को डंप कर देगा।


इसके लिए लक्ष्य मशीन से मिलान करने के लिए आपके द्वारा डाउनलोड की जाने वाली मशीन की आवश्यकता होती है। वास्तव में केवल तभी काम करता है जब आपके पास नेटवर्क हो। इस पृष्ठ पर उतरने वाले अधिकांश पाठकों के पास नेटवर्क नहीं होगा (इसलिए उन्हें अचानक स्रोत की आवश्यकता क्यों है)। मुझे इसे थम्ब ड्राइव पर एक टारबॉल के रूप में चाहिए और मेरे पास काम करने लायक एप्ट नहीं है।
mckenzm

इसने केवल लिनक्स-हेडर को डाउनलोड किया /usr/src- पूर्ण कर्नेल स्रोत पर नहीं - उबंटू 16.04 पर
पियरज

4

लॉन्चपैड से सीधे स्रोत डाउनलोड करें

apt-get source यदि आप एक विशिष्ट कर्नेल संस्करण की तलाश कर रहे हैं, तो सभी के लिए पर्याप्त रूप से पर्याप्त अनुशंसा करता है, जो अधिकांश समय काम नहीं करता है:

कहते हैं कि आपको 3.19.0-58 के लिए कर्नेल स्रोत की आवश्यकता है:
apt-get source linux-image-3.19.0-58-genericश्रृंखला में नवीनतम कर्नेल के लिए स्रोत मिलेगा: 3.19.0-80 इस मामले में, जो आपने नहीं पूछा।

तो आपके पास दो विकल्प हैं:

1) छोड़ दें, कर्नेल को स्थापित करें 3.19.0-80 और उपयोग करें apt-get source

2) लॉन्चपैड से सीधे स्रोत प्राप्त करें:

लिंक

  • उन्हें एक नई निर्देशिका में रखें, के साथ अनपैक करें dpkg-source -x *.dsc

टिप्पणियाँ:

  • इसके लिए अवश्य ही एक बेहतर तरीका होना चाहिए। '
  • आप उस संस्करण को प्राप्त कर सकते हैं जिसे आप git से चाहते हैं, लेकिन आप एक बड़े डाउनलोड के लिए हैं। Ubuntu विकी कर्नेल स्रोत कोड में "git का उपयोग करके उबंटू रिलीज़ के लिए कर्नेल स्रोतों को प्राप्त करना" देखें ।

यह स्पष्ट रूप से समझाने के लिए धन्यवाद। हालाँकि, मैं अभी भी लिनक्स-इमेज-4.15.0-39-जेनेरिक के लिए स्रोत खोजने में असमर्थ हूं। यह प्रक्रिया अनावश्यक रूप से जटिल है। मैंने इसके लिए गुगली करने की कोशिश की है, लेकिन मुझे ऐसे पैकेज मिलते रहते हैं, जो केवल कुछ किलोबाइट हैं। कोई सुझाव?
भूल जाओ

3

बस एक से चुनें:

sudo apt install linux-source  # downloads into system directory
sudo apt source linux-source  # downloads into working directory

यदि आपसे कहा जाता है कि आप में कुछ 'स्रोत' URL दिए जाएँ sources.list, तो अपनी /etc/apt/sources.listफ़ाइल को संपादित करें और इच्छित deb-srcलाइन को अनलिंक करें, उदाहरण के लिए (यदि आप Xenial चला रहे हैं):

deb http://fr.archive.ubuntu.com/ubuntu/ xenial main restricted
# deb-src http://fr.archive.ubuntu.com/ubuntu/ xenial main restricted

#इस अंतिम पंक्ति को हटाने से कर्नेल स्रोतों सहित डाउनलोड के लिए स्रोत रिपॉजिटरी सक्षम होता है।

टिप्पणियों:

  • आधुनिक उपकरणों का उपयोग करें; बचना apt-get
  • ये आदेश आपके वर्तमान कर्नेल के लिए स्रोत कोड डाउनलोड करते हैं ( 4.4.0-75-genericउदाहरण के लिए मेरे मामले में )।
  • जब सिस्टम निर्देशिका में डाउनलोड किया जाता है, तो फ़ाइलें /usr/src/linux-source-4.4.0/(उदाहरण के लिए) संग्रहीत की जाती हैं ।

मेरे लिए काम नहीं करता है (लेकिन न तो उपयुक्त संस्करण मिलता है)। मैं Ubuntu 16.04.4, कर्नेल 4.4.0-98-जेनेरिक चला रहा हूं। यह कहता है, "आपको अपने स्रोतों में कुछ 'स्रोत' यूआरआई डालने होंगे। सूची"। मुझे नहीं पता कि कैसे करना है।
एंड्रयू बैनब्रिज

@AndrewBainbridge I ने उस बारे में जानकारी जोड़ी। क्या अब आपके लिए यह ठीक है?
टिम

हाँ धन्यवाद। यह मेरी ओर से एक बेवकूफ टिप्पणी थी। मुझे केवल त्रुटि संदेश की आवश्यकता है। वैसे भी, अपने प्रयास के लिए एक उत्थान है।
एंड्रयू बैनब्रिज
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.