CentOS7 編譯內(nèi)核支持nbd

先升級一下kernel及安裝kernel-devel,保持他們倆的統(tǒng)一
yum install kernel kernel-devel

參看當(dāng)前內(nèi)核版本
[root@localhost kernels]# uname -r
3.10.0-1127.13.1.el7.x86_64

然后找對應(yīng)的kernel源碼包。一般yum都是升級到最新的,因此到 http://vault.centos.org/ 的整個7系列的最新版本目錄下去找。我這個內(nèi)核對應(yīng)的源碼包是
http://vault.centos.org/7.8.2003/updates/Source/SPackages/kernel-3.10.0-1127.13.1.el7.src.rpm

然后安裝解壓這個源碼
rpm -ivh kernel-3.10.0-1127.13.1.el7.src.rpm
cd ~/rpmbuild/SOURCES/
tar Jxf linux-3.10.0-1127.13.1.el7.tar.xz -C /usr/src/kernels/

[root@localhost SOURCES]# cd /usr/src/kernels/
[root@localhost kernels]# ll
total 8
drwxr-xr-x. 22 root root 4096 Jul 18 20:00 3.10.0-1127.13.1.el7.x86_64
drwxrwxr-x. 23 root root 4096 Jun 13 02:09 linux-3.10.0-1127.13.1.el7
可以看到有2個目錄了,3.10.0-1127.13.1.el7.x86_64是kernel-devel安裝的,另一個是我們源碼解壓縮的

接著就是按部就班的編譯過程

mv $(uname -r) $(uname -r)-old
mv linux-3.10.0-1127.13.1.el7/ $(uname -r)
cd $(uname -r)
make mrproper
cp ../$(uname -r)-old/Module.symvers ./
cp /boot/config-$(uname -r) ./.config
make oldconfig
make prepare
make scripts
vi drivers/block/nbd.c

sreq.cmd_type = REQ_TYPE_SPECIAL;
改為
sreq.cmd_type = 7;

make CONFIG_BLK_DEV_NBD=m M=drivers/block CONFIG_STACK_VALIDATION=
cp drivers/block/nbd.ko /lib/modules/$(uname -r)/kernel/drivers/block/
depmod

PS:
網(wǎng)上說的步驟 make CONFIG_BLK_DEV_NBD=m M=drivers/block 會報錯
make[1]: *** No rule to make target tools/objtool/objtool', needed bydrivers/block/floppy.o'. Stop.
加入CONFIG_STACK_VALIDATION可破

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容