linux 内核实战_调试环境搭建

linux 内核实战

我报一个班学习linux内核源码, 经过学习我将知识点整理到了这里:
整理知识点链接1
整理知识点链接2
整理知识点链接3
只能说我学到点表皮, 相信聚沙成塔。 如果你有兴趣学习,我可以为你推荐,老学员推荐新学员会有相应的折扣 加我QQ哈: 852897652.

学习视频链接地址

手动编译Linux内核更新为linux-5.6.14链接

网络查看内核源码

编译内核找不到 linux-headers

# 在新的文件夹下
tar -xvf linux-5.6.14.tar.xz
cd linux-5.6.14/
make  deb-pkg
#安装 
dpkg -i linux-headers-5.6.14_5.6.14-1_amd64.deb

安装前
在这里插入图片描述
安装后
在这里插入图片描述

调试内核

参考链接:

sudo apt-get install qemu-system-aarch64


wget https://buildroot.org/downloads/buildroot-2021.08.tar.bz2
tar xvf buildroot-2021.02.4.tar.bz2
cd buildroot-2021.02.4
make menuconfig

   Target options->AArch64(little endian)
   Target options-> Target Architecture Variant (cortex-A57
   Toolchain->Toolchain type 选择“External toolchain”:
   Toolchain->Toolchain选择"Arm AArch64 2020.11”:
   System configuration-> Enable root login with password, 并且设置root密码,这里设置为"adsf”:
   System configuration-> Run a getty (login prompt) after boot->TTY port设置为"TTYAMA0"。
   Target packages->选择Show packages that are also provided by busybox:
   Target packages-> Debugging, profiling and benchmark可以选择自己感兴趣的工具,这里选择strace:
   Filesystem images选择cpio the root filesystem (for use as an initial RAM filesystem)cd $WORK_DIR/buildroot-2021.08
make 

sudo apt install gcc-aarch64-linux-gnu
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.14.6.tar.xz
tar xvf linux-5.14.6.tar.xz
cd linux-5.14.6.tar.xz
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- defconfig

在产生的linux-5.14.6/.config文件中修改以下三个选项:
	CONFIG_CMDLINE="console=ttyAMA0"
	CONFIG_INITRAMFS_SOURCE="/home/tom/hdd/linux-qemu/repos/buildroot-2021.08/output/images/rootfs.cpio"
	CONFIG_DEBUG_INFO=y
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j4
   在编译的过程中会出现需要用户配置选项的交互输入,则一路默认回车键,直到出现交互输入Built-in initramfs compression mode时,因为我们编译initramfs文件系统时,没有选择压缩模式,所以这里选择8:
   在编译的过程中会出现需要用户配置选项的交互输入,则一路默认回车键,直到出现交互输入Built-in initramfs compression mode时,因为我们编译initramfs文件系统时,没有选择压缩模式,所以这里选择8:
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j4

qemu-system-aarch64 \
-machine virt \
-cpu cortex-a57 \
-machine type=virt \
-nographic -smp 1 \
-m 2048 \
-kernel ./arch/arm64/boot/Image \
--append "console=ttyAMA0"
在这里就执行不起来了, 就没有继续参考了。 



启动不起来。
在这里插入图片描述
问题提出链接

编译模块

在这里插入图片描述
我不知道这个原理,除红框的编译能通过
源码实战链接地址

内存进程

问题解决点:
在这里插入图片描述
将中文路径改为英文路径
在这里插入图片描述

设备驱动文件系统

问题解决点:
在这里插入图片描述

修改前:
在这里插入图片描述

修改后:
在这里插入图片描述

中断网络

问题解决点:
在这里插入图片描述

存放源代码的文件夹的文件名中存在空格,把空格去掉就可以。

mv 第034讲\ 内核Netlink套接字/  netlink
cd netlink/
make

修改前:
在这里插入图片描述

修改后:
在这里插入图片描述

总结

  1. 升级Linux内核header
  2. 实战里面的实现逻辑我真的不会啊,我只是负责整理,后面再学习。
  3. 本想把这个实战分类到上面各标题处,后面补上。
  4. 红框还有编译错误,最近解决掉。
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值