ค้นหาเว็บไซต์

เปิดตัว Kernel 3.16 - คอมไพล์และติดตั้งบน Debian GNU/Linux


เคอร์เนลเป็นแกนหลักของระบบปฏิบัติการใดๆ หน้าที่หลักของเคอร์เนลคือทำหน้าที่เป็นสื่อกลางระหว่างแอปพลิเคชัน – CPU, แอปพลิเคชัน – หน่วยความจำ และแอปพลิเคชัน – อุปกรณ์ (I/O) มันทำหน้าที่เป็นตัวจัดการหน่วยความจำ ตัวจัดการอุปกรณ์ และเข้าร่วมการโทรของระบบ นอกเหนือจากการทำงานอื่นๆ

สำหรับ Linux เคอร์เนลคือหัวใจของมัน เคอร์เนล Linux ได้รับการเผยแพร่ภายใต้ GNU General Public License Linus Torvalds พัฒนา Linux Kernel ในปี 1991 และเขามาพร้อมกับ Initial Kernel Release เวอร์ชัน 0.01 เมื่อวันที่ 3 สิงหาคม 2014 (ปีนี้) Kernel 3.16 ได้รับการเผยแพร่แล้ว ในช่วง 22 ปีที่ผ่านมา เคอร์เนล Linux มีพัฒนาการมากมาย ขณะนี้มีบริษัทหลายพันแห่ง ซึ่งเป็นนักพัฒนาอิสระหลายล้านคนที่มีส่วนร่วมใน Linux Kernel

การประมาณคร่าวๆ เกี่ยวกับแบรนด์ใหญ่ๆ และการมีส่วนร่วมของพวกเขาต่อเคอร์เนล Linux ในปัจจุบัน ซึ่งคาดว่าจะมีโค้ด 17 ล้านบรรทัดตาม Linux Foundation, รายงานการพัฒนาเคอร์เนล Linux

  1. เรดแฮท – 10.2%
  2. อินเทล – 8.8%
  3. เท็กซัส อินสทรูเมนท์ส – 4.1%
  4. ลินาโร – 4.1%
  5. ซูส – 3.5%
  6. ไอบีเอ็ม – 3.1%
  7. ซัมซุง – 2.6%
  8. กูเกิล – 2.4%
  9. ระบบแกะสลักด้วยวิสัยทัศน์ – 2.3%
  10. วูล์ฟสัน ไมโครอิเล็กทรอนิกส์ – 1.6%
  11. ออราเคิล – 1.3%
  12. บรอดคอม – 1.3%
  13. NVIDIA – 1.3%
  14. ฟรีสเกล – 1.2%
  15. เทคโนโลยีอินจิกส์ – 1.2%
  16. ซิสโก้ – 0.9%
  17. มูลนิธิลินุกซ์ – 0.9%
  18. เอเอ็มดี – 0.9%
  19. นักวิชาการ – 0.9%
  20. เน็ตแอพ – 0.8%
  21. ฟูจิตสึ – 0.7%
  22. แนว – 0.7%
  23. แขน – 0.7%

เจ็ดสิบเปอร์เซ็นต์ของการพัฒนาเคอร์เนลดำเนินการโดยนักพัฒนาที่ทำงานในองค์กรและได้รับค่าตอบแทนฟังดูน่าสนใจใช่ไหม

Linux Kernel 3.16 เปิดตัวสำหรับบุคคลทั่วไปและบริษัทในสภาพแวดล้อมการใช้งานจริง ซึ่งจะอัปเดตเคอร์เนลด้วยเหตุผลหลายประการ ซึ่งรวมถึงบางเหตุผลด้วย

  1. แพทช์รักษาความปลอดภัย
  2. การปรับปรุงเสถียรภาพ
  3. ไดรเวอร์ที่อัปเดต - การสนับสนุนอุปกรณ์ที่ดีขึ้น
  4. การปรับปรุงความเร็วในการประมวลผล
  5. ฟังก์ชั่นล่าสุด ฯลฯ

