Linux最新的稳定编译:无法表示对vmlinux-gdb.py的更改:

时间:2019-05-15 12:17:43

标签: git compilation linux-kernel

问题:

  • 距今已有20年了:
    • 我上次写了> 1K的C代码
    • 编译了超过1万条源代码行
  • 我目前的Distro对0cf3:e300 Atheros Communications, Inc. WiFi驱动程序的支持(Ubuntu 16.04)非常糟糕:我得到的最好的是8-12Mbps。

我对内核版本优先级的了解:

  1. 使用您自己的发行版内核(不可能:太慢了)
  2. 使用最新的stable kernel
  3. 使用最新的LTS内核

我尝试过的事情:

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

这给了我以下错误:

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

在以下完整输出中:

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

所以我最终做了:

git checkout -b v4.19.38 v4.19.38

可以提供高达10MB / S的速度,而不是我发行版标准内核的12Mbps,效果很好,但是如果要保持WiFi驱动程序的全速运行,我需要每24小时重新启动一次计算机。< / em>

问题:

我注定要停留在4.19.38吗?
是否有办法使4.19.39-5.12版本永久工作?

3 个答案:

答案 0 :(得分:2)

只需删除指向vmlinux-pdb.py的{​​{1}}符号链接,就可以解决我的问题。

因此在内核源代码的根目录中

scripts/gdb/vmlinux-gdb.py

另请参见https://www.spinics.net/lists/linux-kbuild/msg18761.html

答案 1 :(得分:1)

您可以简单地从先前的内核和带有-f参数的force it into the new kernel中提取预编译的驱动程序。您只会在journalctl中收到“污点内核”消息,但可以忽略它。

只要ABI保持不变,您就应该可以参加。

答案 2 :(得分:0)

尝试从ubuntu git repo进行构建时遇到了这个问题。

scripts/gdb/vmlinux-gdb.py 

是先前版本遗留的文件的症状。即使您摆脱了它,也可能会遇到更多错误(接下来我必须删除linux源tarball)。

git status

查看许多未跟踪的文件。摆脱它们是目标。

打个mol鼠游戏,而不是一个个地查找文件,更容易

  • 提供所需的一切

  • 删除git无法跟踪的文件

这样做

git clean -r

并在源代码树的顶部执行此操作。

然后尝试编译