有没有办法找到特定 Raspberry Pi 内核的确切源代码树

Is there a way to find out the exact source tree for specific Raspberry Pi kernel

我正在尝试在我的树莓派上编译一个内核模块,但在尝试加载已编译的模块时我一直收到 'disagrees about version of symbol module_layout'。

我想避免编译整个内核,所以我正在做的是在这里使用 Raspberry pi 基金会制作的 img (http://downloads.raspberrypi.org/raspbian_latest), then trying to install the kernel source from https://github.com/raspberrypi/linux and the Module.symvers from https://github.com/raspberrypi/firmware/blob/master/extra/Module.symvers

我认为问题是我没有找到内核源代码和 Module.symvers 的组合来匹配上一个 RPi 图像上的内容。我希望 github 回购被标记,但它没有。

有没有办法知道 branch/commit 用于为 Rpi 版本创建最新的 raspbian?

原来是多看了几个论坛,终于找到答案了。这是:

  1. 找出用于在 Rpi 上创建映像的固件提交 运行:

    zgrep "* firmware as of" /usr/share/doc/raspberrypi-bootloader/changelog.Debian.gz | head -1 | awk '{ print  }'

  1. 列表项

通过查看 https://github.com/raspberrypi/firmware/blob/firmware_commit 的内容找出用于创建固件的 linux 源提交/extra/git_hash

3. 在 raspberry pi:

上安装 Linux 源

    cd /usr/src/
    sudo wget https://github.com/raspberrypi/linux/archive/source_commit.tar.gz
    sudo gunzip source_commit.tar.gz
    sudo tar -xvf source_commit.tar
    sudo mv linux-source_commit linux
    sudo ln -s linux linux-headers-3.18.5+ (user your kernel version instead of 3.18.5+)
    sudo ln -s linux /lib/modules/3.18.5+/build

这有点不相关,但如果您想编译内核模块而不必编译整个内核,这仍然很有用:

    cd /lib/modules/3.18.5+/build
    sudo make mrproper
    sudo sh -c 'zcat /proc/config.gz  > .config'
    sudo wget https://github.com/raspberrypi/firmware/raw//extra/Module.symvers
    sudo make modules_prepare

之后你应该可以编译你的模块了。