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

วิธีคอมไพล์เคอร์เนล 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

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