บทความนี้มีจุดมุ่งหมายเพื่ออัปเดตเคอร์เนล Debian แบบ Debian ซึ่งหมายถึงการทำงานด้วยตนเองน้อยลง ความเสี่ยงน้อยลงแต่มีความสมบูรณ์แบบ เราจะอัปเดต Ubuntu Kernel ในส่วนหลังของบทความนี้ด้วย

ขั้นตอนที่ 1: ดาวน์โหลด Kernel 3.16

ก่อนที่เราจะดำเนินการต่อไป เราต้องทราบเกี่ยวกับเคอร์เนลปัจจุบันของเราที่ติดตั้งไว้

avi@tecmint:~$ uname -mrns 

Linux tecmint 3.14-1-amd64 x86_64

เกี่ยวกับตัวเลือก:

  1. -s : ระบบปฏิบัติการการพิมพ์ ('Linux' ที่นี่)
  2. -n : พิมพ์ชื่อโฮสต์ของระบบ ('tecmint' ที่นี่)
  3. -r : พิมพ์เวอร์ชันเคอร์เนล ('tecmint 3.14-1-amd64' ที่นี่)
  4. -m : พิมพ์ชุดคำสั่งฮาร์ดแวร์ ('x86_64' ที่นี่)

ดาวน์โหลด Kernel ที่เสถียรล่าสุดจากลิงค์ด้านล่าง อย่าสับสนกับลิงค์ดาวน์โหลดแพตช์ที่นั่น ดาวน์โหลดอันที่ระบุอย่างชัดเจน - “LATEST STABLE KERNEL

  1. https://www.kernel.org/

หรือคุณสามารถใช้ wget เพื่อดาวน์โหลดเคอร์เนลซึ่งสะดวกกว่า

avi@tecmint:~/Downloads$ wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.16.tar.xz

ขั้นตอนที่ 2: ตรวจสอบลายเซ็นเคอร์เนล 3.16

หลังจากการดาวน์โหลดเสร็จสิ้นและก่อนที่เราจะดำเนินการต่อ ขอแนะนำอย่างยิ่งให้ตรวจสอบลายเซ็นเคอร์เนล

avi@tecmint:~/Downloads$ wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.16.tar.sign

การตรวจสอบลายเซ็นจะต้องดำเนินการกับไฟล์ที่ไม่มีการบีบอัด โดยจะต้องมีลายเซ็นเดียวสำหรับรูปแบบการบีบอัดต่างๆ ได้แก่, .gz, .bz2, .xz

ถัดไป คลายการบีบอัด Linux Kernel Image

avi@tecmint:~/Downloads$ unxz linux-3.16.tar.xz

ตรวจสอบกับลายเซ็น

avi@tecmint:~/Downloads$ gpg --verify linux-3.16.tar.sign

หมายเหตุ: หากคำสั่งข้างต้นพ่น gpg: ไม่สามารถตรวจสอบลายเซ็นได้: ข้อผิดพลาดไม่พบรหัสสาธารณะ นั่นหมายความว่าเราจำเป็นต้องดาวน์โหลดรหัสสาธารณะด้วยตนเองจากเซิร์ฟเวอร์ PGP

avi@tecmint:~/Downloads$ gpg --recv-keys  00411886

หลังจากดาวน์โหลดคีย์แล้ว ให้ตรวจสอบคีย์อีกครั้ง

avi@tecmint:~/Downloads$ gpg --verify linux-3.16.tar.sign

