Fabby
La cuestión:
- Han pasado 20 años desde:
- La última vez que escribí > 1K de código C
- compilado cualquier cosa> 10K líneas fuente
- El soporte de mi Distro actual (Ubuntu 16.04) para un
0cf3:e300 Atheros Communications, Inc.
El controlador WiFi es pésimo: 8-12 Mbps es lo mejor que obtengo.
Lo que sé sobre las prioridades de la versión del kernel:
- Use el kernel de su propia distribución (fuera de discusión: demasiado lento)
- Usa lo último kernel estable
- Usa el kernel LTS más reciente
Lo que he probado:
git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
git checkout -b stable v5.1.2
cp /boot/config-`uname -r` .config
yes '' | make oldconfig
make -j `getconf _NPROCESSORS_ONLN\' deb-pkg LOCALVERSION=-fab
Lo cual me da el siguiente error:
dpkg-source: error: cannot represent change to vmlinux-gdb.py:
dpkg-source: error: new version is symlink to /home/fab-user/Documents/Source/linux/scripts/gdb/vmlinux-gdb.py
dpkg-source: error: old version is nonexistent
en la siguiente salida completa:
make -j `getconf _NPROCESSORS_ONLN` deb-pkg LOCALVERSION=-fab
HOSTCC scripts/basic/fixdep
HOSTCC scripts/kconfig/conf.o
HOSTCC scripts/kconfig/confdata.o
HOSTCC scripts/kconfig/expr.o
LEX scripts/kconfig/lexer.lex.c
YACC scripts/kconfig/parser.tab.h
YACC scripts/kconfig/parser.tab.c
HOSTCC scripts/kconfig/preprocess.o
HOSTCC scripts/kconfig/symbol.o
HOSTCC scripts/kconfig/lexer.lex.o
HOSTCC scripts/kconfig/parser.tab.o
HOSTLD scripts/kconfig/conf
scripts/kconfig/conf --syncconfig Kconfig
UPD include/config/kernel.release
make clean
/bin/bash ./scripts/package/mkdebian
TAR linux-5.1.2-fab.tar.gz
origversion=$(dpkg-parsechangelog -SVersion |sed 's/-[^-]*$//');\
mv linux-5.1.2-fab.tar.gz ../linux-5.1.2-fab_${origversion}.orig.tar.gz
dpkg-buildpackage -r"fakeroot -u" -a$(cat debian/arch) -i.git -us -uc
dpkg-buildpackage: source package linux-5.1.2-fab
dpkg-buildpackage: source version 5.1.2-fab-1
dpkg-buildpackage: source distribution xenial
dpkg-buildpackage: source changed by fab-user <fab-user@fab-ux-predator>
dpkg-buildpackage: host architecture amd64
dpkg-source -i.git --before-build linux
fakeroot -u debian/rules clean
rm -rf debian/*tmp debian/files
make clean
dpkg-source -i.git -b linux
dpkg-source: info: using source format '1.0'
dpkg-source: warning: source directory 'linux' is not <sourcepackage>-<upstreamversion> 'linux-5.1.2-fab-5.1.2-fab'
dpkg-source: warning: .orig directory name linux.orig is not <package>-<upstreamversion> (wanted linux-5.1.2-fab-5.1.2-fab.orig)
dpkg-source: info: building linux-5.1.2-fab using existing linux-5.1.2-fab_5.1.2-fab.orig.tar.gz
dpkg-source: info: building linux-5.1.2-fab in linux-5.1.2-fab_5.1.2-fab-1.diff.gz
dpkg-source: error: cannot represent change to vmlinux-gdb.py:
dpkg-source: error: new version is symlink to /home/fab-user/Documents/Source/linux/scripts/gdb/vmlinux-gdb.py
dpkg-source: error: old version is nonexistent
dpkg-source: warning: ignoring deletion of file .scmversion, use --include-removal to override
dpkg-source: error: cannot represent change to linux-5.1.1-fab.tar.gz: binary file contents changed
dpkg-source: warning: the diff modifies the following upstream files:
.clang-format
.cocciconfig
.config.old
.get_maintainer.ignore
.mailmap
.version
CREDITS
LICENSES/exceptions/GCC-exception-2.0
LICENSES/exceptions/Linux-syscall-note
LICENSES/other/Apache-2.0
LICENSES/other/CDDL-1.0
LICENSES/other/GPL-1.0
LICENSES/other/ISC
LICENSES/other/Linux-OpenIB
LICENSES/other/MPL-1.1
LICENSES/other/X11
LICENSES/preferred/BSD-2-Clause
LICENSES/preferred/BSD-3-Clause
LICENSES/preferred/BSD-3-Clause-Clear
LICENSES/preferred/GPL-2.0
LICENSES/preferred/LGPL-2.0
LICENSES/preferred/LGPL-2.1
LICENSES/preferred/MIT
MAINTAINERS
Module.symvers
README
dpkg-source: info: use the '3.0 (quilt)' format to have separate and documented changes to upstream files, see dpkg-source(1)
dpkg-source: error: unrepresentable changes to source
dpkg-buildpackage: error: dpkg-source -i.git -b linux gave error exit status 1
scripts/package/Makefile:70: recipe for target 'deb-pkg' failed
make[1]: *** [deb-pkg] Error 1
Makefile:1396: recipe for target 'deb-pkg' failed
make: *** [deb-pkg] Error 2
así que terminé haciendo:
git checkout -b v4.19.38 v4.19.38
lo que me da hasta 10 MB/S en lugar de los 12 Mbps del kernel estándar de mi distribución, y funciona muy bien, pero necesito reiniciar mi máquina cada 24 horas si quiero mantener la velocidad máxima del controlador WiFi.
La pregunta:
¿Estoy condenado a quedarme el 4.19.38?
¿Hay alguna manera de hacer que las versiones 4.19.39-5.12 funcionen de forma permanente?
Simplemente eliminando el vmlinux-pdb.py
enlace simbólico a scripts/gdb/vmlinux-gdb.py
resolvió el problema para mí.
Entonces, en el directorio raíz de las fuentes del kernel, haga
$ rm vmlinux-gdb.py
Ver también https://www.spinics.net/lists/linux-kbuild/msg18761.html
-
Me tomó un tiempo probarlo: voté a favor el día que publicaste y acepté ahora… 0:-)
– fabby
2 de noviembre de 2019 a las 10:07
-
Esta respuesta no funcionó para mí, pero la respuesta de @Tim Richardson parece ser correcta: el problema está relacionado con un problema de repositorio sucio. En este caso, eliminar el script podría ayudar, pero no siempre. Es mejor asegurarse de que el repositorio de git esté “limpio”.
– djonda
2 de febrero de 2021 a las 18:53
tim richardson
Me encontré con este problema al intentar compilar desde el repositorio de git de ubuntu.
scripts/gdb/vmlinux-gdb.py
es un síntoma de que quedan archivos de una compilación anterior. Incluso después de deshacerse de él, es posible que se encuentre con más errores (tuve que eliminar el tarball de origen de Linux a continuación).
hacer
git status
para ver una serie de archivos sin seguimiento. Deshacerse de ellos es el objetivo.
En lugar de buscar los archivos uno por uno, un juego de golpear un topo, más fácil es
-
Comprométete con todo lo que necesites
-
eliminar archivos que no son rastreados por git
haciendo
git clean -r
y ejecute esto en la parte superior del árbol de fuentes.
entonces intenta compilar
Simplemente puede tomar el controlador precompilado del núcleo anterior y forzarlo en el nuevo kernel con -f
parámetro. Simplemente obtendrá un mensaje de “núcleo corrupto” en journalctl
pero puedes ignorarlo.
Siempre y cuando el ITB no cambia usted debe ser bueno para ir.
-
@Fabby ¡Estoy de acuerdo en que es una solución más elegante!
– WinEunuuchs2Unix
2 de noviembre de 2019 a las 16:35
Me encontré con este problema al intentar compilar desde el repositorio de git de ubuntu.
scripts/gdb/vmlinux-gdb.py
Como dijo correctamente @Tim Richardson, es un síntoma de que quedan archivos de una compilación anterior. Sin embargo, no existe la opción “-r” para “git clean”.
git clean -f
trabajó para mi