linux 启动 流程,linux最好用的系统
本篇文章给大家谈谈linux 启动 流程,以及linux最好用的系统对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。
嵌入式linux系统的启动流程是什么样的
1)
初始化
RAM
因为
Linux
内核一般都会在
RAM
中运行,所以在调用
Linux
内核之前
Bootloader
必须设置和初始化
RAM,为调用
Linux内核
做好准备。初始化
RAM
的任务包括设置
CPU
的控制寄存器参数,以便能正常使用
RAM
以及检测RAM
大小等。
2)
初始化串口端口
在
Linux
的启动过程中有着非常重要的作用,它是
Linux内核和用户交互的方式之一。Linux
在启动过程中可以将信息通过串口输出,这样便可清楚的了解
Linux
的启动过程。虽然它并不是
Bootloader
必须要完成的工作,但是通过串口输出信息是调试
Bootloader
和Linux
内核的强有力的工具,所以一般的
Bootloader
都会在执行过程中初始化一个串口作为调试端口。
3)
检测
处理器类型
Bootloader在调用
Linux内核前必须检测系统的处理器类型,并将其保存到某个常量中提供给
Linux
内核。Linux
内核在启动过程中会根据该处理器类型调用相应的初始化程序。
4)
设置
Linux启动参数
Bootloader在执行过程中必须设置和初始化
Linux
的内核启动参数。
5)
调用
Linux内核映像
Bootloader完成的最后一项工作便是调用
Linux内核。如果
Linux
内核存放在
Flash
中,并且可直接在上面运行(这里的
Flash
指
Nor
Flash),那么可直接跳转到内核中去执行。但由于在
Flash
中执行代码会有种种限制,而且速度也远不及
RAM
快,所以一般的
嵌入式系统
都是将
Linux内核拷贝到
RAM
中,然后跳转到
RAM
中去执行。
嵌入式linux启动流程
嵌入式Linux启动流程分为四个主要阶段:引导加载程序(Bootloader)、内核加载、根文件系统挂载和系统初始化。
1.引导加载程序(Bootloader):
这是嵌入式Linux系统启动的第一个阶段。Bootloader的主要任务是初始化硬件设备、设置内存等,为接下来加载Linux内核做好准备。常见的Bootloader有U-Boot、GRUB等。以U-Boot为例,它首先会执行一些硬件的初始化操作,如设置时钟、初始化SDRAM等。接着,U-Boot会从存储介质(如Flash、SD卡)中读取内核映像和设备树(Device Tree),为下一步的内核加载做准备。
2.内核加载:
在Bootloader完成硬件初始化和准备好内核映像后,接下来就是将Linux内核加载到内存中。通常,内核映像会被加载到RAM中的一个特定位置,这个位置是由Bootloader在之前的步骤中设置好的。内核映像包括压缩的内核代码和一些必要的参数,如设备树(Device Tree)或ATAGS。设备树用于描述硬件配置,使得内核可以在没有硬编码的情况下了解硬件的详细配置。
3.根文件系统挂载:
当内核成功加载并初始化后,它会尝试挂载根文件系统。根文件系统包含了系统运行所需的所有文件和目录,如/bin、/etc、/lib等。在嵌入式Linux系统中,根文件系统通常存储在Flash、SD卡或其他存储介质上。内核通过之前从Bootloader获取的设备树信息来找到存储介质和根文件系统的位置,然后将其挂载到根目录“/”下。
4.系统初始化:
当根文件系统成功挂载后,系统就可以开始执行用户空间的程序了。在这个阶段,系统会执行一系列初始化脚本和服务,如启动SSH服务、设置网络配置、启动GUI等。这些初始化脚本通常存放在/etc/init.d或/etc/systemd/system目录下。这些脚本和服务按照预定的顺序执行,确保系统在启动时能够正确地配置和启动所有必要的组件和服务。
总结来说,嵌入式Linux的启动流程是一个复杂的过程,涉及硬件初始化、内核加载、根文件系统挂载和系统初始化等多个阶段。每个阶段都有其特定的任务和要求,需要仔细设计和实现以确保系统的稳定性和可靠性。同时,由于嵌入式系统的硬件和软件环境差异较大,因此在实际开发中需要根据具体的硬件和软件需求来调整和优化启动流程。
Linux启动流程 梳理| 思维导图 | 流程图 | 值得收藏
Linux启动流程梳理
启动流程分为三个阶段:上电、BIOS启动、Linux启动
上电阶段:
- 1M空间映射给 ROM
- BIOS进行初始化,包括硬件初始化、自检、加载 UEFI固件驱动程序等
-选择启动介质,加载 UEFI应用程序,如引导加载程序(Bootloader)
BIOS启动阶段:
- UEFI固件初始化硬件,识别可启动设备,如硬盘、光盘、USB设备
-加载 UEFI固件驱动程序,与硬件设备交互
-加载位于启动介质上的 UEFI应用程序,如引导加载程序(Bootloader)
Linux启动阶段:
- MBR(Master Boot Record)存放于硬盘第一个扇区
-包含主引导记录和分区表,主引导记录用于安装启动引导程序,分区表记录硬盘分区状态
-找到 MBR后,执行主分区或逻辑分区中的引导加载程序,控制权交给 VBR或 EBRA的引导加载程序
引导加载程序 GRUB介绍:
- GNU GRUB是多操作系统启动程序,允许选择运行不同内核
-生成配置文件:grub2-mkconfig-o/boot/grub2/grub.cfg
-安装:grub2-install/dev/sda
- boot.img从硬盘加载到内存,执行 core.img,包含解压缩程序、内核、模块映像
Linux启动-0/1号进程:
- init_task是系统第一个进程,没有通过 fork或 kernel_thread产生
-进行中断初始化、内存初始化、调度策略初始化、基于内存文件系统rootfs初始化
-创建第二个进程,1号进程,对于操作系统具有“划时代”的意义
Linux启动-ramdisk:
- init程序在文件系统上运行,需要驱动才能访问存储设备
-使用 ramdisk作为根文件系统,运行/init启动文件系统上的 init
Linux启动-init介绍:
- init进程运行在用户态,尝试运行 ramdisk的“/init”或文件系统上的“/sbin/init”等
- init类型随 Linux版本不同,配置文件也有所不同
Linux启动-运行级别、fstab:
-每次重启,硬盘一般被自动挂载,自动挂载信息记录在/etc/fstab文件中
-系统读取/etc/fstab自动挂载设备和分区,第一列设备文件或UUID或label,第二列挂载点,第三列文件系统格式,第四列文件系统参数,第五列dump备份设置,第六列磁盘检查设置
Linux启动-用户登录:
-用户登录方式有命令行登录、ssh登录、图形登录
- Linux允许多人同时在线工作,登录需输入用户名和密码验证身份
Linux启动-用户切换:
-预设六个命令窗口终端机,通过Ctrl+ Alt+ F1~ F6切换窗口