可恶,这次我一定要编译出Linux内核
前言
博客很久没有更新了,其实也写了很多 IOT 研究的文章,但因为保密不能公开。而本文写的是最近几天在搭建 QEMU 下 ARM Linux 运行环境的过程,这方面网上的文章比较多,没有什么保密性可言。
本文记录了交叉编译 Linux 内核、BusyBox 以及制作虚拟存储介质的过程。旨在根据不同设备的内核版本,搭建出一套匹配内核版本的 QEMU 仿真环境。之前研究几款路由器设备都是 2.6x 版本的 ARM 内核。使用 18.04 上安装的交叉编译工具链去编译的程序,在这种 2.6x 老内核中运行会报错 kernel too old
。如果想编译一套相应的研究工具(如 gdbserver
、ptrace
、ltrace
、小型反弹木马等等)会很麻烦,包括一些测试场景,可能会因为内核版本差异较大,产生一些异常。
因为网上有很多相关文章(大部分都是搞嵌入式的老哥写的),本文只是对自己学习这部分做一个记录和总结,帮助自己之后可以根据不同的研究需求去搭建特定环境。之前搞 IOT 仿真的时候,用的都是这个 编译好的配套环境,看完本文后,应该就能自己搞一套 QEMU 环境了😋。
本文记录了下面部分内容。
- 配置交叉编译环境
- 交叉编译 ARM Linux 4.1x 内核
- 交叉编译 busybox
- 构建磁盘文件镜像
- 将 01-03 的产物成功用 QEMU 运行起虚拟机
- 实现 QEMU 虚拟机的网络通信