ความแตกต่างระหว่าง src เวอร์ชัน 3 * และ 3. * - generic


10

ใน Linux / Ubuntu ในพื้นที่ของฉันฉันมีสองไดเรกทอรีสำหรับ Linux src

/usr/src/linux-3.16.0
/usr/src/linux-3.16.0-generic

ฉันพบรหัสใน 3.16.0 มากกว่าใน 3.16.0 ทั่วไป ฉันสงสัยว่าทำไมและไดเรกทอรีทั้งสองนั้นแตกต่างกันอย่างไร (และพวกเขาเป็นตัวแทนอะไร)

คำตอบ:


1

ทั้งสองไดเร็กทอรีจัดทำโดยแพ็คเกจที่สอดคล้องกันซึ่งมีไฟล์ส่วนหัวสำหรับเคอร์เนล ใช้dpkgคำสั่งเพื่อค้นหาแพ็คเกจที่มีไดเรกทอรี

$ dpkg -S /usr/src/linux*
linux-headers-X.XX.X-XX: /usr/src/linux-headers-X.XX.X-XX
linux-headers-X.XX.X-XX-generic: /usr/src/linux-headers-X.XX.X-XX-generic
...

ไดเร็กทอรีแรก/usr/src/linux-headers-X.X.XX-XXประกอบด้วยไฟล์ส่วนหัวสำหรับสถาปัตยกรรมหลายอันรวมถึง x86, amd64, powerpc และอื่น ๆ ทำให้มีจำนวนไฟล์มากขึ้นและมีขนาดใหญ่ขึ้น

ไดเรกทอรีอื่น/usr/src/linux-headers-X.X.XX-XX-genericดูเหมือนจะประกอบด้วยซอร์สโค้ดส่วนใหญ่ที่เกี่ยวข้องกับสถาปัตยกรรม x86 ที่มีการกำหนดเป้าหมายสำหรับการติดตั้งในเครื่อง

แพคเกจที่เกี่ยวข้องได้บอกใบ้ในคำอธิบายตัวอย่างเช่น:

$ apt-cache show linux-headers-3.16.0-25 | grep -A3 Description-en
Description-en: Header files related to Linux kernel version 3.16.0
 This package provides kernel header files for version 3.16.0, for sites
 that want the latest kernel headers. Please read
 /usr/share/doc/linux-lts-utopic-headers-3.16.0-25/debian.README.gz for details

เท่าที่ฉันทราบไดเรกทอรีทั้งสองมีรหัสแหล่งที่มาเท่านั้นและไม่ไบนารี และความแตกต่างระหว่างทั้งสองส่วนใหญ่เป็นสถาปัตยกรรมเป้าหมายของรหัสที่มา

ที่เกี่ยวข้อง: แผนผังแหล่งเคอร์เนลประกอบด้วยอะไร? สิ่งนี้เกี่ยวข้องกับส่วนหัวเคอร์เนลของ Linux หรือไม่

คำตอบเพิ่มเติม (2015.07.30)

เนื่องจากทั้งสองx86รหัสที่เกี่ยวข้องกับร้านค้าอะไรคือความแตกต่างของx86รหัสในสองไดเรกทอรี - Richard Jul 29 '15 เวลา 19:11

ไดเรกทอรีและไฟล์ส่วนใหญ่ที่อยู่ใน/usr/src/linux-headers-X.X.XX-XX-genericนั้นเป็นลิงก์สัญลักษณ์ซึ่งชี้ไปยังไดเรกทอรีและไฟล์/usr/src/linux-headers-X.X.XX-XXจริง ในคำอื่น ๆ ที่arch/x86พบในสองไดเรกทอรีเหล่านี้เป็นเพียงความแตกต่างของการเชื่อมโยงที่เกิดขึ้นจริงและสัญลักษณ์ที่มีไฟล์ที่เหลือบางส่วนของasmส่วนหัวใน*-genericคู่

ระหว่างแพ็กเกจทั้งสองแพ็คเกจหนึ่งอาจสังเกตเห็นความแตกต่างที่สำคัญอีกอย่างหนึ่งคือการมีอยู่ของconfigและgeneratedไดเร็กทอรีใน*-genericคู่กัน

ในความเข้าใจที่ดีที่สุดของฉันฉันจะคิดว่า*-genericไดเรกทอรีเก็บไฟล์ส่วนหัวที่จำเป็นสำหรับการกำหนดค่าและรวบรวมโมดูลที่เกี่ยวข้องกับx86สถาปัตยกรรมโดยไม่ต้องมีการเปลี่ยนแปลง accidential linux-headers-x.x.xx-xxไปยังไดเรกทอรีแหล่งที่มาของ

เหนือสิ่งอื่นใดไดเรกทอรีทั้งสองอาจเป็นวิธีที่ "สะอาด" ในการทำแพ็กเกจและรวบรวมแพ็คเกจบนแพลตฟอร์มที่เกี่ยวข้อง แม้ว่าฉันจะไม่สามารถชี้แจงเรื่องนี้ได้


คำตอบของผู้ตอบ : ฉันเขียนคำตอบอย่างไร้เดียงสาในเวลานั้น - ไม่แน่ใจว่าอะไรถูกหรือผิด - และคำอธิบายบางอย่างอาจหายไประหว่างนั้น ดังนั้นคำตอบนี้จึงกลายเป็นวิกิชุมชนเพื่อให้ทุกคนที่มีชื่อเสียงน้อยที่สุดสามารถปรับปรุงโพสต์นี้เพื่ออธิบายความแตกต่างได้อย่างเต็มที่


เนื่องจากทั้งสองx86รหัสที่เกี่ยวข้องกับร้านค้าอะไรคือความแตกต่างของx86รหัสในสองไดเรกทอรี
Richard

@Richard ฉันได้อัปเดตคำตอบของฉันตามที่ระบุไว้ข้างต้นโดยใช้ความรู้ที่ง่ายที่สุดเท่าที่จะทำได้ คำตอบของฉันอาจถูกมองว่าไร้เดียงสาดังนั้นคุณอาจต้องการคำตอบที่ดีกว่าจากคนอื่นแทน
clearkimura
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.