-
下载linux内核:
git clone https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.4.21.tar.gz # 也可以直接到 https://www.kernel.org/ 下载 tar -xvf ./linux-4.4.21.tar.gz -C .
-
配置linux内核
-
自定义内核配置:
make menuconfig
通过按下按键'y','n','m'来设置内核的功能
menuconfig 依赖 Kconfig,Kconfig为其构建菜单目录
如果当前目录没有.config
文件,可以生成新的.config
文件;有的话不会打开原来的.config
文件,除非使用load把原理的.config
加载进来。
可能报错:
错误:fatal error: curses.h: No such file or directory
解决办法:sudo apt-get install libncurses5-dev
-
使用默认配置:
make xxx.config/xxx_defconfig
注意:make 后接的是名字,不是路径
# x86架构的默认配置 root:~/linux-4.4.21$ ls ./arch/x86/configs/ i386_defconfig kvm_guest.config tiny.config x86_64_defconfig xen.config # 不使用 ARCH=xxx 标识架构,使用默认架构下的configs # 如下使用 ./arch/x86/configs/x86_64_defconfig root:~/linux-4.4.21$ make x86_64_defconfig # # configuration written to .config #
-
使用原有config配置
root:~/linux-4.4.21$ cp /boot/config-$(uname -r) ./.config root:~/linux-4.4.21$ make menuconfig # 在弹出界面选择 load -> 选择.config -> exit -> save # 不做这步的话会make的时候会一直提示
- 编译:
make -j8
-
报错:
cc1: error: code model kernel does not support PIC mode
原因:高版本 gcc 自动使用 -fpie 参数
解决:Makefile:KBUILD_CFLAGS 添加 -fno-pie
https://blog.csdn.net/qq_44933518/article/details/105881723
https://blog.csdn.net/qq_27577247/article/details/100152714 -
报错:
scripts/sign-file.c:23:10: fatal error: openssl/opensslv.h: No such file or directory
原因:缺少依赖库
解决:sudo apt-get install libssl-dev
-
报错:
cc1: sorry, unimplemented: ‘-mfentry’ isn’t supported for 32-bit in combination with ‘-fpic’
原因:高版本 gcc 自动使用 -fpic 参数
解决:Makefile:-mfentry 后加 -fno-pic