![Al compilar el kernel desde el código fuente se produjo un error fatal: muy pocos argumentos para funcionar 'part_round_stats'](https://rvso.com/image/178475/Al%20compilar%20el%20kernel%20desde%20el%20c%C3%B3digo%20fuente%20se%20produjo%20un%20error%20fatal%3A%20muy%20pocos%20argumentos%20para%20funcionar%20'part_round_stats'.png)
Estoy intentando compilar el kernel desde el código fuente en el sistema CentOS 7.
La salida de uname -a
es:
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
Así es como descargo el código fuente y lo 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 puede ver, intenté compilar el kernel con el módulo BCACHE. Sin embargo, cuando ejecuté los comandos anteriores, recibí el siguiente error:
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 recibí una advertencia y un error.
Creo que puedo ignorar la advertencia pero el error es fatal. En el encabezado, part_round_stats
se declara que la función necesita tres parámetros, mientras que en el archivo drivers/md/bcache/request.c
solo se pasan dos parámetros a la función part_round_stats
.
Intenté buscar en Google este problema pero no obtuve nada.
Entonces, ¿qué tipo de problema tuve aquí? ¿Es este el error que proviene del código fuente de Linux? (No lo creo...), ¿o es algún tipo de problema de las versiones? ¿O el código fuente descargado no es compatible con el módulo BCACHE y el desarrollador del kernel dejó un error fatal?
Respuesta1
Pruebe esto en su lugar:
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