เปิดตัว 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
- เรดแฮท – 10.2%
- อินเทล – 8.8%
- เท็กซัส อินสทรูเมนท์ส – 4.1%
- ลินาโร – 4.1%
- ซูส – 3.5%
- ไอบีเอ็ม – 3.1%
- ซัมซุง – 2.6%
- กูเกิล – 2.4%
- ระบบแกะสลักด้วยวิสัยทัศน์ – 2.3%
- วูล์ฟสัน ไมโครอิเล็กทรอนิกส์ – 1.6%
- ออราเคิล – 1.3%
- บรอดคอม – 1.3%
- NVIDIA – 1.3%
- ฟรีสเกล – 1.2%
- เทคโนโลยีอินจิกส์ – 1.2%
- ซิสโก้ – 0.9%
- มูลนิธิลินุกซ์ – 0.9%
- เอเอ็มดี – 0.9%
- นักวิชาการ – 0.9%
- เน็ตแอพ – 0.8%
- ฟูจิตสึ – 0.7%
- แนว – 0.7%
- แขน – 0.7%
เจ็ดสิบเปอร์เซ็นต์ของการพัฒนาเคอร์เนลดำเนินการโดยนักพัฒนาที่ทำงานในองค์กรและได้รับค่าตอบแทนฟังดูน่าสนใจใช่ไหม
Linux Kernel 3.16 เปิดตัวสำหรับบุคคลทั่วไปและบริษัทในสภาพแวดล้อมการใช้งานจริง ซึ่งจะอัปเดตเคอร์เนลด้วยเหตุผลหลายประการ ซึ่งรวมถึงบางเหตุผลด้วย
- แพทช์รักษาความปลอดภัย
- การปรับปรุงเสถียรภาพ
- ไดรเวอร์ที่อัปเดต - การสนับสนุนอุปกรณ์ที่ดีขึ้น
- การปรับปรุงความเร็วในการประมวลผล
- ฟังก์ชั่นล่าสุด ฯลฯ
บทความนี้มีจุดมุ่งหมายเพื่ออัปเดตเคอร์เนล Debian แบบ Debian ซึ่งหมายถึงการทำงานด้วยตนเองน้อยลง ความเสี่ยงน้อยลงแต่มีความสมบูรณ์แบบ เราจะอัปเดต Ubuntu Kernel ในส่วนหลังของบทความนี้ด้วย
ขั้นตอนที่ 1: ดาวน์โหลด Kernel 3.16
ก่อนที่เราจะดำเนินการต่อไป เราต้องทราบเกี่ยวกับเคอร์เนลปัจจุบันของเราที่ติดตั้งไว้
avi@tecmint:~$ uname -mrns
Linux tecmint 3.14-1-amd64 x86_64
เกี่ยวกับตัวเลือก:
- -s : ระบบปฏิบัติการการพิมพ์ ('Linux' ที่นี่)
- -n : พิมพ์ชื่อโฮสต์ของระบบ ('tecmint' ที่นี่)
- -r : พิมพ์เวอร์ชันเคอร์เนล ('tecmint 3.14-1-amd64' ที่นี่)
- -m : พิมพ์ชุดคำสั่งฮาร์ดแวร์ ('x86_64' ที่นี่)
ดาวน์โหลด Kernel ที่เสถียรล่าสุดจากลิงค์ด้านล่าง อย่าสับสนกับลิงค์ดาวน์โหลดแพตช์ที่นั่น ดาวน์โหลดอันที่ระบุอย่างชัดเจน - “LATEST STABLE KERNEL ”
- 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 หรือไม่
- gpg: ลายเซ็นที่ดีจาก “Linus Torvalds <[email >”
- ลายนิ้วมือคีย์หลัก: 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
- make oldconfig : มันเป็นวิธีการโต้ตอบที่เคอร์เนลถามคำถามทีละข้อว่าควรสนับสนุนอะไรและอะไรไม่ควรสนับสนุน เป็นกระบวนการที่ใช้เวลานานมาก
- make menuconfig : เป็นระบบที่ใช้เมนูบรรทัดคำสั่งซึ่งผู้ใช้สามารถเปิดและปิดการใช้งานตัวเลือกได้ มันต้องใช้ห้องสมุด ncurses ดังนั้นเราจึงฉลาดกว่านั้น
- make qconfig/xconfig/gconfig : เป็นระบบที่ใช้เมนูกราฟิกซึ่งผู้ใช้สามารถเปิดและปิดการใช้งานตัวเลือกได้ มันต้องมีห้องสมุด QT
แน่นอนว่าเราจะใช้ 'make menuconfig'
กลัวที่จะสร้างเคอร์เนลใช่ไหม? คุณไม่ควรจะเป็น สนุกดี มีเรื่องให้เรียนรู้มากมาย คุณควรคำนึงถึงสิ่งต่อไปนี้
- ความต้องการฮาร์ดแวร์และไดรเวอร์ที่เหมาะสมของคุณ
- เลือกคุณสมบัติใหม่ในขณะที่คุณกำลังสร้างเคอร์เนลด้วยตัวเอง เช่น รองรับหน่วยความจำสูง
- ปรับเคอร์เนลให้เหมาะสม - เลือกเฉพาะไดรเวอร์ที่คุณต้องการ มันจะเร่งกระบวนการบูตของคุณให้เร็วขึ้น หากคุณไม่แน่ใจเกี่ยวกับไดรเวอร์ใด ๆ ให้รวมไว้ด้วย
ตอนนี้ให้รันคำสั่ง '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) และต้องการใช้เคอร์เนลที่คอมไพล์ไว้ล่วงหน้าที่เราสร้างในบทช่วยสอนนี้ สามารถดาวน์โหลดได้จากลิงก์ด้านล่าง เคอร์เนลนี้อาจใช้ไม่ได้กับฮาร์ดแวร์บางตัวที่คุณอาจมี
- linux-image-3.16.0-linux-console.net_kernel_1_amd64.deb
- 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)
ข้อควรระวัง: คุณควรลบเคอร์เนลเก่าออกหลังจากทดสอบเคอร์เนลล่าสุดอย่างละเอียด อย่าด่วนตัดสินใจ. คุณควรดำเนินการต่อเมื่อคุณรู้ว่าคุณกำลังทำอะไรอยู่
หากคุณทำอะไรผิดในการลบเคอร์เนลที่คุณต้องการ หรือลบเคอร์เนลที่คุณไม่ควรลบออก ระบบของคุณจะอยู่ในขั้นตอนที่คุณไม่สามารถทำงานได้
หลังจากถอนการติดตั้งเคอร์เนลที่ไม่ได้ใช้แล้ว คุณอาจได้รับข้อความดังกล่าว
- ลิงก์ /vmlinuz เป็นลิงก์ที่เสียหาย
- การลบลิงก์สัญลักษณ์ vmlinuz
- คุณอาจต้องรันบูตโหลดเดอร์ [ด้วง] อีกครั้ง
- ลิงก์ /initrd.img เป็นลิงก์ที่เสียหาย
- การลบลิงก์สัญลักษณ์ initrd.img
- คุณอาจต้องรันบูตโหลดเดอร์ [ด้วง] อีกครั้ง
นี่เป็นเรื่องปกติและคุณไม่จำเป็นต้องกังวล เพียงอัปเดต GRUB ของคุณโดยใช้คำสั่งต่อไปนี้
/usr/sbin/update-grub
คุณอาจต้องอัปเดตไฟล์ /etc/kernel-img.conf และปิดการใช้งาน 'do_symlinks' เพื่อปิดการใช้งานข้อความเหล่านี้ หากคุณสามารถรีบูตและเข้าสู่ระบบอีกครั้งได้ ก็ไม่มีปัญหา
นั่นคือทั้งหมดที่สำหรับตอนนี้. ฉันจะกลับมาที่นี่อีกครั้งพร้อมกับบทความที่น่าสนใจอื่น ๆ จนกว่าจะคอยติดตามและเชื่อมต่อกับ Tecmint อย่าลืมให้ข้อเสนอแนะอันมีค่าของคุณแก่เราในส่วนความคิดเห็นด้านล่าง บอกเล่าประสบการณ์ของคุณเมื่อคุณพบการคอมไพล์และการติดตั้งเคอร์เนล
อ่านเพิ่มเติม :
- ติดตั้งเคอร์เนล 3.16 ใน Ubuntu
- คอมไพล์และติดตั้ง Kernel 3.12 ใน Debian Linux