Linux系统启动

本文详细解析了Linux系统的启动流程,从BIOS启动到GRUB引导,再到内核加载、init进程启动,直至达到不同运行级别。涵盖了BIOS、MBR、GRUB、内核、init进程以及运行级别的概念与作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.系统启动流程大概
1)启动BIOS
    
2)MBR中的引导代码 BootCode
 
3)执行引导程序
    Linux中用的最多的是GRUB;引导程序的主要作用是用来加载内核;    
 
4)加载系统内核
    
5)执行init
 
6)runlevel
    init根据当前默认的运行级别来启动相关的程序及设备;
 
2.BIOS (basic input output system)
BIOS称为基本输入输出系统,一般保存在主板中的BIOS芯片中;
计算机启动后,执行的第一个程序就是BIOS;
BIOS负责检查硬件并且查找可启动设备;
可以在BIOS中定义可启动设备;例如USB、CDROM、HD;
所谓的可启动设备,就是设备上具有引导信息;
 
3.MBR
MBR分区机制中;设备前512个字节为启动信息;其中最后4个字节为55AA的表示可启动;
设备的前446个字节为其引导代码;
BIOS找到可启动设备后执行其引导代码;
引导代码的功能是引导不同的系统;不同的系统有不同的引导代码,比如windows和linux的引导代码就不同;
引导代码用来查找当前的引导程序;因为MBR的字节数有限,只能去用来加载比较复杂的引导程序;
Linux中常用的引导程序是GRUB;
 
4.GRUB
grub几乎可以用来引导所有的操作系统;
grub的相关文件保存在 /boot/grub 目录中;
/boot目录一般保存与系统启动相关的文件,比如linux内核就保存在这里;
其中 /boot/grub/grub.cfg是启动时的配置文件;可以修改该文件来添加需要引导的设备;
 
5.内核 KENREL
MBR的引导代码负责找到并加载Linux内核;
Linux的内核保存在 /boot/vmlinuz-版本号 ;
Linux一般还需要加载内核模块的打包文件:/boot/initramfs-版本号.img
Linux为了保持内核的精简,将一些不常用的驱动、功能编译成模块,在需要的时候加载;这些模块被打包成一个 initramfs文件;比如键盘、u盘驱动等;
早期Linux使用的是initrd文件;而initramfs 是 initrd 的优化版本,更加灵活且节省空间;
命令dmesg可以查看本次启动时内核的输出信息;
dmesg
这些信息包括:内核在加载驱动、给内存进行区域划分、初始化主板硬盘u盘usb设备等等;
在出现内核级的故障时需要看这些信息,比如有些设备驱动不起来;
/var/log/dmesg 文件中也保存了这些信息;
 
总的来说就是说根据grub的配置,来启动内核;
 
6.INIT
内核启动完后,系统将启动第一个进程,即init;
用 top 命令可以看到一个 pid 为1的进程就是 init;
top
init的作用是调用 /etc/rc.d/rc.sysinit 脚本,负责对系统进行初始化,挂载文件系统,并根据运行级别启动相应服务;
Linux的运行级别:
    0    ->关机
    1    ->单用户模式
    2    ->不带网络的多用户模式
    3    ->多用户模式
    4    ->未使用
    5    ->图形化模式
    6    ->重新启动
 
最常用的运行级别是3和5;它们之间的区别是一个有图形界面,一个只有命令行界面;
 
init的配置文件:
    可以通过 /etc/inittab 修改默认的运行级别;
    其它一些配置文件存放在 /etc/init 目录下;
    每个启动级别对应的启动服务保存在 /etc/rc.d/rc[0123456].d中;
    命令 runlevel 可显示当前及上一个运行级别;
    切换运行级别可用init 命令;
    例如切换到级别3:
init 3
    
7.单用户修改root密码
普通用户的密码忘记了,可以用root用户来修改;
如果root用户的密码忘了,可以进入单用户模式来修改;
单用户模式下登录是不需要密码的;即运行级别1;
可以在启动时引导内核时,传递参数 1 或者 single 来进入单用户模式;
单用户模式下不启动任何服务;
在单用户模式下通过命令 passwd 来修改密码;
 
具体操作:
    在启动界面按 上 或 下 键 ,停住;
    按 e 开始编辑;
    选中内核 kernel 那一行,按e 编辑;
    在最后加一个参数 1即可强制内核以级别1单用户模式启动;
    按b开始启动;
    用命令 passwd 修改密码;
    exit 命令退出单用户模式;
 
但是这样有个隐患:任何人可以接近这台计算机都可以修改root密码;
 
8.GRUB加密
通过在 /etc/grub/grub.conf 中的启动配置中加入如下参数即可对grub加密:也就是在配置文件中加入一行
password --md5 加密后的密码
grub加密后想在引导时进行修改必需先输入 grub密码;
加密后的密码可通过 grub-md5-crypt 生成;
 
