linux系统下的引导过程和修复

一、如何从光盘启动

在windows的vm虚拟机:
在点开开启虚拟机后,在界面出现vmware时按esc键,进入启动设备选择列表,选择CD-ROMDrive,即从光盘启动(因为开启过程很快速,所以需集中精神)
在这里插入图片描述
在这里插入图片描述
若手速不够快,点击菜单栏选择开机旁边的选项,选择打开电源时进入固件,进入boot界面,选择CD-ROMDrive即可(选择时+表示向上移动,-表示向下移动,把此选项放于第一个表示选它作为第一种启动顺序,按F10保存并退出)
#但注意,此方式会使得每次进入都是从光盘启动,若需回到从硬盘启动,仍需进入调整,将hard drive放于第一个即可)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
linux系统中:
输入virt-manager
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、当系统引导程序被破坏

fdisk -l #查看设备
在这里插入图片描述

#此中的/dev/sda代表设备名称
#dev/sda1、2、3代表分区,*代表设备上的mbr记录

dd if=/dev/zero of=/dev/sda bs=446 count=1
#截取命令,if指的是截获模板,of后是存放数据位置,bs后是数据大小,count 后是截取块数
#从系统的无线0字节中截取一块大小为446byte 的数据放到sda硬盘中
在这里插入图片描述
此时会发现重启无法进行引导,因为系统引导程序被破坏,系统无法识别从哪里开始读取数据

恢复:
1、此时应该先关机,然后从光盘启动
2、先选择Troubleshooting,enter进入,再选择第二个Rescue系统,enter进入系统挽救模式。
在这里插入图片描述
在这里插入图片描述

此时看到的四个选项意为:
1)进入挽救模式
2)只读进入挽救模式
3)直接得到shell,不挂载
4)退出
在这里插入图片描述
4、选择第一个
在这里插入图片描述

5、输入
chroot /mnt/sysimage/ #转换系统从光驱到真实的磁盘之中
在这里插入图片描述
6、输入
grub2-install /dev/vda
#安装mbr ,其中的dev/vda是有引导分区的设备名称,可根据自己主机的真实情况来定
在这里插入图片描述
#看到no error reported表示成功

7、调整启动顺序,从硬盘启动,此时可看到引导文件表示引导程序已经修复
在这里插入图片描述

三、引导文件丢失

/boot/loader/entries/ #子引导文件所在目录
可以先删除子引导文件xxxx.conf
在这里插入图片描述

df
找到根分区所在系统设备,boot分区所在系统设备
在这里插入图片描述
此时重启出现grub
说明引导文件丢失,需手动填写引导信息
在这里插入图片描述

修复:
1、开机
2、输入
set root=‘hd0,msdos1’ #root指定引导设备,hd0指定引导分区的位置为第一块硬盘
#msdos1指定引导分区在第一个硬盘的第一个分区之中(这些可根据自己系统而确定)
#总体是指定系统启动分区
在这里插入图片描述
3、输入(可用tab)键补齐
linux16 /vmlinuz-4.18.0-193.el8.x86_64 ro root=/dev/vda3
#linux16 /vmlinuz-4.18.0-193.el8.x86_64指定系统内核文件,ro指只读挂载,root=/dev/vda3指挂载根分区设备
#整体是指定系统启动内核,只读挂载分区
在这里插入图片描述
4、输入
initrd16 /initramfs-4.18.0-193.el8.x86_64.img
#加载系统初始化镜像
在这里插入图片描述
5、引导完成,重新启动
boot
在这里插入图片描述
6、uname -r #看系统内核版本
在这里插入图片描述

此时仍能看到/boot/loader/entries/下仍是没有引导文件
在这里插入图片描述
7、用dnf whatprovides */bls.conf
#查找bls文件位置在哪里
或者直接复制
cp /usr/lib/modules/4.18.0-193.el8.x86_64/bls.conf (tab补齐) /boot/
在这里插入图片描述
8、kernel-install add 4.18.0-193.el8.x86_64 /boot/vmliunz-4.18.0-193.el8.x86_64 #添加引导文件
在这里插入图片描述
9、可看到引导文件恢复成功,而且系统改成硬盘启动,重启没有任何问题
在这里插入图片描述
/boot/grub2/grub.cfg #总引导文件
不小心删除总引导文件

恢复:
重启后状态和删除子引导文件状态同,同样需要手动引导,reboot后
在系统执行grub2-mkconfig > /boot/grub2/grub.cfg可恢复
在这里插入图片描述

四、删除内核文件

