草庐IT

ARM-Linux内核基础知识

陌小柠 2023-04-25 原文

文章目录

系列文章

  1. ARM-Linux内核知识点
  2. Linux之交叉编译器的构建

一、ARM-Linux内核和普通内核的区别

1.Linux内核

作者Linux Torvalds
C语言写成
宏内核

2. ARM-Linux内核

基于ARM处理器的Linux内核

Linux是一个单内核(monolithic
kernel),单内核的最大优点是效率高,因为所有的内容都集中在一起,但也有可扩展性以及可维护性差的缺点。模块机制的引入就是为了弥补这一缺陷。内核模块全称为动态可加载内核模块(Loadable
Kernel Module,LKM)是Linux内核向外部提供的一个插口,简称为模块。

二、Linux 模块概述

1. 与module相关的命令有

modprobe、depmod、genksyms、makecrc32、insmod、rmmod、lsmod 、ksyms以及 kerneld。
其中以 insmod、rmmod、lsmod、depmod、modprobe、kerneld最重要

2. 模块命令

lsmod把现在 kernel 中已经安装的modules列出来
insmod把某个 module安装到 kernel 中。
rmmod把某个没在用的module从kernel中卸载。
depmod制造 module dependency file,以告诉将来的insmod要去哪儿找modules来安装。这个dependency file放在 /lib/modules/[当前kernel版本]/modules.dep

帮助理解记忆
module — mod
insert 插入 — insmod
remove 删除 — rmmod

三、模块的加载

载module有两种方法

  1. 通过insmod命令手工将module载入内核
  2. 根据需要载入module(demand loaded module)

四、模块的卸载

当内核的某一部分在使用某个module时,该module是不能被卸载的。

例如,如果系统mount了VFAT文件系统,不能卸载VFAT module。每一个module有一个计数器(module
count)。可以利用lsmod命令来得到它的值

五、ARM-Linux系统的启动和初始化

  • 使用bootloader将内核映像载入
  • 内核数据结构初始化—内核引导第一部分
  • 外设初始化—内核引导第二部分
  • init进程和inittab脚本
  • rc启动脚本
  • Shell的启动

六、移植的基本概念

移植,英文为 Porting。从广义上讲,移植包括软件移植硬件移植
从狭义上讲,移植就是指软件移植,即将一个软件从一个平台迁移到另外一个与其不同的平台上工作

1. 从一个硬件平台移植到另外一个硬件平台

- Linux操作系统移植。

比如将基于 x86体系的 Linux移植到基于 ARM体系的嵌入式 Linux。 首先是工具链的移植,因为基于 x86体系的
gcc就不能用在基 于 ARM的体系中,所以在 PC机上编译时要建立交叉编译工具 链。同时还要考虑 binutils、glibc等移植。

- 内核移植

内核移植主要包括两方面的工作,一是 arch目录下的体系 结构的移植,如从 i386移植到 arm,二是移植 drivers目录下的许多硬件驱动程序。最后是应用程序的移植

2. 从一个操作系统移植到另一个操作系统

这种形式的移植也是最常见的。比如将 Windows系统下运行的程序移植到 Linux/Unix系统中,
这时需要考虑操作系统提供的 API,以及所调用的函数库等。

3. 从一种软件库环境移植到另一种软件库环境

这种类型的移植也是比较常见的,例如基于 Qt 3.0库的应用程序移植到 Qt 4.0库环境中去。
再如基于 glibc库环境的程序移植到基于 uclibc库环境。 

