当前位置:首页 > CN2资讯 > 正文内容

Linux系统移植|Linux内核介绍linux内核移植

12小时前CN2资讯

Linux内核介绍

1. Linux内核获取

Linux 由 Linux 基金会管理与发布, Linux 官网为 https://www.kernel.org,所以你想获取最新的
Linux 版本就可以在这个网站上下载,网站界面如下图所示:


NXP 会从linux内核官网下载某个版本,然后将其移植到自己的 CPU上,测试成功后就会将其开放给NXP的CPU开发者。开发者下载 NXP 提供的 Linux 内核,然后将其移植到自己的产品上。

本文我们就使用NXP提供的Linux源码,文件名为:linux-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2

2. Linux内核初次编译

编译内核之前需要先在ubuntu上安装lzop库,另外,图形化配置工具还需要ncurses库支持,安装命令为:

sudo apt-get install lzop sudo apt-get install build-essential sudo apt-get install libncurses5-dev

在Ubuntu中新建一个文件夹,然后将linux内核压缩包拷贝到文件夹中并解压,解压命令为:

tar -vxf linux-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2

解压后进入该文件夹,新建一个脚本文件来编译,脚本中的内容如下:

#!/bin/sh make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- imx_v7_mfg_defconfig make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- all -j16

给予该脚本可执行权限,然后运行,编译的时候会弹出Linux图形配置界面, 这里不需要做任何的配置, 直接按两下ESC键退出图形界面


之后会自动开始编译Linux内核,等待编译完成,完成以后如下图所示

编译完成以后就会在arch/arm/boot这个目录下生成一个zImage文件,该文件就是要用的Linux镜像文件。另外也会在arch/arm/boot/dts下生成很多.dtb 文件,这些.dtb 就是设备树文件

vmlinux 、Image ,zImage 、uImage 的区别:

  • vmlinux是ELF格式的文件,是编译出来的最原始的内核文件,编译出来 差不多有16MB,是未压缩的。在实际中我们不会使用vmlinux,而是使用zImage或uImage这样的 Linux 内核镜像文件
  • Image是Linux内核镜像文件,但是Image仅包含可执行的二进制数据。Image就是使用objcopy取消掉vmlinux中的一些其他信息,比如符号表什么的。但是 Image 是没有压缩过的,Image保存在arch/arm/boot目录下,其大小大概在12MB
  • zImage是经过gzip压缩后的Image,经过压缩以后其大小大概在6MB左右
  • uImage是老版本uboot专用的镜像文件,uImag是在zImage前面加了一个长度为 64字节的“头” ,这个头信息描述了该镜像文件的类型、加载位置、生成时间、大小等信息。但是新的uboot已经支持了 zImage 启动!所以已经很少用到uImage了

3. Linux内核源码结构

Linux内核编译过程会生成一些文件,下面来看一下编译前后的内核源码结构,可以看出多出了一些编译文件


编译后的内核源码比未编译的源码多了许多文件,这些文件或文件夹的含义见下表:


