1. 程式人生 > >CentOS 7核心配置、編譯與安裝

CentOS 7核心配置、編譯與安裝

簡介

大部分時候,使用者並不需要編譯核心。編譯核心的一般目的:新功能的需求、原本的核心太過臃腫、不硬體搭配的穩定性、其他需求(如嵌入式系統)。 本文主要介紹瞭如何在CentOS 7環境下進行Linux核心的配置、編譯與安裝。

編譯前的準備

要成功建立一個核心,需要安裝下列元件
[[email protected]]$ sudo yum groupinstall "Development Tools"
[[email protected]]$ sudo yum install ncurses-devel
[[email protected]]$ sudo yum install qt-devel #如果你打算用make xconfig 而不是make gconfig或make menuconfig,才須要這樣做
[
[email protected]
]$ sudo yum install hmaccalc zlib-devel binutils-devel elfutils-libelf-devel bc

安裝核心的原始碼元件及工具

安裝核心原始碼工具元件

[[email protected]]$ sudo yum install rpm-build redhat-rpm-config asciidoc hmaccalc perl-ExtUtils-Embed pesign 
[[email protected]]$ sudo yum install xmlto audit-libs-devel binutils-devel elfutils-devel elfutils-libelf-devel 
[
[email protected]
]$ sudo yum install ncurses-devel newt-devel numactl-devel pciutils-devel python-devel zlib-devel net-tools

安裝原始碼

1. 安裝與當前核心版本一致的原始碼:
從這些地方找尋核心的原始碼元件:
  ● http://vault.centos.org/7.N.YYMM/os/Source/SPackages/
  ● http://vault.centos.org/7.N.YYMM/updates/Source/SPackages/
根據CentOS系統版本和核心版本資訊,通過rpm安裝原始碼元件:
[
[email protected]
etc]$ cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core) [[email protected] etc]$ uname -r 3.10.0-514.16.1.el7.x86_64 [[email protected]]$ sudo rpm -i http://vault.centos.org/7.3.1611/updates/Source/SPackages/kernel-3.10.0-514.16.1.el7.src.rpm 2>&1 | grep -v exist
現在原始碼元件已經安裝了,請解壓及預備原始碼檔案:
[[email protected]]$ cd ~/rpmbuild/SPECS
[[email protected] SPECS]$ rpmbuild -bp --target=$(uname -m) kernel.spec
$(uname -m) 這個值將目標結構設定為你的現有核心的結構。一般來說這是可行的,因為多數人需要以 i686 或 x86_64 為目標。
現在核心的原始碼目錄樹可以在 ~/rpmbuild/BUILD/kernel*/linux*/ 這個目錄內找得到。
2. 安裝與當前核心不同的版本
可以直接去http://www.kernel.org官網上去下載,並通過tar命令去解壓即可。
[[email protected]]$ tar -Jxf /root/linux-3.10.89.tar.xz -C /usr/src/kernels/

核心原始碼目錄結構

