免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3581 | 回复: 1
打印 上一主题 下一主题

[推荐] 修改Solaris默认启动分区及timeout时间 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-05-30 14:46 |只看该作者 |倒序浏览
发信人: Wwashington (Jacky), 信区: NewSoftware
标  题: [推荐] 修改Solaris默认启动分区及timeout时间
发信站: 水木社区 (Tue May 30 14:34:53 2006), 站内

Docs Title: [推荐] 修改Solaris默认启动分区及timeout时间
Publish On: 2006/05/30
Written By: Wwashington AT newsmth.org

前言:

之前看过一些文章修改 Solaris 8 x86 的启动分区,没仔细研究,后来认真看发现其中
一些修改技巧对于 Solaris 9 x86 也是适用的。由于修改版本众多,读者可能感到混乱。
特别是个别直接改 Code 而不做任何分析的,更是非常恐怖。推荐大家看 ITPUB 的两篇
文章,为了方便阅读我直接附在本文的最后。

这篇文章里参考了大量前人的研究成果,所以严格地说不能算是原创,那就当是推荐吧。
同时,感谢这些作者们的劳动,让我们少走很多弯路,在较短的时间里解决了复杂问题。
另外,我要提醒大家不要迷信老外,通常是老外的技术比较先进,但某些时候也挺土鳖,
如果你完全相信他们讲的,很可能要绕弯子。

-----------------------------------------------------------------------------

推荐:

http://topic.csdn.net/t/20001211/16/47412.html
http://www.itpub.net/25764,2.html
修改Solaris的独霸启动,使其可以从其它的Os Loader启动

http://www.chinaunix.net/jh/6/16614.html
http://www.itpub.net/54353.html
[原创] 修改Solaris默认启动分区及timeout时间

参考:

http://forum.sun.com/jive/thread ... mp;messageID=306110
Sun Tools & Products Forums - win 2000 Boot manager

http://www.enterprisedt.com/publications/dual_Boot.html
Dual Booting Linux and Windows 2000/XP on large hard disks

http://multiBoot.solaris-x86.org/index.html
Multi-Booting Solaris and other operating systems

http://www.chinaunix.net/jh/6/123312.html
[精华] Solaris启动过程详解 zt

http://www.linuxsir.org/bbs/archive/index.php/t-70074.html
如何用MS引导Solaris

http://www.aonet.cn/artical/15/20050415871.htm
WIN98SE硬盘主引导记录代码反汇编分析

-----------------------------------------------------------------------------

说明:下面就是那篇让我很困惑的文章,贴出来给大家参考,反正我是没有看懂。
      手头没有 Solaris 8 的 pboot 文件,将来装个 S8 或下载文件后再分析。
      设立 X86Boot 分区实在太奢侈了,通常只有 Solaris 在第二硬盘才需要。

http://www.chu.edu.tw/~chunpo/so ... nstall-x86-2.8.html
Solaris 8 10/01 Installation Guide

由於我們是將在第二顆,所以需要修改一點地方:

(26)       先用Linux光碟來開機。

(27)       接著用dd:

dd if=/dev/hdb1 of=/mnt/Bootsect.sol bs=512 count=1024

這裡/deb/hdb1就是X86Boot那一個partition。

(28)       用UltraEdit來修改Bootsect.sol的前4個byte。改成b2 81 90 90

(29)       修改Boot.ini,加入:

c:\Bootsect.sol=”Solaris 8”

(30)       此時就可以開機進入Solaris了!

-----------------------------------------------------------------------------

分析:

用 IDA 4.9 Advanced 看到的结果,有些注解是我自己加的,为方便阅读格式略有调整。

seg000:7C84
seg000:7C84 loc_7C84:                               ; CODE XREF: seg000:7C7A
seg000:7C84                 mov     bx, 7FBEh
seg000:7C87                 mov     cx, 4
seg000:7C8A
seg000:7C8A loc_7C8A:                               ; CODE XREF: seg000:7C92
seg000:7C8A                 cmp     byte ptr [bx], 80h ; Partition is Active
seg000:7C8D                 jz      short loc_7C9C
seg000:7C8F                 add     bx, 10h
seg000:7C92                 loop    loc_7C8A

