1 Linux 系统启动的过程
第一步:POST 系统加电自检,用BIOS通电自动检测CPU、网卡、内存和硬盘等设备是否工作正常,不正常就会报警。
第二步:启动MBR(master board record)主引导记录,磁盘通电前在半径中间处,启动后会寻找首扇区的MBR,
第三步:开启系统引导程序OS loader,centos 7使用的OS loader为grub2
第四步:显示grub2菜单,上面的是正常操作系统,下面的是急救模式,不选的话就会在timeout时就会自动进入系统
第五步:用户选择模式或timeout后,grub2加载内核和initramfs到内存中
第六步:grub2将控制权交给内核kernel
第七步:初始化所有硬件设备,启动PID为1的最高进程/sbin/init命令
第八步:初始化系统所有可用服务单元并挂载分区
第九步:从内存中的根分区切换至真实根分区,第1-8步是在内存中进行
第十步:启动所有服务
注:第三步和第八步容易出现问题
2 查看target相关信息
systemctl list-dependencies 目标target //查看指定的target所需的关联服务或其他target
systemctl list-units --type=target --all //查看系统所有可用的target
systemctl list-unit-files --type=target --all //查看安装到磁盘上的所有target
3 设置系统的默认启动级别
1)查看系统的默认启动级别 #systemctl get-default
2)设置系统的默认启动级别
法1:#systemctl set-default 运行级别.target
例如:systemctl set-default graphical.target 。
//以图形化界面启动,前提是安装了图形化界面,没安装图形化界面就无法启动。
法2:ln -s ‘/user/lib/systemd/system/目标.target’ ‘/etc/systemd/system/default.target’
例如:ln -sf ‘/user/lib/systemd/system/multi-user.target’ ‘/etc/systemd/system/default.target’
//多用户级别启动,多用户级别就是我们常用的命令行模式,也就是字符级别
3)切换当前系统的运行级别: init 运行级别
Init 5 切换到图形界面 init 3 切换到字符界面
4) systemctl isolate 运行级别.target
systemctl isolate graphical.target //切换到图形化界面
systemctl isolate multi-user.target //切换到字符界面
5)通过grub2菜单切换启动级别,临时进入其他级别,不能立即切换,得重启。操作步骤如下:
重启,在看到grub2 的启动菜单时按键盘上下键取消读秒,选中需要进入的操作系统,然后按e编辑,找到Linux 16 字段,在它后面输入systemd.unit=目标级别.target,如 systemd.unit=graphical.target 。然后按Ctrl+x即可临时切换至图形化运行级别。
4 常见错误及处理方式
1)/ect/fstab 文件编辑不正确。
系统无法启动,将会进入emergency模式,输入密码后进入该模式,更改/etc/fstab文件至正确即可。
注意:
A)查看系统上次启动失败的错误日志:journalctl -b 1 -p err
B)查看系统本次启动失败的错误日志:journalctl -b 0 -p err
2)采用 debug shell 调试系统
开启debug shell : systemctl start debug-shell
开机启动debug shell : systemctl enable debug-shell
重启系统: reboot 开机后Alt+F9
关闭debug shell : systemctl stop debug-shell
开机不自启debug shell: systemctl disable debug-shell
3)grub2配置文件丢失,导致grub2 程序无法启动,进而无法引导系统。即卡在第三步了。
A) 配置文件位置:/boot/grub2/grub.cfg
B) 手动加载内核与initramfs至内存中:
grub > insmod /grub2/i386-pc/linux.mod
grub > set root=hd0,msdos1
grub > linux16 /vmlinuz-内核版本号 root=/dev/sda3
grub > initrd16 /initramfs-内核版本号.img
grub > boot
注意:
***查看分区 ls 查看分区下的目录 ls 分区/ //找boot在哪
***要把虚拟机USB接口那个添加上,否则还是不能启动。
C) 重新生成grub2配置文件: grub2-mkconfig > /boot/grub2/grub.cfg
4)重设root密码:通过grub2菜单重设root密码
第一步:重启服务器,在grub2菜单出现时按键盘上下键取消读秒,选择需要进入的操作系统(即上面那个),按e编辑。
第二步:找到Linux16字段,在后面添加: rd.break //*ramdisk ,按Ctrl+x。
第三步:进入switch-root命令行,重新以读写方式挂载根分区
mount /sysroot -o remount,rw。
第四步:进入bash命令行,修改root密码:chroot /sysroot /bin/bash 然后passwd root
第五步:退出bash命令行,重启 :exit ;reboot。
5)对grub2菜单明文加密
第一步:编辑文件 vim /etc/grub.d/00_header,文件末尾添加
cat << EOF
set superusers=”用户名”
password 用户名 密码
第二步:重新生成grub.cfg:grub2-mkconfig > /boot/grub2/grub.cfg
6)对grub2菜单密文加密
第一步:生成加密密码 grub2-mkpasswd-pbkdf2
第二步:编辑grub文件,文件末尾添加:
cat << EOF
set superusers=”用户名”
password 用户名 密码
第三步:重新生成grub.cfg:grub2-mkconfig > /boot/grub2/grub.cfg
注:如何调用字符界面下的鼠标
第一步:安装软件 yum install gpm -y (如果没有安装源,需要手动配置)
第二步:启动服务 systemctl start gpm 开机自启 systemctl enable gpm
第三步:选中即是复制内容,右键即可粘贴
7)通过安装光盘的troubleshooting重设root密码
第一步:确保虚拟机光盘与光驱连接,真实机需要一张centos OS7的安装光盘
第二步:重启服务器,在BIOS菜单中将光驱设为第一启动项
第三步:服务器启动后将显示安装菜单,选择troubleshooting,下面有个rescue a centos system ,然后按continue然后按OK,再按OK
第四步:进入一个shell命令行,输入chroot /mnt/sysimage,在弹出的shell命令行中修改root密码 passwd root
第五步:退出bash命令行 exit,重启 reboot
第六步:系统重启后,进入BIOS将硬盘设置为第一启动项
8)如何开机自动运行脚本(脚本就是用shell语言写的小程序)
用途:有些东西没有开机自启的命令,比如开机分发广播通知,所以必须写个脚本。
第一步:编辑shell脚本 vim /root/名字.sh
脚本内容如下: #!/bin/bash
echo “hello world” > /root/f1
第二步:给/etc/rc.local文件增加执行权限 chmod a+x /etc/rc.local
第三步:编辑/etc/rc.local文件, vim /etc/rc.local
然后在文件末尾添加 /usr/bin/bash /root/1.sh
第四步:重启测试 reboot
转载请注明出处,谢谢!