เคอร์เนลตัวจริงอยู่ที่ไหน / ไหน?


8

ฉันกำลังติดตามสิ่งนี้เพื่อเรียนรู้การคอมไพล์เคอร์เนล ฉันใช้

apt-get source linux-image-$(uname -r)

เพื่อดาวน์โหลดซอร์สโค้ดของเคอร์เนล Linux ที่ฉันใช้

หลังจากรันคำสั่งข้างต้นไฟล์ (และไดเรกทอรี) ต่อไปนี้จะถูกดาวน์โหลด

user $ ls -l
total 130972
drwxrwxr-x 27 sps sps      4096 Oct 16 03:10 linux-lts-vivid-3.19.0
-rw-rw-r--  1 sps sps  10980684 Oct  5 10:54 linux-lts-vivid_3.19.0-30.34~14.04.1.diff.gz
-rw-rw-r--  1 sps sps      7396 Oct  5 10:54 linux-lts-vivid_3.19.0-30.34~14.04.1.dsc
-rw-rw-r--  1 sps sps 123115155 May  6 21:35 linux-lts-vivid_3.19.0.orig.tar.gz
user $ 

ในหน้าเดียวกันมันถูกกล่าวถึง:

การสร้างเคอร์เนลนั้นค่อนข้างง่าย เปลี่ยนไดเร็กทอรีการทำงานของคุณเป็นรูทของแผนผังต้นกำเนิดเคอร์เนลจากนั้นพิมพ์คำสั่งต่อไปนี้:

แต่ฉันไม่แน่ใจซึ่งเป็น "รากของต้นไม้ต้นเคอร์เนล"

มันเป็นไดเรกทอรีปัจจุบัน (ที่ฉันวิ่งapt-get source ...และที่ฉันมีไฟล์ที่ระบุไว้ข้างต้น)?

หรือว่าเป็นไดเรกทอรี:

drwxrwxr-x 27 sps sps      4096 Oct 16 03:10 linux-lts-vivid-3.19.0

หรือฉันควรแยก tarball

-rw-rw-r--  1 sps sps 123115155 May  6 21:35 linux-lts-vivid_3.19.0.orig.tar.gz

เอาท์พุทสำหรับuname -r:

user $ uname -r
3.19.0-30-generic
user $ 

คำตอบ:


8

จากDebian Wiki :

ซอร์สแพ็กเกจให้ไฟล์ที่จำเป็นทั้งหมดแก่คุณเพื่อคอมไพล์หรือสร้างส่วนของซอฟต์แวร์ที่ต้องการ

ประกอบด้วยสามไฟล์ในรูปแบบที่ง่ายที่สุด:

  • tarball ต้นน้ำที่มี. tar.gzสิ้นสุด

  • ไฟล์คำอธิบายที่ลงท้ายด้วย. dsc มันมีชื่อของแพคเกจทั้งในชื่อไฟล์ของมันรวมทั้งเนื้อหา (หลังคำหลัก Source:)

  • tarball ที่มีการเปลี่ยนแปลงใด ๆ กับแหล่งข้อมูลต้นน้ำรวมถึงไฟล์ทั้งหมดที่สร้างขึ้นสำหรับแพ็คเกจ Debian

    • นี่คือ. debbian.tar.gz (รูปแบบต้นฉบับ: 3.0)
    • หรือ. diff.gz ที่สิ้นสุด (รูปแบบต้นฉบับ: 1.0)

มันค่อนข้างเหมือนกันสำหรับ Ubuntu และในกรณีของคุณ:

  • "linux-lts-vivid-3.19.0": เคอร์เนลจริง , patched เริ่มต้นจาก tarball ต้นน้ำ "linux-lts-vivid_3.19.0.orig.tar.gz" ด้วยการแก้ไขที่ระบุไว้ใน "linux-lts-vivid_3.19.0 -30.34 ~ 14.04.1.diff.gz ";
  • "linux-lts-vivid_3.19.0-30.34 ~ 14.04.1.diff.gz": tarball ที่มีการเปลี่ยนแปลงใด ๆ ที่เกิดขึ้นกับต้นทางต้นทางรวมถึงไฟล์ทั้งหมดที่สร้างขึ้นสำหรับแพ็คเกจ Debian;
  • "linux-lts-vivid_3.19.0-30.34 ~ 14.04.1.dsc": ไฟล์เรียงลำดับ ".dsc" สิ้นสุด มันมีชื่อของแพคเกจทั้งในชื่อไฟล์ของมันเช่นเดียวกับเนื้อหา (หลังจาก Source: คำหลัก);
  • "linux-lts-vivid_3.19.0.orig.tar.gz": tarball ต้นน้ำที่มี ".tar.gz" ตอนจบ (โปรดทราบว่าในประสบการณ์ของฉันมันไม่ได้เป็นไฟล์ ".tar.gz" เพียงเล็กน้อยเท่านั้น รูปแบบที่แตกต่างกันเช่น ".tar.xz");

เมื่อคุณเรียกใช้apt-get source linux-image-$(uname -r)upball tarball จะได้รับการแก้ไขโดยอัตโนมัติด้วยการแก้ไขที่ระบุไว้ใน "linux-lts-vivid_3.19.0-30.34 ~ 14.04.1.diff.gz" ใน "linux-lts-vivid-3.19.0":

% apt-get source linux-image-$(uname -r)
# ...
dpkg-source: info: extracting linux in linux-3.19.0
dpkg-source: info: unpacking linux_3.19.0.orig.tar.gz
dpkg-source: info: applying linux_3.19.0-30.34.diff.gz
# ...

4

linux-lts-vivid-3.19.0รากของต้นไม้เคอร์เนลของคุณคือไดเร็กทอรี

เกี่ยวกับไฟล์อื่น ๆ :

ใน tarball linux-lts-vivid_3.19.0.orig.tar.gzคุณสามารถค้นหาเคอร์เนล "วานิลลา" ตามที่ปล่อยออกมาต้นน้ำ; เคอร์เนลนี้นักพัฒนาอูบุนตูได้เพิ่มแพทช์, ไดรเวอร์สิ่งที่เปลี่ยนแปลงที่มีการรวบรวมไว้ในที่ถูกบีบอัดในdifflinux-lts-vivid_3.19.0-30.34~14.04.1.diff.gz


4

อืมม เมื่อคุณเรียกใช้คำสั่ง

apt-get source linux-image-`uname -r`

คำสั่งควรแยก tarballs แหล่งที่มาโดยอัตโนมัติและแก้ไขเพื่อสร้างไดเรกทอรีเรียกว่าหลังจากเคอร์เนลของคุณ ในกรณีของคุณดูเหมือนว่าชื่อ 'linux-lts-vivid-3.19.0' - มีอยู่ในรายการไดเรกทอรีของคุณ

ดังนั้นนั่นคือไดเรกทอรีแหล่งที่มาคุณควรเรียกใช้:

cd linux-lts-vivid-3.19.0

จากนั้นทำตามคำแนะนำต่อไป

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