seg000:7C94 ; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
seg000:7C94                 mov     bp, 7DC9h
seg000:7C97                 mov     cx, 14h
seg000:7C9A                 jmp     short loc_7CE4

seg000:7C9C ; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
seg000:7C9C
seg000:7C9C loc_7C9C:                               ; CODE XREF: seg000:7C8D
seg000:7C9C                 mov     ecx, [bx+8]
seg000:7CA0                 mov     ds:dword_7D94, ecx

-----------------------------------------------------------------------------

实战:

1) Run Solaris, get BootFile

# cd /dos/C/Boot/Sun09
# [ -r Old ] || mkdir Old
# ll /usr/platform/i86pc/lib/fs/ufs/
# cp -pf /usr/platform/i86pc/lib/fs/ufs/* Old

2) Config the Command Console

"命令提示符"属性 --> 布局 --> 缓冲高度 = 35
"命令提示符"属性 --> 布局 --> 屏幕高度 = 35
C:\>chcp 437       {使用 Hiew 时用英文}
C:\>chcp 936       {系统默认是设成中文}

-----------------------------------------------------------------------------

3) File_01: Boot

C:\>cd /d C:\Boot\Sun09\New\Boot
C:\Boot\Sun09\New\Boot>fc /b C:\Boot\Sun09\Old\PBoot PBoot
Comparing files C:\Boot\SUN09\Old\PBoot and PBoot
FC: no differences encountered

C:\Boot\Sun09\New\Boot>H:\Temp\Data\Hiew\hiew32 PBoot
F4, View Decode
F7, Search Hex: BB BE 7F

Notes: move cursor 1 line down and press F7 to search more,
if result is none, that means what you search is the unique.

F3, Modify Hex: BB C2 7F    ; F9, Update Changes
M2, Search Hex: 80 3F 80     {M2=move cursor 2 lines down}
F3, Modify Hex: 80 3F 82    ; F9, Update Changes
M7, Search Hex: 66 8B 4F 08  {M7=move cursor 7 lines down}
F3, Modify Hex: 66 8B 4F 04 ; F9, Update Changes
F10, Quit Hiew.

C:\Boot\Sun09\New\Boot>fc /b C:\Boot\Sun09\Old\PBoot PBoot
Comparing files C:\Boot\SUN09\Old\PBoot and PBoot
00000085: BE C2
0000008C: 80 82
0000009F: 08 04

-----------------------------------------------------------------------------

4) File_02: 1Sys

C:\>cd /d C:\Boot\Sun09\New\1Sys
C:\Boot\Sun09\New\1Sys>fc /b C:\Boot\Sun09\Old\BootBlk BootBlk
Comparing files C:\Boot\SUN09\Old\BootBlk and BootBlk
FC: no differences encountered

C:\Boot\Sun09\New\Boot>H:\Temp\Data\Hiew\hiew32 BootBlk
F4, View Decode
F7, Search Hex: 83 C4 02 48

Notes: move cursor 1 line down and press F7 to search more,
if result is none, that means what you search is the unique.

M2, Search Hex: 74 71        {M2=move cursor 2 lines down}
F3, Modify Hex: EB 71       ; F9, Update Changes
F10, Quit Hiew.

C:\Boot\Sun09\New\1Sys>fc /b C:\Boot\Sun09\Old\BootBlk BootBlk
Comparing files C:\Boot\SUN09\Old\BootBlk and BootBlk
00000B5A: 74 EB

-----------------------------------------------------------------------------

5) File_03: 6Sec

C:\>cd /d C:\Boot\Sun09\New\6Sec
C:\Boot\Sun09\New\6Sec>fc /b C:\Boot\Sun09\Old\BootBlk BootBlk
Comparing files C:\Boot\SUN09\Old\BootBlk and BootBlk
FC: no differences encountered

