NetCobra 发表于 2015-9-19 23:35:08

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

想用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?mod=viewthread&tid=57675&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?mod=viewthread&tid=367232&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


有阴也有阳 发表于 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,把简单的问题复杂化了。


不点 发表于 2015-9-20 04:35:49

不要做这么好的梦。我们早都发现,有些主板的 bios 只支持第一个硬盘,其他硬盘都无法用 bios 来访问。

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

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

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

lanmeizhuangyua 发表于 2015-9-20 08:11:25

看看学习一下

lbw2007 发表于 2015-9-20 13:11:00

2楼的方法很好,从最后一块启动写法比较复杂,但是从指定硬盘上启动就很简单了

NetCobra 发表于 2015-9-20 23:05:30

谢谢各位。

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

NetCobra 发表于 2015-9-27 21:46:33

要崩溃了,把家里能找到的TF卡、读卡器、U盘都是过了,没有找到一个能成功在Gen8上启动grub4dos的,做出来的启动盘在别的机器上可以启动,就是到Gen8上完全不识别。

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

NetCobra 发表于 2015-9-27 22:52:44

基本确定是Gen8这台电脑不支持U盘上的grub4dos了。

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

所以,只能放弃grub4dos了……

谢谢各位的支持!

chenall 发表于 2015-9-28 15:02:41

你的GRUB4DOS启动盘是什么方式的,USB-HDD/USB-FDD.?
无法启动,有没有具体的提示??
USB启动盘的情况很复杂,有时候你制作的是HDD格式,但启动时识别的是FDD的.

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







不点 发表于 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,不管用户情愿不情愿。

NetCobra 发表于 2015-9-28 22:44:04

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

都惊动老大了{:3_137:}

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

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

pseudo 发表于 2015-9-28 23:14:56

在grub4dos中,可以用
(hd-1,0)
表示最后一块硬盘的首个分区。那么2楼菜单可写成:

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

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

NetCobra 发表于 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了。

NetCobra 发表于 2015-9-29 14:32:08

有阴也有阳 发表于 2015-9-20 01:10
一点设想,仅供参考:

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

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

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

NetCobra 发表于 2015-10-11 22:12:02

本帖最后由 NetCobra 于 2015-10-11 22:14 编辑

有阴也有阳 发表于 2015-9-29 16:43
亲!你也没有说清楚,而我对MicroServer Gen8服务器又一点也不了解,看了你提供的链接:

   ...

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

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

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

有阴也有阳 发表于 2015-10-11 22:49:52

本帖最后由 有阴也有阳 于 2015-10-12 08:47 编辑

NetCobra 发表于 2015-10-11 22:12
按这个方法搞定了,现在不管前4个硬盘槽插了几块硬盘都是从最后一块硬盘启动的,太感谢了!
...

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

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

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

qwerty861 发表于 2015-10-12 18:29:15

好文,好技术,收藏备用,谢谢分享

yewuqiu 发表于 2016-1-3 14:47:59

有阴也有阳 发表于 2015-9-29 16:43
亲!你也没有说清楚,而我对MicroServer Gen8服务器又一点也不了解,看了你提供的链接:

   ...

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

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

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

有阴也有阳 发表于 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

yewuqiu 发表于 2016-1-3 20:49:19

有阴也有阳 发表于 2016-1-3 15:56
title 从任意一块本地硬盘启动Windows NT/2k/XP系统
find --set-root /ntldr
chainloader /ntldr


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

nbxx315 发表于 2017-12-15 20:35:18

感谢分享!正好也有这个需求!

wcwtnui 发表于 2018-3-30 08:19:29

有阴也有阳 发表于 2015-9-29 16:43
亲!你也没有说清楚,而我对MicroServer Gen8服务器又一点也不了解,看了你提供的链接:

   ...

已成功,感谢大神。

bearxu 发表于 2018-4-24 13:18:35

每个硬盘分区都有唯一的 uuid 的
gurb4dos 支持 uuid 命令
例如 :

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

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

wzhlrch 发表于 2022-12-27 16:42:30

mark{:1_195:}
页: [1]
查看完整版本: 如何设置总是从最后一块硬盘启动Windows?