==================================
Debian / Ubuntu Linux 核心編譯
==================================
Debian sid / Ubuntu xenial
編譯Linux核心安裝所需的套件
$ sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils kernel-package
下載Linux核心原始碼
$ wget https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.5.tar.xz
$ tar xvf linux-4.5.tar.xz
### Ubuntu Patch
Ubuntu 目前只用4.4 所以沒有4.5的diff 原始碼也要用4.4版.
也可以不打Patch直接用Linux原版
下載diff
$ wget http://archive.ubuntu.com/ubuntu/pool/main/l/linux/linux_4.4.0-15.31.diff.gz
解壓縮後命名 patch.diff
因為diff檔Patch目標是linux-4.4.0目錄, 所以linux-4.4必須命名linux-4.4.0才有辦法打Patch.
$ mv linux-4.4 linux-4.4.0
$ patch -p0 -i patch.diff
$ mv linux-4.4.0 linux-4.4
設定Linux核心
$ cd linux-4.5
### 清除先前編譯的暫存檔案(新解開的壓縮檔可跳過此步驟)
$ sudo make mrproper
### 載入Linux核心設定
基本上可跳過, Ubuntu或Debian會自動載入.
$ cp /boot/config-$(uname -r) .config
修改核心功能與驅動程式設定項目
如果有修改好的「.config」複製到原始碼目錄下,直接編譯.
$ make menuconfig
編譯Linux核心並建立DEB套件包
$ make-kpkg clean
$ sudo fakeroot make-kpkg --initrd kernel_image kernel_headers
或
$ sudo fakeroot make-kpkg --initrd --revision=rt-4.4.4 kernel_image kernel_headers
安裝核心
$ sudo dpkg -i linux-image-*.deb
$ sudo dpkg -i linux-headers-*.deb
==================================
選項說明
==================================
編譯選項說明
--initrd : 建立 initrd.
--revision : 設定自訂的修訂版本(可免).
核心功能與驅動程式設定說明
詳細說明
http://linux.vbird.org/linux_basic/0540kernel.php
[*] <*> 則表示編譯進核心;若為 <M> 則表示編譯成模組.
『肯定』核心一定要的功能,直接編譯進核心內;
『可能在未來會用到』的功能,那麼盡量編譯成為模組;
『不知道那個東西要幹嘛的,看 help 也看不懂』的話,那麼就保留預設值,或者將他編譯成為模組;
重點設定
###############################
### General setup
###############################
Ubuntu的話 裡面會看到 Ubuntu 4.4.0-11.26-generic 4.4.4 名稱可隨意修改
也可以修改原始碼目錄內複製過來的「.config」
選擇Bzip2,因為壓縮比較佳.
Kernel compression mode (Bzip2) --->
讓.config這個核心功能列表可以寫入實際的核心檔案中
<M> Kernel .config support
網路謠言雙核心選15實際我也不知.
(15) Kernel log buffer size (16 => 64KB, 17 => 128KB)
否支援嵌入式系統,桌機不需要.
[ ] Configure standard kernel features (expert users) --->
[ ] Embedded system
###############################
### Processor type and features
###############################
提供 Linux 虛擬化功能
--- Linux guest support --->
CPU 支援 Intel VT 或 AMD-V 以下項目選取
[*] Enable paravirtualization code
[*] Paravirtualization layer for spinlocks
[*] Xen guest support
[*] KVM Guest support (including kvmclock)
[*] Paravirtual steal time accounting
選擇處理器架構
Processor family (Generic-x86-64) --->
如果處理器沒在清單內
Intel P4 / Netburst 是舊款 32位元處理器
Generic-x86-64 是現在的64位元處理器
我的是Haswell 64位元處理器,只能選Generic-x86-64
( ) Opteron/Athlon64/Hammer/K8
( ) Intel P4 / older Netburst based Xeon
( ) Core 2/newer Xeon
( ) Intel Atom
(X) Generic-x86-64
[*] Enable Maximum number of SMP Processors and NUMA Nodes
[*] Multi-core scheduler support
核心類型
Preemption Model (Voluntary Kernel Preemption
如果要編譯成伺服器核心就選Server.
沒架Server就選 Desktop.
No Forced Preemption (Server)
(X) Voluntary Kernel Preemption (Desktop)
( ) Preemptible Kernel (Low-Latency Desktop)
Timer frequency (1000 HZ)
預設250Hz
Server 調整 300Hz
教新的CPU調整到1000Hz性能比較好
其他看需求取消
[ ] Old AMD GART IOMMU support
###############################
### Power management and ACPI options
###############################
CPU Frequency scaling --->
CPU變頻省電技術把「M」改成「*」編譯到核心.
[*] CPU frequency translation statistics details
<*> 'powersave' governor
<*> 'userspace' governor for userspace frequency scaling
<*> 'conservative' cpufreq governor
Default CPUFreq governor (conservative)
桌機選擇 ondemand
筆電選擇 conservative
###############################
### Bus options (PCI etc.)
###############################
[*] Support for PCI Hotplug
如果沒有PCI熱插拔裝置,去掉.
###############################
### Device Drivers
###############################
大致上預設按預設, 有問題再詳細增減.
###############################
### File systems
###############################
CD-ROM/DVD Filesystems --->
<*> ISO 9660 CDROM file system support
使用Win與Lin雙系統
DOS/FAT/NT Filesystems --->
<*> NTFS file system support
###############################
### Virtualization
###############################
虛擬化與函式庫
CPU 要有支援 Intel VT 或 AMD-V
[*] Audit KVM MMU
使linux上虛擬機性能大幅度提高.