以下操作均在Windows虚拟机下完成
CD-ROM Device启动系统
一般情况下,我们都是从硬盘的启动,直接进入
那么如何调整启动设备
Windows虚拟机操作:如何从光盘启动
方法一:临时设定(手速)
用光盘CD里的资源修复虚拟机
- 出现VMware,按【Esc】键:进入系统启动设备选择列表
- 选择CD-ROM Drive:从光盘启动
方法二:永久设定
- 选择【打开电源时进入固件】
- 选择Boot
- 按【-】或【+】键,将CD-ROM Device 调整到列表的最上面(用+或者-,调整设备启动顺序)
- 保存以上操作:按【F10】键(默认从光盘启动)
(如果想要从硬件启动,则恢复,
如果需要从硬盘启动仍然需要进入bios重新调整)
恢复硬盘启动系统
Linux虚拟机操作:如何从光盘启动
永久设定:
- 输入命令,打开虚拟机管理器 virt-manager
- 点击【灯泡】标志,一般情况下是默认没有光驱
- 添加光驱,【Add Hardware】
- 点击第一行【stronge】,写入共享目录(镜像)的路径选择【CD-ROM Device】,类型是【SATA】
- 在【SATA CDROM1】中写入镜像的路径
- 在【Boot Options】中选择【CD-ROM Device】将CD放到最上面
- 【Apply】
Q:从硬件启动和CD启动,有什么区别?
A:从光盘CD启动系统:读取光驱的信息启动。从硬件启动系统:最开始硬盘是没有数据的,从CD 读取后才有了数据
系统挽救模式
#查看设备分区
fdisk -l
#/dev/sda1 * 代表设备上有引导记录,有mbr记录
#清空系统/dev/sda上的mbr数据
dd if=/dev/zero of=/dev/sda bs=446 count=1
#dd:截取命令
#if=/dev/zero:截取模板
#of=/dev/sda:存放数据的位置
#bs=446:数据块的大小
#count=1:截取块的个数
#看清 * 所在的位置是/dev/sda
Booting:当系统引导程序被破坏,系统无法识别重启的位置,重启不了系统
解决方法:
- 关机;
- 从CD启动系统;
- 选择【Troubleshooting】
- 【Rescue a Red Hat Enterprise Linux system】进入挽救模式
(1)Contiue:进入挽救模式
(2)Read-only mount:只读
(3)Skip to shell:不挂载
(4)Quit(Reboot):退出 - 选择(1)
- 回车:转换真实系统,从光驱到真实系统的磁盘中;得到一个shell
- 键入命令 chroot /mnt/sysimage :切换到真实系统,/mnt/sysimage是真实的原来的系统的存放目录
- fdisk -l:有 * 的是设备引导分区
- grub2-install /dev/vda:安装mbr到/dev/sda上,引导分区的设备
- 显示结果 No error ,表示成功
- 调整启动顺序,【打开电源时进入固件:选择Hard Device】,从硬盘启动
Q:fdisk -的显示结果,l看 * 所在的设备是/dev/sda1,在写grub2-instal /dev/sda l命令的的时候不需要给sda加1吗?
A:订正!sda1是分区,sda是设备,要安装mbr到设备上
修复系统引导文件
cd /boot/loader/entries/
#引导文件丢失,可以手动引导恢复
rm -fr /boot/loader/entries/*
#确定根分区所在的设备,确定boot分区所在的系统设备
#sda1是boot分区,sda3是根分区
df
#引导文件丢失,无法完成自动引导,需要手动恢复
#加载硬盘:第一块硬盘,指定引导分区的设备,指定引导分区的位置是第一块设备,第二个是指第一个硬盘(sda1)的第一个分区中
set root='hd0,msdos1'
#root:指定引导设备;
#hd0:指定引导分区的位置为第一块硬盘;
#msdos1:指定引导分区在第一块硬盘的第一个分区
Linux16 /vmlinuz-4.18.0-193.el8.x86_64 ro root=/dev/sda3
#ro:只读;
#root=/dev/sda3:根分区的位置
initrd /initramfs-4.18.0-193.el8.x86_64.img
boot
#回车,系统自行启动
指定系统启动分区
- 恢复引导文件
进入系统,并不代表系统引导已经恢复,那些文件依旧不存在
ls /boot/loader/entries
#恢复那些引导文件
#查看内核版本,4.18.0-193.el8.x86_64
uname -r
#出现报错
kernel-install add 4.18.0-193.el8.x86_64 /boot/vmlinuz-4.18.0-193.el8.x86_64
#提示报错:系统安装好后,会在/usr。。。。下产生这个文件
#解决报错:把该文件复制到/boot下
cp /usr/lib/modules/4.18.0-193.el8.x86_64/bls.conf /boot/
#第二次尝试,成功
kernel-install add 4.18.0-193.el8.x86_64 /boot/vmlinuz-4.18.0-193.el8.x86_64
ls /boot/loader/entries/
#引导文件存在
修复内核文件
#内核文件在/boot
ls /boot
#删除vmlinuz内核文件,reboot系统无法启动
rm -fr vmlinuz-4.18.0-193.el8.x86_64.img
reboot
【打开电源时进入固件:选择CD Device】
#进入挽救模式:光盘引导
#选择(1)
#回车
#进入硬件
chroot /mnt/sysimage/
#挂载光驱
mount /dev/cdrom /media/
cd /media/BaseOS/Packeags
#复制内核安装包到/mnt
cp kernel-core-4.18.0-193.el8.x86_64.rpm /mnt/
cd /mnt
rpm2cpio kernel-core-4.18.0-193.el8.x86_64.rpm | cpio -id
ls
cd lib/
ls
cd modules/
ls
cd 4.18.0-193.el8.x86_64/
ls
#找到需要的内核文件名称vmlinuz
cp /mnt/lib/modules/4.18.0-193.el8.x86_64/vmlinuz /boot/vmlinuz-4.18.0-193.el8.x86_64
#两次exit
exit
exit
系统重启,还需要调整
断电
【打开电源时进入固件:选择Hard Device】
hard device硬盘启动(不是蓝色)
(进度条:selinux开启,等待)
修复系统初始化镜像文件
加载内核完毕后,生成一个加载的文件:系统初始化镜像文件
它丢失后,系统仍旧无法启动
【打开电源时进入固件:选择CD Device(蓝色)】
#进入挽救模式
#选择(1)
#回车
#进入真实系统硬件
chroot /mnt/sysimage/
#得到一个shell
cd /boot
ls
#可以查看说明mkinitrd --help
mkinitrd /boot/initramfs-4.18.0-193.el8.x86_64.img 4.18.0-193.el8.x86_64
ls /boot
生成成功
exit
exit
断电
【打开电源时进入固件:选择Hard Device(灰色)】
#启动系统
cd /boot
ls
初始化镜像文件生成完成
Q1:chroot /mnt/sysimage/
A1:挽救模式是从光盘启动,不是在硬盘。chroot之后,才可以进入真实系统(硬盘)。
Q2:为什么sysimage后面要加/
A2:可加/,可不加/,系统会自己去设别。一般,不加/,是文件;加上/,是目录。
Q3:后面加/是bash,不加是sh,有什么区别吗
A3:sh和bash是两种不同的shell
系统启动脚本
- 读取系统的启动级别
#系统启动脚本在此目录中
cd /etc/systemd/system/
ls
#系统启动级别的链接default.target
#系统所有服务的启动脚本multi-user.target.wants
cd multi-user.target.wants/
ls
#都是一些链接,比如:sshd.service
- 系统服务开机启动方式的原理:
关闭sshd:systemctl disable --now sshd将/etc/systemd/system/muli-user.target.wants目录中的sshd.service子链接移出目录
开启sshd:systemctl enable --now sshd将链接sshd.service添加到multi-user.target.wants
(无关:Remove:输出)
#启动级别记录在/etc/systemd/system/default.target(链接)
ll /etc/systemd/system/default.target
#进入无线重启模式:一直重启
systemctl set-default reboot.target
reboot
- 操作:怎么挽救无线重启模式
(1)【硬件启动(灰色)】
(2)按【e】键,进入编辑模式
(3)编辑第4行,修改系统启动级别为5(图形:5,无图形:3),写入5,换行符自动生成(0,关机,6重启)
(4)【ctrl+x】键
- 下次开机依旧会无限重启,所以完成以下操作
进入系统,执行命令
systemctl set-default graphical.target
reboot
(无关:find / -name *.iso,找文件)
超级用户密码忘记
超级用户密码忘记:系统单用户去破解
- 断电
(1)【硬件启动(灰色)】
(2)【e】键,进入编辑模式
(3)ro改成:rw rd.break:ro是指只读,rw是读写,从只读挂载根设备变成读写挂载,rd.break:系统内核加载完成之后,终止系统启动
(4)【ctrl+x】启动
#进入系统单用户模式,当前模式,默认使用root用户root:switch_root:/#
#转换成真实系统的shell
chroot /sysroot/
#自动开启一个shell
#设定超级用户密码
echo westos123 | paswd --stdin root
touch /.autorelable
#让系统中内核级加强型防火墙selinux重新初始化,若更改密码后selinux未被重新初始化,会阻止新密码生成
(此操作只在selinux开启的情况下进行)
(无关:去机房破解,因为有防火墙 —— 物理安全)