安装win7后如何恢复grub2引导启动

安装win7后如何恢复grub2引导启动,第1张

恢复方法:

1、下载最新的grub4dos 2、解压,将grldr这个文件复制到C盘根目录下。(如果Windows7是软激活的话,貌似辩铅唯C盘根目录有个grldr文件,备份后覆盖它) 3、建立boot.ini文件:[boot loader] [operating systems] c:\grldr=”AnythingULike”

4、建立menu.lst文件,用记事本打开,填入:timeout 5 default 0 tittle grub2 find –set-root /boot/grub/core.img kernel /boot/grub/core.img boot

(有boot分区的改为 :find –set-root /grub/激缓core.imgkernel /grub/携培core.img)

5.重启,然后选择新添加的启动项,正确的话会自动转入grub2,再从grub2启动项中进入Ubuntu。

6.在终端输入:

sudo grub-install /dev/sda sudo update-grub

7.在Ubuntu下进入C盘,把boot.ini menu.lst grldr 3个文件删除即可。

注意:如果是软改激活的话,激活会失效,进入Windows要重新输入cd-key,我用的是这枚:236TW-X778T-8MV9F-937GT-QVKBB。

或者把刚刚备份的grldr重新复制到C盘根目录(没实验,不确定是否有效) 如果更改了grldr导致进入不了Windows7,可以用以下命令进入:root (hd0,1) chainloader /bootmgr boot

在grub2里C盘是(hd0,1),如果还没安装成功在grub下,C盘应该是(hd0,0),你可以执行第一步后ls下看下文件是不是C盘的再确定。

这样应该可以进入Windows7。

官网源码地址

首先要从grub官网下在grub2,grub2中包含所有grub2相关的命令,可以用来生成grub2引导,这里着重介绍制作UEFI版本的grub2

内置配置文件为:grub.cfg,内置配源余置文件搜索镇裂磨/EFI/grub/compile.cfg 文件,并将其设定为配置文件。

将其御斗保存在grub2解压的压缩目录下,内容如下:

在grub2压缩包下面解压目录下打开命令行,输入以下命令:下面是编译64的文件

以上生成完毕,在文件夹下会出现一个bootx64.efi文件,BOOTIA32.efi 文件夹,

将其和x86_64-efi、locale文件夹、unicode.pf2一起拷贝到第一个fat/fat32分区,并新建一个grub.cfg。

其中,x86_64-efi为模块目录,locale为地区语言,unicode.pf2为字体,grub.cfg为引导加载的配置文件

目录如下:

FAT/FAT32

#########################

/EFI/Boot/bootx64.efi

/EFI/Boot/BOOTIA32.efi

/EFI/grub/grub.cfg

/EFI/grub/unicode.pf2

/EFI/grub/x86_64-efi/

/EFI/grub/locale/

#####################

x64.cfg内容示例:

[plain] view plain copy

function load_video {

if [ x$feature_all_video_module = xy ]then

insmod all_video

else

insmod efi_gop

insmod efi_uga

insmod ieee1275_fb

insmod vbe

insmod vga

insmod video_bochs

insmod video_cirrus

fi

}

insmod part_gpt

insmod fat

set root='hd0,gpt1'

font="/EFI/grub/unicode.pf2"

if loadfont prefix/locale

set lang=zh_CN

insmod gettext

fi

terminal_output gfxterm

insmod jpeg

if background_image /EFI/grub/background.jpgthen

true

else

set menu_color_normal=white/black

set menu_color_highlight=black/light-gray

if background_color 255,255,155,0then

clear

fi

fi

set default=0

set timeout_style=menu

set timeout=5

menuentry "启动 delta win7" --class windows --class os {

insmod ntfs

set root='(hd0,gpt2)'

}

menuentry "local win7" --class windows --class os {

insmod ntfs

set root='(hd0,gpt3)'

}

menuentry "ubuntu16.04 x86" --class ubuntu --class os {

insmod ext2

set root='(hd0,gpt5)'

linux /vmlinuz ro root=/dev/sda5

initrd /initrd.img

echo "Start Ubuntu 16.04"

}

menuentry "ubuntu16.04 x64" --class ubuntu --class os {

insmod ext2

set root='(hd0,gpt6)'

linux /vmlinuz ro root=/dev/sda6

initrd /initrd.img

echo "Start Ubuntu 16.04"

}

menuentry "-------------------" --class ubuntu --class os{

set root=(hd0,gpt1)

}

