这样好像不大妥,因为据我所知道的情况,有些版本的VISTA或者WIN7在C:\下是有grldr这个文件的,可能是用于激活系统的,这样的话第二步有可能会导致WIN无法引导或者激活失效。 ...
我也听说过这种情况,是micro把grub更改了之后当做bootmanager的,但是这种版本的win7我还真没见过,只是传说,应该不多吧,没做考虑......下一版本也会考虑这个的。 :shock:
KDE !!
回复 17# jiangtao9999 的帖子
我想KDE大哥现在应该已经重新淡入Magic了:-D 可以改成 mildr 不就行了?grldr 只出现于衍生版的 win7 里,原版是不可能有的。 这个脚本还没写完,先做个演示,就是照着我那个思路做的。使用了 GNUWIN32 的 sed。剩下一部分需要研究 bcdedit 命令用法,我不熟悉。谁来接着做这部分?rem 注意:脚本需要放置在光盘根目录下,sed 的全部 4 个文件
rem (libiconv2.dll、libintl3.dll、regex2.dll、sed.exe)
rem 均需要放置在 /boot 下
@echo off
cls
echo.
echo ********************************************
echo * *
echo * MagicLinux 硬盘安装向导 *
echo * *
echo ********************************************
echo.
echo.
echo 正在创建 c:\boot 目录,如果遇到原有同名目录将备份成 c:\boot.old
if exist c:\boot.old (
attrib -r -s -h c:\boot.old
rmdir /s /q c:\boot.old
)
if exist c:\boot (
attrib -r -s -h c:\boot
rename c:\boot boot.old
attrib +r +s +h c:\boot.old
)
xcopy /h /r /e /q boot\ c:\boot\ >nul
del /f /s /q c:\boot\trans.tbl >nul 2>nul
echo 成功!
echo 正在创建安装程序引导环境
if exist c:\mildr.old (
attrib -r -s -h c:\mildr.old
del /f c:\mildr.old
)
if exist c:\mildr (
attrib -r -s -h c:\mildr
rename c:\mildr mildr.old
attrib +r +s +h c:\mildr.old
)
move /y c:\boot\grub\grldr c:\mildr
if exist c:\menu.lst.old (
attrib -r -s -h c:\menu.lst.old
del /f c:\menu.lst.old
)
if exist c:\menu.lst (
attrib -r -s -h c:\menu.lst
rename c:\menu.lst menu.lst.old
attrib +r +s +h c:\menu.lst.old
)
copy menu.lst c:\menu.lst >nul
rem 下面三行 sed 分别用于编辑 c:\boot.ini:
rem 1. 删除可能由于反复安装 MagicLinux 造成重复存在的条目;
rem 2. 向 c:\boot.ini 尾部追加条目 c:\mildr="安装 MagicLinux"
rem 3. 删除 c:\boot.ini 可能存在的空行
if exist c:\boot.ini (
attrib -r -s -h c:\boot.ini
c:\boot\sed -i -e "/^c:\\mildr=\"安装 MagicLinux\"/d" c:\boot.ini
c:\boot\sed -i -e "$a\c:\\mildr=\"安装 MagicLinux\"" c:\boot.ini
c:\boot\sed -i -e "/^$/d" c:\boot.ini
attrib +r +s +h c:\boot.ini
)
rem 还有 bcdedit 部分未写,欢迎大家群策群力。
[ 本帖最后由 KDE 于 2010-1-24 14:11 编辑 ]
回复 21# KDE 的帖子
对批处理不熟悉:oops:http://www.linux-wiki.cn/index.php/%E7%94%A8Windows_XP/Vista%E5%BC%95%E5%AF%BCgrub
这篇文章有bcdedit的简单应用
可以改成 mildr 不就行了?grldr 只出现于衍生版的 win7 里,原版是不可能有的。
Grub4Dos 自动搜寻的文件名不是grldr吗? 如果换成mildr会不会找不到??
rekcah
[ 本帖最后由 KDE 于 2010-1-24 23:28 编辑 ]
回复 25# whistler_wmz 的帖子
恩,在xp下是用ntldr指定grldr如果在win7下就是由grldr.mbr去搜寻grldr了。 Grub4Dos 自动搜寻的文件名不是 grldr 吗? 如果换成mildr会不会找不到?
Grub4Dos 的引导管理器就是 grldr,这个东西直接用来启动,所以改成什么名字都无所谓,只要加入 boot.ini 相应的条目就行。ntldr 会自动将引导管理权传递给条目里指定的下一个引导管理程序,比如:
C:\mildr="安装 MagicLinux"
Windows 启动时选择 “安装 MagicLinux” 就能启动 Grub4Dos ,Grub4Dos 会自动搜索 C:\menu.lst,显示相应的 GRUB 菜单。注意:由于 Grub4Dos 的设计,menu.lst必须位于 C:\ 下,而决不能是其他位置,否则会搜索不到它,那样就只能显示一个 GRUB 的命令行界面了。
恕我孤陋寡闻,我没有在 win7 下安装过 magiclinux,不清楚会发生什么。如果将 grub 的主引导记录写入 hd0,那么这个新的主引导记录应该可以直接引导指定分区上的 linux kernel,并且同样也可以将引导管理权传递给 win7 的引导管理器,为何还要再次搜索 grldr 呢?
回复 27# KDE 的帖子
boot.ini可以指定grldr如果Grub4Dos安装在hd0的话,也会自动搜寻所有可用盘符根目录和其他目录(/boot 等)
在Win7下可以将Grub4Dos直接写入MBR(hd0),效果与Xp下一样。
也可以像ntldr一样,由windows的启动管理器加载grldr.mbr grldr 来引导grub,此时用的是bcdedit
如果明白怎样在Vista/Win7下添加bcdedit,就应该清楚了
http://www.linux-wiki.cn/index.php/%E7%94%A8Windows_XP/Vista%E5%BC%95%E5%AF%BCgrub
这篇文章中有介绍,win7下需要的是三个文件grldr.mbr grldr menu.lst
其中win7 booter指定的第一个引导文件是grldr.mbr, 这个文件代码与直接写入MBR的Grub部分类似,所要做的就是搜寻可用盘符中的grldr文件,但是为什么不直接引导grldr,我也只是猜想,grldr的格式与之不匹配,只能用grldr.mbr做一下衔接。
原来看过一点Grub4Dos Instal ,具体的grldr 和 grldr.mbr却是没看过,以上都是猜的,如果有错误希望能指正。 我正重写脚本,试图解决上面提出的各种问题。
回复 29# KDE 的帖子
你脚本需要libiconv2.dll、libintl3.dll、regex2.dll、sed.exe这几个文件也是占空间的。要不我也不会考虑用WinAPI了。
不过你写吧:) 这样就多一种选择。