修改Solaris默认启动分区及timeout时间

发表于:2007-06-09来源:作者:点击数: 标签:
修改Solaris引导程序的默认启动分区及timeout时间 一、分析 对Solaris引导程序进行分析,并说明采用的修改方式 本人硬盘分区如下: 1. Windows 2000主分区5G 2.Winnt4.0主分区1G 3.BigDosExtend扩展分区剩下的全部空间 4.Solaris主分区2G ------------------

修改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 ds50C        ; 引导用户分区
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分区第一个扇区(1023724,加上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


 mmmmn 回复于:2002-09-01 23:16:18
看不懂。。。。

 fuchw 回复于:2002-09-02 13:46:32
我也看不懂,请问有没有更简单的方法来改变引导分区吗???


 josephxd 回复于:2002-09-02 14:08:09
在solaris里如何修改引導區啊?

 lzmsgc 回复于:2002-09-04 16:02:37
兄弟的Solaris是那种机器上用的,高端工作站或服务器,低端工作站或服务器,微机

原文转自:http://www.ltesting.net