每次有开始玩内核的想法,总是因为各种花哨的借口而放弃,所以我准备一点一点记录一下学习内核的过程,把遇到的问题分享给大家。
如果你也想戒掉的话! 欢迎私信我编译linux内核源码多久,一起玩转内核吧!
为了避免出错,我从最初的虚拟机开始部署,使用的是Linux Ubuntu20.04.2(最新公布~~~)。 但显然这并不妨碍我们。 我们一般可以在任何Linux系统上解决从0到1的内核编译问题。
打开整个下载内核源码安装依赖解压源码配置内核编译安装启用内核指导Let'sDoIt下载内核源码
内核源码下载条传送门: [kernel.org](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/refs/).
命令行下载:
wget...*.tar.gz
( *** 代表的是你抉择Linux的版本号)
正版虽然好,但是国外的下载速度确实慢。 如果换成北大的源,速度会快很多!
vim 打开软件源,备份原始文件,然后使用 TUNA 的软件源映像替换该文件及其内容。
# 默认正文了源码镜像以进步 apt update 速度,如有须要可自行勾销正文
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
设备依赖性
当您拥有内核压缩包后,请将其视为一个软件。 如果您希望该软件在您的计算机上运行,请首先安装依赖项。
所需的依赖命令:
sudoapt-getinstallgitfakerootbuild-essentialncurses-devxz-utilslibssl-devbcflexlibelf-devbison
解压源码
解压内核源码包
按照我的版本解压! ! !
tarxvzflinux-*.tar.gz
配置内核
强调
解压后,进入解压后的文件cdlinux-*
为了防止配置过程中出现错误,请务必先备份 .config 配置文件。
cp/boot/config-$(uname-r).config
就是这样,您可以在 .config 上执行 Doityouwanttodo!
当您使用目标配置内核时,删除和启用内核中的性能是您的外设要求之一,因此使用配置工具 menuconfig 通过复制配置文件来直观地选择您的修改。
(如果你刚刚开始,我给你的建议是看看你的选项并默认退出。这一步不能省略!!!)
shell下的menuconfig配置。
命令行
最后,记得退出! ! ! 退出并寻找退出选项!
编译并安装
编译内核的命令非常短。 当您在命令行中键入 make 时编译linux内核源码多久,它就会开始编译内核。
但这太慢了。 如果想提高速度,多线程编译肯定会提高编译效率。
制作-j8
编译完成后,你不仅会发现很多二进制补码.o文件,而且还有两个特别值得关注的文件。
./vmLinux
gdb调试需要vmLinux,bzImage是一个大的内核文件镜像。
这对内核编译没有帮助,仅在调试内核时有用。
但编译过程并不是一帆风顺的,你可能会遇到一些问题。
一路上我遇到的事:
执行Makefile时发生错误:make:*Noruletomaketarget`',neededbyxxx.Stop。
这说明编译过程中makefile找不到相关文件。
如果遇到这个问题,也可以直接打开.config配置文件。 是的,就是下面你复制的那个! 找到关联的指定依赖,然后无情删除。 因为配置过程中makefile找不到相关文件,就让它消失吧。
我遇到的情况是:
CONFIG_SYSTEM_TRUSTED_KEYS=”certs/rhel.pem”
分期:wilc1000:removewilc1000_spi_opsasitisnotused
这个问题会导致错误!
既然过不了,我就只能含着泪自杀了。
求源码,这是我的错误代码文件。
/drivers/staging/wilc1000/wilc_spi.c
找到文件、文本~或者删除~
//静态conststructwilc1000_opswilc1000_spi_ops;
常规的内核编译主要是为了安装系统而完成的。 就这样,继续对编译好的系统进行分支。
命令行
makemodules_安装
进行安装
内核编译整体还是比较顺利的,虽然并不简单。 感谢内核开发人员帮助简化了内核编译,源代码安装也很有趣。
【腾讯云】轻薄2核2G4M,首年65元