QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: zy_sunshine

Grub4Dos for MagicLinux硬盘安装

[复制链接]
 楼主| 发表于 2010-1-23 21:41:58 | 显示全部楼层
原帖由 panpanpdj 于 2010-1-23 21:32 发表

这样好像不大妥,因为据我所知道的情况,有些版本的VISTA或者WIN7在C:\下是有grldr这个文件的,可能是用于激活系统的,这样的话第二步有可能会导致WIN无法引导或者激活失效。 ...


我也听说过这种情况,是micro把grub更改了之后当做bootmanager的,但是这种版本的win7我还真没见过,只是传说,应该不多吧,没做考虑......下一版本也会考虑这个的。
回复

使用道具 举报

发表于 2010-1-23 22:23:51 | 显示全部楼层

KDE !!
回复

使用道具 举报

 楼主| 发表于 2010-1-23 22:25:06 | 显示全部楼层

回复 17# jiangtao9999 的帖子

我想KDE大哥现在应该已经重新淡入Magic了
回复

使用道具 举报

发表于 2010-1-23 23:20:44 | 显示全部楼层
可以改成 mildr 不就行了?grldr 只出现于衍生版的 win7 里,原版是不可能有的。
回复

使用道具 举报

发表于 2010-1-24 02:21:49 | 显示全部楼层
这个脚本还没写完,先做个演示,就是照着我那个思路做的。使用了 GNUWIN32 的 sed。剩下一部分需要研究 bcdedit 命令用法,我不熟悉。谁来接着做这部分?
回复

使用道具 举报

发表于 2010-1-24 02:23:04 | 显示全部楼层
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 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2010-1-24 19:25:31 | 显示全部楼层

回复 21# KDE 的帖子

对批处理不熟悉

http://www.linux-wiki.cn/index.p ... %BC%95%E5%AF%BCgrub
这篇文章有bcdedit的简单应用
回复

使用道具 举报

 楼主| 发表于 2010-1-24 19:26:50 | 显示全部楼层
可以改成 mildr 不就行了?grldr 只出现于衍生版的 win7 里,原版是不可能有的。

Grub4Dos 自动搜寻的文件名不是grldr吗? 如果换成mildr会不会找不到??
rekcah

[ 本帖最后由 KDE 于 2010-1-24 23:28 编辑 ]
回复

使用道具 举报

whistler_wmz 该用户已被删除
发表于 2010-1-24 20:09:09 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

whistler_wmz 该用户已被删除
发表于 2010-1-24 20:21:23 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

 楼主| 发表于 2010-1-24 20:57:54 | 显示全部楼层

回复 25# whistler_wmz 的帖子

恩,在xp下是用ntldr指定grldr

如果在win7下就是由grldr.mbr去搜寻grldr了。
回复

使用道具 举报

发表于 2010-1-24 23:42:43 | 显示全部楼层
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 呢?
回复

使用道具 举报

 楼主| 发表于 2010-1-25 01:50:41 | 显示全部楼层

回复 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.p ... %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却是没看过,以上都是猜的,如果有错误希望能指正。
回复

使用道具 举报

发表于 2010-1-30 20:08:12 | 显示全部楼层
我正重写脚本,试图解决上面提出的各种问题。
回复

使用道具 举报

 楼主| 发表于 2010-1-30 20:23:45 | 显示全部楼层

回复 29# KDE 的帖子

你脚本需要libiconv2.dll、libintl3.dll、regex2.dll、sed.exe这几个文件也是占空间的。

要不我也不会考虑用WinAPI了。

不过你写吧 这样就多一种选择。
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-2 16:29 , Processed in 0.076236 second(s), 14 queries .

© 2021 Powered by Discuz! X3.5.

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