一文了解riscv软件系列之linux内核编译运行

本文详细介绍了如何在RISC-V体系结构下组织和运行内核Linux,包括工具链交叉补偿的安装和配置,Linux内核布置以及根文件系统的生产以及使用QEMU模拟器。
首先,您需要安装工具链交叉补偿,可以通过源代码组织它,或使用Sifive提供的预译本。
安装工具链后,在配置Linux内核时,请选择RISCV6 4 -BIT系统配置,并在安排时确定Cross_compile变量。
接下来,创建一个root Busybox文件系统,静态链接到可以实现的文件,然后运行通过QEMU模拟器安排的Linux内核。
最后,通过Windows或Linux QEMU版本成功模拟了Linux系统的操作。
整个过程包括内核配置,编译,文件系统构建和虚拟机启动,并在RISC-V体系结构下实现了内核Linux的完整操作。

Linux 内核学习1. 编译并启动一个最小化系统

组织和启动最小化的Linux系统的步骤如下:提供一个编译环境:确保系统使用所需的汇编工具和依赖性(例如GCC,制造等)安装该系统。
获取内核资源代码:从官方Linux网站下载最新版本或内核源代码。
配置内核:使用MakedefConfig的订单应用默认配置以快速生成基本的内核配置文件。
根据需要,可以通过makemenuconfig和其他说明进行进一步调整配置,以最大程度地减少系统,例如禁用不必要的设备驱动程序,文件系统等。
汇编结果通常存储在门//boot/Directory中,例如Gates/x8 6 /boot/bzimage。
准备Busybox:下载并组织Busybox,以提供完全涂料且功能性的用户空间环境。
修改BusyBox配置文件,并确保将config_static选项设置为y,以生成静态相关的二进制文件。
对指定目录进行排序并安装BusyBox。
创建根文件系统:创建目录结构作为根文件系统。
将Busybox生成的二进制文件复制到与根文件系统匹配的目录。
创建一个启动脚本,该脚本负责执行启动任务,例如安装文件系统,启动shell等。
提供所需的设备节点和配置文件。
根文件系统包装:根文件系统包装到特定格式,以便在开始时加载。
设置引导加载程序:选择并配置引导加载程序。
建立启动文件,确定内核图像的位置和根文件系统。
创建并启动虚拟机:使用虚拟机软件创建新的虚拟机。
将引导程序和内核图像加载到虚拟机中。
配置虚拟机以从指定的引导设备启动。
启动虚拟机,并观察最小化Linux系统的启动过程。
注意:上面的步骤包括各种复杂的操作和技术细节,并且可能需要根据实际操作中的某些情况进行调整和优化。

linux内核-2-linux内核makefile编译过程

Linux内核MakeFile汇编过程如下:默认目标:执行制作或鲭鱼时,VMLinux将首先进行编译。
vmlinux汇编依赖性:vmlinux编译脚本/linkvmlinux.sh脚本。
该脚本链接$ $ $,包括Head,Inity/Drivers,Netty,Libsi和Corey等组件。
Heady:不依赖MMU的建筑汇编目标。
环境/驱动程序和Natti:顶级制造件中的模块。
libsy:库文件包含在ARC/ARM/LIB目录下。
科里:根据配置项目,可以包括与VFP相关的模块。
链接过程:使用linkvmlinux.sh脚本链接,并调用IF_CHANGED函数以进行有条件的决策和链接操作。
Zimage汇编:执行MakeZimage将形成VMLinux并产生进一步的Zimage。
Zimage是Vmlinux的Gzip-Narrow版本。
图像和Zimage之间的差异是图像不被压缩,而压缩后Zimage则很小。
其他图片:Uimage:旧版本的Uboot的专用图像,很少使用。
Zimage在新版本的Uboot中得到了广泛支持。
键文件:脚本/makefile.build文件编译定义了诸如编译基础目标和模块以及如何生成Zimage之类的规则。
整个汇编过程包括编译基础目标并链接以生成最终可执行的VMLinux,然后基于配置生成Zimage或其他基本图像文件。

linux内核-2-linux内核makefile编译过程

内核Linux的MakeFile汇编过程主要分为以下两个级别:1 安排vmlinux默认目标:makefile中的目标_ all是一个默认目标,它符合制造或makeell订单。
依赖性:由于kbuild_extmod是空的,因此代码实现以取决于所有方案,这一切都取决于vmlinux,vmlinux触发了vmlinux安排。
汇编依赖性:vmlinux安排取决于脚本/linkvmlinux.sh $ force,其中vmlinuxdeps包括要组织的链接脚本和文件。
连接过程:链接是通过调用shell/linkvmlinux.sh脚本完成的。
脚本将每个子目录中的indentIn.o和.a文件连接在一起连接的过程,并最终产生VMlinux。
2 生成Zimage汇编顺序:RUN MAKEARK = ARMCROSS_COMPILE = ARMLINUXNEABIHFALF命令,该命令将组成VMlinux,Zimage,DTB和KO文件。
Zimage Generation:Zimage是GZIP的压缩图像,大小约为6 MB。
vmlinux汇编完成后,由GATE/ARM/MAKEFILE中的代码完全依赖于$$,在$$的情况下完成了结果的Zimage,kbuild_image为zimage,kbuild_dtbs为dtbs。
通常,MakeFile内核Linux编译过程严格遵循依赖性,最终产生一个可以通过调用特定脚本并连接过程来实现的内核图像文件。