วิธีคอมไพล์เคอร์เนล Linux บน CentOS 7
การเรียกใช้เคอร์เนล Linux ที่คอมไพล์แบบกำหนดเองนั้นมีประโยชน์เสมอ โดยเฉพาะอย่างยิ่งเมื่อคุณต้องการเปิดหรือปิดใช้งานคุณสมบัติเคอร์เนลเฉพาะ ซึ่งไม่มีในเคอร์เนลที่มาจากการกระจายเริ่มต้น
ในบทความนี้ ผมจะอธิบายวิธีการคอมไพล์และใช้ Linux Kernel ล่าสุดจากแหล่งที่มาในการเผยแพร่ CentOS 7 (คำแนะนำที่ให้ไว้ที่นี่ใช้ได้กับ RHEL และ Fedora เช่นกัน )
หากคุณไม่ต้องการผ่านการตั้งค่าที่ซับซ้อนเหล่านี้ ให้ทำตามบทความง่ายๆ ของเราที่อธิบายวิธีการติดตั้งหรืออัปเกรดเป็นเคอร์เนลบน CentOS 7 โดยใช้พื้นที่เก็บข้อมูล RPM ของบริษัทอื่น
ติดตั้งแพ็คเกจที่จำเป็นสำหรับการรวบรวมเคอร์เนล
ขั้นแรก ตรวจสอบให้แน่ใจว่าได้อัปเดตที่เก็บแพ็คเกจซอฟต์แวร์ของคุณ ติดตั้งเครื่องมือการพัฒนาที่จำเป็นสำหรับการคอมไพล์เคอร์เนล และติดตั้งไลบรารี ncurses โดยใช้คำสั่ง yum ต่อไปนี้
yum update
yum install -y ncurses-devel make gcc bc bison flex elfutils-libelf-devel openssl-devel grub2
คอมไพล์และติดตั้งเคอร์เนลใน CentOS 7
ดาวน์โหลดเคอร์เนลซอร์ส 4.17 ล่าสุดโดยใช้คำสั่ง wget ภายใต้ไดเร็กทอรี /usr/src/ หรือคุณสามารถดาวน์โหลดเคอร์เนลล่าสุดได้โดยไปที่ kernel.org
cd /usr/src/
wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.17.11.tar.xz
แยกไฟล์ที่เก็บถาวรและเปลี่ยนไดเร็กทอรีโดยใช้คำสั่งต่อไปนี้
tar -xvf linux-4.17.11.tar.xz
cd linux-4.17.11/
กำหนดค่าเคอร์เนลใน CentOS 7
เคอร์เนลต้องได้รับการกำหนดค่าอย่างถูกต้องด้วยตัวเลือกการกำหนดค่าที่จำเป็นต่อไปนี้ภายในสภาพแวดล้อม CentOS 7
CONFIG_KVM_GUEST=y
CONFIG_VIRTIO_PCI=y
CONFIG_VIRTIO_PCI_LEGACY=y
CONFIG_BLK_DEV_SD
CONFIG_SCSI_VIRTIO=y
CONFIG_VIRTIO_NET=y
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
ฉันขอแนะนำอย่างยิ่งให้คุณคัดลอกการกำหนดค่าเคอร์เนลที่ทำงานอยู่ (.config
) จากไดเร็กทอรี /boot ไปยังไดเร็กทอรีเคอร์เนล linux-4.17.11 ใหม่
cp -v /boot/config-3.10.0-693.5.2.el7.x86_64 /usr/src/linux-4.17.11/.config
ตอนนี้รันคำสั่ง make menuconfig
เพื่อกำหนดค่าเคอร์เนล Linux เมื่อคุณดำเนินการคำสั่งด้านล่างหน้าต่างป๊อปอัปจะปรากฏขึ้นพร้อมกับเมนูทั้งหมด ที่นี่คุณสามารถเปิดหรือปิดใช้งานคุณสมบัติเคอร์เนลบางอย่างได้ หากคุณไม่คุ้นเคยกับเมนูเหล่านี้ เพียงกดปุ่ม ESC
เพื่อออก
cd /usr/src/linux-4.17.11/
make menuconfig
เมื่อตั้งค่าตัวเลือกการกำหนดค่าเคอร์เนลของคุณแล้ว ให้คลิก บันทึก เพื่อบันทึกอินเทอร์เฟซการกำหนดค่าและออกจากเมนู
รวบรวมเคอร์เนลใน CentOS 7
ก่อนที่จะเริ่มการคอมไพล์เคอร์เนล ตรวจสอบให้แน่ใจว่าระบบของคุณมีพื้นที่ว่างในระบบไฟล์มากกว่า 25GB เพื่อยืนยันคุณสามารถตรวจสอบพื้นที่ว่างของระบบไฟล์โดยใช้คำสั่ง df ดังที่แสดง
df -h
ตอนนี้รวบรวมและติดตั้งเคอร์เนลและโมดูลโดยใช้คำสั่งต่อไปนี้ (อาจใช้เวลาหลายชั่วโมง) กระบวนการคอมไพล์จะวางไฟล์ไว้ใต้ไดเร็กทอรี /boot และยังสร้างรายการเคอร์เนลใหม่ในไฟล์ grub.conf ของคุณ
make bzImage
make modules
make
make install
make modules_install
เมื่อการคอมไพล์เสร็จสิ้น ให้รีบูทระบบและตรวจสอบเคอร์เนลที่ติดตั้งใหม่
uname -sr
แค่นั้นแหละ. ฉันหวังว่าบทความนี้จะเป็นประโยชน์กับพวกคุณทุกคนมาก หากคุณประสบปัญหาหรือปัญหาใดๆ ในขณะที่รวบรวมหรือติดตั้งเคอร์เนล โปรดถามหรือโพสต์คำถามของคุณโดยใช้แบบฟอร์มแสดงความคิดเห็นด้านล่าง