Estou tentando compilar o kernel do código-fonte no sistema CentOS 7.
A saída de uname -a
é:
Linux dbn03 3.10.0-957.el7.x86_64 #1 SMP Thu Oct 4 20:48:51 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
Veja como faço o download do código-fonte e o compilo:
wget "http://vault.centos.org/7.6.1810/os/Source/SPackages/kernel-3.10.0-957.el7.src.rpm"
rpm2cpio ./kernel-3.10.0-957.el7.src.rpm | cpio -idmv
make menuconfig
Device Drivers
->Multiple devices driver support (RAID and LVM)
-><*> Block device as cache
make bzImage
make modules
Como você pode ver, tentei compilar o kernel com o módulo BCACHE. Porém, ao executar os comandos acima, recebi o erro abaixo:
drivers/md/bcache/request.c:675:3: warning: passing argument 2 of ‘part_round_stats’ makes integer from pointer without a cast [enabled by default]
part_round_stats(cpu, &s->d->disk->part0);
^
In file included from include/linux/blkdev.h:9:0,
from include/linux/blktrace_api.h:4,
from drivers/md/bcache/bcache.h:181,
from drivers/md/bcache/request.c:9:
include/linux/genhd.h:408:13: note: expected ‘int’ but argument is of type ‘struct hd_struct *’
extern void part_round_stats(struct request_queue *q, int cpu, struct hd_struct *part);
^
drivers/md/bcache/request.c:675:3: error: too few arguments to function ‘part_round_stats’
part_round_stats(cpu, &s->d->disk->part0);
^
In file included from include/linux/blkdev.h:9:0,
from include/linux/blktrace_api.h:4,
from drivers/md/bcache/bcache.h:181,
from drivers/md/bcache/request.c:9:
include/linux/genhd.h:408:13: note: declared here
extern void part_round_stats(struct request_queue *q, int cpu, struct hd_struct *part);
Parece que recebi um aviso e um erro.
Acho que posso ignorar o aviso, mas o erro é fatal. No cabeçalho, a função part_round_stats
é declarada que três parâmetros são necessários, enquanto no arquivo drivers/md/bcache/request.c
, apenas dois parâmetros são passados para a função part_round_stats
.
Tentei pesquisar esse problema no Google, mas não consegui nada.
Então, que tipo de problema eu encontrei aqui? Este é o erro que vem do código fonte do Linux? (acho que não...), ou isso é algum tipo de problema de versões? ou o código fonte baixado não suporta o módulo BCACHE e o desenvolvedor do kernel deixou um erro fatal?
Responder1
Em vez disso, tente isto:
rpm -ivh kernel-3.10.0-957.el7.src.rpm
cd ~/rpmbuild/SOURCES
rpmbuild -bp kernel.spec
cd ~/rpmbuild/BUILD/kernel-3.10.0-957.el7/linux-3.10.0-957.fc32.x86_64
make menuconfig
make bzImage
make modules