windows10 双系统安装后,grub2 引导修复(亲自实验);grub2 命令行 手动加载内核;fedora 29 系统grub2引导修复;
<p>之前在本机有fedora 29的系统,但是由于错误安装,把windows10 启动安装到 linux 所在的硬盘中,导致原来的 efi中的grub启动被破坏,不能进入到linux中;我首先通过磁盘精灵,把efi中启动文件拷贝到现有的windows安装盘中,重新启动后成功从新的efi分区进入windows; 然后开始进行恢复fedora系统;这时候,有两种办法,一种是重新安装 linux; 另外一种方法就是重新修复grub引导;因为对linux比较了解,我选择了后者;首先参考了几篇已经实践的博客;</p><p><strong>Fedora 29 引导修复:</strong></p>
<ul>
<li><strong>创建修复环境:</strong>
<ul>
<li>制作live cd 或者 启动盘;</li>
<li>启动进入live os </li>
<li>sudo -i </li>
</ul>
</li>
<li><strong>创建系统chroot环境:</strong>
<ul>
<li>mkdir -p /mnt/fedora</li>
<li>mount /dev/fedora/root /mnt/fedora</li>
<li>mount /dev/sda2 /mnt/fedora/boot (挂载boot, 如果boot 分区单独分区的话)</li>
<li>mount -t proc proc /mnt/fedora/proc</li>
<li>mount -o bind /dev /mnt/fedora/dev</li>
<li>mount -o bind /sys /mnt/fedora/sys</li>
<li>mount -t devpts devpts /mnt/fedora/dev/pts</li>
<li>mount -t efivarfs efivarfs /mnt/fedora/sys/firmware/efi/efivars</li>
<li>chroot /mnt/fedora</li>
</ul>
</li>
<li><strong>更新修复的环境并安装grub2:</strong>
<ul>
<li>yum makecache </li>
<li>dnf install grub2-efi grub2-efi-x64-modules shim (安装系统为 64位) </li>
<li>grub2-install --recheck /dev/sda1 (sda1 为efi 分区)</li>
<li>exit (退出chroot, 好像我在里面使用 grub2-mkconfig 一直阻塞) </li>
</ul>
</li>
<li><strong>自动生成grub.cfg,用于启动,默认生成的文件肯能启动不成功,建议手动装载linux内核:</strong>
<ul>
<li>mount /dev/sda2 /boot (启动分区 sda2) </li>
<li>mkdir /mnt/efi </li>
<li>mount /dev/sda1 /mnt/efi (efi分区 sda1) </li>
<li>
<p>grub2-mkconfig -o /mnt/efi/EFI/fedora/grub.cfg(efi启动时,可以索引到其他磁盘上的系统,比如windows10 系统等)</p>
</li>
<li>
<p>grub2-mkconfig -o /boot/grub2/grub.cfg </p>
</li>
</ul>
</li>
<li><strong>grub2 手动引导加载linux内核:参考 Using the GRUB2 boot prompt</strong>
<ul>
<li>insmod part_gpt</li>
<li>insmod ext2</li>
<li>insmod lvm</li>
<li>insmod xfs</li>
<li>ls </li>
<li>set root=(hd0,gpt2) </li>
<li>linux (hd0,gpt1)/vmlinuz-5.0.0-1.fc16.i686 root=/dev/dm-2 rhgb quiet selinux=0 (此处参数可以参考)</li>
<li>initrd (hd0,gpt1)/initramfs-5.0.0-1.fc16.i686.img (此处参考书可以参考)</li>
<li>boot(重新启动)</li>
<li>grub2-mkconfig -o /boot/grub2/grub.cfg 进入系统后,重新修复引导;</li>
<li>当然也可以在之前自动生成的启动项的基础上修改;在grub2 启动时使用 e 快捷键进入修改界面,并使用ctrl+x执行修改结果;</li>
</ul>
</li>
<li><strong>清理现场:</strong>
<ul>
<li>reboot;至此,重启并拔掉live usb,使用efi模式引导修复的系统,完成启动;</li>
<li><strong>注意:</strong>此时windows efi的引导还在,只是被grub2覆盖了, 先启动grub2;当然我们可以使用磁盘精灵;将windows efi 拷贝到另外一个单独的分区;</li>
<li>启动后需要重新创建 grub2 cfg;使用上述 grub2-mkconfig 命令,在 /boot/efi/EFI/fedora/grub.cfg 和 /boot/grub2/grub.cfg 两个位置覆盖更新;</li>
</ul>
</li>
<li>最后,祝您使用愉快!<strong>此教程总结自实际修复过程中,如果您有问题,欢迎留言咨询;</strong>我最后是在自动生成的项目的基础上,结合手动修改引导成功的;</li>
</ul>
<p>如果你对linux的启动机制,以及mbr,efi 等不是很了解;建议还是重新安装系统为好,防止把现有的windows系统搞坏;当前很多的pc机,都是基于冯诺依曼结构设计,计算机的中心是存储;所以要保护好磁盘上的分区数据不被破坏;重新划分磁盘的时候,也要多加小心;</p>
<p>保持更新,转载请注明出处:https://www.cnblogs.com/xuyaowen/p/grub-rebuild-after-installed-windows.html ;更多内容请关注cnblogs.com/xuyaowen; </p>
<p><strong>参考链接:</strong></p>
<ul>
<li>https://www.cnblogs.com/younc/p/5033995.html (可以参考)</li>
<li>https://my.oschina.net/NorthOcean/blog/192131?fromerr=05yQWmOZ (可以参考,但不完全适合)</li>
<li>https://blog.51cto.com/shenghao/1212813?source=drt (可以参考,但是有错误)</li>
<li>https://docs.pagure.org/docs-fedora/the-grub2-bootloader.html (我使用的fedora29, 使用此文档最好, 但是此文章比较复杂,修复引导请看我自己的操作记录)</li>
<li>https://blog.51cto.com/shenghao/1212813?source=drt (可以参考,提供一种思路)</li>
</ul>
</div>
<div id="MySignature" role="contentinfo">
https://github.com/yaowenxu<br><br>
来源:https://www.cnblogs.com/xuyaowen/p/grub-rebuild-after-installed-windows.html
頁:
[1]