中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » GRUB4DOS、SYSLINUX及其它启动管理软件讨论专区 » 为移动操作系统打造稳健的引导扇区,请参谋
« [1] [2] »
作者:
标题: 为移动操作系统打造稳健的引导扇区,请参谋 上一主题 | 下一主题
loveheartrain
初级用户

DOS之迷


积分 174
发帖 81
注册 2007-11-7
状态 离线
『第 16 楼』:  我用的是DSPTW.EXE在WIN XP下直接写入U盘实现的启动GRUB

我用的是DSPTW.EXE在WIN XP下直接写入U盘实现的启动GRUB,
最初版本是0.40,用WINPM 查看分区起始扇区只要不是在0 柱面0磁头1扇区即可,就是说原来又主引导纪录MBR,否则需在用分区工具或U盘自带格式化工具重新分区格式化.我用的分别为43扇区的128MB和63扇区的1GB的安装,都能进入GRUB.
我用的是批处理文件.BAT
内容如下
@echo off
color 0A
:mmbr
title MMBR   重建MBR!
set hd=
cls
echo  请选择要重建的硬盘编号。
echo     0 1 2 3 4 5
echo  输入数字后回车执行!
set /p hd="">nul
if not %hd%'==0' if not %hd%'==1' if not %hd%'==2' if not %hd%'==3' if not %hd%'==4' if not %hd%'==5' goto mmbr
if %hd%'==' goto mmbr

:mmbr1
set h=
ECHO 你选择的硬盘编号是%hd%!以下是该硬盘的分区情况!
dsptw %hd% /l /y
ECHO MMBR   开始写入MBR!
echo  请选择所要的操作。
echo  恢复输入Y  其它键退出
echo  输入后回车执行!
set /p h="">nul
if not %h%'==y' if not %h%'==Y' goto exit
if %h%'==' goto exit

del hmbr.bin
del %hd%mbr.bin
dsptw %hd% 0 1 /s %hd%mbr.bin /y
type %hd%mbr.bin|find /i "m2" >nul
if errorlevel 1 goto setup
del %hd%mbr.bin
goto hmbr

