技术解析

先修好 Arch 再来修 Windows
0
2021-07-01 19:50:44
idczone
先是 Arch 滚挂一次,然后重装了,把 C 盘前面的那个系统保留分区挂载到 /boot 下面,装好 Archlinux 后发现 GRUB 识别不到原来的 Windows ,我看了下 /boot/目录,下面只有
grub
initramfs-linux-fallback.img
initramfs-linux.img
vmlinuz-linux
这几个文件,我想可能是不小心把 /boot 给格式化了。

不知道能不能救回来, Win7 好久没用了,重装一次 Windows 折腾太多,所以不知道能不能只修复 Grub 菜单?

______________________________
刚刚手快按了一次回车,结果直接发布了,没想到还是可以编辑的,所以抱歉第一楼我自己抢了
先是 Arch 滚挂一次,然后重装了,把 C 盘前面的那个分区挂载到 /boot 下面,装好 Archlinux 后发现 GRUB 识别不到原来的 Windows ,我看了下 /boot/目录,下面只有
grub
initramfs-linux-fallback.img
initramfs-linux.img
vmlinuz-linux
这几个文件,我想可能是不小心把 /boot 给格式化了。
不知道能不能救回来, Win7 好久没用了,重装一次 Windows 折腾太多,所以不知道能不能只修复 Grub 菜单?

重新写一下 grub/grub.cfg 文件.
加上你的 windows 下所谓 C 盘的分区 entity 就行了.
具体网上一搜一吨...关键词 'grub 启动 windows'

os-prober 装了没?

要 fat32 分区 y 。。。
pe 自带 bcdboot 命令
bcdboot x:\windows /s y:\ /f uefi/bios/all
/f 与 /s 命令一起使用,指定目标系统分区
的固件类型。 的选项是 'UEFI'、
'BIOS' 或 'ALL'。
/s 指定一个可选的卷号参数,该参数用于指定
要将启动环境文件复制到的目标系统
分区。默认值为固件所标识的
系统分区。

mbr 被重写了呗。
grub 参数需要 parttool (hd0,msdosN) boot+,譬如
menuentry "Microsoft Windows 8.1" {
insmod chain
set root=(hd0,msdos3)
parttool (hd0,msdos3) boot+
chainloader +1
}

建议双系统都 UEFI 吧
启动没这些麻烦


不重装系统的情况下可以改成 UEFI 吗?
还有上面那个方法只写 GRUB 就可以了吗?不用向 /boot 分区拷入什么引导文件之类的?

1. 不重装,据我所知,貌似不行
2. 不需要拷入说明引导文件,可能,你需要 winpe 里的 bcdboot 去复制下启动文件至 c 盘根目录
譬如
bcdboot c:\windows /s c:

os-prober 不好使的时候,试试安装一下 lsb_release 这个包,再运行 os-prober,实测有用


我是能识别 Linux ,识别不了 Windows ,这个也有用吗?

refind

瞎折腾 浪费时间。。

不是吹 arch 不会挂的?

arch 只挂过一次,只因为手贱降级了某个系统库,不过 live cd + chroot 修好了,后面就没挂过

你的 arch 应该能启动,/boot 里没有问题。
windows 需要一个文件才能启动,从安装镜像里找 bootx64.efi 这个文件,把它按原样放到 esp 里,重新运行 grub-mkconfig 。
另外你为何需要 windows :)

live cd/usb 启动,试下 https://help.ubuntu.com/community/Boot-Repair


那要做个 ubuntu 的启动盘了? Arch 下面好像没有这个 Boot-repair

直接有 cd ,做启动盘或者 mount iso 找下有没可用的工具
https://sourceforge.net/projects/boot-repair-cd/files/

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服