====================
編譯 Ubuntu 官方版核心
====================

Linux Mint 18 (Ubuntu xenial)

編譯Linux核心安裝所需的套件
$ sudo apt-get install git fakeroot build-essential libncurses5-dev xz-utils kernel-package libssl-dev zlib1g-dev debhelper kernel-wedge gawk

下載原始碼與補丁
$ wget http://archive.ubuntu.com/ubuntu/pool/main/l/linux/linux_4.4.0.orig.tar.gz
$ wget http://archive.ubuntu.com/ubuntu/pool/main/l/linux/linux_4.4.0-21.37.diff.gz
解壓縮
$ tar xvf linux_4.4.0.orig.tar.gz
$ gunzip linux_4.4.0-21.37.diff.gz

Ubuntu 官方版原始碼補丁
$ mv linux-4.4 linux-4.4.0
$ patch -p0 -i linux_4.4.0-21.37.diff

設定檔案權限
$ cd linux-4.4.0
$ chmod a+x debian/rules
$ chmod a+x debian/scripts/*
$ chmod a+x debian/scripts/misc/*

設定核心功能與驅動程式
設定方法同前
$ fakeroot debian/rules clean
$ fakeroot debian/rules editconfigs

編譯核心
$ fakeroot debian/rules clean
$ fakeroot debian/rules binary-headers binary-generic

只須保留 linux-image-4.4.0-21-generic 和 linux-image-extra-4.4.0-21-generic 套件

如系統核心版號與編譯核心的版號一樣,必須使用Live系統或電腦上其他Linux以chroot方式替換.

替換核心
# apt-get --purge remove linux-image-4.4.0-21-generic linux-image-extra-4.4.0-21-generic
將套件複製到 chroot系統/tmp
# cd /tmp
# dpkg -i linux-image-4.4.0-21-generic_4.4.0-21.37_amd64.deb
# dpkg -i linux-image-extra-4.4.0-21-generic_4.4.0-21.37_amd64.deb


編譯全部套件
$ debuild -e DEBIAN_KERNEL_JOBS=$(nproc)

====================
編譯 Debian 官方版核心
====================

LMDE (Debian sid)

編譯Linux核心安裝所需的套件
$ sudo apt-get install git fakeroot build-essential libncurses5-dev xz-utils kernel-package libssl-dev zlib1g-dev debhelper kernel-wedge gawk rsync quilt devscripts

下載Debian官方版原始碼
$ wget http://http.debian.net/debian/pool/main/l/linux/linux_4.4.6.orig.tar.xz

解壓縮原始碼
$ tar Jxvf linux_4.4.6.orig.tar.xz
$ cd linux-4.4.6

下載Debian官版補丁
$ wget http://http.debian.net/debian/pool/main/l/linux/linux_4.4.6-1.debian.tar.xz
$ tar Jxvf linux_4.4.6-1.debian.tar.xz


---- 編譯全部套件
$ make -f debian/rules clean
$ debuild -e DEBIAN_KERNEL_JOBS=$(nproc)


---- 編譯核心套件
套用Debian原始碼補丁
$ make -f debian/rules clean
$ make -f debian/rules orig

建立原始碼編譯目錄
$ make -f debian/rules source

編譯Linux核心並打包deb
$ fakeroot make -j2 -f debian/rules.gen binary-arch_amd64_none_amd64

保留 linux-image-4.4.0-1-amd64_4.4.6-1_amd64.deb 即可

替換核心
$ sudo apt-get --purge remove linux-image-4.4.0-1-amd64
將套件複製到 chroot系統/tmp
$ cd /tmp
$ sudo dpkg -i linux-image-4.4.0-1-amd64_4.4.6-1_amd64.deb

編譯錯誤處理
錯誤訊息: recipe for target 'debian/stamps/build_amd64_none_amd64' failed
$ ln -s 原始碼路徑/linux-4.4.6/debian/build/build_amd64_none_amd64 原始碼路徑/linux-4.4.6/debian/stamps/build_amd64_none_amd64


手動修改自訂核心功能
------------------------------------
linux-4.5.1/debian/config/kernelarch-x86/config-arch-64

多核心支援
# CONFIG_MAXSMP is not set 改為 CONFIG_MAXSMP=y
CONFIG_NR_CPUS=512 改為 CONFIG_NR_CPUS=8192

file: arch/x86/Kconfig 項目底下添加
CONFIG_CPUMASK_OFFSTACK=y



linux-4.5.1/debian/config/kernelarch-x86/config

### 筆電使用CONSERVATIVE 桌上型不用改
CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y 改為 # CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set 改為 CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE=y

VT-X 支援
# CONFIG_KVM_MMU_AUDIT is not set 改為 CONFIG_KVM_MMU_AUDIT=y

# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set 改為 CONFIG_PARAVIRT_TIME_ACCOUNTING=y

CONFIG_NODES_SHIFT=6 改為 CONFIG_NODES_SHIFT=10



linux-4.5.1/debian/config/config

### CPU 頻率 250Hz To 1000Hz
CONFIG_HZ_250=y 改為 # CONFIG_HZ_250 is not set
# CONFIG_HZ_1000 is not set 改為 CONFIG_HZ_1000=y

### CPU 變頻功能
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y 改為 # CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set

CONFIG_CPU_FREQ_STAT=m 改為 CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_FREQ_GOV_POWERSAVE=m 改為 CONFIG_CPU_FREQ_GOV_POWERSAVE=y
CONFIG_CPU_FREQ_GOV_USERSPACE=m 改為 CONFIG_CPU_FREQ_GOV_USERSPACE=y
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m 改為 CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y

### 檔案格式支援
CONFIG_EXT4_FS=m 改為 CONFIG_EXT4_FS=y

CONFIG_VFAT_FS=m 改為 CONFIG_VFAT_FS=y

找尋 file: fs/fat/Kconfig
底下添加
CONFIG_FAT_FS=y

找尋 file: fs/jbd2/Kconfig
底下添加
CONFIG_JBD2=y

找尋 file: fs/Kconfig
底下添加
CONFIG_FS_MBCACHE=y

# CONFIG_NTFS_RW is not set 改為 CONFIG_NTFS_RW=y


# CONFIG_IKCONFIG is not set 改為 CONFIG_IKCONFIG=m

CONFIG_LOG_BUF_SHIFT=17 改為 CONFIG_LOG_BUF_SHIFT=15

CONFIG_CRC16=m 改為 CONFIG_CRC16=y

arrow
arrow
    全站熱搜

    Mint Fans 發表在 痞客邦 留言(0) 人氣()