如何定制 Linux 内核:修改 CONFIG_STRICT_DEVMEM

如何定制 Linux 内核:修改 CONFIG_STRICT_DEVMEM

我想设置CONFIG_STRICT_DEVMEM=n并重新编译我的内核,以尝试@Oliv 在评论中所建议的我在 stackoverflow 上的问题

我正在关注构建自己的内核ubuntu wiki 上的教程:

$ git clone git://kernel.ubuntu.com/ubuntu/ubuntu-bionic.git
$ cd ubuntu-bionic/
$ chmod a+x debian/rules
$ chmod a+x debian/scripts/*
$ chmod a+x debian/scripts/misc/*
$ fakeroot debian/rules clean
$ sudo fakeroot debian/rules editconfigs
dh_testdir;
/bin/bash -e debian/scripts/misc/kernelconfig editconfigs
Do you want to edit config: amd64/config.flavour.generic? [Y/n] Y

我面对的是以下菜单: 在此处输入图片描述

我到处搜索,希望找到我需要更改的变量(CONFIG_STRICT_DEVMEM),但我没有找到。

我在互联网上找到的大多数资源都详细说明了如何编译/构建内核,但我没有找到任何关于实际进行具体更改的内容。

有人可以给我指明正确的方向吗?

编辑1:

一份文件:

./build/.config

sudo fakeroot debian/rules editconfigs中止时创建。

$ cat ./build/.config | grep CONFIG_STRICT_DEVMEM

返回

CONFIG_STRICT_DEVMEM=y
CONFIG_STRICT_DEVMEM=y

我将这些变量设置为 n 并运行

fakeroot debian/rules binary-headers binary-generic binary-perarch

最终出现错误:

/bin/bash: gawk: command not found
debian/rules.d/2-binary-arch.mk:123: recipe for target 'install-generic' failed
make: *** [install-generic] Error 127

编辑2:

现在我正在关注不同的教程和@Oliv 的建议:

  • 我安装了gawk
  • 我运行后在 git 仓库的根目录make menuconfig生成了一个名为 的文件。.config
  • 我设定CONFIG_STRICT_DEVMEM=y=n
  • make menuconfig又跑了。
  • cat .config | grep CONFIG_STRICT_DEVMEM返回# CONFIG_STRICT_DEVMEM is not set
  • 现在我以 root 身份运行make && make modules_install && make install

我会报告任何进一步的进展...

答案1

好的,成功了。

对于想要修改内核的人来说,这是一个通用的“秘诀”

  • 使用ll /proc/ | grep confll /boot/ | grep conf找到您的配置文件。

  • 检查感兴趣的变量是如何配置的,path_to_config | grep variable_of_interest或者根据需要解压缩它:path_to_config.gz | gunzip | grep variable_of_interest

如果您想更改其中一个变量的值,您需要执行以下操作:

  • 克隆包含你的内核的 git 存储库。我使用了:

    git clone git://kernel.ubuntu.com/ubuntu/ubuntu-bionic.git

    替换bionic为您的操作系统的代码名称。

  • 安装软件:

    sudo apt-get build-dep linux-image-$(uname -r) && sudo apt-get install gawk

  • cd ubuntu-bionic/再次用你的操作系统的代号替换bionic。

  • 使以下文件可执行:

    chmod a+x debian/rules chmod a+x debian/scripts/* chmod a+x debian/scripts/misc/*

  • 跑步fakeroot debian/rules clean

  • 将当前配置复制到 git 存储库的根目录中:

    cp path_to_config ./.config

  • .config根据您的需要进行配置。我建议设置CONFIG_DEBUG_INFO=nCONFIG_DEBUG_INFO_DWARF4=n以减少编译时间并避免在编译过程中占用太多磁盘空间。

  • 跑步:

    sudo su make menuconfig make && make modules_install && make install

现在请耐心等待...

就我而言,path_to_config | grep variable_of_interest完成上述步骤后仍然返回旧配置,但内核已做出更改并且按要求工作。

相关内容