昨天接到同事給安排的新任務,測試系統性能;網上查了些資料,目測perf功能很強大,而且是內核源碼自帶的,編譯安裝即可使用;看了下自己的虛擬機,沒有內核源碼,好吧,裝一個;
查看一下系統版本:
1 #cat /etc/redhat-release 2 CentOS Linux release 7.5.1804 (Core) 3 4 #uname -r 5 3.10.0-862.el7.x86_64
去CentOS官網找對應的內核源碼包,下面地址,進去找到與版本信息對應的源碼目錄,找到內核源碼包,下載即可:
#http://vault.centos.org/
#wget http://vault.centos.org/7.5.1804/os/Source/SPackages/kernel-3.10.0-862.el7.src.rpm
直接使用rpm安裝的話,會提示一個錯誤:
#rpm -i kernel-3.10.0-862.el7.src.rpm Warning: user mockbuild does not exist. using root ...
這時需要安裝一個mock,並新建一個mockbuild用戶:
#yum install mock
#useradd -s /sbin/nologin mockbuild
好了,繼續安裝:
#rpm -i kernel-3.10.0-862.el7.src.rpm
這時回到root根目錄,會有一個rpmbuild目錄,進去該目錄下的SPEC
#cd ~/rpmbuild/SPECS
開始執行rpmbuild:
#rpmbuild -bp --target=$(uname -m) kernel.spec
這時應該會提示一堆錯誤信息,因為需要很多依賴包,安裝之:
#yum install rpm-build redhat-rpm-config asciidoc hmaccalc perl-ExtUtils-Embed pesign xmlto #yum install audit-libs-devel binutils-devel elfutils-devel elfutils-libelf-devel java-devel #yum install ncurses-devel newt-devel numactl-devel pciutils-devel python-devel zlib-devel
再次執行rpmbuild命令,如果還提示有缺少,則對應安裝即可;
接下來的過程很愉快:
#rpmbuild -bp --target=$(uname -m) kernel.spec Building target platforms: x86_64 Building for target x86_64 Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.eM2FKD + umask 022 + cd /root/rpmbuild/BUILD + patch_command='patch -p1 -F1 -s' + cd /root/rpmbuild/BUILD + rm -rf kernel-3.10.0-862.el7 + /usr/bin/mkdir -p kernel-3.10.0-862.el7 + cd kernel-3.10.0-862.el7 + /usr/bin/xz -dc /root/rpmbuild/SOURCES/linux-3.10.0-862.el7.tar.xz + /usr/bin/tar -xf - + STATUS=0 + '[' 0 -ne 0 ']' + /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w . + mv linux-3.10.0-862.el7 linux-3.10.0-862.el7.centos.x86_64 + cd linux-3.10.0-862.el7.centos.x86_64 ... ...
這時,就可以找到源碼包了,在~/rpmbuild/BUILD目錄下:
#cd ~/rpmbuild/BUILD/kernel-3.10.0-862.el7/linux-3.10.0-862.el7.centos.x86_64
參考:CentOS官方說明:
https://wiki.centos.org/zh/HowTos/I_need_the_Kernel_Source