kernel

1.下载内核并解压到 /usr/src 目录下

在终端执行以下命令即可下载 4.16.14版本(目前最新的稳定版)的内核到当前shell打开的目录下

wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.16.14.tar.xz  

解压下载的内核文件 linux-4.16.14.tar.xz

xz -d linux-4.16.14.tar.xz   将 linux-4.16.14.tar.xz  文件解压成 linux-4.16.14.tar 压缩文件
sudo tar -xvf linux-4.16.14.tar  -C /usr/src  将 linux-4.16.14.tar 解压到 /usr/src 目录下

2.编译内核可能用到的依赖库安装

	
sudo apt-get install libncurses5-dev libssl-dev 

sudo apt-get install build-essential openssl 


sudo apt-get install bison

sudo apt-get install flex



sudo apt-get install zlibc minizip sudo apt-get install libidn11-dev libidn11

3.配置内核编译参数

cd /usr/src/linux-4.16.14  切换到刚才我们解压的内核源代码目录下

make mrproper   清除编译过程产生的中间文件,就是将内核代码还原为刚解压的状态,最好每次编译前执行一下。

make clean      清除上次编译产生的中间文件,最好每次编译前执行一下。

make menuconfig 配置编译参数,编译的内核模块选择,内核剪裁需要重点研究的部分。 https://blog.csdn.net/xiaoyu1233/article/details/79850289






qemu - gdb
https://blog.csdn.net/zhaojia92/article/details/87533596


 生成kernel编译配置文件.config

(1).关闭kernel地址随机化

       kernel地址随机化会导致gdb设置的断点无法命中,调试无法进行,必须关闭该特性。Linux kernel 4默认打开该特性。有两种方法可以关闭该特性:

            方法1. 直接在menuconfig界面关闭

            进入Processor type and features-->Randomize the address of the kernel image(KASLR),去掉勾选。

 

 

              方法2. 修改Kconfig文件关闭

              找到kernel源码的arch/x86/Kconfig文件,修改如下设置并保存:

 

(2).打开debug info信息

进入kernel源码路径,Bash Shell内输入make menuconfig打开图形配置界面,打开debug info信息。依次按下图操作:

 

 

 

勾选上述划红线部分,save保存后生成.config文件。最后检查一下生成的.config文件是否开启kernel地址随机化,打开.config文件,搜索X86_NEED_RELOCS字符串,发现不存在,证明关闭kernel地址随机化成功。

4. 编译kernel源码

进入eclipse工程内,按下快捷键Ctrl+B开始编译,可见下方Console对话框出现编译信息。经过漫长的等待直至编译完成。

编译完成后,在kernel源码路径下会生成vmlinux大文件,在arch/x86/boot路径下生成bzImage文件。后续调试便使用这两个文件。bzImage为vmlinux的封装和压缩,可以被引导执行。

 




posted @ 2021-04-04 11:30  zJanly  阅读(427)  评论(0编辑  收藏  举报