คุณสังเกตเห็นสองสิ่งเกี่ยวกับการตรวจสอบคีย์ gpg หรือไม่

  1. gpg: ลายเซ็นที่ดีจาก “Linus Torvalds <[email >”
  2. ลายนิ้วมือคีย์หลัก: ABAF 11C6 5A29 70B1 30AB E3C4 79BE 3E43 0041 1886

ไม่ต้องกังวลเกี่ยวกับลายนิ้วมือหลัก ตอนนี้เราแน่ใจว่าไฟล์เก็บถาวรนั้นใช้ได้และลงนามแล้ว ก้าวไปข้างหน้ากันเถอะ!

ขั้นตอนที่ 3: การติดตั้งแพ็คเกจที่จำเป็น

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

ติดตั้ง libcurse5-dev, fakeroot และ kernel-package

avi@tecmint:~/Downloads$ sudo apt-get install libncurses5-dev
avi@tecmint:~/Downloads$ sudo apt-get install fakeroot
avi@tecmint:~/Downloads$ sudo apt-get install kernel-package

ขั้นตอนที่ 4: การสร้างเคอร์เนล 3.16

หลังจากติดตั้งแพ็คเกจข้างต้นสำเร็จ เราก็พร้อมที่จะสร้างเคอร์เนล ย้ายไปยังอิมเมจเคอร์เนล Linux ที่แยกออกมา (เราแยกออกมาด้านบนขณะตรวจสอบลายเซ็น)

avi@tecmint:~/Downloads$ cd linux-3.16/

ตอนนี้สิ่งสำคัญคือต้องคัดลอกการกำหนดค่าเคอร์เนลปัจจุบันเพื่อแสดงไดเร็กทอรีการทำงานในฐานะผู้ใช้รูท

cp /boot/config-'uname -r' .config

กำลังคัดลอก /boot/config-'uname -r' เพื่อนำเสนอไดเร็กทอรีการทำงาน “/home/avi/Downloads/linux-3.16 ” และบันทึกเป็น '.config'.

ที่นี่ 'uname -r' จะถูกแทนที่ด้วยและประมวลผลด้วยเวอร์ชันเคอร์เนลที่คุณติดตั้งอยู่ในปัจจุบันโดยอัตโนมัติ

เนื่องจากไฟล์ dot ไม่สามารถมองเห็นได้ตามปกติ คุณจึงจำเป็นต้องใช้ตัวเลือก '-a' กับ ls เพื่อดูสิ่งนี้ในไดเร็กทอรีการทำงานปัจจุบันของคุณ'

ls -al

มีสามวิธีในการสร้างเคอร์เนล Linux

  1. make oldconfig : มันเป็นวิธีการโต้ตอบที่เคอร์เนลถามคำถามทีละข้อว่าควรสนับสนุนอะไรและอะไรไม่ควรสนับสนุน เป็นกระบวนการที่ใช้เวลานานมาก
  2. make menuconfig : เป็นระบบที่ใช้เมนูบรรทัดคำสั่งซึ่งผู้ใช้สามารถเปิดและปิดการใช้งานตัวเลือกได้ มันต้องใช้ห้องสมุด ncurses ดังนั้นเราจึงฉลาดกว่านั้น
  3. make qconfig/xconfig/gconfig : เป็นระบบที่ใช้เมนูกราฟิกซึ่งผู้ใช้สามารถเปิดและปิดการใช้งานตัวเลือกได้ มันต้องมีห้องสมุด QT

แน่นอนว่าเราจะใช้ 'make menuconfig'

กลัวที่จะสร้างเคอร์เนลใช่ไหม? คุณไม่ควรจะเป็น สนุกดี มีเรื่องให้เรียนรู้มากมาย คุณควรคำนึงถึงสิ่งต่อไปนี้

  1. ความต้องการฮาร์ดแวร์และไดรเวอร์ที่เหมาะสมของคุณ
  2. เลือกคุณสมบัติใหม่ในขณะที่คุณกำลังสร้างเคอร์เนลด้วยตัวเอง เช่น รองรับหน่วยความจำสูง
  3. ปรับเคอร์เนลให้เหมาะสม - เลือกเฉพาะไดรเวอร์ที่คุณต้องการ มันจะเร่งกระบวนการบูตของคุณให้เร็วขึ้น หากคุณไม่แน่ใจเกี่ยวกับไดรเวอร์ใด ๆ ให้รวมไว้ด้วย

ตอนนี้ให้รันคำสั่ง 'make menuconfig'

make menuconfig

ข้อสำคัญ: คุณต้องเลือก “SELECT – ENABLE LOADABLE MODULE SUPPORT“ หากคุณลืมทำเช่นนี้ คุณจะพบกับช่วงเวลาที่ยากลำบาก .

หมายเหตุ: ในหน้าต่างการกำหนดค่าแบบเปิด คุณสามารถกำหนดค่าตัวเลือกต่างๆ สำหรับการ์ดเครือข่าย บลูทูธ ทัชแพด การ์ดกราฟิก การรองรับระบบไฟล์ เช่น NTFS และตัวเลือกอื่นๆ อีกมากมาย

ไม่มีบทช่วยสอนที่จะแนะนำคุณว่าคุณควรเลือกอะไรและอะไรไม่ควร คุณจะรู้สิ่งนี้ได้โดยการค้นคว้า ศึกษาสิ่งต่างๆ บนเว็บ เรียนรู้จากบทช่วยสอนเกี่ยวกับเทคมินต์ และด้วยวิธีอื่นๆ ทุกวิถีทางที่เป็นไปได้

คุณอาจเห็นว่ามีตัวเลือกการแฮ็กเคอร์เนล แฮ็ค? ได้! ในที่นี้หมายถึงการสำรวจ คุณสามารถเพิ่มตัวเลือกต่าง ๆ ภายใต้การแฮ็กเคอร์เนลและใช้คุณสมบัติมากมายได้

จากนั้นเลือก ตัวเลือกไดรเวอร์ทั่วไป

การสนับสนุนอุปกรณ์เครือข่าย

รองรับอุปกรณ์อินพุต

โหลดไฟล์การกำหนดค่า (.config) ที่เราบันทึกไว้จาก /boot/config-`uname –r`.config

คลิกตกลง บันทึก และออก ตอนนี้ทำความสะอาดแผนผังต้นทางและรีเซ็ตพารามิเตอร์เคอร์เนลแพ็คเกจ

make-kpkg clean

ขั้นตอนที่ 5: รวบรวมเคอร์เนล 3.16

ก่อนที่เราจะเริ่มรวบรวมเคอร์เนล เราจำเป็นต้องส่งออก CONCURRENCY_LEVEL ระดับความสอดคล้องของหัวแม่มือมีกฎในการเพิ่มตัวเลข 1 ให้กับแกนกลางของเคอร์เนล หากคุณมี 2 คอร์ ให้ส่งออก CONCURRENCY_LEVEL=3 หากคุณมี 4 คอร์ ให้ส่งออก CONCURRENCY_LEVEL=5

ในการตรวจสอบคอร์ของโปรเซสเซอร์คุณสามารถใช้คำสั่ง cat ดังที่แสดงด้านล่าง

cat /proc/cpuinfo
ผลลัพธ์ตัวอย่าง
Sample Output
processor	: 0 
vendor_id	: GenuineIntel 
cpu family	: 6 
model		: 69 
model name	: Intel(R) Core(TM) i3-4005U CPU @ 1.70GHz 
stepping	: 1 
microcode	: 0x17 
cpu MHz		: 799.996 
cache size	: 3072 KB 
physical id	: 0 
siblings	: 4 
core id		: 0 
cpu cores	: 2 
apicid		: 0 
initial apicid	: 0 
fpu		: yes 
fpu_exception	: yes 
cpuid level	: 13 
wp		: yes

คุณเห็นผลลัพธ์ด้านบน ฉันมี 2 คอร์ ดังนั้นเราจะส่งออก 3 คอร์ดังที่แสดงด้านล่าง

export CONCURRENCY_LEVEL=3

การตั้งค่า CONCURRENCY_LEVEL ที่ถูกต้องจะเร่งเวลาการคอมไพล์เคอร์เนลให้เร็วขึ้น

fakeroot make-kpkg --append-to-version "-tecmintkernel" --revision "1" --initrd kernel_image kernel_headers

ในที่นี้ 'tecminkernel' คือชื่อบิลด์เคอร์เนล อาจเป็นชื่ออะไรก็ได้ตั้งแต่ชื่อของคุณ ชื่อโฮสต์ ชื่อสัตว์เลี้ยงของคุณ หรืออะไรก็ได้

การคอมไพล์เคอร์เนลใช้เวลานานขึ้นอยู่กับโมดูลที่กำลังคอมไพล์และพลังการประมวลผลของเครื่อง จนถึงเวลาที่รวบรวม โปรดดูคำถามที่พบบ่อยบางประการของการคอมไพล์เคอร์เนล

คำถามที่พบบ่อย

ไตรมาสที่ 1 เคอร์เนลของฉันกำลังถูกรวบรวมมาเป็นเวลานาน มันปกติหรือเปล่า.
ไตรมาสที่ 2 หากฉันขัดจังหวะเคอร์เนลในขณะที่กำลังคอมไพล์ ฉันจำเป็นต้องเริ่มต้นใหม่ทั้งหมดอีกครั้งหรือไม่?
ไตรมาสที่ 3 ไฟล์ที่คอมไพล์แล้วสามารถใช้บนระบบอื่นเพื่ออัพเดตเคอร์เนลได้หรือไม่
ไตรมาสที่ 4 คุณจะโฮสต์ไฟล์ที่คอมไพล์ของคุณหรือไม่?
คำถามที่ 5 ฉันมีแพ็คเกจเช่น fakeroot และ ncurses5-dev ในพื้นที่เก็บข้อมูลของฉันหรือไม่
คำถามที่ 6 ฉันจะสามารถบูตเข้าสู่เคอร์เนลตัวสุดท้ายได้หรือไม่ หลังจากที่ฉันติดตั้งเคอร์เนลตัวล่าสุด
คำถามที่ 7 ฉันกำลังประสบปัญหาในการอัพเดตเคอร์เนล คุณจะช่วยฉันไหม? มีค่าใช้จ่ายหรือไม่?
คำถามที่ 8 บริษัทของฉันประสบปัญหาในการอัปเดตเคอร์เนล ทีมของคุณจะช่วยเราไหม? มีค่าใช้จ่ายไหม?

นั่นเป็นจุดสิ้นสุดของคำถามที่พบบ่อย ให้ฉันดำเนินการรวบรวมต่อไป หลังจากคอมไพล์เคอร์เนลสำเร็จ มันจะสร้างไฟล์สองไฟล์ (แพ็คเกจ Debian) ซึ่งเป็นหนึ่งไดเร็กทอรี 'ด้านบน' ของไดเร็กทอรีการทำงานปัจจุบันของเรา

ไดเร็กทอรีการทำงานปัจจุบันของเราคือ

/home/avi/Downloads/linux-3.16/

แพ็คเกจ Debian ถูกสร้างขึ้นที่

/home/avi/Downloads

เพื่อตรวจสอบให้รันคำสั่งต่อไปนี้

cd ..
ls -l linux-*.deb

จากนั้นให้เรียกใช้ไฟล์อิมเมจ Linux ที่สร้างขึ้น

dpkg -i linux-image-3.16.0-tecmintkernel_1_amd64.deb

เรียกใช้ไฟล์ส่วนหัวของ Linux ที่สร้างขึ้น

dpkg -i linux-headers-3.16.0-tecmintkernel_1_amd64.deb

ทุกอย่างเสร็จเรียบร้อย! เราได้สร้าง คอมไพล์ และติดตั้ง Linux Kernel 3.16 ล่าสุดบน Debian สำเร็จแล้ว รวมถึงการอ้างอิงอื่นๆ ทั้งหมด ยิ่งไปกว่านั้น แพ็คเกจ Debian ยังจัดการอัปเดต bootloader (GRUB/LILO) โดยอัตโนมัติ ถึงเวลารีบูตและทดสอบเคอร์เนลล่าสุด

โปรดสังเกตข้อความแสดงข้อผิดพลาดที่คุณอาจได้รับระหว่างการบูท สิ่งสำคัญคือต้องเข้าใจข้อผิดพลาดนั้นเพื่อแก้ไข ถ้ามี

reboot

ทันทีที่ Debian เริ่มต้นอีกครั้ง ให้คลิกที่ 'ตัวเลือกขั้นสูง' เพื่อดูรายการเคอร์เนลที่มีอยู่และติดตั้งแล้ว

ดูรายการเคอร์เนลที่ติดตั้ง

เลือกเคอร์เนลที่คอมไพล์ล่าสุด (เช่น 3.16) เพื่อบูต

ตรวจสอบเวอร์ชันเคอร์เนล

uname -mrns

อันล่าสุดที่ติดตั้งตอนนี้ได้รับการตั้งค่าให้บูตโดยอัตโนมัติและคุณไม่จำเป็นต้องเลือกทุกครั้งจากตัวเลือกการบูตขั้นสูง

ขั้นตอนที่ 6: ติดตั้งเคอร์เนลที่คอมไพล์ล่วงหน้า 3.16

สำหรับผู้ที่ไม่ต้องการคอมไพล์เคอร์เนลของตนเองบน Debian (x86_64) และต้องการใช้เคอร์เนลที่คอมไพล์ไว้ล่วงหน้าที่เราสร้างในบทช่วยสอนนี้ สามารถดาวน์โหลดได้จากลิงก์ด้านล่าง เคอร์เนลนี้อาจใช้ไม่ได้กับฮาร์ดแวร์บางตัวที่คุณอาจมี

  1. linux-image-3.16.0-linux-console.net_kernel_1_amd64.deb
  2. linux-headers-3.16.0-linux-console.net_kernel_1_amd64.deb

จากนั้นให้ติดตั้งเคอร์เนลที่คอมไพล์ไว้ล่วงหน้าโดยใช้คำสั่งต่อไปนี้

dpkg -i linux-image-3.16.0-linux-console.net_kernel_amd64.deb
dpkg -i linux-headers-3.16.0-linux-console.net_kernel_amd64.deb

เคอร์เนลที่ไม่ได้ใช้สามารถลบออกจากระบบได้โดยใช้คำสั่ง

apt-get remove linux-image-(unused_version_number)

ข้อควรระวัง: คุณควรลบเคอร์เนลเก่าออกหลังจากทดสอบเคอร์เนลล่าสุดอย่างละเอียด อย่าด่วนตัดสินใจ. คุณควรดำเนินการต่อเมื่อคุณรู้ว่าคุณกำลังทำอะไรอยู่

หากคุณทำอะไรผิดในการลบเคอร์เนลที่คุณต้องการ หรือลบเคอร์เนลที่คุณไม่ควรลบออก ระบบของคุณจะอยู่ในขั้นตอนที่คุณไม่สามารถทำงานได้

หลังจากถอนการติดตั้งเคอร์เนลที่ไม่ได้ใช้แล้ว คุณอาจได้รับข้อความดังกล่าว

  1. ลิงก์ /vmlinuz เป็นลิงก์ที่เสียหาย
  2. การลบลิงก์สัญลักษณ์ vmlinuz
  3. คุณอาจต้องรันบูตโหลดเดอร์ [ด้วง] อีกครั้ง
  4. ลิงก์ /initrd.img เป็นลิงก์ที่เสียหาย
  5. การลบลิงก์สัญลักษณ์ initrd.img
  6. คุณอาจต้องรันบูตโหลดเดอร์ [ด้วง] อีกครั้ง

นี่เป็นเรื่องปกติและคุณไม่จำเป็นต้องกังวล เพียงอัปเดต GRUB ของคุณโดยใช้คำสั่งต่อไปนี้

/usr/sbin/update-grub

คุณอาจต้องอัปเดตไฟล์ /etc/kernel-img.conf และปิดการใช้งาน 'do_symlinks' เพื่อปิดการใช้งานข้อความเหล่านี้ หากคุณสามารถรีบูตและเข้าสู่ระบบอีกครั้งได้ ก็ไม่มีปัญหา

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

อ่านเพิ่มเติม :

  1. ติดตั้งเคอร์เนล 3.16 ใน Ubuntu
  2. คอมไพล์และติดตั้ง Kernel 3.12 ใน Debian Linux