:setup
echo 正在写入新的MBR以便实现GRUB启动。
echo 安装前将清除0柱面0磁头除1扇区与63扇区的数据。
echo 安装前将备分原MBR到0柱面0磁头2扇区和23扇区。
echo 安装前将备分原MBR到D:\bf\%hd%MBR.BIN。
pause
copy %hd%mbr.bin D:\bf\
del %hd%mbr.bin
dsptw %hd% 2 21 /e /y
dsptw %hd% 0 1 /D %hd% 1 /y
dsptw %hd% 0 1 /D %hd% 22 /y
dsptw %hd% 0 0 /m /hex:EB0601026D32FFFFE800005BC1EB048C /Y
dsptw %hd% 0 16 /m /hex:C801C38EDB1E6A19CBBB0018B800208E /Y
dsptw %hd% 0 32 /m /hex:D0BC009031C951BA800052B408F9CD13 /Y
dsptw %hd% 0 48 /m /hex:5A581607720580E13F750F8ED83A0675 /Y
dsptw %hd% 0 64 /m /hex:04F97417BE6201E9890091B40289C531 /Y
dsptw %hd% 0 80 /m /hex:DB4152F9CD135A7202F6DC0E1F9C31F6 /Y
dsptw %hd% 0 96 /m /hex:31FFB9DF00FCF3A5166A6CCBBBFC1766 /Y
dsptw %hd% 0 112 /m /hex:B8475255AA161F66390775549D723C0E /Y
dsptw %hd% 0 128 /m /hex:1FAD88E6AD89C1243F741F29E848F6D8 /Y
dsptw %hd% 0 144 /m /hex:BF0300B40268000D0731DB60CD136173 /Y
dsptw %hd% 0 160 /m /hex:0A6031C0CD13614F75E9F9E8CA097728 /Y
dsptw %hd% 0 176 /m /hex:83C60C81FEFE0172C67715BEB231B408 /Y
dsptw %hd% 0 192 /m /hex:9952CD135872099991243F740341EBC0 /Y
dsptw %hd% 0 208 /m /hex:BE4C01E86F00EBFE1E0666608CC3FA0F /Y
dsptw %hd% 0 224 /m /hex:0116600A0F20C00C010F22C0BE08008E /Y
dsptw %hd% 0 240 /m /hex:C66631F66631FF66B900240000FCF366 /Y
dsptw %hd% 0 256 /m /hex:A5BE10008EC624FE0F22C08EC3B90002 /Y
dsptw %hd% 0 272 /m /hex:31F656BF007C57061F5607FCF3A5BF10 /Y
dsptw %hd% 0 288 /m /hex:7EBE000AB91E00FCF3662EA5061FFBCB /Y
dsptw %hd% 0 304 /m /hex:FAB800208ED0BCDC8FFB6661071FE96F /Y
dsptw %hd% 0 320 /m /hex:FFB40ECD102EAC3C0075F6C30D0A4D69 /Y
dsptw %hd% 0 336 /m /hex:7373696E67204D42522D68656C706572 /Y
dsptw %hd% 0 352 /m /hex:2E000D0A42756767792042494F532100 /Y
dsptw %hd% 0 368 /m /hex:627920617879204C6F76652048656172 /Y
dsptw %hd% 0 384 /m /hex:74205261696E20766572323030373132 /Y
dsptw %hd% 0 400 /m /hex:32372051513A37313231363731360000 /Y
dsptw %hd% 2 10 /R S.bin /Y
if errorlevel 1 goto err
echo 安装完成!
echo 进入GRUB热键为M,提示信息延时2秒。
echo 以下是重建后的MBR内容
pause
dsptw %hd% 0 1 /l /p /a
goto exit

:hmbr
set h=
cls
echo 安装出错!可能已经安装过,手动恢复请运行hmbr.bat
echo  请选择所要的操作。
echo  恢复输入Y  其它键退出
echo  输入后回车执行!
set /p h="">nul
if not %h%'==y' if not %h%'==Y' goto exit
if %h%'==' goto exit
goto h%h%

:hy
:mbr2
echo 使用第2扇区恢复!
del hmbr.bin
dsptw %hd% 1 1 /s hmbr.bin /y
type hmbr.bin|find /i "system" >nul
if errorlevel 1 goto mbr23
dsptw %hd% 0 1 /r hmbr.bin /y
if errorlevel 1 goto mbr23
goto ok

:mbr23
echo 使用第2扇区恢复失败!
echo 使用第23扇区恢复!
del hmbr.bin
dsptw %hd% 22 1 /s hmbr.bin /y
type hmbr.bin|find /i "system" >nul
if errorlevel 1 goto err
dsptw %hd% 0 1 /r hmbr.bin /y
if errorlevel 1 goto err

:ok
dsptw %hd% 2 21 /e /y
del hmbr.bin
echo ok! 恢复完成。
echo 以下是重建后的MBR内容
pause
dsptw %hd% 0 1 /l /p /a

goto exit

:err
del hmbr.bin
echo mbr err! 没有恢复成功!
echo  Run MBR.bat。 请运行MBR32.bat来重建MBR。
echo 或者使用dsptw %hd% 0 1 /r mbr.bin /y命令
echo 来恢复MBR。安装前已经备分到D:\bf\%hd%MBR.BIN

:exit
pause
重建MBR内容即MBR32.BAT
@echo off
color 0A

:mmbr
title MMBR   重建MBR!
set hd=
cls
echo  请选择要重建的硬盘编号。
echo     0 1 2 3 4 5
echo  输入数字后回车执行!
set /p hd="">nul
if not %hd%'==0' if not %hd%'==1' if not %hd%'==2' if not %hd%'==3' if not %hd%'==4' if not %hd%'==5' goto mmbr
if %hd%'==' goto mmbr

