LLVM(clang) 編譯 Linux 核心

Debian sid / Ubuntu xenial

安装必要的工具软件
$ sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils kernel-package patch libncurses5-dev
$ sudo apt-get install llvm clang

debian 套件版本太舊無法編譯
建議添加 ubuntu sources 安裝 llvm 1.38 clang-3.8
sudo leafpad /etc/apt/sources.list
deb http://free.nchc.org.tw/linuxmint/packages sarah main upstream import backport
deb http://ftp.nsysu.edu.tw/Ubuntu/ubuntu xenial main restricted universe multiverse
deb http://ftp.nsysu.edu.tw/Ubuntu/ubuntu xenial-updates main restricted universe multiverse
deb http://ftp.nsysu.edu.tw/Ubuntu/ubuntu xenial-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu/ xenial-security main restricted universe multiverse
deb http://archive.canonical.com/ubuntu/ xenial partner

sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 40976EAF437D05B5
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 3B4FE6ACC0B21F32
sudo apt-get update

下載Linux核心原始碼
$ wget https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.5.tar.xz
$ tar xvf linux-4.5.tar.xz

LLVM Patch
$ wget http://buildbot.llvm.linuxfoundation.org/configs/x86_64/kernel-patches.tar.bz2
$ cd linux-4.5
$ bzcat ../kernel-patches.tar.bz2 | patch -p1

LLVM Patch 錯誤修正
以linux-4.5為例:
linux-4.5/Makefile.rej
Hunk #2 FAILED at 667.
Hunk #1 FAILED at 1260.
linux-4.5/drivers/md/raid10.c.rej
Hunk #1 FAILED at 711.

/drivers/md/raid10.c 不必理會,因為新版原始碼已經取消掉Patch替換項目.
/Makefile
Hunk #2 FAILED at 667 也不必理會因為新版原始碼已經加入支援clang項目.
Hunk #1 FAILED at 1260 錯誤修復
linux-4.5/Makefile
搜尋 @echo  '  dir/file.[ois]
    @echo  '  dir/file.[ois]  - Build specified target only'
    @echo  '  dir/file.lst    - Build specified mixed source/assembly target only'
改為
    @echo  '  dir/file.[ois]  - Build specified target only'
    @echo  '  dir/file.ll     - Build the LLVM bitcode file'
    @echo  '                    (requires compiler support for LLVM bitcode generation)'
    @echo  '  dir/file.lst    - Build specified mixed source/assembly target only'


設定Linux核心
$ cd linux-4.5
使用預設組態
$ make defconfig

根據硬體架構載入設定(精簡化驅動,只包含支援你電腦的驅動)
$ make localmodconfig
選單界面編輯
$ make menuconfig

編譯原始碼
$ make HOSTCC=clang CC=clang
多核心處理器加速編譯參數: 雙核心添加 -j2 四核心添加 -j4 ....
雙核心make
$ make -j2 HOSTCC=clang CC=clang

打包為DEB

$ make deb-pkg
雙核心make
$ make -j2 deb-pkg

編譯過程不超過1小時 very fast...

安裝deb
$ sudo dpkg -i linux-image-4.5.0_4.5.0-*_amd64.deb
$ sudo dpkg -i linux-headers-4.5.0_4.5.0-*_amd64.deb

 

arrow
arrow
    全站熱搜

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