คอมไพล์ Kernel

จาก NakhonNet
ข้ามไปยัง: นำทาง, ค้นหา

ขั้นตอนนี้ยังไม่จำเป็น เพราะยังสามารถใช้ kernel ที่ติดมากับ Slackware 13.37 ได้ แต่ถ้ามีการใช้ความสามารถของ kernel ก็จะต้องติดตั้ง kernel ใหม่ โดยมีความต้องการดังนี้

  • iSCSI (built-in) ใช้ kernel 3.2.5 ขึ้นไป
  • Network Team ใช้ kernel 3.3 ขึ้นไป

ขั้นตอนการคอมไพล์ kernel มีดังนี้

  • ดาวน์โหลด และแตกไฟล์
  • กำหนดค่า
  • คอมไพล์
  • ติดตั้ง

ดาวน์โหลด และแตกไฟล์

ในที่นี้จะดาวน์โหลด kernel มาไว้ที่ /space/src

  • ดาวน์โหลด kernel จาก http://www.kernel.org/ (เลือก Full Source ของ 3.2.x ล่าสุด ขณะเขียนบทความคือ 3.2.47)
cd /space
mkdir src
cd src
wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.2.47.tar.xz
  • แตกไฟล์โดยใช้คำสั่ง
tar Jxf linux-3.2.47.tar.xz

กำหนดค่า

การกำหนดค่า จะใช้ค่าเดิมเป็นตัวตั้งต้น แล้วมาปรับแต่งตามความเหมาะสม

  • Copy config เดิม
cd linux-3.2.47
cp /boot/config .config
  • เพิ่ม option ที่ต้องการ
    • RTC - สำหรับ Real Time Clock (เนื่องจากใน kernel รุ่นใหม่จะเป็นคนละ option กับรุ่นเดิม จึงต้องมาเลือกเพิ่ม)
make menuconfig

เมื่อเสร็จแล้ว ให้ออกจากโปรแกรม แล้วบันทึกค่าเอาไว้

คอมไพล์

คอมไพล์ kernel โดยใช้คำสั่ง

make -j4

ค่าเลข 4 คือให้คอมไพล์ 4 งานพร้อมกัน เพื่อใช้ CPU ทั้ง 4 thread

ติดตั้ง

การติดตั้งจะแบ่งเป็น 3 ส่วน คือ ติดตั้ง module, ติดตั้ง kernel และกำหนดค่า LILO

  • ติดตั้ง module
make modules_install
  • ติดตั้ง kernel

Kernel ที่ได้จากการคอมไพล์จะอยู่ที่ arch/x86/boot/bzImage ให้คัดลอกไฟล์นี้ไปไว้ใน /boot พร้อมกับไฟล์ config อีก 2 ไฟล์ ดังนี้

cp arch/x86/boot/bzImage /boot/vmlinuz-3.2.47
cp System.map /boot/System.map-3.2.47
cp .config /boot/config-3.2.47
  • กำหนดค่า LILO

แก้ไขไฟล์ /etc/lilo.conf ดังนี้ ตอนต้นไฟล์ เพิ่มบรรทัดนี้

# Start LILO global section
boot = /dev/sda
default = Linux-3.2.47
lba32
#compact        # faster, but won't work on all systems.

บรรทัดสีน้ำเงินคือบรรทัดที่เพิ่มเข้าไป

ตอนท้ายไฟล์ เพิ่มบรรทัดดังนี้

# Linux bootable partition config begins
image = /boot/vmlinuz
  root = /dev/sda1
  label = Linux
  read-only  # Partitions should be mounted read-only for checking
image = /boot/vmlinuz-3.2.47
  root = /dev/sda1
  label = Linux-3.2.47
  read-only  # Partitions should be mounted read-only for checking
# Linux bootable partition config ends

บรรทัดสำน้ำเงินคือที่เพิ่มเข้าไป สำหรับบรรทัด root = มีการใช้คำสั่ง LABEL= แทนการอ้างพาร์ทิชั่นโดยตรง รายละเอียดอ่านได้จากหัวข้อ เปลี่ยนการอ้างอิง Filesystem

จากนั้นเรียกคำสั่ง lilo เพื่อติดตั้งค่าใหม่ตามที่กำหนด ดังนี้

root@diskserv:~# lilo
Added Linux
Added Linux-3.2.47 *
root@diskserv:~# 

View/Edit Diskless Server
ภาพรวม หลักการทำงาน - Hardware - Software
ติดตั้ง Server ติดตั้ง Slackware64 13.37 บูต - แบ่งพาร์ทิชั่น - เตรียมฮาร์ดดิสก์ - ติดตั้งแพ็กเกจ - ติดตั้ง Lilo - กำหนดค่าเน็ตเวิร์ก - กำหนดรหัสผ่าน - Slackware64 14.0
ปรับแต่ง Slackware Linux การใช้งานเบื้องต้น - คอมไพล์ Kernel - สร้างไดเรกทอรี - ปรับแต่ง Filesystem - ปรับแต่งแพ็กเกจ - เพิ่มการเรียก dhcpd
ปรับแต่ง Network กำหนดชื่อ Device - ทำ Network Bonding - กำหนดค่า Network
RAID สร้างพาร์ทิชั่น - สร้าง RAID - ไม่ใช้ RAID
กำหนดค่า Service NTPD - NAMED - TFTPD
โปรแกรม iSCSI Enterprise Target - iPXE
โปรแกรมจัดการระบบ Apache - MySQL - PhpMyAdmin - CakePHP - Disk Serve Manager (อัปเกรด)
ติดตั้ง Client ติดตั้ง Windows XP - ติดตั้ง iSCSI - ปรับแต่ง Windows XP - คัดลอกดิสก์ไปยังเซิร์ฟเวอร์ - Windows 7 64-bit
การใช้งาน ภาพรวม นิยาม - ไฟล์ Config และ Script
การกำหนดค่า Config - Cluster - Alternative - Computer - ตัวอย่าง
การใช้งาน หน้าจอหลัก - Mode การใช้งาน - ปรับปรุง Image - สำรอง Image - ขยายขนาด Image - ใช้หลาย Server
โปรแกรมเสริม ปรับแต่งเครื่องลูกขณะบูต - ฟอร์แมตไดรฟ์เสริม
การแก้ไขปัญหา FAQ - ไฟล์กำหนดค่า - ไฟล์บันทึกการทำงาน - Secure Erase