无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 15267|回复: 24

[求助] 如何设置总是从最后一块硬盘启动Windows?

[复制链接]
发表于 2015-9-19 23:35:08 | 显示全部楼层 |阅读模式
想用Grub4Dos做HP MicroServer Gen8的启动盘,这台电脑前4个硬盘接口可以用于组RAID等专门的存储功能,因此想设置从第5个硬盘(预留的光驱接口位置)启动Windows;但是由于前4个硬盘接口上接的硬盘数量不是固定的(随时可能增加或者移除),所以想让Grub4Dos总是从最后一块硬盘的第一个分区启动。

不知道Grub4Dos如何实现?

谢谢!
发表于 2015-9-29 16:43:49 | 显示全部楼层
本帖最后由 有阴也有阳 于 2015-10-14 19:11 编辑

NetCobra 发表于 2015-9-29 14:32
抱歉,没有看到你最后增加的内容。

MicroServer Gen8是真正的服务器,所以很多东西都是按照服务器设置 ...


        亲!你也没有说清楚,而我对MicroServer Gen8服务器又一点也不了解,看了你提供的链接:

        http://www.chiphell.com/thread-1375459-1-1.html

        才彻底弄明白了你的要求和你所面临的情况,这是一件极为简单的事,也用不着把grldr文件伪装成bootmgr文件......搞得那么复杂,而且

既可以启动Win7/Win8/Win10系统,也可以启动Windows NT/2k/XP系统,具体的方法和步骤如下:

       1.再把你的TF卡插到另外一台普通的电脑上,打开Diskgenuis:

       a. 格式化TF卡为NTFS格式。

       b. 使用DiskGenius软件,将TF卡“重新建立主引导区”,并且激活当前分区,然后关闭Diskgenuis软件,完后先别急着把TF卡从电脑上拔下来。

       c.将TF卡的分区引导记录设置为grub4dos0.4.6a——下载BOOTICE软件,下载链接:

        http://bbs.wuyou.net/forum.php?m ... &extra=page%3D1

       打开BOOTICE软件,选择你的TF卡,别弄到本地硬盘上了,注意从大小来区分——点击“分区引导记录(P)”——选择“GRUB4DOS

0.4.5c/0.4.6a(FAT/FAT32/NTFS/ExFAT)"——点击”安装/配置(S)“——选择“0.4.6a"——点击”确定“——点击”确定“.

       d.下载grub4dos0.4.6a软件,下载链接:http://bbs.wuyou.net/forum.php?m ... &extra=page%3D1

       将下载的grub4dos0.4.6a的软件压缩包解压,然后再把解压文件夹及里面的内容一起复制到TF卡的分区的根目录下,然后再把TF卡的分区

里的grub4dos0.4.6a的解压文件夹里的sample文件夹打开,把里面的menu.lst文件复制到的TF卡的分区根目录下,再把grub4dos0.4.6a的解压

文件夹里的grldr文件复制到的TF卡的分区根目录下。

        2.修改menu.lst菜单:

        将TF卡的分区根目录下的menu.lst菜单用BOOTICE软件的”实用工具“的”GRUB4DOS菜单编辑器“打开,把中间部分的内容全部删除,只留头

尾,然后再在中间的空白部分填写新的内容,把等待的时间改为5秒:

# This is a sample menu.lst file. You should make some changes to it.
# The old install method of booting via the stage-files has been removed.
# Please install GRLDR boot strap code to MBR with the bootlace.com
# utility under DOS/Win9x or Linux.
#
# It must be UTF-8 encoding for multi-lingual support. Font lines can be
# appended to the file. The font lines should be in the unifont.hex format.

color blue/green yellow/red white/magenta white/magenta
timeout 30——改成5——等待时间改成5秒。
## menu border color
color border=0xEEFFEE
## set vbe mode
graphicsmode -1 640:800 480:600 24:32 || graphicsmode -1 -1 -1 24:32
## loading splashimage
splashimage /boot/grub/splashimage.xpm || splashimage /boot/grub/splashimage.bmp
default /default
## Menu AutoNumber
write 0x8274 0x2001