:mmbr1
set h=
ECHO 你选择的硬盘编号是%hd%!以下是该硬盘的分区情况!
dsptw %hd% /l /y
ECHO MMBR   开始恢复MBR!
echo  请选择所要的操作。
echo  恢复输入Y  其它键退出
echo  输入后回车执行!
set /p h="">nul
if not %h%'==y' if not %h%'==Y' goto exit
if %h%'==' goto exit
dsptw %hd% 0 0 /m /hex:33C08ED0BC007CFB5007501FFC50BE00 /Y
if errorlevel 1 goto err
dsptw %hd% 0 16 /m /hex:7CBF0006B90002F3A4BF1E0657CB33DB /Y
dsptw %hd% 0 32 /m /hex:33D2BEBE07B104F6048074038BD64383 /Y
dsptw %hd% 0 48 /m /hex:C610E2F383FB017409BEC400B91700EB /Y
dsptw %hd% 0 64 /m /hex:719052B441B280BBAA55CD135A81FB55 /Y
dsptw %hd% 0 80 /m /hex:AA7533F6C101742EB80042BEAD07B110 /Y
dsptw %hd% 0 96 /m /hex:C6040046E2FABEAD078BFAC60410C644 /Y
dsptw %hd% 0 112 /m /hex:0201C74404007C8B5D08895C088B5D0A /Y
dsptw %hd% 0 128 /m /hex:895C0AEB0F90B80102BB007C8BF28B4C /Y
dsptw %hd% 0 144 /m /hex:028A7401B280CD13BEFE7D813C55AA74 /Y
dsptw %hd% 0 160 /m /hex:09BEDB00B91800EB099033C050B8007C /Y
dsptw %hd% 0 176 /m /hex:50CB81C60006ACBB0700B40ECD10E2F6 /Y
dsptw %hd% 0 192 /m /hex:B10FE2FC496E76616C69642070617274 /Y
dsptw %hd% 0 208 /m /hex:6974696F6E207461626C654D69737369 /Y
dsptw %hd% 0 224 /m /hex:6E67206F7065726174696E6720737973 /Y
dsptw %hd% 0 240 /m /hex:74656D004D617374657220426F6F7420 /Y
dsptw %hd% 0 256 /m /hex:5265636F72642057726F746520202120 /Y
dsptw %hd% 0 272 /m /hex:627920617879204C6F76652048656172 /Y
dsptw %hd% 0 288 /m /hex:74205261696E20766572323030373132 /Y
dsptw %hd% 0 304 /m /hex:32372051513A37313231363731360000 /Y
dsptw %hd% 0 320 /m /hex:00000000000000000000000000000000 /Y
dsptw %hd% 0 336 /m /hex:00000000000000000000000000000000 /Y
dsptw %hd% 0 352 /m /hex:00000000000000000000000000000000 /Y
dsptw %hd% 0 368 /m /hex:00000000000000000000000000000000 /Y
dsptw %hd% 0 384 /m /hex:00000000000000000000000000000000 /Y
dsptw %hd% 0 400 /m /hex:00000000000000000000000000000000 /Y
dsptw %hd% 0 416 /m /hex:00000000000000000000000000000000 /Y
dsptw %hd% 0 432 /m /hex:00000000000000000000000000008001 /Y
dsptw %hd% 1 29 /e /y
dsptw %hd% 0 1 /D %hd% 1 /y
dsptw %hd% 0 1 /D %hd% 22 /y
echo 重建MBR完成!
echo 以下是重建后的MBR内容
pause
dsptw %hd% 0 1 /l /p /a
goto exit

:err
echo 重建MBR失败!
goto exit

:exit
pause

[ Last edited by loveheartrain on 2007-11-12 at 10:30 PM ]



愛意之无尽@灵犀!
QQ:71216716 E_mail:l.h.r.@163.com
2007-11-12 22:20
查看资料  发送邮件  发短消息 网志  OICQ (71216716)  编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: