系统启动流程
一、BIOS初始化 basic input system
- 检查硬件
- 选择启动设备
二、系统引导程序 GRUB,GRUB2
在Centos7中GRUB已经不再使用
- 扇区中第一个512字节中所包含的内容:
512=446(引导程序)+64(分区表信息16*4)+55AA2字节(结束位)
- GRUB2
/boot/grub2/grub.cfg配置文件
如果误删且还未关机可以用以下命令恢复
gryb2-mkconfig -o grub.cfg
gryb2-mkconfig > grub.cfg
- 引导程序:bootloader
- BIOS将系统的控制权交给应道程序
- 应道程序读取配置文件
(1)在Centos7中程序配置文件位置在/boot/grub2grub.cfg
(2)要到达boot首先要找到boot在哪,在第几块磁盘的第几个分区中。一般Centos7中用set root ='hd0,msdos1'
来表示boot目录在第一块硬盘的第一个分区里面。
(3)指定内核文件
linux16 /boot/vmlinuz.......
(4)boot分区单独分出来的话
linux16 /vmlinuz..... //这里的/代表的就是boot目录,并不是从根。
(5)指定ramdisk文件 驱动
initrd16 /boot/initramfs...
initrd16 /initramfs.....
实验:
执行rm -rf /boot/grub2/grub.cfg
然后重启 reboot
grub> set root='hd0,msdos1' //指定boot目录物理位置
grub> linux16 /boot/vmliuz.... ro root=/dev/vda1 //指定内核文件以只读的模式去读取根linux的文件系统
grub> initrd16 /boot/initramfs-3.... //指定驱动文件位置
grub> boot //继续启动
//环境不同可能会失败。
破解root密码
- 在菜单栏按e
- 找到linux16哪一行 在ro 后面输入 rd.break
- 按ctrl+x继续启动
mount -o remount,rw/sysroot
echo redhat | passwd --stdin root
touch /.autorelabel
selinux 重打标签exit
exit
实验:删除/boot/grub2/* ;
dd if=/dev/zero of=/dev/vda bs=446 count=1
选择光盘启动进入救援模式
chroot /mnt/sysimage //切换到系统根目录
grub2-install /dev/sda //安装grub2到/dev/vda上
grub2-mkconfig -o /boot/grub2/grub.cfg //安装引导程序
选择从本地磁盘启动
硬盘命名规则:
上文实验中,grub2-install /dev/sda 里 sda是什么如果自己做实验应该如何找到自己驱动所在目录看了下面硬盘的命名规则应该大致可以理解,建议做实验前先使用 df
命令查看一下根的结构在就行后续实验。
SSD、SAS、SATA统统属于SCSI接口在linux中用sd来表示,IDE硬盘则是用hd来表示。
第一块SCSI接口类型硬盘:/dev/sda
第二块SCSI接口类型硬盘:/dev/sdb
第一块IDE接口类型硬盘:/dev/hda
第二块IDE接口类型硬盘:/dev/hdb
三、 读取 /etc/fstab
UUID=9bf6b9f7-92ad-441b-848e-0257cbb883d1 / xfs defaults 1 1
UUID=.... 设备名
xfs 文件系统类型
defaults 默认的挂载选项
1 目前没有意义
1 是否检查文件系统0代表不检查1代表第一个检查
- 以读写的方式挂载根文件系统
- 挂载本地其他文件系统
注:如果其他文件系统出现问题则操作系统可能起不来。
启动服务
启动到什么程度,启动到什么级别
读取/etc/systemd/system/default.target 文件,启动相应的服务
启动级别与服务管理
Centos6
运行级别 :init 运行级别
0:关机
1:单用户模式 (绕过密码进入操作系统,不会启动任何的网络服务)
2:多用户模式 但是不启动NFS服务
3:完整的多用户模式,字符界面,不启动图形
4:保留
5:带图形的多用户模式
6:重启 init 6
关机: init 0; shutdown -h now
重启: init 6 ;reboot;shutdown -r now+5min ;poweroff
Centos7
ystemctl isolate graphical.target/multi-user.target 切换运行级别
systemctl get-default 查看下次从哪个级别启动
systemctl set-default graphical.target/multi-user.target 设置下次从哪个级别启动
服务管理
Centos 7
systemctl start|stop|status|restart unit
systemctl enable|disable unit 设置下次开机自启或关闭
systemctl list-units 查看服务当前状态
systemctl list-unit-files 查看服务下次开机的状态
enable 自启
disable 不自启
static 需要时起
mask 永远不会起来