中间部分的内容——将“中间部分的内容”全部删除




# In the end, font lines for unicode chars in unifont.hex format.
# It should include all unicode chars used in the above menu code.
# Surely normal ASCII chars are not necessary to be included here.

5173:10100810082000003FF8010001000100FFFE010002800280044008203018C006
542F:010000801FFC1004100410041FFC10001000100017FC24042404440487FC0404
673A:100011F011101110FD10111031103910551055109110111211121212120E1400
91CD:001000F83F000100FFFE01001FF011101FF011101FF001003FF80100FFFE0000

        下面是改好了的menu.lst菜单,改动部分都用红字标出来:

# This is a sample menu.lst file. You should make some changes to it.
# The old install method of booting via the stage-files has been removed.
# Please install GRLDR boot strap code to MBR with the bootlace.com
# utility under DOS/Win9x or Linux.
#
# It must be UTF-8 encoding for multi-lingual support. Font lines can be
# appended to the file. The font lines should be in the unifont.hex format.

color blue/green yellow/red white/magenta white/magenta
timeout 5
## menu border color
color border=0xEEFFEE
## set vbe mode
graphicsmode -1 640:800 480:600 24:32 || graphicsmode -1 -1 -1 24:32
## loading splashimage
splashimage /boot/grub/splashimage.xpm || splashimage /boot/grub/splashimage.bmp
default /default
## Menu AutoNumber
write 0x8274 0x2001

title 从最后一块本地硬盘启动Windows NT/2k/XP系统
rootnoverify  (hd-1,0)
chainloader /ntldr

title 从最后一块本地硬盘启动Win7/Win8/Win10系统
rootnoverify  (hd-1,0)
chainloader /bootmgr


# In the end, font lines for unicode chars in unifont.hex format.
# It should include all unicode chars used in the above menu code.
# Surely normal ASCII chars are not necessary to be included here.

5173:10100810082000003FF8010001000100FFFE010002800280044008203018C006
542F:010000801FFC1004100410041FFC10001000100017FC24042404440487FC0404
673A:100011F011101110FD10111031103910551055109110111211121212120E1400
91CD:001000F83F000100FFFE01001FF011101FF011101FF001003FF80100FFFE0000

        修改完后,注意要用BOOTICE软件”以UTF—8编码保存“的形式保存——见图一

        3.将TF卡插入GEN8的TF卡插槽,并设置为USBkey启动,一开机就会出现2个菜单选项,等待时间是5秒,默认是第一个,你不做选择,

5秒钟后就执行第一个菜单:

0.从最后一块本地硬盘启动Windows NT/2k/XP系统

1.从最后一块本地硬盘启动Win7/Win8/Win10系统

        不过你要注意事先用启动U盘插到MicroServer Gen8服务器上进PE里在服务器里的接在第5个硬盘接口上的硬盘的第一分区里安装好你

要的操作系统......



        整个过程是:MicroServer Gen8服务器从USB启动——启动TF卡中的grub4dos0.4.6a——启动最后一块本地硬盘中的第一分区中的操作系统。


        将以上内容进一步地整理了一下,便于需要者阅读、使用:

        http://wenku.baidu.com/view/6228a5cbad02de80d4d840f8


图一:点击打红框的就会“以UTF—8编码保存“的形式保存了

图一:点击打红框的就会“以UTF—8编码保存“的形式保存了

点评

已成功,感谢大神。  详情 回复 发表于 2018-3-30 08:19
老大这个方法解决了我的大问题。 真是不错。谢谢。 但是我还有个想法: MENU.LST里能否再加个自动搜索sata1~sata4盘上的系统,并自动列出菜单供选择,若不选择则X秒后自动默认启动SATA5(最后1块硬盘)就更完  详情 回复 发表于 2016-1-3 14:47
按这个方法搞定了,现在不管前4个硬盘槽插了几块硬盘都是从最后一块硬盘启动的,太感谢了! “hd-1”是否是用来表示最后一块硬盘?似乎以前没有看到过这种用法。  详情 回复 发表于 2015-10-11 22:12
回复

