|
DOSforever
金牌会员
积分 4639
发帖 2239
注册 2005-1-30
状态 离线
|
『楼 主』:
[讨论] DOS, Windows 等几大操作系统的 MBR 和 PBR 的重写方法
有时候我们安装了许多操作系统和多系统引导管理软件之后,或者 MBR 或/和 PBR 遭损坏时候往往需要用某种操作系统标准的 MBR 或/和 PBR 对主引导扇区和分区引导扇区进行重写。目前我已知的方法和针对的操作系统如下,欢迎大家补充和指出错误之处:
Quote: | 重写 MBR
DOS: fdisk/mbr
Windows9X: 1.fdisk/mbr (MS-DOS 7.10)
2.全新安装或重装的时候安装程序会自动重写MBR,除非带 /IR 参数
Windows Me: 不清楚。没怎么用过,忽略。欢迎知道的补充
Windows NT: 不清楚。没怎么用过,忽略。欢迎知道的补充
Windows 2000: 不清楚。全新安装或重装的时候不会改动 MBR
Windows XP: 全新安装或重装的时候
重写 PBR
DOS: sys
Windows9X(MS-DOS 7.10): sys
Windows Me: 不清楚。没怎么用过,忽略。欢迎知道的补充
Windows NT: 不清楚。没怎么用过,忽略。欢迎知道的补充
Windows 2000: 全新安装或重装的时候
Windows XP: 全新安装或重装的时候 |
|
从中可以看出实际只有 DOS 才提供了重写 MBR 的工具。对 PBR ,实际各大操作系统都没有提供相应的工具,DOS 的 sys 命令只是一个取巧,只是利用了它在传输操作系统时要写标准 PBR 的这一个功能。当然,所有操作系统在格式化分区的时候都会写入标准的 PBR ,由于这样数据也丢失了,所以这种方法没有意义,不在我们的讨论范围。
另外,对于第三方软件我所知的只有 BOOTPART 这一软件,据说可以生成 DOS、Windows9X、WindowsNT 系列的分区引导扇区的记录,至于是否标准,由于我没怎么使用过所以不得而知。
|
DOS倒下了,但永远不死
DOS NEVER DIES !
投票调查:
http://www.cn-dos.net/forum/viewthread.php?tid=46187
本人尚未解决的疑难问题:
http://www.cn-dos.net/forum/viewthread.php?tid=15135
http://www.cn-dos.net/forum/viewthread.php?tid=47663
http://www.cn-dos.net/forum/viewthread.php?tid=48747 |
|
2007-11-25 14:40 |
|
|
9634888
初级用户
积分 38
发帖 19
注册 2006-10-28
状态 离线
|
|
2007-11-25 16:27 |
|
|
fujianabc
金牌会员
积分 3467
发帖 1616
注册 2004-6-21
状态 离线
|
『第
3 楼』:
winme和win9x一样的;
2000和xp一样的。
故障恢复控制台下的命令,fixmbr和fixboot可以用来重写mbr和pbr。
另外,vista自带了命令行工具bootsect.exe可以重写pbr。
|
|
2007-11-25 18:05 |
|
|
DOSforever
金牌会员
积分 4639
发帖 2239
注册 2005-1-30
状态 离线
|
|
2007-11-25 22:08 |
|
|
fujianabc
金牌会员
积分 3467
发帖 1616
注册 2004-6-21
状态 离线
|
『第
5 楼』:
Quote: | Originally posted by DOSforever at 2007-11-25 10:08 PM:
嗯!“福建ABC"说的有道理,但问题是如果要用 fixmbr 和 fixboot 命令得象重装一样耐心的等待很长的一段时间,复制完许多临时文件才能进入 Win2000, ... |
|
网上搜一下我写的“ramdisk启动故障恢复控制台"的方法,很方便的,启动也很快的。
制做完后就5个文件,放在光盘上或者u盘上都行(大概6-7MB)。
|
|
2007-11-26 11:36 |
|
|
loveheartrain
初级用户
DOS之迷
积分 174
发帖 81
注册 2007-11-7
状态 离线
|
『第
6 楼』:
XP下用dsptw.exe
@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
ECHO 重建MBR前备份原来的MBR到文件mbry.bin!
dsptw %hd% 0 1 /s mbry%hd%.bin /y
ECHO 备份完成!
ECHO @
ECHO 正在写入00h ...
dsptw %hd% 0 0 /m /hex:33C08ED0BC007CFB5007501FFC50BE00 /Y
if errorlevel 1 goto err
ECHO 写入00h完成!
ECHO @
ECHO 正在写入10h ...
dsptw %hd% 0 16 /m /hex:7CBF0006B90002F3A4BF1E0657CB33DB /Y
ECHO 写入10h完成!
ECHO @
ECHO 正在写入20h ...
dsptw %hd% 0 32 /m /hex:33D2BEBE07B104F6048074038BD64383 /Y
ECHO 写入20h完成!
ECHO @
ECHO 正在写入30h ...
dsptw %hd% 0 48 /m /hex:C610E2F383FB017409BEC400B91700EB /Y
ECHO 写入30h完成!
ECHO @
ECHO 正在写入40h ...
dsptw %hd% 0 64 /m /hex:719052B441B280BBAA55CD135A81FB55 /Y
ECHO 写入40h完成!
ECHO @
ECHO 正在写入50h ...
dsptw %hd% 0 80 /m /hex:AA7533F6C101742EB80042BEAD07B110 /Y
ECHO 写入50h完成!
ECHO @
ECHO 正在写入60h ...
dsptw %hd% 0 96 /m /hex:C6040046E2FABEAD078BFAC60410C644 /Y
ECHO 写入60h完成!
ECHO @
ECHO 写入70h ...
dsptw %hd% 0 112 /m /hex:0201C74404007C8B5D08895C088B5D0A /Y
ECHO 写入70h完成!
ECHO @
ECHO 正在写入80h ...
dsptw %hd% 0 128 /m /hex:895C0AEB0F90B80102BB007C8BF28B4C /Y
ECHO 写入80h完成!
ECHO @
ECHO 正在写入90h ...
dsptw %hd% 0 144 /m /hex:028A7401B280CD13BEFE7D813C55AA74 /Y
ECHO 写入90h完成!
ECHO @
ECHO 正在写入a0h ...
dsptw %hd% 0 160 /m /hex:09BEDB00B91800EB099033C050B8007C /Y
ECHO 写入a0h完成!
ECHO @
ECHO 正在写入b0h ...
dsptw %hd% 0 176 /m /hex:50CB81C60006ACBB0700B40ECD10E2F6 /Y
ECHO 写入b0h完成!
ECHO @
ECHO 正在写入c0h ...
dsptw %hd% 0 192 /m /hex:B10FE2FC496E76616C69642070617274 /Y
ECHO 写入c0h完成!
ECHO @
ECHO 正在写入d0h ...
dsptw %hd% 0 208 /m /hex:6974696F6E207461626C654D69737369 /Y
ECHO 写入d0h完成!
ECHO @
ECHO 正在写入e0h ...
dsptw %hd% 0 224 /m /hex:6E67206F7065726174696E6720737973 /Y
ECHO 写入e0h完成!
ECHO @
ECHO 正在写入f0h ...
dsptw %hd% 0 240 /m /hex:74656D004D617374657220426F6F7420 /Y
ECHO 写入f0h完成!
ECHO @
ECHO 正在写入100h ...
dsptw %hd% 0 256 /m /hex:5265636F72642057726F746520202120 /Y
ECHO 写入f0h完成!
ECHO @
ECHO 正在写入110h
dsptw %hd% 0 272 /m /hex:627920617879204C6F76652048656172 /Y
ECHO 写入110h完成!
ECHO @
ECHO 正在写入120h ...
dsptw %hd% 0 288 /m /hex:74205261696E20766572323030373132 /Y
ECHO 写入120h完成!
ECHO @
ECHO 写入130h ...
dsptw %hd% 0 304 /m /hex:32372051513A37313231363731360000 /Y
ECHO 写入130h完成!
ECHO @
ECHO 正在写入140h ...
dsptw %hd% 0 320 /m /hex:00000000000000000000000000000000 /Y
ECHO 写入140h完成!
ECHO @
ECHO 正在写入150h ...
dsptw %hd% 0 336 /m /hex:00000000000000000000000000000000 /Y
ECHO 写入150h完成!
ECHO @
ECHO 写入160h ...
dsptw %hd% 0 352 /m /hex:00000000000000000000000000000000 /Y
ECHO 写入160h完成!
ECHO @
ECHO 正在写入170h ...
dsptw %hd% 0 368 /m /hex:00000000000000000000000000000000 /Y
ECHO 写入170h完成!
ECHO @
ECHO 正在写入180h ...
dsptw %hd% 0 384 /m /hex:00000000000000000000000000000000 /Y
ECHO 写入180h完成!
ECHO @
ECHO 正在写入190h ...
dsptw %hd% 0 400 /m /hex:00000000000000000000000000000000 /Y
ECHO 写入190h完成!
ECHO @
ECHO 正在写入1a0h ...
dsptw %hd% 0 416 /m /hex:00000000000000000000000000000000 /Y
ECHO 写入1a0h完成!
ECHO @
ECHO 正在写入1b0h ...
dsptw %hd% 0 432 /m /hex:00000000000000000000000000008001 /Y
ECHO 写入1b0h完成!
ECHO @
pause
ECHO 正在清除2到46扇区的数据 ...
dsptw %hd% 1 45 /e /y
ECHO 清除2到46扇区的数据完成!
ECHO @
ECHO 正在将MBR备份到第2扇区 ...
dsptw %hd% 0 1 /D %hd% 1 /y
ECHO 备份到第2扇区完成!
ECHO @
ECHO 正在将MBR备份到第42扇区 ...
dsptw %hd% 0 1 /D %hd% 41 /y
ECHO 备份到第42扇区完成!
ECHO @
echo 重建MBR完成!
echo 以下是重建后的MBR内容
pause
ECHO 正在将重建后的MBR写到文件mbrx%hd%.bin
dsptw %hd% 0 1 /s mbrx%hd%.bin /y
ECHO 写入完成!
dsptw %hd% 0 1 /l /p /a
goto exit
:err
echo 重建MBR失败!
:exit
pause
XP下受系统保护不能直接写入0硬盘PBR,可以在PE下写入,一下代码适用于FAT32格式启动的NTLDR
@echo off
color 0A
:mmbr
title MNTMBR 重建NTMBR!
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%:1!以下是该硬盘的分区情况!
dsptw %hd% /l /y
ECHO MNTMBR 开始重建NTMBR!
echo 请选择所要的操作。
echo 恢复输入Y 其它键退出
echo 输入后回车执行!
set /p h="">nul
if not %h%'==y' if not %h%'==Y' goto exit
if %h%'==' goto exit
ECHO 重建MBR前备份原来的MBR到文件mbry.bin!
dsptw %hd%:1 0 1 /s ntmbry%hd%.bin /y
ECHO 备份完成!
ECHO @
ECHO 正在写入00h ...
dsptw %hd%:1 0 3 /m /hex:4158594E544C4452 /Y
if errorlevel 1 goto err
ECHO 写入00h完成!
ECHO @
ECHO 正在写入40h ...
dsptw %hd%:1 0 71 /m /hex:90DBD0C4D3EA2020 /Y
ECHO 写入40h完成!
ECHO @
ECHO 正在写入60h ...
dsptw %hd%:1 0 96 /m /hex:7B8EC18ED9BD007C884E028A5640B408 /Y
ECHO 写入60h完成!
ECHO @
ECHO 写入70h ...
dsptw %hd%:1 0 112 /m /hex:CD137305B9FFFF8AF1660FB6C640660F /Y
ECHO 写入70h完成!
ECHO @
ECHO 正在写入80h ...
dsptw %hd%:1 0 128 /m /hex:B6D180E23FF7E286CDC0ED0641660FB7 /Y
ECHO 写入80h完成!
ECHO @
ECHO 正在写入90h ...
dsptw %hd%:1 0 144 /m /hex:C966F7E1668946F8837E16007538837E /Y
ECHO 写入90h完成!
ECHO @
ECHO 正在写入a0h ...
dsptw %hd%:1 0 160 /m /hex:2A007732668B461C6683C00CBB0080B9 /Y
ECHO 写入a0h完成!
ECHO @
ECHO 正在写入b0h ...
dsptw %hd%:1 0 176 /m /hex:0100E82B00E94803A0FA7DB47D8BF0AC /Y
ECHO 写入b0h完成!
ECHO @
ECHO 正在写入c0h ...
dsptw %hd%:1 0 192 /m /hex:84C074173CFF7409B40EBB0700CD10EB /Y
ECHO 写入c0h完成!
ECHO @
ECHO 正在写入d0h ...
dsptw %hd%:1 0 208 /m /hex:EEA0FB7DEBE5A0F97DEBE098CD16CD19 /Y
ECHO 写入d0h完成!
ECHO @
ECHO 正在写入e0h ...
dsptw %hd%:1 0 224 /m /hex:6660663B46F80F824A00666A00665006 /Y
ECHO 写入e0h完成!
ECHO @
ECHO 正在写入f0h ...
dsptw %hd%:1 0 240 /m /hex:53666810000100807E02000F852000B4 /Y
ECHO 写入f0h完成!
ECHO @
ECHO 正在写入100h ...
dsptw %hd%:1 0 256 /m /hex:41BBAA558A5640CD130F821C0081FB55 /Y
ECHO 写入100h完成!
ECHO @
ECHO 正在写入110h
dsptw %hd%:1 0 272 /m /hex:AA0F851400F6C1010F840D00FE4602B4 /Y
ECHO 写入110h完成!
ECHO @
ECHO 正在写入120h ...
dsptw %hd%:1 0 288 /m /hex:428A56408BF4CD13B0F9665866586658 /Y
ECHO 写入120h完成!
ECHO @
ECHO 写入130h ...
dsptw %hd%:1 0 304 /m /hex:6658EB2A6633D2660FB74E1866F7F1FE /Y
ECHO 写入130h完成!
ECHO @
ECHO 正在写入140h ...
dsptw %hd%:1 0 320 /m /hex:C28ACA668BD066C1EA10F7761A86D68A /Y
ECHO 写入140h完成!
ECHO @
ECHO 正在写入150h ...
dsptw %hd%:1 0 336 /m /hex:56408AE8C0E4060ACCB80102CD136661 /Y
ECHO 写入150h完成!
ECHO @
ECHO 写入160h ...
dsptw %hd%:1 0 352 /m /hex:0F8254FF81C300026640490F8571FFC3 /Y
ECHO 写入160h完成!
ECHO @
ECHO 正在写入170h ...
dsptw %hd%:1 0 368 /m /hex:4E544C44522020202020200D0A4E544C /Y
ECHO 写入170h完成!
ECHO @
ECHO 正在写入180h ...
dsptw %hd%:1 0 384 /m /hex:4452206973206D697373696E67FF0D0A /Y
ECHO 写入180h完成!
ECHO @
ECHO 正在写入190h ...
dsptw %hd%:1 0 400 /m /hex:4469736B206572726F72FF0D0A507265 /Y
ECHO 写入190h完成!
ECHO @
ECHO 正在写入1a0h ...
dsptw %hd%:1 0 416 /m /hex:737320616E79206B657920746F207265 /Y
ECHO 写入1a0h完成!
ECHO @
ECHO 正在写入1b0h ...
dsptw %hd%:1 0 432 /m /hex:73746172740D0A000000000000000000 /Y
ECHO 写入1b0h完成!
ECHO @
ECHO 正在写入1c0h ...
dsptw %hd%:1 0 448 /m /hex:00000000000000000000000000000000 /Y
ECHO 写入1c0h完成!
ECHO @
ECHO 正在写入1d0h ...
dsptw %hd%:1 0 464 /m /hex:00000000000000000000000000000000 /Y
ECHO 写入1d0h完成!
ECHO @
ECHO 正在写入1e0h ...
dsptw %hd%:1 0 480 /m /hex:00000000000000000000000000000000 /Y
ECHO 写入1e0h完成!
ECHO @
ECHO 正在写入1f0h ...
dsptw %hd%:1 0 496 /m /hex:000000000000000000 /Y
ECHO 写入1f0h完成!
ECHO @
echo 重建NTMBR完成!
echo 以下是重建后的NTMBR内容
pause
ECHO 正在将重建后的NTMBR写到文件ntmbrx%hd%.bin
dsptw %hd%:1 0 1 /s ntmbrx%hd%.bin /y
ECHO 写入完成!
dsptw %hd%:1 0 1 /l /p /a
goto exit
:err
echo 重建NTMBR失败!
:exit
pause
[ Last edited by loveheartrain on 2007-11-30 at 08:52 PM ]
|
愛意之无尽@灵犀!
QQ:71216716 E_mail:l.h.r.@163.com |
|
2007-11-30 20:47 |
|
|
l123456789
新手上路
积分 5
发帖 3
注册 2006-3-7
状态 离线
|
|
2007-12-7 10:09 |
|
|
fj666
新手上路
积分 10
发帖 5
注册 2008-1-25
状态 离线
|
|
2008-1-25 20:54 |
|
|
sh19871122
新手上路
积分 18
发帖 8
注册 2008-4-4
状态 离线
|
|
2008-4-4 17:08 |
|
|
oasisspirit
新手上路
积分 15
发帖 6
注册 2008-4-11
状态 离线
|
『第
10 楼』:
有很多软件可以 重写 MBR, 如,
disk genius,易我分区表医生, WinPM 等
重写 DBR的 倒是没见到
|
|
2008-4-11 15:47 |
|