核心原始碼目錄結構
在上述核心目錄下存有哪些重要資料呢? 基本上有底下這些東西:
 arch:與硬體平臺有關的專案,大部分指的是CPU的類別,例如x86, x86_64, Xen虛擬支援等;
 block:與塊裝置較相關程式,區塊資料通常指的是大量儲存媒體!還包括類似ext3等檔案系統的支援是否允許等。
 crypto:核心所支援的加密的技術,例如 md5 戒者是des等等;
 Documentation:與核心有關的一堆說明檔案,若對核心有極大的興趣,要瞧瞧這裡!
 drivers:一些硬體的驅勱程式,例如顯示介面卡、網路卡、PCI 相關硬體等等;
 firmware:一些舊式硬體的韌體(韌體)資料;
 fs:核心所支援的filesystems,例如vfat, reiserfs, nfs等等;
 include:一些可讓其他過程呼叫的標頭檔案(header);
 init:一些核心初始化定義功能,包括掛載和init程式的呼叫等;
 ipc:定義Linux作業系統內程序間通訊;
 kernel:定義核核心程式、核心狀態、執行緒、排程(schedule)、訊號(signle) 等
 lib:一些函式庫;
 mm:與記憶體單元有關的各項資料,包括swap與虛擬記憶體等;
 net:與網路有關的各項協議資料,還有防火牆模組 (net/ipv4/netfilter/*)等等;
 security:包括selinux等在內的安全性設定;
 sound:與音效有關的各項模組;
 virt:與虛擬化有關的資訊,目前核心支援的是KVM(Kernel base Virtual Machine)

檢查硬體環境

檢視當前目標主機的硬體裝置相關資訊, 為核心配置做準備。只有瞭解到您主機的硬體,以及主機的用途,才能選擇好核心功能:
使用的命令有關:lscpu(cpu詳細資訊)、lspci(pci插槽)、lsusb(usb介面)、lsblk(塊裝置)、hal-device(所有硬體詳細資訊)。
注:上面的命令如果是最小化安裝的系統,可能會沒有這些工具,因此安裝對應工具包即可
#安裝命令需要的工具包
[[email protected]]# yum install -y pciutils usbutils util-linux

核心配置、編譯與安裝

進入核心原始碼樹的根目錄,使用"make help"可以檢視核心編譯相關的選項,下面列出了常用的選項:
[[email protected]]$ make help
Cleaning targets:
  clean           - Remove most generated files but keep the config and
                    enough build support to build external modules
  mrproper        - Remove all generated files + config + various backup files

Configuration targets:
  menuconfig      - Update current config utilising a menu based program

Other generic targets:
  all             - Build all targets marked with [*]
* vmlinux         - Build the bare kernel
* modules         - Build all modules
  modules_install - Install all modules to INSTALL_MOD_PATH (default: /)

Architecture specific targets (x86):
* bzImage      - Compressed kernel image (arch/x86/boot/bzImage)
  install      - Install kernel using
                  (your) ~/bin/installkernel or
                  (distribution) /sbin/installkernel or
                  install to $(INSTALL_PATH) and run lilo
Execute "make" or "make all" to build all targets marked with [*] 
For further info see the ./README file
1. 使用"make menuconfig"生成.config核心配置檔案,核心配置選項可參看Linux-3.10-x86_64核心配置選項簡介
關於整個核心功能的選擇上面,建議你可以這樣思考:
 『肯定』核心一定要的功能,直接編譯進核心內;
 『可能在未來會用到』的功能,那麼儘量編譯成為模組;
 『不知道那個東西要幹嘛的,看 help 也看不懂』的話,那麼就保留預設值,或者將他編譯成為模組;
總之,儘量保持核心小而美,剩下的功能就編譯成為模組,尤其是『需要考慮到未來擴充性』。
2. 編譯核心和模組
使用下面的命令分別進行核心和模組的編譯
[[email protected]]# make vmlinux        #編譯核心
[[email protected]]# make modules        #編譯模組
3. 安裝核心和模組
[[email protected]]# make modules_install      #安裝模組
[[email protected]]# make install              #安裝核心
其它常用命令
make clean: 刪除大多數的編譯生成檔案, 但是會保留核心的配置檔案.config, 還有足夠的編譯支援來建立擴充套件模組
make mrproper: 刪除所有的編譯生成檔案, 還有核心配置檔案, 再加上各種備份檔案
新的程式碼可以跳過上述步驟。

新核心測試

核心安裝以後,可以檢視/boot/grub/grub.cfg配置檔案,檢視新編譯核心時候已經配置成功。進行系統重啟測試,檢視新核心能否正常啟動。 通過"uname -a"可以檢視核心版本資訊。

總結

簡單說明核心編譯的步驟為何:
1. 先下載核心原始碼,可以從http://www.kernel.org或者是distributions的SRPM來著手;
2. 以下以 Tarball 來處理,解開原始碼到 /usr/src/kernels 目彔下;
3. 先進行舊資料清除的動作:『make mrproper』;
4. 開始選擇核心功能,可以利用『make menuconfig』、『make oldconfig』、『make gconfig』等等;
5. 清除過去的中間暫存檔資料:『make clean』
6. 開始核心檔案不核心模組的編譯:『make bzImage』、『make modules』
7. 開始核心模組的安裝:『make modules_install』
8. 開始核心檔案的安裝:『make install』;

參考資料

1. https://wiki.centos.org/zh/HowTos/Custom_Kernel
2. http://www.jinbuguo.com/kernel/longterm-3_10-options.html
3. https://www.hiroom2.com/2016/05/29/centos-7-rebuild-kernel-with-src-rpm/
4. 鳥哥的Linux私房菜 基礎篇 第26章 Linux核心編譯與管理

相關推薦

CentOS 7核心配置編譯安裝

簡介 大部分時候,使用者並不需要編譯核心。編譯核心的一般目的:新功能的需求、原本的核心太過臃腫、不硬體搭配的穩定性、其他需求(如嵌入式系統)。 本文主要介紹瞭如何在CentOS 7環境下進行Linux核心的配置、編譯與安裝。 編譯前的準備 要成功建立一個核心,需要安裝下列元

Busybox的配置編譯安裝

BusyBox 最初是由 Bruce Perens 在 1996 年為 Debian GNU/Linux 安裝盤編寫的。其目標是在一張軟盤上建立一個可引導的 GNU/Linux 系統,這可以用作安裝盤和急救盤。一張軟盤可以儲存大約 1.4-1.7MB 的內容,因此這裡沒

嵌入式Linux核心配置裁剪編譯淺析(ARM版)

/*====================*/ 9、Device Drivers  --->  9.1、Generic Driver Options  --->  9.1.1、()  path to uevent helper  9.1.2、[ ] Maintain a devtmpfs fil

CentOS 7.3 NFS服務器的安裝配置

nfs nfs服務器 nfs配置 nfs安裝 nfs server 一、NFS服務簡介? ? ? ?NFS 是Network File System的縮寫,即網絡文件系統。一種使用於分散式文件系統的協定,由Sun公司開發,於1984年向外公布。功能是通過網絡讓不同的機器、不同的操作系統能夠

linux CentOS 7虛擬機器(僅主機模式) 安裝編譯Nginx 流程一(網路配置)

今天搞了個CentOS 最新版的虛擬機器(網路是基於僅主機模式) 並且安裝了一個Nginx,遇到了很多問題,最終也是解決了: 可能會遇到的問題: 1、本機和虛擬機器的網路問題(這個問題解決了就基本上沒有問題了) 2、linux線上安裝 問題一解決網路問題: 這裡 我自定義了一

CentOS 7上源碼編譯安裝MySQL 5.7

mysql source cmake 1.系統環境[[email protected]/* */ ~]# uname -r3.10.0-514.el7.x86_64 [[email protected]/* */ ~]# cat /etc/redhat-release

Apache Tomcat安裝配置啟動後續操作步驟

文件解壓 相對 ref 自己的 控制臺 應用 為我 。。 start 1.第一,我們在安裝Apache Tomcat之前,我們首先安裝和配置好jdk; 2.第二,我們要清楚自己的jdk版本。因為我們Apache Tomcat配置的成功的前提是版本相對應。在這裏,博主是用下圖

Vmware 安裝CentOS 7 如何配置IP地址

centos 7 如何配置ip地址初學習LINUX時,不知道如何配置IP地址,在百度和自己做實驗後,整理資料如下: 一、顯示當前網卡配置信息[[email protected] ~]# Ifconfig(通常才安裝的系統是沒有配置IP地址的,防火墻也是關閉的)二、跳到配置文件夾下,命令用CD

小程序後臺配置 --- CentOS 7.3 64nginxnode.js

工作 數據 同時 本地 ane get 端口 域名解析 time 小程序後臺配置 目的 配置一個小程序後臺的開發、發布環境,同時保留頂級域名另作他用。 需求: 一個域名 一個主機 一個小程序賬號 系統和軟件 這裏使用CentOS 7.3 64位系統和nginx、node

CentOS 7.3.1708系統虛擬機安裝配置圖解教程

centos7 centos7安裝 一、安裝CentOS 7.3.1708系統 成功引導系統後,會出現下面的界面 界面說明: Install CentOS 7 #安裝CentOS 7 Test this media &

ElasticSearch筆記整理(一):簡介REST安裝配置

大數據 ElasticSearch ELK [TOC] ElasticSearch簡介 ElasticSearch是一款基於Apache Lucene構建的開源搜索引擎,它采用Java編寫並使用Lucene構建索引、提供搜索功能,ElasticSearch的目標是讓全文搜索變得簡單,開發者可以通

Centos-7.3配置PXE+kickstart無人值守安裝

log ftp term alt 環境 ges wall 系統版本 serve Centos-7.3配置PXE+KICKSTART自動安裝系統 首先查看當前系統版

Centos 7(Linux)環境下安裝PHP(編譯添加)相應動態擴展模塊so(以openssl.so為例)

linu *** bz2 restart lan openssl 發現 不知道 tails https://blog.csdn.net/shinesun001/article/details/54312402 在centos 7環境下搭建好Lnmp環境之後,發現安裝的php

Centos 7.4下 Zabbix3.4的安裝配置

信息 目錄 shang align host 啟動 3.1 oca gin Zabbix3.4的安裝配置一、 Zabbix環境準備1. 基礎環境準備 OS版本:centos 7.4 64bit Zabbix版本:3.4

linux CentOS 7虛擬機器(僅主機模式) 安裝編譯Nginx 流程二(安裝編譯環境)

在上一篇進行了網路的配置:linux CentOS 7虛擬機器(僅主機模式) 安裝編譯Nginx 流程一(網路配置) 有了網路就好辦事了,要安裝Nginx就要有安裝包,安裝包可以到官網下載 我用的穩定版本的 nginx-1.14.0.tar.gz 用上傳工具上傳到CentOS上(工具網上

最小化安裝CentOS 7後,圖形介面的安裝(GNOMEKDE等)

安裝圖形化介面: 1、首先安裝X(X Window System),命令為 yum groupinstall "X Window System"  2、檢查一下我們已經安裝的軟體以及可以安裝的軟體,用命令 yum grouplist 3、然後安裝我們需要的圖形介面軟體,如:GNOME(GN

Centos 7核心的修復以及grub的安裝

我們在使用作業系統的過程中可能會遇到核心檔案損壞或者是grub載入程式丟失等問題,下面來講解一下系統核心的修復以及grub的安裝 為了模擬環境這裡直接將/boot目錄刪除然後重啟作業系統,丟失了引導的系統開機自動進入grub救援模式 將系統盤掛載上並設定開機從光碟啟動 進入系統安裝引導初始介面,

CentOs 7.*中配置安裝phpMyAdmin的完整步驟記錄

下載安裝 記得 des ima 源碼包 切換 用戶 ons 安裝包 前言:CentOs安裝配置phpMyAdmin其實非常簡單,所謂的安裝其實是不存在的,因為phpMyAdmin是php寫的嘛,所以只需要下載安裝包然後解壓之後,簡單配置下就可以使用了,下面給他家說下如何正確

鳥哥的Linux私房菜讀書筆記--核心編譯安裝

1、編譯核心與核心模組 [[email protected] linux-3.10.89]# make vmlinux <==未經壓縮的核心 [[email protected] linux-3.10.89]# make modules <

CentOS 7 minimal配置網路連線及net-tools安裝

在Virtual Box中安裝好CentOS 7的minimal後,第一件事就是設定網路訪問。首先需要用 nmtui 命令進入 Network Manager,如下:選擇 Edit a connection 來配置你的網路連線:選擇Edit進入DHCP配置:選擇IPv4 CO