使用道具 举报

发表于 2015-9-20 01:10:21 | 显示全部楼层
本帖最后由 有阴也有阳 于 2015-9-20 23:41 编辑

一点设想,仅供参考:

1.打开记事本,将空白的记事本命名为“mylastdisk",成为一个“mylastdisk.txt"文件,然后再把这个

“mylastdisk.txt"文件复制、粘贴到第5个硬盘接口的硬盘的系统所在分区的根目录下。

2.把第5个硬盘接口的硬盘用BOOTICE软件把硬盘的主引导记录写成grub4dos0.4.6a,等待时间——

延时可定为0,然后再把grub4dos0.4.6a的软件安装压缩包的解压文件夹复制、粘贴到第5个硬盘接

口的硬盘的任意1个分区的根目录下,然后再把grub4dos0.4.6a的软件安装压缩包的解压文件夹里的

grldr、menu.lst文件复制、粘贴到第5个硬盘接口的硬盘的任意1个分区的根目录下——和复制、粘贴

进来的grub4dos0.4.6a的软件安装压缩包的解压文件夹位于同一个分区。

3.填写menu.lst菜单:

title 从最后一块本地硬盘启动Windows NT/2k/XP系统
find --set-root /mylastdisk.txt
chainloader /ntldr

title 从最后一块本地硬盘启动Win7/Win8/Win10系统
find --set-root /mylastdisk.txt
chainloader /bootmgr

填好的menu.lst菜单用BOOTICE软件的实用工具中的GRUB4DOS菜单编辑器用UTF8编码保存,保存好

后,要把保存好的menu.lst菜单复制、粘贴到第5个硬盘接口的硬盘里的grldr文件所在的分区的根目录

下,也就是说grldr文件、menu.lst文件、grub4dos0.4.6a的软件安装压缩包的解压文件夹要位于第5个

硬盘接口的硬盘的同一分区的根目录下。

这样,一开机,或重启,就会出现”从最后一块本地硬盘启动Windows NT/2k/XP系统“和”从最后一块本

地硬盘启动Win7/Win8/Win10系统“的启动菜单选项,选中后,按回车键就可以启动第5个硬盘接口的

硬盘上的系统。

第5个硬盘的接口上的硬盘如果装的是双系统,比如是XP和Win7系统,就做两个空白记事本文件:

mylastdisk1.txt和mylastdisk2.txt

把mylastdisk1.txt复制、粘贴到XP系统所在分区的根目录下,把mylastdisk2.txt复制、粘贴到Win7系统

所在分区的根目录下。

填写menu.lst菜单:

title 从最后一块本地硬盘启动Windows NT/2k/XP系统
find --set-root /mylastdisk1.txt
chainloader /ntldr

title 从最后一块本地硬盘启动Win7/Win8/Win10系统
find --set-root /mylastdisk2.txt
chainloader /bootmgr

......

你试过后是否成功,麻烦你回复告诉我一下。


刚才百度了一下“惠普 MicroServer Gen8 微型塔式服务器”,其实可能很简单,就不知你的这个服务器的主板的BIOS支不支持“硬盘

启动顺序”的设置,对服务器主板我压根就不了解,我只能参照一般电脑的主板BIOS来讲讲:

一开机,或重启,就按下Delete键,进入BISO,在“Advanced BIOS Features——BIOS进阶功能设定”中,找到“Hard Disk Boot

Priority——硬盘引导顺序”项,然后进入该项,将“第5个硬盘接口的硬盘”用箭头键选中,然后用加号键(+)将其提升为第一启动硬盘,

然后按F10保存就OK了——压根就用不着grub4dos,把简单的问题复杂化了。


点评

抱歉,没有看到你最后增加的内容。 MicroServer Gen8是真正的服务器,所以很多东西都是按照服务器设置的,比如BIOS里面没有单独调整硬盘按启动顺序的选项,这也是我为什么要研究用TF卡来实现grub4dos引导最后一块  详情 回复 发表于 2015-9-29 14:32
回复

