
首先要在bios里面关闭兼容模式,csm 关了。安全启动也关了。然后能选的都选uefi。
设好之后,才是纯粹的uefi环境。
为什么uefi 引导会比较方便呢?因为以前是所有 *** 作系统,都争夺一块小区域,现在uefi直接给你一个引导分区,每个系统只要把引导文件按照规定放在各自的文件夹,就ok了,大家相互可以不认识,也可以不知道对方是谁,也可以不知道怎么引导对方。这岂不是很完美?
esp就是这么一个地方,它实际上是一个普通的fat16格式(或fat32)分区(win98之前的默认格式),这种格式,几乎每个 *** 作系统都认识,都能 *** 作,所以就很便利。但是为了避免受到破坏,进入系统之后,系统会对其进行隐藏,所以要用特定的工具来访问它。
知道原理之后,就很容易设计引导方案了。
事实上,对windows来说,引导只需要两个文件,一个是引导程序,一个是配置文件。其中引导程序,只需要复制,而配置文件叫bcd,通过一个叫easybcd的工具可以配置。
当然,第一步你的硬盘必须先格式化为gpt格式的。但是如果你已经格式化了,也没关系,可以通过diskgenius的免费软件来转换成gpt格式, *** 作得当不会破坏数据。
esp分区新建如下目录结构:
efi/boot/
efi/microsoft/boot/
将windows系统里面的bootmgfw.efi 复制到第二个路径下,把配置好的bcd也复制过去。然后把bootmgfw.efi 复制一份,改名bootx64.efi复制到第一条路径下。
就这么简单,甚至第二步也不是必须的。bootx64.efi这里是计算机默认启动的路径,而microsoft下面的,是微软这个品牌的系统所使用的启动路径,如果bios足够聪明,它会直接在microsoft下面找引导程序.efi。
对于linux来说,同样的,它也可以建立一个linux的文件夹,或者随便什么名字的文件夹,把引导文件放进去就可以了。
特别的,bios 内部的存储区域还可以存储相关的引导路径信息(需要相关工具来设置这块区域),方便用户选择。所以为何有些系统的引导文件布局和以上有所不同。
除了esp分区,其他任何分区,都可以独立的被引导,甚至可以跨设备引导,因为gpt用一个很长的标记标识所有设备,可以认为是无冲突,独一无二的,因此理论上,不管引导文件存在那里,从那里开始引导,只要给出正确的设备号,都能找到对应的设备,从而进行正确的引导。因此,理论上当前设备esp有没有,也不是关键,只要在某个设备上有,这个引导程序可以引导所有连接到硬件系统的设备。这也是uefi 和gpt分区系统真正强大的地方,真正做到了随意引导,与位置无关。
比如我们可以把引导放在一个u盘里面,然后插上这个u盘才能使用电脑,这也是挺有趣的实践。不过我没试过。大家可以尝试一下。
tags: archlinux, win10事情是这样的,我两块硬盘分别安装win10 和Archlinux系统,引导分区也分别为每块硬盘的第一个分区,每次开机时会自动进入win10 的引导系统,而不是arch的grub2引导。进入grub2时只需要开机时按住F9选择arch的boot option即可。
然后,由于自己的折腾把win10和archlinux的引导都搞挂了。。
那么就先修复了再折腾吧(不修复进不了系统。。)
手头有一个wePE启动U盘,使用U盘启动进入PE系统后打开 UEFI修复引导,然后点两下就行了,是不是这样??
反正用那个修复了好几次都不行,最后呢只能打开WePE的命令行工具用bcdboot命令来修复了
d是我的安装盘,h是挂载的windows EFI分区
另外,附送链接 win8/10 bcdboot引导修复命令的原理和使用方法
Archlinux的修复就没那么容易了 因为我把 /boot/下的vmlinuz-linux 误删掉了,而另外两个initramfs-linux.img 和inittramfs-linux-fallback.img也不幸被删掉了。。
我是这样解决的 进入windows系统 重新使用rufs(不知道是不是叫这个,忘记名字了,arch的wiki上推荐的)将最新的archiso刻入U盘,重启进入
archiso,这个时候只需要按照installation guide来就行了(~~~)
好吧,事实不是这样的,只需要
然后呢,就是
在这里,你可以安装grub
等待install 成功,然后reinstall linux就行了
reinstall 选y就可以等待编译内核,生成压缩内核文件和初始化内存文件成功就OK了。
退出arch-chroot 重启进入Arch即可。
由于系统更新后,内核版本不同导致grub找不到新的内核从而无法启动。
解决方法:
1、重装系统(没有什么是重装解决不了的,如果有,那就再装一次(狗头保命)!)
2、liveUSB解决:重新将新的内核挂到相应的位置
准备工作:
开始修复:
首先通过liveUSB启动,在liveUSB的中我们原先的系统文件是保存在电脑的磁盘上的,默认不会被挂载,所以我们先要把除了 /home 以外的系统目录挂载到当前的任意目录,我们选择挂载在 /mnt 中:
随后是关键的一步,因为在UEFI下安装Manjaro Linux时我们都额外为 /boot/efi/ 进行了单独的分区,所以我们这里也需要挂载它。默认挂载根目录时并不会挂载这个目录,因为它们不在同一个分区,我的efi目录根据lsblk显示位于 /dev/sda1
所以我们把efi目录也挂载进文件系统,否则内核无法重新安装:
另外对于一些虚拟目录,例如 /dev 和 /sys ,我们也需要手动绑定,否则chroot后运行pacman会出错:
这样系统文件就准备完成了,现在我们在挂载目录下chroot,然后重新安装内核:
这样的话重新启动就可以找到新的内核了!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)