笔记整理—内核!启动!—kernel部分(3)init进程—进程1

news2024/10/16 14:57:37

        内核态下干了什么——构建内核。

        在init进程中,一个进程有两种状态。1为内核态,init属于内核进程。2.用户态,自己将init转为用户态。从进程1之后的进程就都可以工作在用户态。

        内核态中重点干了一件事情,挂载rootfs,找用户态init程序,并就将自己转变为用户态,因为用户态程序在rootfs中。内核智能执行哈函数,不存在广义上的应用。应用程序不会属于用户态,不在内核源代码中。

        init大部分有意义的事情是在用户态进行的,是别的或操作系统的开端,别的程序都将源于init进程,都派生于此。可以说用户态下的进程都是派生进程。

        init进程在内核态下,通过kernel_execve执行一个用户空间编译连接的应用完成跳跃。跳跃后还是用户态的进程1,这个跳跃过程不可逆,是说明操作系统已经运行起来了,未来调用内核态只能通过API进程访问。

        init进程构成看用户交互界面——人机交互。init进程是所有进程(1号进程)的父进程。

        init进程派生了login进程用于用户登录与命令执行,也派生了shell进程执行命令行环境的解析与执行。shell进程可以启动别的用户进程,用户可以在命令行下./xxx执行进程或程序。

         linux系统中每个进程都有一个自己的文件描述符表,记录了本进程打开的文件。linux系统中,一切都抽象为了文件,访问设备都会去打开这个设备文件。

        描述符eg:

/dev/fb0    LCD设备(真实设备)
/dev/buzer    蜂鸣器(真实设备)
/dev/console    控制台(虚拟设备)

        打开文件描述符sys_open();打开console文件用sys_open(0);复制两次文件描述符得到单个文件描述符0/1/2,构成标准输入/标准输出/标准err。

        使用prepare_namespace挂载rootfs。mount_block_root(root_device_name, root_mountflags);

        uboot通过传参通知内核rootfs的位置/类型 bootargs。root=/dev/mmcblock0p2 rw 位置

        rootfstype=ext3 类型。

        内核rootfs挂载成功将打印VFS:mounted root。失败则打印No Filee system could mount root,tried。然后重启。

        mmc:SD/inand blk0 inand p 2 inand的2分区。blk1 sd 分区 2分区 rw可写。

init_post()    寻找用户态下的进程1
    run_init_process()    
        kernel_execve()    执行用户态下的进程1

        确定init程序是谁:先从uboot看cmdline指定执行程序。init=/linuxrc 指定的根文件系统中的进程1.

        如果uboot没有指定root或不存在相关的根文件系统,则会执行备用方案:

/sbin/init
/etc/init
/bin/init
/bin/sh

        如果这四个方案都寄了,则内核err。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2119678.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【网络安全】分析JS文件实现账户接管

未经许可,不得转载。 文章目录 正文正文 网站使用的是简单的OTP(一次性密码)验证机制,通过用户注册时提供的电子邮件发送邮箱验证码。在功能有限的情况下,我选择去分析网站加载的JavaScript文件。 我发现了一个名为 saveJobseekerPasswordInCache 的函数: 这个函数虽然…

等待实质审查的商标可以用吗!

申请注册商标受理书下来后,会有一个等待实质审查,这个审查出来就会出现要么通过初审,要么驳回,要么部分驳回,普推知产商标老杨发现时间大约是三个月左右,所以基本从申请3个月左右就知道结果了。 申请注册商…

智算时空 重塑视界│智汇云舟2024视频孪生产品发布会圆满举行,多个“全球首款”重磅亮相