使用道具 举报

发表于 2015-9-20 04:35:49 | 显示全部楼层
不要做这么好的梦。我们早都发现,有些主板的 bios 只支持第一个硬盘,其他硬盘都无法用 bios 来访问。

当然也有比较好的主板,它的 bios 支持访问所有的硬盘。

如果你只是自己用,那你可以试试楼上的方法。如果你是想做个通用的发行版让大家都用,那会碰到失败。

另外,微软与 oem 制造商合伙封杀 bios,因此可以预料,今后 bios 的毛病会越来越多。我就遇到了华硕的 win8 笔记本已经彻底 EFI 化了,要想用 bios 的方式启动电脑,根本没门。

回复

使用道具 举报

发表于 2015-9-20 08:11:25 | 显示全部楼层
看看  学习一下
回复

使用道具 举报

发表于 2015-9-20 13:11:00 | 显示全部楼层
2楼的方法很好,从最后一块启动写法比较复杂,但是从指定硬盘上启动就很简单了
回复

使用道具 举报

 楼主| 发表于 2015-9-20 23:05:30 | 显示全部楼层
谢谢各位。

Gen8似乎比较挑盘,试了好几张TF卡(主板上有内置的TF卡槽用于启动系统)都无法启动,回头找个U盘试试,启动成功了再试试。
回复

使用道具 举报

 楼主| 发表于 2015-9-27 21:46:33 | 显示全部楼层
要崩溃了,把家里能找到的TF卡、读卡器、U盘都是过了,没有找到一个能成功在Gen8上启动grub4dos的,做出来的启动盘在别的机器上可以启动,就是到Gen8上完全不识别。

看到有人把grub4dos安装到硬盘上来启动SATA5成功,我有点怀疑Gen8是不是不支持U盘上的grub4dos……
回复

使用道具 举报

 楼主| 发表于 2015-9-27 22:52:44 | 显示全部楼层
基本确定是Gen8这台电脑不支持U盘上的grub4dos了。

