Linux引导过程
Linux引导过程一共分为五个步骤
开机加电自检
对硬件进行自检,找到可引导的硬盘后将控制器给MBR
MBR引导
MBR中存放boot loader启动引导程序,存放了分区表,里面有一个55AA或AA55字段,表示有操作系统,同时生成一个initramfs虚拟文件系统,同时寻找内核并加载内核,调用grub菜单
grub菜单
系统控制权传递给GRUB 以后,将会显示提供用于选择,并根据选项加载linux内核文件,centos6是grub菜单,centos是grub2菜单。
加载内核
检测硬件驱动程序,加载module模块用于存放硬件驱动程序,其中initramfs为了驱动和挂载系统
进程初始化
在initramfs中找到驱动程序的所有硬件,然后作为PID 1从initramfs执行/lib/systemd/systemd,centos6是init进程,centos7是systemd进程
运行级别
Linux系统中有七种
init 0
关机,systemd中是target
init 1
维护系统,单用户模式,systemd中是rescue.target
init 2
没有网络,没有共享存储的命令行,systemd中是multi-user.target
init 3
命令行模式,systemd中是multi-user.target
init 4
用作保留,未使用,systemd中是multi-user.target
init 5
图形界面模式,systemd中是graphcal.target
init 6
重启,systemd中是reboot.target
查看当前运行级别用runlevel,或者systemctl get-default
systemd中的单元类型
单元类型 | ||
---|---|---|
Timer | .timer | 描述一个定时器(用于实现类似cron的调度任务) |
Snapshot | .snapshot | 用于保存一个systemd的状态 |
Scope | .scope | 使用systemd的总线接口以编程的方式创建外部进程 |
Slice | .slice | 描述居于Cgroup的一组通过层次组织的管理系统进程 |
Target | .target | 描述一组systemd的单元 |
Service | .service | 描述一个系统服务 |
Socket | .socket | 描述一个进程间通信的套接字 |
Device | .device | 描述一个内核识别的设备文件 |
Mount | .mount | 描述一个文件系统的挂载点 |
Automount | .automount | 描述一个文件系统的自动挂载点 |
Swap | .swap | 描述一个内存交换设备或交换文件 |
Path | .paht | 描述一个文件系统中文件或目录 |
systemctl的管理命令
/etc/systemd/system 用于存放不同级别的开机自启服务
/run/sysytemd/system 系统执行过程中所产生的服务脚本所在目录
/usr/lib/systemd/system 每个服务最主要的启动脚本设置
systemd | |
---|---|
systemctl is-enabled httpd | 查看是否开机自启 |
systemctl enable httpd | 设置开机自启 |
systemctl disable httpd | 设置开机不自启 |
systemctl status httpd | 查看当前服务的状态 |
systemctl reload httpd | 不关闭进程重启 |
systemctl start httpd | 开启httpd服务 |
systemctl stop httpd | 关闭httpd服务 |
systemctl list-unit-files | grep enabled | 查看当前启动的进程 |
systemctl cat httpd | 查看服务启动配置文件 |
systemctl isolate multi-user.target | 切换模式为命令行模式 |
相关实验
centos7忘记密码恢复方法
启动系统,并在GRUB2启动屏显时,按下e键进入编辑模式
按Ctrl+x启动到shell,然后重新挂载,重新设置密码
然后重启
如果发现重启一直进不去,可以进入/etc/selinux中删除config这个文件即可
注意:密码必须八位,不然会提示密码不正确
MBR扇区修复
先模拟扇区故障,将a硬盘第一块扇区移走
[root@localhost ~]# dd if=/dev/sda of=/opt/mbr.bak bs=512 count=1
记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,0.000147779 秒,3.5 MB/秒
[root@localhost ~]# dd if=/dev/zero of=/dev/sda bs=512 count=1
记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,0.000145505 秒,3.5 MB/秒
[root@localhost ~]#
发现一直不能开机
设置boot选项从光盘进入,选择修复模式进入
选第三个
选第二个
选1继续
进入shell
重新创建一个挂载点挂载,然后将备份的第一个扇区转入sda中
然后将boot选项设置成硬盘启动
然后就可以输入密码了
grub修复
模拟grub故障
删掉图形化菜单后开机
设置boot从光盘启动
同上进入修复模式,然后按1继续
然后输入
然后重新创建grub2中的被删除的文件
然后将boot设置硬盘启动