​秋风送爽,丹桂飘香。9月6日,由北京智汇云舟科技有限公司主办(简称:智汇云舟),北京北科软科技有限公司(简称:北科软)、北京恒升联合科技有限公司(简称&#…

【北京迅为】《STM32MP157开发板使用手册》- 第十一章 编译U-Boot

iTOP-STM32MP157开发板采用ST推出的双核cortex-A7单核cortex-M4异构处理器,既可用Linux、又可以用于STM32单片机开发。开发板采用核心板底板结构,主频650M、1G内存、8G存储,核心板采用工业级板对板连接器,高可靠,牢固耐…

TPM管理培训为何难以落地?原因解析与解决之道

近年来,TPM管理被视为提升设备效率、减少故障率、降低生产成本的关键。然而,尽管TPM的理念被广泛接受,其在实践中的落地却常常面临各种挑战。本文,深圳天行健企业管理咨询公司将深入解析TPM管理培训难以落地的根本原因&#xff0c…

微信小程序登录与获取手机号 (Python)

文章目录 相关术语登录逻辑登录设计登录代码 相关术语 调用接口[wx.login()]获取登录凭证(code)。通过凭证进而换取用户登录态信息,包括用户在当前小程序的唯一标识(openid)、微信开放平台账号下的唯一标识&#xff0…

华为防火墙 nat64

如果设备接收到的IPv6报文的前缀是设备为NAT64定义的前缀,说明报文的目的地址是IPv4网络,报文将经过NAT64处理后被转发至IPv4网络。 如果设备接收到的IPv6报文的前缀不是设备为NAT64定义的前缀,说明报文的目的地址是IPv6网络,报文…

强烈推荐!分享5款ai论文生成软件

在当今学术研究和写作领域,AI论文生成工具的出现极大地提高了写作效率和质量。这些工具不仅能够帮助研究人员快速生成论文草稿,还能进行内容优化、查重和排版等操作。以下是五款值得推荐的AI论文生成软件,特别是千笔-AIPassPaper。 ### 千笔-…

Gin-封装自动路由

O.0 思路一、API二、控制层三、自动路由核心四、分组路由外加中间件使用 思路 由于Java转Go直接使用的goframe框架,然学习Gin时觉得一个接口一个路由太麻烦,于是有了...1、在请求结构体中采用标签的形式,直接给出路由和请求方式 2、在控制层…

yum源配置与静态配置地址

网络yum源 备份配置文件 下载新的CentOS-Base.repo文件到/etc/yum.repos.d/目录下 执行yum clean all清除原有 yum 缓存 执行yum makecache(刷新缓存) 本地yum 将/etc/yum/repos.d/下的文件a都移走,此处移到了该目录下的bak中 找到光盘路…

【重学 MySQL】二十二、limit 实现分页

【重学 MySQL】二十二、limit 实现分页 基本语法实现分页第一页第二页通用公式注意事项在 MySQL 中,LIMIT 子句非常强大,它允许你限制查询结果的数量,同时也经常被用来实现分页功能。分页是 Web 开发中常见的需求,它允许用户浏览大量数据时,一次只查看一小部分数据。 基本…

【重学 MySQL】二十一、order by 实现数据排序

【重学 MySQL】二十一、order by 实现数据排序 基本语法示例按薪水升序排序按薪水降序排序根据多个列排序 注意事项 在MySQL中,ORDER BY子句用于对结果集中的数据进行排序。你可以根据一个或多个列对结果进行升序(ASC)或降序(DESC…

JavaEE:文件操作

文章目录 文件操作和IO文件系统操作File介绍属性构造方法方法 代码演示前四个listmkdirrenameTo 文件操作和IO 文件系统操作 创建文件,删除文件,创建目录,重命名… Java中有一个类,可以帮我们完成上述操作. 这个类叫做File类. File介绍 属性 这个表格描述了文件路径的分隔符…

【IIS实战】ERR_SSL_KEY_USAGE_INCOMPATIBLE

当我们第一次配置IIS服务器做测试环境网站时,如果没有插手做自签名证书,而是用IIS自带的自签名证书,那么现代浏览器访问HTTPS测试站点大概率会有下图所示的报错: (IE:我能打开( •̀ ω •́ )y&#xff0…

VuePress搭建个人博客(手动安装)

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

ENSP配置云服务找不到以太网卡【已解决】

在搭建网络拓扑图的时候,想要连接云,发现没有以太网卡 环境:Windows10,ensp模拟器 以为一直是用轻薄本,上网都是连接wifi,所以没用上以太网卡。 一、在电脑环境上安装以太网卡 winR跳出运行口&#xff0c…

chapter13-常用类——(StringBuffer StringBuilder)—day15

475-StringBuffer结构剖析 476-StringBuffer转换 477-StringBuffer方法

2024.9.9

优化登录框: 当用户点击取消按钮,弹出问题对话框,询问是否要确定退出登录,并提供两个按钮,yes|No,如果用户点击的Yes,则关闭对话框,如果用户点击的No,则继续登录 当用户…

Java后台生成二维码

一、效果图 二、实现代码 1.添加依赖 <!-- zxing生成二维码 --> <dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.3.3</version> </dependency><dependency><grou…

【Dart 教程系列第 50 篇】在 Flutter 项目的国际化多语言中,如何根据翻译提供的多语言文档表格,快速生成不同语言的内容

这是【Dart 教程系列第 50 篇】&#xff0c;如果觉得有用的话&#xff0c;欢迎关注专栏。 博文当前所用 Flutter SDK&#xff1a;3.22.1、Dart SDK&#xff1a;3.4.1 文章目录 一&#xff1a;问题描述二&#xff1a;解决方案三&#xff1a;完整代码 一&#xff1a;问题描述 在…