有关ARM-Linux内核基础知识的更多相关文章

  1. postman接口测试工具-基础使用教程 - 2

    1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,

  2. 软件测试基础 - 2

    Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功

  3. ES基础入门 - 2

    ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear

  4. ruby - 我怎样才能更好地了解/了解更多关于 Ruby 的知识? - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我最近开始学习Ruby,这是我的第一门编程语言。我对语法感到满意,并且我已经完成了许多只教授相同基础知识的教程。我已经写了一些小程序(包括我自己的数组排序方法,在有人告诉我谷歌“冒泡排序”之前我认为它非常聪明),但我觉得我需要尝试更大更难的东西来理解更多关于Ruby.关于如何执行此操作的任何想法?

  5. ruby - 为什么 Object 在 Ruby 中既包含内核又继承它? - 2

    在Ruby(1.8.X)中为什么Object既继承了内核又包含了内核?仅仅继承还不够吗?irb(main):006:0>Object.ancestors=>[Object,Kernel]irb(main):005:0>Object.included_modules=>[Kernel]irb(main):011:0>Object.superclass=>nil请注意,在Ruby1.9中情况类似(但更简洁):irb(main):001:0>Object.ancestors=>[Object,Kernel,BasicObject]irb(main):002:0>Object.included

  6. 【网络】-- 网络基础 - 2

    (本文是网络的宏观的概念铺垫)目录计算机网络背景网络发展认识"协议"网络协议初识协议分层OSI七层模型TCP/IP五层(或四层)模型报头以太网碰撞路由器IP地址和MAC地址IP地址与MAC地址总结IP地址MAC地址计算机网络背景网络发展        是最开始先有的计算机,计算机后来因为多项技术的水平升高,逐渐的计算机变的小型化、高效化。后来因为计算机其本身的计算能力比较的快速:独立模式:计算机之间相互独立。    如:有三个人,每个人做的不同的事物,但是是需要协作的完成。    而这三个人所做的事是需要进行协作的,然而刚开始因为每一台计算机之间都是互相独立的。所以前面的人处理完了就需要将数据

  7. 【Linux操作系统】——网络配置与SSH远程 - 2

    Linux操作系统——网络配置与SSH远程安装完VMware与系统后,需要进行网络配置。第一个目标为进行SSH连接,可以从本机到VMware进行文件传送,首先需要进行网络配置。1.下载远程软件首先需要先下载安装一款远程软件:FinalShell或者xhell7FinalShellxhell7FinalShell下载:Windows下载http://www.hostbuf.com/downloads/finalshell_install.exemacOS下载http://www.hostbuf.com/downloads/finalshell_install.pkg2.配置CentOS网络安装好

  8. Linux磁盘分区中物理卷(PV)、卷组(VG)、逻辑卷(LV)创建和(LVM)管理 - 2

    文章目录一基础定义二创建逻辑卷2-1准备物理设备2-2创建物理卷2-3创建卷组2-4创建逻辑卷2-5创建文件系统并挂载文件三扩展卷组和缩减卷组3-1准备物理设备3-2创建物理卷3-3扩展卷组3-4查看卷组的详细信息以验证3-5缩减卷组四扩展逻辑卷4-1检查卷组是否有可用的空间4-2扩展逻辑卷4-3扩展文件系统五删除逻辑卷5-1备份数据5-2卸载文件系统5-3删除逻辑卷5-4删除卷组5-5删除物理卷六LVM逻辑卷缩容6-1缩容注意事项6-2标准缩容步骤一基础定义LVM,LogicalVolumeManger,逻辑卷管理,Linux磁盘分区管理的一种机制,建立在硬盘和分区上的一个逻辑层,提高磁盘分

  9. ruby - 如何在 Ruby 中获取 linux 系统信息 - 2

    如何在Ruby中获取linux系统(这必须适用于Fedora、Ubuntu等)的软件/硬件信息? 最佳答案 Chef背后的优秀人才,拥有一颗名为Ohai的优秀gemhttps://github.com/opscode/ohai以散列形式返回系统信息,例如操作系统、内核、规范、fqdn、磁盘、空间、内存、用户、接口(interface)、sshkey等。它非常完整,非常好。它还会安装命令行二进制文件(也称为ohai)。 关于ruby-如何在Ruby中获取linux系统信息,我们在Stack

  10. ruby - rbenv:在 Linux Mint 上找不到 gem 命令 - 2

    我在LinuxMint17.2上。我最近使用apt-getpurgeruby​​删除了ruby​​。然后我安装了rbenv然后rbenvinstall2.3.0所以现在,~/.rbenv/versions/2.3.0/bin/ruby存在。但是现在,我无法执行geminstallrubocop。我明白了:$geminstallrubocoprbenv:gem:commandnotfoundThe`gem'commandexistsintheseRubyversions:2.3.0但是我可以~/.rbenv/versions/2.3.0/bin/geminstallrubocop。但是,

随机推荐