menuentry "ubuntu-efi" --class ubuntu --class os {

insmod ext2

set root='(hd0,gpt5)'

chainloader /efi/grub.efi

}

menuentry "install ubuntu" --class ubuntu --class os {

insmod ext2

insmod loopback

set root=(hd0,gpt4)

set isofile=/OS/linux/ubuntu-16.04.2-desktop-amd64.iso

loopback loop isofile

initrd (loop)/casper/initrd.lz

}

menuentry "-------------------" --class ubuntu --class os{

set root=(hd0,gpt1)

}

menuentry "reboot" --class windows --class os{

insmod reboot

reboot

}

menuentry "halt" --class windows --class os{

insmod halt

halt

}

https://wiki.archlinux.org/index.php/GRUB_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)

https://help.ubuntu.com/community/UEFIBooting

http://ftp.gnu.org/gnu/grub/

http://ftp.gnu.org/gnu/grub/grub-2.02-for-windows.zip

https://www.gnu.org/software/grub/manual/grub.html

http://jingyan.baidu.com/article/c85b7a640cd7d6003bac95f8.html

https://packages.ubuntu.com/source/trusty/grub2

https://www.kernel.org/pub/linux/utils/boot/syslinux/

http://www.jinbuguo.com/linux/grub.cfg.html

http://blog.csdn.net/listener_ri/article/details/45621947

http://bbs.wuyou.net/forum.php?mod=viewthread&tid=385353

在进入grub界面如果出现

问题出在引导配置文件没有找到.

那么如何调试呢?

可以尝试打印变量的方法,输入C进入命令模式

输入gettext $prefix

我们发现还是提示(hd0,gp1)/EFI/grub

说明目录并没有被更改,我们可以验证一下放到此目录在跑起来.

发现果然又可以了,后面原因就是便宜目录的compile.cfg里面的目录并没有修改到根目录。

打开cfg文件查看是不是配置了语言文件,但是目录不存在

如果依然乱码,修改文件编码为utf-8

在④步骤中,已经生成BIOS模式所需的内核文件Core.img,其大小是86.5 KB

生成的只是单单BIOS模式的内核文件,还无法引导Grub2,还需要个启动文件Boot.img,该文件很小,只有512Byte,位于i386-pc文件夹,该文件的作用是启动Grub2,然后加载内核文件Core.img

所以这里的最后壹步就是把启动文件Boot.img和内核文件Core.img以二进制形式合并,合并后的文件我个人称呼为扇区文件G2ldr(不知道这个文件有没标准的名称),因为可以直接导入到扇区,来引导启动Grub2,也可以由GRUB4DOS直接加载这个扇区文件来启动Grub2。

老样子,先给出命令(如果命令行的路径不是Grub2包所在的路径,就先要修改命令行的路径,前面有提到)

Copy /B i386-pc\Boot.img+Core.img G2ldr

用bootice 导入扇区

恢复扇区数改成63不能大于63的

之所以会超过是定制问题, 那么这个不会

学习uefi和bios所使用的启动器仿真

http://bbs.wuyou.net/forum.php?mod=viewthread&tid=335197

具体教程来自 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=339411&extra=page%3D1

: qq5274202

我的cmd批处理定制

那么bios加载方式如何启动呢。

出现这个错误,说明文件系统是不支持引导此分区,可以一个一个测试

输入 ls

出现了(hd0) (hd0,msdos2) (hd0,msdos1)

(hd1)

出现了msdos的都可以引导bios,

尝试输入了ls (hd0,msdos2)显示的是存储盘的内容,

尝试输入(hd0,msdos1)显示的是uefi分区内容.

而输入 其他的都显示未知的系统,也验证了bios只识别mbr分区表.

于是我把grub移动到了uefi分区 也就是(hd0,msdos1) 然后输入如下内容

后依次输入如下内容:

成功加载菜单.

进入linux,假设U盘为/dev/sdb,搏嫌终端输入命令:

sudo mount /dev/sdb1 /mnt

sudo grub-install --force --no-floppy --boot-directory=/mnt/boot /dev/sdb

sudo 基枣手vi /mnt/boot/grub/grub.cfg

说明:

1、挂载U盘

2、安装grub到U盘MBR

3、编辑启动岩芦配置文件grub.cfg,vi可换为自己喜欢的文字编辑工具,自己编辑添加启动引导项。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8249858.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存