C:\Boot\Sun09\New\Boot>H:\Temp\Data\Hiew\hiew32 BootBlk
F4, View Decode
F5, Go To Addr: 324A

M0, Search Hex: 1E          {M0=move cursor 0 lines down}
F3, Modify Hex: 06         ; F9, Update Changes
F4, View Hex
F7, Search ASC: BSD        ; Change BSD System to FreeBSD
M1, Search Hex: A7         ; Modify A7 to be A6 OpenBSD
M0, Search ASC: Next       ; Change NeXTSTEP to OpenBSD
F10, Quit Hiew.

替换的理由是 FreeBSD 和 OpenBSD 相对流行一些,NeXTSTEP 在
国内比较冷门。如果你用 NetBSD,同样的道理找个冷门系统替换。

C:\Boot\Sun09\New\6Sec>fc /b C:\Boot\Sun09\Old\BootBlk BootBlk
Comparing files C:\Boot\SUN09\Old\BootBlk and BootBlk
0000324A: 1E 06   (延时 30 --> 06 秒钟)
00003969: 42 46   (字母  B --> F  字母)
0000396A: 53 72   (字母  S --> r  字母)
0000396B: 44 65   (字母  D --> e  字母)
0000396C: 20 65   (字母  _ --> e  字母)
0000396D: 53 42   (字母  S --> B  字母)
0000396E: 79 53   (字母  y --> S  字母)
0000396F: 73 44   (字母  s --> D  字母)
00003970: 74 20   (字母  t --> _  字母)
00003971: 65 20   (字母  e --> _  字母)
00003972: 6D 20   (字母  m --> F  字母)
00003974: A7 A6   (序号 A7 --> A6 序号)
00003975: 4E 4F   (字母  N --> O  字母)
00003976: 65 70   (字母  e --> p  字母)
00003977: 58 65   (字母  X --> e  字母)
00003978: 54 6E   (字母  T --> n  字母)
00003979: 53 42   (字母  S --> B  字母)
0000397A: 54 53   (字母  T --> S  字母)
0000397B: 45 44   (字母  E --> D  字母)
0000397C: 50 20   (字母  P --> _  字母)

说明:上面的注解是我自己加的,fc 本身不能提供相关的注解,其中 _ 字符代表空格。

-----------------------------------------------------------------------------

6) File_04: Bdos

C:\>cd /d C:\Boot\Sun09\New\Bdos
C:\Boot\Sun09\New\Bdos>fc /b ..\6Sec\BootBlk BootBlk
Comparing files ..\6SEC\BootBlk and BOOTBLK
FC: no differences encountered

修改方法跟上面的步骤类似,至于具体要修改的字节,看下面 fc 比较的结果就可以了。

C:\Boot\Sun09\New\Bdos>fc /b ..\6Sec\BootBlk BootBlk
Comparing files ..\6SEC\BootBlk and BOOTBLK
00000B7C: 6A A1
00000B7D: 1B 08
00000B7E: E8 D5
00000B7F: 77 39
00000B80: 1B 46
00000B81: 83 FC
00000B82: C4 74
00000B83: 02 30
00000B84: 66 C7
00000B85: 68 46
00000B86: 00 FC
00000B87: 00 01
00000B88: 1B 00
00000B89: 00 8B
00000B8A: 6A 46
00000B8B: 00 FC
00000B8C: FF 48
00000B8D: 36 C1
00000B8E: 10 E0
00000B8F: D5 04
00000B90: 6A 01
00000B91: 52 46
00000B92: 1E FE
00000B93: 68 8B
00000B94: AE 46
00000B95: 04 FE
00000B96: E8 89
00000B97: DB 46
00000B98: 1B 04
00000B99: 83 EB
00000B9A: C4 1D

说明:这是在 6Sec 基础上继续修改的,用 fc 比较文件时参考对象不是系统原始文件。

缺省情况下,如果你的系统活动分区是 Solaris 分区,那么选项 1,2,3 都是正常的,
并且系统默认引导 Solaris。修改后各选项依然正常,但是默认引导第一个分区 WinXp。
此时你在菜单里不选择、输入 Enter、输入 ESC 键,其结果都是引导第一个分区。

-----------------------------------------------------------------------------

7) Run Solaris, set BootFile

前提:用户一定要懂得如何修改 Boot.ini 使 OS Loader 支持 BSD/Linux 的系统,这
是本文的技术基础。如果缺乏这方面的知识,请到 Google 搜索"OS Loader 应用心得"。

# cd /dos/C/Boot/Sun09/New
# cp -pf ./Boot/PBoot ../../BootSect.sun
# cd ../Txt

# cat SetBoot.sh
<------
BOOTMODE=6Sec

cd /dos/C/Boot/Sun09/New
echo "1) If you want to treat Solaris partition as only one"
echo "installboot ./Boot/PBoot ./1Sys/BootBlk /dev/rdsk/c0d0s2"
echo "2) If you want to boot Solaris partition in 6 seconds"
echo "installboot ./Boot/PBoot ./6Sec/BootBlk /dev/rdsk/c0d0s2"
echo "3) If you want to boot Windows partition in Bdos Mode"
echo "installboot ./Boot/PBoot ./Bdos/BootBlk /dev/rdsk/c0d0s2"
echo ""
echo "Work_Dir=`pwd`"
echo "BootMode=$BOOTMODE"
echo installboot ./Boot/PBoot ./$BOOTMODE/BootBlk /dev/rdsk/c0d0s2
installboot ./Boot/PBoot ./$BOOTMODE/BootBlk /dev/rdsk/c0d0s2
------>

配置:我的分区表是这样的,1 是 BIGDOS,分区格式是 FAT16,因此具备最好兼容性。
2 是 OpenBSD,有时会换成 FreeBSD,根据实际需要重装;Solaris 菜单能认 FreeBSD
但不认识 OpenBSD,实际上两个分区都可以正常启动,所以干脆改了它的分区ID数据库。
3 是 Solaris x86 分区。4 是 DOS Extend。

这是未替换 BootBlk 的分区显示,替换后能够根据实际情况显示 FreeBSD 和 OpenBSD。

             Total disk size is 38765 cylinders
             Cylinder size is 4032 (512 byte) blocks

                                               Cylinders
      Partition   Status    Type          Start   End   Length     %
      =========   ======    ============  =====   ===   ======   ===
          1       Active    DOS-BIG           0    55      56      0
          2                 BSD System       55  1509    1455      4
          3                 Solaris        1518  6438    4921     13
          4                 EXT LBA        6446  38763    32318   83

             Total disk size is 38765 cylinders
             Cylinder size is 4032 (512 byte) blocks

                                               Cylinders
      Partition   Status    Type          Start   End   Length     %
      =========   ======    ============  =====   ===   ======   ===
          1       Active    DOS-BIG           0    55      56      0
          2                 Other OS         55  1509    1455      4
          3                 Solaris        1518  6438    4921     13
          4                 EXT LBA        6446  38763    32318   83

说明: 那个 PBoot 是必须改的,否则无法兼容 WinNT/2K/Xp 的 OS Loader。至于加快
引导过程,一共支持三种 BootMode,一个是 1Sys 让 Solaris 8/9 x86 以为只有一个
Solaris 分区而直接启动; 第二个是 6Sec 选择菜单显示六秒钟,默认启动 Solaris 分
区; 第三个是 Bdos 不论活动分区在哪里,默认启动 DOS 分区。

用法:使用 1Sys 模式,不论是从 OS Loader 调用 BootSect.sun 还是用 Grub 4 DOS
里的 grldr 0.97 做 makeactive 并 chainloader +1,系统都是直接启动 Solaris。使
用 6Sec 模式,默认是启动 Solaris 而不是活动分区,菜单延时为六秒。使用 Bdos 模
式,默认是启动 DOS 分区而不是活动分区。一般来说,6Sec 模式最好用。

