![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux 操作系统原理
文章平均质量分 73
终南樵夫
记录学习经历,分享学习乐趣
展开
-
ARM+Linux系统启动流程分析----bootloader初始化系统
开发环境如下: PC操作系统:RetHat Enterprise Linux6.3版本,内核版本:linux-2.6.39 交叉工具链:arm-linux-xxx 4.3.2原创 2015-11-05 16:33:50 · 2871 阅读 · 0 评论 -
Linux开机引导与关机过程
(转)Bootstrapping(引导) 是 Staring up a computer 的标准术语。 操作系统所提供的正常功能在启动过程中还不能使用,因此,计算机必须“通过其引导程序让自己启动起来”。 在引导过程中,内核被加载到内存中并开始执行。 各种初始化任务得以执行之后,用户就能够使用系统了。引导阶段是系统特别脆弱的一段时间。 配置文件中的错误,丢失设备或者设备不可靠,以及受损的文件转载 2015-11-06 12:16:32 · 1329 阅读 · 0 评论 -
Linux 内核模块编写与安装
Linux 系统一直在不断地发展,而相应地她的代码量也在不断的增大,直接导致的结果就是她的可执行镜像就变得越来越庞大。那么问题来了,如果将所有的镜像文件一次性地复制到内存中,那么所需的空间就非常大。但是有些服务是暂时或者很长时间内是不会被使用到的,那么就造成了空间的极大浪费。内核模块化就是为了解决这一个问题而被提出的一种解决方案。它通过一种机制,允许程序员将内核的一部分服务通过模块的方式...原创 2016-03-11 09:29:43 · 492 阅读 · 0 评论 -
Linux 系统调用过程
系统调用是操作系统提供给用户(应用程序)的一组接口,每个系统调用都有一个对应的系统调用函数来完成相应的工作。用户通过这个接口向操作系统申请服务,如访问硬件,管理进程等等。但是因为用户程序运行在用户空间,而系统调用运行在内核空间,因此用户程序不能直接调用系统调用函数,我们经常看到的比如fork、open、write 等等函数实际上并不是真正的系统调用函数,他们都只是c库,在这些函数里将执行一个软中断原创 2016-03-11 09:29:46 · 402 阅读 · 0 评论 -
Linux 内核链表
最近在看Linux内核的代码,第一个想了解的是Linux内部所使用的数据结构:链表。事实上Linux 内核使用的链表是双向循环链表.跟普通的链表一样,它的每个节点包含两个域:数据域和指针域,其中数据域很明确,就是用户自己的数据,没啥好说的,具体得看用户想通过链表组织什么数据。指针域是一个结构体如下:struct list_head{ struct list_hea原创 2016-03-11 09:29:56 · 272 阅读 · 0 评论 -
ARM开发板系统移植-----u-boot的编译
本文和另外两篇姊妹篇都是为了说明如何裁剪出适合在mini2440 开发板上运行的Linux系统,以记录自己的学习成果。其中本文先介绍了嵌入式系统的软件组成部分,然后介绍编译出适合在mini2440开发板上运行的uboot的方法步骤。 说明:笔者使用的开发平台---RetHat linux系统,开发板---Friendly mini2440 在开始讲述系统移植的具体方法之前,先大致了解原创 2016-03-11 09:30:10 · 615 阅读 · 0 评论 -
ARM开发板系统移植-----rootfs的制作
前面两篇文章分别介绍了mini2440开发板上运行的bootloader和kernel,到这里系统启动后其实是停留在一个“僵死”的状态---无法挂载根文件系统。 这里将介绍如何制作一个根文件系统,并且挂载到内核中---即让内核能够访问到文件系统中的目录和文件。从用户的角度来看文件系统无非就是各个目录和文件,注意,这些目录和文件可以存在内存中,也可以存在Nand Flash 或者NOR Fla原创 2016-03-11 09:30:15 · 3153 阅读 · 1 评论 -
ARM开发板系统移植-----kernel的编译
前面一篇文章http://www.cnblogs.com/linzizhang/p/4817336.html介绍了开发板上系统软件的第一部分--bootloader的编译方法。 背景:把bootloader烧写到开发板的Nand Flash中后,开发板从Nand启动,硬件会自动将bootloader加载到内存中运行,bootloader将板载资源都初始化完成后,会停留在一个命令行界面,接收并原创 2016-03-11 09:30:12 · 1569 阅读 · 0 评论 -
ARM+Linux系统启动流程分析----系统启动总概述
本文章和后续的几篇姊妹篇,笔者将对 ARM+Linux 的主流嵌入式系统的启动流程进行介绍,所作介绍目的有二:其一为记录自己的学习经历,总结所学;其二希望能帮助到有需要的网友,当然笔者也希望能得到各位前辈的指点。由于本人水平有限,不免认识有所偏差,真切希望各位能真诚指出。 开发环境如下: PC操作系原创 2015-11-05 16:29:41 · 716 阅读 · 1 评论 -
ARM+Linux系统启动流程分析----ARM处理器的启动流程
开发环境如下: PC操作系统:RetHat Enterprise Linux6.3版本,内核版本:linux-2.6.39 交叉工具链:arm-linux-xxx 4.3.2原创 2015-11-05 16:31:58 · 857 阅读 · 0 评论 -
Linux 函数库设计
函数库----笔者理解为若干函数的代码集合。其实就是若干个具有特定功能的函数的二进制代码经过打包处理后放在在一个文件中,我们称之为函数库。从代码实现的角度来看,就是若干个函数写在同一个文件中,然后编译该文件成为目标.o文件,接着将该.o文件打包成一个可以被链接的库,最后放到一个编译器可以找到哦的路径中(如/lib/目录)。通常一个函数库里有多个具有特定功能的函数,当用户需要使用到某个函数时,可以包原创 2015-10-26 20:04:17 · 522 阅读 · 0 评论 -
Linux 内核编译
Linux操作系统一直在不断的发展和完善,内核版本也在不断地更新。对于Linux的用户来说,如果不想显得自己太"Low",学会编译安装Linux 内核就变得非常重要。下面简单介绍一下编译和安装内核的过程。事实上Linux 支持的硬件系统是很多的,比如X86、ARM等等。本文只介绍基于X86系统的编译。 巧妇难为无米之炊,要想编译内核首先得拿到内核的源代码吧。到www.kernel.org原创 2015-04-14 12:21:50 · 287 阅读 · 0 评论 -
总线驱动模型
总线:#include <linux/init.h>#include <linux/module.h>#include <linux/device.h>int mybus_match(struct device *dev, struct device_driver *drv){ printk(KERN_ALAR "mybus matching!\n"); return 0;}s原创 2017-09-29 17:10:13 · 302 阅读 · 0 评论