上表中很多文件夹和文件我们都不需要去关心,需要关注的文件夹或文件如下:

  • arch目录:这个目录是和架构有关的目录,比如arm、arm64、avr32、x86等等架构。每种架构都对应一个目录,在这些目录中又有很多子目录,比如boot、common、configs等等。
  • block目录 block是Linux下块设备目录, 像SD卡、EMMC、NAND、硬盘等存储设备就属于块设备,block目录中存放着管理块设备的相关文件。
  • crypto目录 crypto目录里面存放着加密文件,比如常见的crc、crc32、md4、md5、hash等加密算法。
  • Documentation目录 此目录里面存放着Linux相关的文档,如果要想了解Linux某个功能模块或驱动架构的功能,就可以在Documentation目录中查找有没有对应的文档。
  • drivers目录 驱动目录文件,此目录根据驱动类型的不同,分门别类进行整理,比如drivers/i2c就是I2C相关驱动目录,drivers/gpio就是GPIO相关的驱动目录,这是我们学习的重点。
  • firmware 目录 此目录用于存放固件。
  • fs目录 此目录存放文件系统,比如fs/ext2、fs/ext4、fs/f2fs等,分别是ext2、ext4 和 f2fs等文件系统。
  • include 目录:头文件目录。
  • init 目录:此目录存放 Linux 内核启动的时候初始化代码。
  • ipc 目录:IPC 为进程间通信, ipc 目录是进程间通信的具体实现代码。
  • kernel 目录:Linux 内核代码。
  • lib 目录:lib 是库的意思, lib 目录都是一些公用的库函。
  • mm 目录:此目录存放内存管理相关代码。
  • net 目录:此目录存放网络相关代码。
  • samples 目录:此目录存放一些示例代码文件。
  • scripts 目录:脚本目录, Linux 编译的时候会用到很多脚本文件,这些脚本文件就保存在此目录中。
  • security 目录:此目录存放安全相关的文件。
  • sound 目录:此目录存放音频相关驱动文件,音频驱动文件并没有存放到 drivers 目录中,而是单独的目录。
  • tools 目录:此目录存放一些编译的时候使用到的工具。
  • usr 目录:此目录存放与 initramfs 有关的代码。
  • virt 目录:此目录存放虚拟机相关文件。
  • .config 文件:跟 uboot 一样, .config 保存着 Linux 最终的配置信息,编译 Linux 的时候会读取此文件中的配置信息。最终根据配置信息来选择编译 Linux 哪些模块,哪些功能。
  • Kbuild 文件:有些 Makefile 会读取此文件。
  • Kconfig 文件:图形化配置界面的配置文件。
  • Makefile 文件:Linux 顶层 Makefile 文件,建议好好阅读一下此文件。
  • README 文件:此文件详细讲解了如何编译 Linux 源码,以及 Linux 源码的目录信息
    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/25928.html

    分享给朋友:

    “Linux系统移植|Linux内核介绍linux内核移植” 的相关文章

    如何配置防火墙例外:确保网络安全与便利的详细步骤

    什么是防火墙例外? 在数字化时代,网络安全显得尤为重要。我认为,防火墙是保护我们的计算机免受恶意攻击和未经授权访问的重要工具。在这里,防火墙的一个关键概念就是防火墙例外。简单来说,防火墙例外是指允许某些特定的程序或服务在防火墙的保护下依旧能够自由访问网络。这种设置对于许多需要网络连接的应用来说必不可...

    深入了解DC9飞机的历史、技术特点与运营经验

    DC9概述 了解DC9这款飞机,首先得从它的历史说起。DC9,或称道格拉斯DC-9,是由道格拉斯飞机公司设计制造的中短程单通道喷气式客机。这款飞机的诞生可以追溯到20世纪60年代。道格拉斯公司在这段时间逐步崛起,骄傲地推出了DC9作为回应当时日益增长的民航市场需求。最初的设计版本虽然体积不大,但凭借...

    探索阿什本:全球数据中心之都的科技与美食之旅

    阿什本,这个名字或许在很多人耳中听起来并不陌生。作为美国弗吉尼亚州劳登郡的一部分,它距离华盛顿特区仅34英里,恰如其分地威尔士着城市的繁华。在我踏上这片土地的那一刻,便被它的快速发展与活力所吸引。阿什本不仅是一个城市,更是全球数据中心的中心,称其为“全球数据中心之都”可谓名至实归。 在阿什本,互联网...

    Cloudflare 菲律宾节点:提升网络体验与速度的解决方案

    在当今数字化时代,每一个在线体验都至关重要。CloudFlare的出现,正是为了满足这一迫切的需求。作为全球知名的CDN(内容分发网络)服务提供商,CloudFlare不仅致力于加速网站的加载速度,也为用户提供安全防护服务。借助全球分布的节点,CloudFlare能够将用户请求快速而安全地送达目的地...

    VPS IP被封怎么办?常见原因与解决方案分析

    在使用VPS的过程中,有时候会遇到VPS IP被封的情况,这对很多用户来说,会带来一些困扰。虽然情况不同,但通常来说,下列几个原因是比较常见的,了解这些原因能够帮助我们更好地避免封禁。 首先,敏感操作常常是导致IP被封的重要原因之一。比如,如果你进行了一些网络爬虫、频繁请求某个网站内容,或者试图访问...

    甲骨文注册的重要性与流程详解

    什么是甲骨文注册 甲骨文注册,顾名思义,是对甲骨文进行官方备案的过程。甲骨文是中国古代的一种文字,最早出现在商朝晚期,主要被用于记录卜辞。这种文字不仅在语言和文化上有着重要的地位,还是研究古代历史和社会的一把钥匙。通过甲骨文注册,相关机构和个人可以对其研究或使用活动进行合法的保护和管理,确保甲骨文的...