同一张卡做成grub4dos的启动盘,在别的电脑上能启动,但是在Gen8上无法启动;
改成grub的启动盘(参见http://www.chiphell.com/thread-1311064-1-1.html这个帖子的10楼),就可以启动了。

所以,只能放弃grub4dos了……

谢谢各位的支持!
回复

使用道具 举报

发表于 2015-9-28 15:02:41 | 显示全部楼层
你的GRUB4DOS启动盘是什么方式的,USB-HDD/USB-FDD.?
无法启动,有没有具体的提示??
USB启动盘的情况很复杂,有时候你制作的是HDD格式,但启动时识别的是FDD的.

即然grub2可以启动,那可以尝试在GRUB2启动之后再加载国GRLDR,估计也是可以的.







点评

有人实现了用grub4dos启动Gen8了,不过用的是bootmgr而不是grub4dos里面的grldr,搞不明白是怎么个情况:http://www.chiphell.com/thread-1375459-1-1.html  详情 回复 发表于 2015-9-29 11:13
都惊动老大了 启动盘是用grubinst_gui做的,都用的是默认设置,没太了解具体什么方式。 无法启动的时候没有任何提示,有两三秒的停顿,但是没有任何输出,之后就转到硬盘启动了;感觉是系统扫描U盘/T  详情 回复 发表于 2015-9-28 22:44
估计够呛。我曾经遇到华硕笔记本,已经彻底取缔了 bios。想启动 grub4dos,已经是没门了。 联想的笔记本可以勉强使用 BIOS 来启动,但是 XP 安装不上,已经被封杀。 这是逼着用户使用 Win7、8、10,不管用户情  详情 回复 发表于 2015-9-28 16:49
回复

使用道具 举报

发表于 2015-9-28 16:49:52 | 显示全部楼层
chenall 发表于 2015-9-28 15:02
你的GRUB4DOS启动盘是什么方式的,USB-HDD/USB-FDD.?
无法启动,有没有具体的提示??
USB启动盘的情况很复杂 ...

估计够呛。我曾经遇到华硕笔记本,已经彻底取缔了 bios。想启动 grub4dos,已经是没门了。

联想的笔记本可以勉强使用 BIOS 来启动,但是 XP 安装不上,已经被封杀。

这是逼着用户使用 Win7、8、10,不管用户情愿不情愿。

回复

使用道具 举报

 楼主| 发表于 2015-9-28 22:44:04 | 显示全部楼层
chenall 发表于 2015-9-28 15:02
你的GRUB4DOS启动盘是什么方式的,USB-HDD/USB-FDD.?
无法启动,有没有具体的提示??
USB启动盘的情况很复杂 ...

都惊动老大了

启动盘是用grubinst_gui做的,都用的是默认设置,没太了解具体什么方式。

无法启动的时候没有任何提示,有两三秒的停顿,但是没有任何输出,之后就转到硬盘启动了;感觉是系统扫描U盘/TF卡后没有识别到启动盘,然后就改到从硬盘启动了。
回复

使用道具 举报

发表于 2015-9-28 23:14:56 | 显示全部楼层
在grub4dos中,可以用
(hd-1,0)
表示最后一块硬盘的首个分区。那么2楼菜单可写成:

title 从最后一块本地硬盘启动Windows NT/2k/XP系统
#当前设备切换为最后一块硬盘首个分区
rootnoverify  (hd-1,0)
#引导当前分区的ntldr
chainloader /ntldr

不过,正如不点大人说的,很可能只有头一个硬盘才能启动成功。所以直接这么写恐怕不行。
菜单中可考虑把最后一个硬盘映射成首个硬盘。
回复

使用道具 举报

 楼主| 发表于 2015-9-29 11:13:46 | 显示全部楼层
本帖最后由 NetCobra 于 2015-9-29 12:33 编辑
chenall 发表于 2015-9-28 15:02
你的GRUB4DOS启动盘是什么方式的,USB-HDD/USB-FDD.?
无法启动,有没有具体的提示??
USB启动盘的情况很复杂 ...


有人实现了用grub4dos启动Gen8了,不过用的是bootmgr而不是grub4dos里面的grldr,搞不明白是怎么个情况:http://www.chiphell.com/thread-1375459-1-1.html

猜测应该是这样的:
用DiskGenius重建MBR写入的是Windows的主引导扇区,这个引导扇区启动的时候会去查找bootmdr引导文件;贴主是把grub4dos的grldr改名为bootmgr,这样MBR实际引导的是grub4dos的引导文件,然后就启动到grub4dos了。
回复

使用道具 举报

 楼主| 发表于 2015-9-29 14:32:08 | 显示全部楼层
有阴也有阳 发表于 2015-9-20 01:10
一点设想,仅供参考:

1.打开记事本,将空白的记事本命名为“mylastdisk",成为一个“mylastdisk.txt"文 ...

抱歉,没有看到你最后增加的内容。

MicroServer Gen8是真正的服务器,所以很多东西都是按照服务器设置的,比如BIOS里面没有单独调整硬盘按启动顺序的选项,这也是我为什么要研究用TF卡来实现grub4dos引导最后一块硬盘的原因。

点评

亲!你也没有说清楚,而我对MicroServer Gen8服务器又一点也不了解,看了你提供的链接:http://www.chiphell.com/thread-1375459-1-1.html 才彻底弄明白了你的要求和你所面临的情况,这是一件极为简单的事,也用  详情 回复 发表于 2015-9-29 16:43
回复

使用道具 举报

 楼主| 发表于 2015-10-11 22:12:02 | 显示全部楼层
本帖最后由 NetCobra 于 2015-10-11 22:14 编辑
有阴也有阳 发表于 2015-9-29 16:43
亲!你也没有说清楚,而我对MicroServer Gen8服务器又一点也不了解,看了你提供的链接:

   ...


按这个方法搞定了,现在不管前4个硬盘槽插了几块硬盘都是从最后一块硬盘启动的,太感谢了

“hd-1”是否是用来表示最后一块硬盘?似乎以前没有看到过这种用法。

另外第二个菜单项里面的“/bootmger”应该是“/bootmgr”。

点评

搞定了就好。我也替你高兴! 应该是bootmgr,bootmger是笔误,打字打错了,抱歉!  详情 回复 发表于 2015-10-11 22:49
回复

使用道具 举报

发表于 2015-10-11 22:49:52 | 显示全部楼层
本帖最后由 有阴也有阳 于 2015-10-12 08:47 编辑
NetCobra 发表于 2015-10-11 22:12
按这个方法搞定了,现在不管前4个硬盘槽插了几块硬盘都是从最后一块硬盘启动的,太感谢了!
...


搞定了就好。我也替你高兴!

应该是bootmgr,bootmger是笔误,打字打错了,抱歉!现在已经改正。

hd-1的确表示最后一块硬盘,但平时一般人们用得少,不咋用......
回复

使用道具 举报

发表于 2015-10-12 18:29:15 | 显示全部楼层
好文,好技术,收藏备用,谢谢分享
回复

使用道具 举报

发表于 2016-1-3 14:47:59 | 显示全部楼层
有阴也有阳 发表于 2015-9-29 16:43
亲!你也没有说清楚,而我对MicroServer Gen8服务器又一点也不了解,看了你提供的链接:

   ...

老大这个方法解决了我的大问题。
真是不错。谢谢。

但是我还有个想法:
MENU.LST里能否再加个自动搜索sata1~sata4盘上的系统,并自动列出菜单供选择,若不选择则X秒后自动默认启动SATA5(最后1块硬盘)就更完美了。

或者菜单里怎么加从任意盘搜索系统启动(前提也是硬盘是随机的,取消一个或几个不影响菜单的正确执行)?
不知道能否做到呢?

点评

title 从任意一块本地硬盘启动Windows NT/2k/XP系统 find --set-root /ntldr chainloader /ntldr title 从任意一块本地硬盘启动Win7/Win8/Win10系统 find --set-root /bootmgr chainloader /bootmgr  详情 回复 发表于 2016-1-3 15:56
回复

使用道具 举报

发表于 2016-1-3 15:56:18 | 显示全部楼层
yewuqiu 发表于 2016-1-3 14:47
老大这个方法解决了我的大问题。
真是不错。谢谢。

title 从任意一块本地硬盘启动Windows NT/2k/XP系统
find --set-root /ntldr
chainloader /ntldr

title 从任意一块本地硬盘启动Win7/Win8/Win10系统
find --set-root /bootmgr
chainloader /bootmgr

点评

能不能再加个从倒数第四、三、二、一块硬盘启动的菜单呢?  详情 回复 发表于 2016-1-3 20:49
回复

使用道具 举报

发表于 2016-1-3 20:49:19 来自手机 | 显示全部楼层
有阴也有阳 发表于 2016-1-3 15:56
title 从任意一块本地硬盘启动Windows NT/2k/XP系统
find --set-root /ntldr
chainloader /ntldr

能不能再加个从倒数第四、三、二、一块硬盘启动的菜单呢?
回复

使用道具 举报

发表于 2017-12-15 20:35:18 | 显示全部楼层
感谢分享!正好也有这个需求!
回复

使用道具 举报

发表于 2018-3-30 08:19:29 | 显示全部楼层
有阴也有阳 发表于 2015-9-29 16:43
亲!你也没有说清楚,而我对MicroServer Gen8服务器又一点也不了解,看了你提供的链接:

   ...

已成功,感谢大神。
回复

使用道具 举报

发表于 2018-4-24 13:18:35 | 显示全部楼层
每个硬盘分区都有唯一的 uuid 的
gurb4dos 支持 uuid 命令
例如 :

title 从 id 位 000E0336000C1B8D 的硬盘分区启动Win7/Win8/Win10
uuid 000E0336000C1B8D
chainloader /bootmgr

这样grldr 就只认 uuid 为 000E0336000C1B8D的分区启动了,不管这个硬盘是 hd号是多少
回复

使用道具 举报

发表于 2022-12-27 16:42:30 | 显示全部楼层
mark
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-3-29 18:16

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表