Linux内核镜像bzImage和rootfs的制作、安装及调试过程

一个最小可运行linux操作系统需要内核镜像bzimage和rootfs,本文整理了其制作、安装过程,调试命令,以及如何添加共享磁盘。
编译内核源码
从 the linux kernel archives   网站下载内核源码,本文下载的版本为4.14.191,4.14.191源码下载。
使用wget获取源码。
wget  https://mirrors.edge.kernel.org/pub/linux/kernel/v4.x/linux-4.14.191.tar.gz
解压源码:
tar -xvf linux-4.14.191.tar.gz
解压后进入源码根目录linux-4.14.191,指定编译的架构,依次执行下面的命令,打开配置菜单。
在配置菜单中,启用内核debug,关闭地址随机化,不然断点处无法停止。
开始编译内核,-j 指定并行编译作业数。最终生成linux-4.14.191/arch/x86_64/boot/bzimage文件。
内核编译完成。
配置busybox
启动内核还需要一个具有根文件系统的磁盘镜像文件,根文件系统中提供可供交互的shell程序以及一些常用工具命令。
我们借助busybox工具来制作根文件系统。
本文使用1.32.0版本,下载busybox。
解压:
tar -jxvf busybox-1.32.0.tar.bz2
进入busybox根目录,配置编译选项。
把busybox配置为静态编译。
配置如下图所示。
制作rootfs
接下来制作rootfs镜像文件,并把busybox安装到其中。
使用dd命令创建文件,并格式化为ext4文件系统。
创建用于挂载该镜像文件的目录fs,挂载后才能往里面写入busybox。
使用mount命令将rootfs.img挂载到fs目录,编译busybox并写入fs目录中。
接下来对写入的busybox进行补充配置。
制作完成的rootfs目录如下:
最后,卸载rootfs.img
至此,一个带有rootfs的磁盘镜像制作完成。
启动qemu
使用如下命令启动无gui的qemu,参数含义如下:
-kernel # 指定编译好的内核镜像
-hda  # 指定硬盘
-append root=/dev/sda 指示根文件系统 console=ttys0  把qemu的输入输出定向到当前终端上
-nographic 不使用图形输出窗口
-s 是-gdb tcp::1234缩写,监听1234端口,在gdb中可以通过target remote localhost:1234连接
启动后如下图:
ctrl+a 松开后按 x 退出qemu。
内核函数调试
启动命令中添加-s参数与-s参数启动qemu。
启动gdb远程调试。vmlinux文件在编译后的内核源码根目录下。
在new_sync_read函数添加断点,continue。
在系统中执行ls命令,触发new_sync_read函数,
至此,完成了qemu环境下使用gdb进行内核函数的调试。
添加共享磁盘
有时候需要在宿主机和qemu虚拟机之间共享文件,添加一个共享磁盘将有助于该项工作。
创建64mb磁盘镜像文件,并格式化为ext4,作为共享磁盘备用。
修改qemu启动命令,使用-hdb增加一个磁盘。
进入qemu系统后使用mount命令挂载sdb到mnt目录。
在原系统中挂载ext4.img,实现qemu与原系统的文件共享。
至此,可以在宿主机器share目录下,与qemu中的虚拟机器进行文件共享。

天邦达漠河极寒环境测试一次通过
超薄二维材料非线性量子光源介绍
外夹式超声波流量计的选型及应用特点
MYL2型防雷用氧化锌压敏电阻
当智能家居遇上车联网:两者结合将成趋势
Linux内核镜像bzImage和rootfs的制作、安装及调试过程
示波器频域分析在电源调试中的应用
魅族将于13号解答OMA技术,或将在魅族17上进行首发
芯片制造全过程详解
关于智能互联网的核心价值
惠普最新二合一笔记本来袭:Elite配置外观大升级!
PCB板的行业需求有哪些 高频、高速PCB板设计技巧
中国将成为OCP进展速度最快和规模最大的市场
共模电感绕法对比
电源基础知识 开关电源中的变压器
一次消谐器和微机消谐装置二者如何进行选择
联通电信加速4G建网 全力追赶中国移动
埃赋隆半导体推出新款BLF989射频(RF)功率电晶体 助力UHF广播应用设计
全球十大未来太空技术介绍和分析:激光动力、太阳能推进
张海懿:未来数据中心流量将会成为骨干传送网的主要流量