vmlinuz- 4.18.0-193.el8.x86_64 #为内核文件
在这里插入图片描述
此时系统因为缺少内核文件不能开机:
在这里插入图片描述
修复:
1、用光盘启动,进入挽救模式,然后转换系统从光驱到真实的磁盘之中
在这里插入图片描述
在这里插入图片描述
2、输入
mount /dev/cdrom /media/ #挂载仓库
cd /media/BaseOS/Packages/
cp kernel-core-4.18.0-193.el8.x86_64.rpm /mnt/ #复制内核安装包到/mnt/之中
在这里插入图片描述
3、cd /mnt/
rpm2cpio kernel-core-4.18.0-193.el8.x86_64.rpm | cpio -id #解压内核安装包
在这里插入图片描述
4、cd lib/
cd modules/
cd 4.18.0-193.el8.x86_64/
ls #此时可查看到内核文件vmlinuz
在这里插入图片描述
6、
ls /boot/loader/entires/
#此时可以查看到一个.conf的文件(每台电脑不一样)
cat /boot/loader/entires/xxxxxxxxxxx.conf #查看此文件,可以看到内核文件的名称
在这里插入图片描述
7、cp /mnt/lib/modules/4.18.0-193.el8.x86_64/vmlinuz /boot/内核文件的名称
#注意此处填入的内核文件的名称,应该和你在上面查看到的一摸一样
在这里插入图片描述
在这里插入图片描述

8、填入exit两次退出,改成硬盘启动重启,此时系统可正常开启,可查看/boot/下,已有内核文件存在
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五、删除系统初始化镜像

系统初始化镜像在/boot/下,名称后缀为.img
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
修复:
1、仍需进入挽救模式,进入真实主机
在这里插入图片描述
2、可直接求助
mkinitrd --help
在这里插入图片描述
3、利用上面求助得到直接生成
mkinitrd /boot/initrafms-4.18.0-193.el8.x86_64.img 4.18.0-193.el8.x86_64
#使用命令直接生成
4、ls /boot/
能看到已经生成的文件
在这里插入图片描述
5、改成硬盘启动,此时能正常开启
在这里插入图片描述
在这里插入图片描述

六、系统启动级别

0 #关机
1 #单用户
2、3、4 #无图形网络模式
5 #有图形网络模式
6 #重启

/etc/systemd/system/
#存放系统启动脚本
在这里插入图片描述

/etc/systemd/system/default.target
#系统启动级别的脚本链接

/etc/systemd/system/multi-user.target.wants
#系统所有服务的启动脚本链接
#当我们设定服务开机启动或不启动时,系统会在/etc/systemd/system/multi-user.target.wants中添加或删除软连接
#系统开机启动服务原理
在这里插入图片描述
设置让系统开机后进入无限重启模式
systemctl set-default reboot.target
在这里插入图片描述
reboot之后,发现系统一直在重启
在这里插入图片描述

修复:

1、在启动首页面按e,进入编辑模式
在这里插入图片描述

2、可看到编辑界面一共五行
在第四行最后面,可以指定启动级别,输入5
#更改系统启动级别为五
按ctrl和x
在这里插入图片描述
3、此时可以进入系统,执行
systemctl set-default grapical.terget
在这里插入图片描述
在这里插入图片描述
4、此时重启可看到问题被解决

七、超级用户忘记密码

修复:
1、关机,仍是在启动首页面按e进入编辑模式,在第四行,将ro换成rw(从只读挂载设备,变成读写挂载设备)
rd.break #在系统内核加载完成后终止系统启动
在这里插入图片描述
2、按ctrl 加x,进入单用户模式(此时模式下默认root用户登录)
在这里插入图片描述
3、执行chroot /sysroot/
进入真实系统shell
4、执行
echo westos | passwd --stdin root
#更改密码为westos
在这里插入图片描述
5、执行
touch /.autorelabel
#让系统中内核级加强型火墙(selinux),重新初始化,如果更改密码后selinux未被重新初始化会阻止新密码生效(注意此操作只有在selinux开启时需要)
在这里插入图片描述
6、按两次exit退出
在这里插入图片描述
7、此时可输入自己更改的密码进入系统

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
嵌入式Linux系统开发是在嵌入式设备上构建和运行Linux操作系统过程。这种开发涉及到硬件和软件的交互,以实现特定的功能和需求。下面是一些嵌入式Linux系统开发的关键步骤和技术: 1. 硬件选择:选择适合项目需求的硬件平台,包括处理器、存储器、传感器等。 2. Linux内核裁剪:根据设备的资源限制和功能需求,对Linux内核进行裁剪,去除不必要的功能,以减小系统的占用空间和提高性能。 3. 设备驱动程序开发:根据硬件平台的特性,编写设备驱动程序,使Linux内核能够正确地与硬件交互。 4. 引导加载程序(Bootloader):选择或开发适合硬件平台的引导加载程序来启动Linux内核。 5. 文件系统:选择或构建适合项目需求的文件系统,包括根文件系统(Root File System)和应用程序文件系统。 6. 应用程序开发:基于Linux操作系统,开发嵌入式应用程序来实现设备的功能和特性。 7. 调试和测试:在实际硬件上进行调试和测试,确保系统各个组件的正常运行,并修复可能出现的问题。 8. 部署和维护:将开发完成的系统部署到目标设备上,并进行系统的维护和更新。 在嵌入式Linux系统开发中,还需要掌握一些相关的技术和工具,如交叉编译、调试工具(如GDB)、版本控制系统(如Git)等。此外,了解Linux内核的原理和机制,有助于更好地理解和解决开发过程中的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值