linux内核的编译步骤及模块加载_arm内嵌汇编

linux内核的编译步骤及模块加载_arm内嵌汇编Linux内核配置与编译步骤(超详细)inux内核下载地址:https://www.kernel.org/ubuntu下载内核对应源码:sudo apt-get source linux-$(uname -r) #此命令下载的源码存放在/usr/src/文件夹中一、配置:内核编

Linux内核配置与编译步骤(超详细)   inux内核下载地址:https://www.kernel.org/ubuntu下载内核对应源码:sudo apt-get source linux-$(uname -r) #此命令下载的源码存放在/usr/src/文件夹中   一、配置:   内核编译时会根据内核目录下的.config文件进行编译,而进行内核配置时实际上就是修改.config文件.一般常见的硬件平台在内核目录arch/<平台>/configs/文件夹下会包含有默认的配置文件,可以使用cp命令将其覆盖内核根目录下的.config文件.在编译前都必须使用配置命令在内核根目录下进行一次配置(即使是使用默认的配置文件也必须这样做).而配置命令有以下几种:# make ARCH=<平台> config #比较繁琐,不推荐# make ARCH=<平台> oldconfig #常用于内核升级,提示新内核特性# make ARCH=<平台> menuconfig #常用# make ARCH=<平台> xconfig #X界面的配置方式# make ARCH=<平台> gconfig #GTK界面的配置方式# make ARCH=<平台> defconfig #使用默认的配置# make ARCH=<平台> allyesconfig #所有配置选项设置为yes# make ARCH=<平台> allmodconfig #所有选项配置为module在配置时,每一项都有几种选项,分别为Y,N,M.Y : 代表将此项编译入内核中N : 代表不将此项编译M : 代表将此项编译为模块,在需要使用到的时候再加载入内核也可以通过直接修改内核源代码目录中的.config进行配置,不过此种方法有点麻烦,之后再说。小提示:为了防止内核编译之后配置文件丢失的情况,可以在内核配置时选择:   二、编译:   首先,内核镜像分为很多种vmlinux 编译后形成镜像文件zImage(vmlinuz) 在vmlinux的基础上使用gzip进行压缩所形成的小内核(不超过512KB) bzImage(vmlinuz) 全称为bigzImage,同zImage一样原理,只是比zImage镜像大 uImage(vmlinuz) 为uBoot专用镜像,在zImage基础上再加上一个头形成uImage   以arm为目标板进行交叉编译内核常用的编译命令为:   # make -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- uImage modules //-j4 使用4个线程编译 ARCH=arm 目标为arm体系结构 CROSS_COMPILE 交叉编译器(我的为arm-linux-gnueabihf-) uImage 编译为uImage镜像 modules 同时也将配置中的模块进行编译:在编译过程中有时候会遇到一些错误,而这些错误只能够具体问题具体分析了。编译完成后将所有编译的modules和firmware放入指定文件夹中:make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- modules_install INSTALL_MOD_PATH=XXX #此命令结束后会生成两个文件夹,fireware和modules,这两个文件夹之后应该放在lib目录下进行使用。小提示:有些硬件不仅需要驱动,还需要所对应的firmware,而firmware是体系无关的文件(X86的也可以复制到arm下使用),需要下载其所对应的firmware放入到lib/firmware文件夹中。到此配置和编译算是完成了,只需把编译好的镜像文件及模块放对位置就行了。   其他内容:   vmlinux,vmlinuz(zImage,bzImage,uImage)关系vmlinuz是对vmlinux进行了相应压缩的内核镜像,而zImage,bzImage和uImage统称为vmlinuz。
linux内核的编译步骤及模块加载_arm内嵌汇编
linux内核的编译步骤及模块加载_arm内嵌汇编zImage实际上就是将vmlinux使用gzip进行压缩,并在压缩之后的镜像前加个头,头里包括一段gzip解压缩代码,用于启动时自解压。bzImage和zImage相同,不同的就是zImage会将内核解压到一个低端地址(内存中第一个640KB),而bzImage将内核解压到一个高端地址(大于1M)。而uImage是uBoot专用的镜像文件,它是在zImage的基础上使用mkimage工具生成,其结果是在zImage上加个0x40 bytes的头,其包括:内核版本,创建时间,类型等: #uImage添加的头 Image Name: Linux 2.4.18 Created: Mon Jun 24 12:00:01 2002 Image Type: ARM Linux Kernel Image (gzip compressed) Data Size: Bytes = 553 kB = 0 MB Load Address: 0xc0008000 Entry Point: 0xc0008000
linux内核的编译步骤及模块加载_arm内嵌汇编
linux内核的编译步骤及模块加载_arm内嵌汇编

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/80611.html

(0)
上一篇 2024年 8月 2日
下一篇 2024年 8月 2日

相关推荐

关注微信