注意:当 Solaris 分区是 Active 时,启动菜单功能完全正常。当 DOS 分区是 Active
时,要从 OS Loader 调用 BootSect.sun。选 1 是启动 Solaris,选 2 进入 OpenBSD,
选 3 是重新加载当前启动菜单。看吧,Sun 公司的引导文件还真是够怪的。

我知道 6Sec 模式还不够完美,但是继续研究下去花费的时间很多,实际上得到的进步
却太小,不符合投资回报的择优原则。初步估计是计算分区偏移有缺陷,等将来有时间,
再认真研究如何修改搜索分区和键盘选择的部分代码,提供正常的启动菜单。

-----------------------------------------------------------------------------

Sun09.zip

52.2 KB, 下载次数: 50

论坛徽章:
0
2 [报告]
发表于 2006-05-30 14:48 |只看该作者
附录一:修改Solaris的独霸启动,使其可以从其它的Os Loader启动,作者 1楼 at CSDN

发在 ITPUB 的改进版 ; +++++++++++++++++++++++++++++++++++++++++++++++++++++++

找到啦(自己掂量着办吧)
修改Solaris的独霸启动,使其可以从其它的Os Loader启动.
它有两个地方使得其不能与其它的Loader合作,分区引导记录和引导块,
分别对应/usr/platform/i86pc/lib/fs/ufs/PBoot,BootBlk两个文件.

1.分区引导要求Solaris8是当前活动分区:

84: bb 7f be mov bx,7fbe ;分区表首址
b9 00 04 mov cx,0004 ;搜索活动分区
80 3f 80 aga:cmp byte ptr[bx],80h ;80h活动分区标志
74 0d je ok
83 c3 10 add bx,10h
e2 fb loop aga
.
.
.
9c: 66 8b 4f 08 mov ecx,[bx+8] ;活动分区首址

修改为:

84: bb 7f c2 mov bx,7fc2 ;搜索Solaris分区标志
b9 00 04 mov cx,0004 ;搜索活动分区
80 3f 82 aga:cmp byte ptr[bx],82h ;82h,Solaris分区标志
74 0d je ok
83 c3 10 add bx,10h
e2 fb loop aga
.
.
.
9c: 66 8b 4f 04 mov ecx,[bx+4] ;solaris分区首址

2.引导块记录

:0b53 e8 00 7a call sub_calp
:0b56 83 c4 02 add sp,2
:0b59 48 dec ax
:0b5a 74 71 jz only_onep -->(eb 71)jmp only_onep

关键让它以为只有一个分区,则引导块程序不会让你去选择启动那个分区.
而且已改动Solaris不是当前活动分区,则你不论怎样选,它都去加载当前
活动分区,没法选的.这样改是比较便宜的做法.

3.起作用
#installboot /maybed/pboot /maybed/bootblk /dev/rdsk/c0d0s2

Ok!enjoy it.

错了别找我啊!

发在 CSDN 的原文 ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

修改Solaris的独霸启动,使其可以从其它的Os   Loader启动.   
  它有两个地方使得其不能与其它的Loader合作,分区引导记录和引导块,   
  分别对应/usr/platform/i86pc/lib/fs/ufs/PBoot,BootBlk两个文件.   
   
  1.分区引导要求Solaris8是当前活动分区:   
   
  84:   bb   7f   be               mov   bx,7fbe          ;分区表首址   
        b9   00   04               mov   cx,0004          ;搜索活动分区   
        80   3f   80       aga:cmp   byte   ptr[bx],80h   
        74   0d                    je   ok   
        83   c3   10               add   bx,10h   
        e2   fb                    loop   aga   
   
  修改为:   
   
  84:   bb   7f   ee               mov   bx,7fee[注]      ;直接Solaris分区表址   
        90   90   90               nop,nop,nop            ;   
        90   90   90               nop,nop,nop   
        eb   0d                    jmp   ok   
        83   c3   10               add   bx,10h   
        e2   fb                    loop   aga   
            
  [注]与具体分区表项位置有关,1-->7fbe,2-->7fce,3-->7fde,4-->7fee   
   
  2.引导块记录   
   
        :0b53       e8   00   7a   call   sub_calp   
        :0b56       83   c4   02   add   sp,2   
        :0b59       48             dec   ax   
        :0b5a       74   71        jz   only_onep  --> (eb  71)jmp  only_onep   
         
  关键让它以为只有一个分区,则引导块程序不会让你去选择启动那个分区.   
  而且已改动Solaris不是当前活动分区,则你不论怎样选,它都去加载当前   
  活动分区,没法选的.这样改是比较便宜的做法.   
   
  3.起作用   
  #installboot   /maybed/pboot   /maybed/bootblk   /dev/rdsk/c0d0s2   
   
              Ok!enjoy   it.   
  另外,你可以直接下载我已改好的   
  ftp://solar.pmo.ac.cn/pub/sol8.i86/multiBoot