如果grub密码也忘了,只能将硬盘取下啦,挂载到另外一台linux系统的机器中,找到grub.conf,把加密配置删除掉;
这样还是有安全隐患,如果硬盘被偷走了,就没办法了;那么只能进行分区级别的加密对根分区进行加密;
 
 

转载于:https://www.cnblogs.com/ShiningArmor/p/10480717.html

基于数据挖掘的音乐推荐系统设计与实现 需要一个代码说明,不需要论文 采用python语言,django框架,mysql数据库开发 编程环境:pycharm,mysql8.0 系统分为前台+后台模式开发 网站前台: 用户注册, 登录 搜索音乐,音乐欣赏(可以在线进行播放) 用户登陆时选择相关感兴趣的音乐风格 音乐收藏 音乐推荐算法:(重点) 本课题需要大量用户行为(如播放记录、收藏列表)、音乐特征(如音频特征、歌曲元数据)等数据 (1)根据用户之间相似性或关联性,给一个用户推荐与其相似或有关联的其他用户所感兴趣的音乐; (2)根据音乐之间的相似性或关联性,给一个用户推荐与其感兴趣的音乐相似或有关联的其他音乐。 基于用户的推荐和基于物品的推荐 其中基于用户的推荐是基于用户的相似度找出相似相似用户,然后向目标用户推荐其相似用户喜欢的东西(和你类似的人也喜欢**东西); 而基于物品的推荐是基于物品的相似度找出相似的物品做推荐(喜欢该音乐的人还喜欢了**音乐); 管理员 管理员信息管理 注册用户管理,审核 音乐爬虫(爬虫方式爬取网站音乐数据) 音乐信息管理(上传歌曲MP3,以便前台播放) 音乐收藏管理 用户 用户资料修改 我的音乐收藏 完整前后端源码,部署后可正常运行! 环境说明 开发语言:python后端 python版本:3.7 数据库:mysql 5.7+ 数据库工具:Navicat11+ 开发软件:pycharm
MPU6050是一款广泛应用在无人机、机器人和运动设备中的六轴姿态传感器,它集成了三轴陀螺仪和三轴加速度计。这款传感器能够实时监测并提供设备的角速度和线性加速度数据,对于理解物体的动态运动状态至关重要。在Arduino平台上,通过特定的库文件可以方便地与MPU6050进行通信,获取并解析传感器数据。 `MPU6050.cpp`和`MPU6050.h`是Arduino库的关键组成部分。`MPU6050.h`是头文件,包含了定义传感器接口和函数声明。它定义了类`MPU6050`,该类包含了初始化传感器、读取数据等方法。例如,`begin()`函数用于设置传感器的工作模式和I2C地址,`getAcceleration()`和`getGyroscope()`则分别用于获取加速度和角速度数据。 在Arduino项目中,首先需要包含`MPU6050.h`头文件,然后创建`MPU6050`对象,并调用`begin()`函数初始化传感器。之后,可以通过循环调用`getAcceleration()`和`getGyroscope()`来不断更新传感器读数。为了处理这些原始数据,通常还需要进行校准和滤波,以消除噪声和漂移。 I2C通信协议是MPU6050与Arduino交互的基础,它是一种低引脚数的串行通信协议,允许多个设备共享一对数据线。Arduino板上的Wire库提供了I2C通信的底层支持,使得用户无需深入了解通信细节,就能方便地与MPU6050交互。 MPU6050传感器的数据包括加速度(X、Y、Z轴)和角速度(同样为X、Y、Z轴)。加速度数据可以用来计算物体的静态位置和动态运动,而角速度数据则能反映物体转动的速度。结合这两个数据,可以进一步计算出物体的姿态(如角度和角速度变化)。 在嵌入式开发领域,特别是使用STM32微控制器时,也可以找到类似的库来驱动MPU6050。STM32通常具有更强大的处理能力和更多的GPIO口,可以实现更复杂的控制算法。然而,基本的传感器操作流程和数据处理原理与Arduino平台相似。 在实际应用中,除了基本的传感器读取,还可能涉及到温度补偿、低功耗模式设置、DMP(数字运动处理器)功能的利用等高级特性。DMP可以帮助处理传感器数据,实现更高级的运动估计,减轻主控制器的计算负担。 MPU6050是一个强大的六轴传感器,广泛应用于各种需要实时运动追踪的项目中。通过 Arduino 或 STM32 的库文件,开发者可以轻松地与传感器交互,获取并处理数据,实现各种创新应用。博客和其他开源资源是学习和解决问题的重要途径,通过这些资源,开发者可以获得关于MPU6050的详细信息和实践指南
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值