-----------------------------------------------------------------------------

附录二:[原创] 修改Solaris默认启动分区及timeout时间,作者 Zhjx at ChinaUnix

修改Solaris引导程序的默认启动分区及timeout时间

一、分析
对Solaris引导程序进行分析,并说明采用的修改方式

本人硬盘分区如下:
1. Windows 2000 主分区 5G
2. Winnt 4.0 主分区 1G
3. Big Dos Extend 扩展分区 剩下的全部空间
4. Solaris 主分区 2G
------------------------------------------------
5. 逻辑分区1
6. 逻辑分区2
7. 逻辑分区3
....

用Solaris的引导程序来进行多系统引导。但比较麻烦的是我经常用Windows 2000,而Solaris
的引导程序总是默认引导Solaris分区。

后来通过修改引导块记录(BootBlk)实现默认启动Windows2000。分析BootBlk引导过程如下:
xxxx E8 0238 call sub_20 ; 显示引导分区列表供选择,30秒内无选择,则默认引导Solaris
....
xxxx 0B C0 or ax,ax ; Zero ?
xxxx 75 3C jnz short loc_93 ; no zero -- 表示用户有选择其他分区
xxxx loc_91::
xxxx .... ; Zero -- 表示用户选择Solaris。直接按'ESC'或'ENTER'或键入'4','ENTER'
显示开始引导Solaris分区的信息
xxxx loc_92::
xxxx 5E pop si
xxxx C9 leave ; Procedure exit
xxxx C3 retn

xxxx 90 nop
xxxx loc_93::
xxxx FF 76 FE push word ptr [bp-2] ; word ptr [bp-2] -- 用户选择的分区的地址
xxxx 8B 46 FC mov ax,[bp-4] ; word ptr [bp-4] -- 用户选择的是第几个分区
xxxx 48 dec ax
xxxx 50 push ax
xxxx E8 04DB call sub_24 ; 修改活动分区
xxxx 83 C4 04 add sp,4
xxxx 8A 56 06 mov dl,[bp+6]
xxxx FF 1E D50C call dword ptr ds:D50C ; 引导用户分区
xxxx loc_94::
xxxx 5E pop si
xxxx C9 leave ; Procedure exit
xxxx C3 retn
sub_17 endp

修改原理:
在0B7C处加入一段代码:先要判断用户是否键入'4','ENTER',如是,则用户要引导Solaris,
直接转到0BB4处return;否则设置[bp-2]及[bp-4],转到loc_92处。修改后, 直接按'ESC'或
'ENTER'会引导自定分区,不会引导Solaris。

修改内容:
用下面的代码替换从loc_91开始的代码,
xxxx 0B C0 OR AX,AX
xxxx 75 3C JNZ short loc_93
xxxx A1 08 D5 MOV AX,[D508]
xxxx 39 46 FC CMP [BP-04],AX
xxxx 74 30 JZ short loc_92
xxxx C7 46 FC 01 00 MOV WORD PTR [BP-04],0001 ; 0001 -- 设置默认引导第一个分区
xxxx 8B 46 FC MOV AX,[BP-04]
xxxx 48 DEC AX
xxxx C1 E0 04 SHL AX,4
xxxx 01 46 FE ADD [BP-02],AX
xxxx 8B 46 FE MOV AX,[BP-02]
xxxx 89 46 04 MOV [BP+04],AX
xxxx EB 1D JMP short loc_93

二、修改方法1
直接修改硬盘Solaris引导扇区。

1. 修改默认引导分区 (扇区号为说明方便,以本人机器为例)
查看分区表找到Solaris分区第一个扇区(10237248),加上8即为要修改的扇区(10237256),
确认偏移017c处为 6A 1B E8 77 1B 83 C4 02,如果相同则修改为
A1 08 D5 39 46 FC 74 30 C7 46 FC 01 00 8B 46 FC 48 C1 E0 04 01 46 FE 8B 46 FE 89 46 04 EB 1D。

2. 修改Timeout,由30秒改为8秒
Solaris分区首扇+28为10237276,确认偏移04A处为1E,修改为08,即可。

三、修改方法2
修改Boolblk文件,然后用installboot安装引导程序。

1. 修改默认引导分区
确认偏移0b7c处为 6A 1B E8 77 1B 83 C4 02,如果相同则修改为
A1 08 D5 39 46 FC 74 30 C7 46 FC 01 00 8B 46 FC 48 C1 E0 04 01 46 FE 8B 46 FE 89 46 04 EB 1D。

2. 修改Timeout,由30秒改为8秒
确认偏移324A处为1E,修改为08,即可。

3. re-install BootBlk
#installboot /usr/platform/i86pc/lib/fs/ufs/pboot /usr/platform/i86pc/lib/fs/ufs/bootblk /dev/dsk/c0d0s2

四、说明
本人为 Solaris 8 2/02,采用Software #1 安装,没有x86 Boot分区。
操作时一定要小心,分区表一定要备份到软盘或其他移动存储介质上,重要数据最好也要
的备份,以防万一。

不当之处还望指正!
Zhjx@sina.com
2002.09.01

-----------------------------------------------------------------------------

附录三:作者在原文里没有把修改前后的代码贴出来,我用 Biew 抓了下面的文字记录。
        它是跟 Hiew 类似的工具,提供跨平台的版本,而且某些小功能使用更加顺手。

修改前的 Biew 反汇编 ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++

;Boot Solaris partition no matter which one is active. Load Solaris directly.

00000B78: 0BC0                           or        ax,ax
00000B7A: 753C                           jne       file:00000BB8
00000B7C: 6A1B                           push (w)  +1B
00000B7E: E8771B                         calln     file:000026F8
00000B81: 83C402                         add (w)   sp,+02
00000B84: 666800001B00                   push      001B0000
00000B8A: 6A00                           push (w)  +00
00000B8C: FF3610D5                       push (w)  [+D510]
00000B90: 6A52                           push (w)  +52
00000B92: 1E                             push      ds
00000B93: 68AE04                         push      04AE
00000B96: E8DB1B                         calln     file:00002774
00000B99: 83C40E                         add (w)   sp,+0E
00000B9C: 666800001B00                   push      001B0000
00000BA2: 6A02                           push (w)  +02

修改后的 Biew 反汇编 ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++

;Boot first partition no matter which one is active. Load first one directly.

00000B78: 0BC0                           or        ax,ax
00000B7A: 753C                           jne       file:00000BB8
00000B7C: A108D5                         mov       ax,[+D508]
00000B7F: 3946FC                         cmp       [bp-04],ax
00000B82: 7430                           je        file:00000BB4
00000B84: C746FC0100                     mov       [bp-04],0001
00000B89: 8B46FC                         mov       ax,[bp-04]
00000B8C: 48                             dec       ax
00000B8D: C1E004                         shl (w)   ax,04
00000B90: 0146FE                         add       [bp-02],ax
00000B93: 8B46FE                         mov       ax,[bp-02]
00000B96: 894604                         mov       [bp+04],ax
00000B99: EB1D                           jmps      file:00000BB8
00000B9B: 0E                             push      cs
00000B9C: 666800001B00                   push      001B0000
00000BA2: 6A02                           push (w)  +02

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

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP