• 最新动态
  • PE系统启动菜单的相关解释

    作者:upzxt 文章来源:u盘装系统 发布时间:2012-09-03 00:59点击:

    PE系统启动菜单的相关解释

    ; 关闭 Debug
    debug off
     
    ; 取内存做变量使用,6000:0000开始的 1K 空间作为用户自己的变量区
     
    ; 存放出错标记 | ErrorFlag
    write 0x60000 0
     
    ; 存放 PXE 启动标记 | PXEBoot
    write 0x60064 0
     
    ; 存放选中的菜单项序号 | MenuNum
    write 0x60068 0
     
    ; 存放 Debug 状态 | DebugFlag
    write 0x60110 0
     
    ; 保存当前根分区号 | RootDriveID
    write 0x60130 0
     
    ; 保存当前根驱动器 | RootDrive
    write 0x60134 0
     
    ; 这个好象未使用
    write 0x602A0 0
     
    ; 标记是 XP 还是 2003 | SysVer
    write 0x60300 0
     
    ; 这里大概是判断 Grub4Dos 版本是否匹配(read 返回值 0 为假,非 0 为真)
    cat --locate-align=1 (md)+1,1 || write 0x60000 1
    read 0x60000 && Error:GRUB4DOS Version Mismatched! Press any key to reboot...
    read 0x60000 && reboot
     
    ; 判断是否是 PXE 启动
    checkrange 0x21 read 0x8280 && write 0x60064 1
     
    ; 默认第一个菜单
    default 1
    ; 超时时间 5 秒
    timeout 5
     
    ; 菜单0
    title                      0PE for Windows XP/2003    by Pseudo 2009.6.20
    ; 空菜单
    clear
     
    ; 菜单1
    title                 [1] For XP, with SRS1.ZIP.\n   Main S&R&S Drivers Library.
    ; 设置菜单选择标记
    write 0x60068 1
    ; 通过错误语句跳转到菜单 10
    fallback 10
    kernel
     
    ; 菜单2
    title                 [2] For XP, with SRS2.ZIP.\n   Secondary S&R&S Drivers Library.
    ; 设置菜单选择标记
    write 0x60068 2
    ; 通过错误语句跳转到菜单 10
    fallback 10
    kernel
     
    ; 菜单3
    title                 [3] For XP, with F6.ZIP.\n   OEM S&R&S Drivers Floppy Disk Emulation (press F6/autodetect).
    ; 设置菜单选择标记
    write 0x60068 3
    ; 通过错误语句跳转到菜单 10
    fallback 10
    kernel
     
    ; 空菜单,夹在其它菜单中间,则无效,放在第一个菜单之前,则会让 TimeOut 失效。
    ; 疑为作者笔误
    title
     
    ; 菜单4
    title                 [4] User Menu with F6.ZIP.\n   OEM S&R&S Drivers Floppy Disk Emulation (press F6/autodetect).
    ; 设置菜单选择标记
    write 0x60068 4
    ; 通过错误语句跳转到菜单 10
    fallback 10
    kernel
     
    ; 菜单5
    title                 [5] For 2K3, with SRS1.ZIP.\n   Main S&R&S Drivers Library.
    ; 设置菜单选择标记
    write 0x60068 5
    ; 通过错误语句跳转到菜单 10
    fallback 10
    kernel
     
    ; 菜单6
    title                 [6] For 2K3, with SRS2.ZIP.\n   Secondary S&R&S Drivers Library.
    ; 设置菜单选择标记
    write 0x60068 6
    ; 通过错误语句跳转到菜单 10
    fallback 10
    kernel
     
    ; 菜单7
    title                 [7] For 2K3, with F6.ZIP.\n   OEM S&R&S Drivers Floppy Disk Emulation (press F6/autodetect).
    ; 设置菜单选择标记
    write 0x60068 7
    ; 通过错误语句跳转到菜单 10
    fallback 10
    kernel
     
    ; 菜单8
    title                 [8] MS DOS 7.1
    ; 设置菜单选择标记
    write 0x60068 8
    ; 通过错误语句跳转到菜单 10
    fallback 10
    kernel
     
    ; 菜单9
    title                 [9] Grub4Dos Debug On/Off.\nTurn on/off debug status.
    ; 清屏
    clear
    ; 关闭 Debug
    debug off
     
    ; 如果 DebugFlag 为 0,则设置 DebugFlag 2
    read 0x60110 || write 0x60110 2
    ; 如果 DebugFlag 为 1,则设置 DebugFlag 0
    checkrange 1 read 0x60110 && write 0x60110 0
    ; 如果 DebugFlag 为非 0(比如为 2),则设置 DebugFlag 1
    read 0x60110 && write 0x60110 1
     
    ; 根据 DebugFlag,设置提示信息
    read 0x60110 || pause Debug is now off...
    read 0x60110 && pause Debug is now on...
    ; 根据 DebugFlag,设置 Debug 状态
    read 0x60110 || debug off
    read 0x60110 && debug on
    ; 添加 Kernel 命令,使菜单生效,否则菜单不可选
    kernel || clear
     
    ; 菜单10,处理选择的系统类型 SysVer
    title
     
    ; 提示 root 位置,用于调试脚本
    pause --wait=0 Boot drive:
    debug on
    root
    debug off
     
    ; 恢复 Debug  状态
    read 0x60110 && debug on
     
    ; 判断选择的菜单是否是 2003 系统 ( 菜单 5-7 )
    checkrange 5:7 read 0x60068 && write 0x60300 1
     
    ; 如果不是 2003 系统,将跳转到 菜单 11
    fallback 11
    ; 如果是 2003 系统,将跳转到菜单 12
    read 0x60300 && fallback 12
    ; 开始跳转
    fallback F
     
    ; 菜单11,处理 XP 系统,SysVer = 0
    title
     
    ;
    fallback 14
     
    ; 复位 ErrorFlag
    write 0x60000 1
     
    ; 如果未找到 root 下面的 /0PE/BUFXP.GZ 则设置 ErrorFlag 为 0
    ls /0PE/BUFXP.GZ || write 0x60000 0
     
    ; 如果是 PXE 启动,则设置 ErrorFlag 为 0
    read 0x60064 && write 0x60000 0
     
    ; 如果 ErrorFlag 不为 0,则跳转到菜单 14
    read 0x60000 && kernel
     
    ; 复位 ErrorFlag
    write 0x60000 1
     
    ; 查找所有盘的 /0PE/BUFXP.GZ 文件,找不到则设置 ErrorFlag 为 0
    find --set-root /0PE/BUFXP.GZ || write 0x60000 0
     
    ; 如果 ErrorFlag 不为 0 ,则跳转到菜单 14
    read 0x60000 && kernel
     
    ;
    fallback 13
     
    ; 复位 ErrorFlag
    write 0x60000 1
     
    ; 如果未找到 root 下面的 /0PE/0PE.ISO 则设置 ErrorFlag 为 0
    ls /0PE/0PE.ISO || write 0x60000 0
     
    ; 如果是 PXE 启动,则设置 ErrorFlag 为 0
    read 0x60064 && write 0x60000 0
     
    ; 如果 ErrorFlag 不为 0,则跳转到菜单 13
    read 0x60000 && kernel
     
    ; 复位 ErrorFlag
    write 0x60000 1
     
    ; 查找所有盘的 /0PE/0PE.ISO 文件,找不到则设置 ErrorFlag 为 0
    find --set-root /0PE/0PE.ISO || write 0x60000 0
     
    ; 如果 ErrorFlag 不为 0,则跳转到菜单 13
    read 0x60000 && kernel
     
    ; 如果是 PXE 启动,则设置 root 为 PXE 服务器
    read 0x60064 && rootnoverify (pd)
     
    ; 设置标志:不自动解压 gzip 格式的文件
    write 0x82A4 1
     
    ;
    fallback 14
    ; 如果 PXE 中存在 /0PE/BUFXP.GZ (判断文件大小是否为 0)则跳转到 菜单14
    cat --length=0 /0PE/BUFXP.GZ && kernel
     
    ; 设置标志:自动解压 gzip 格式的文件
    write 0x82A4 0

     

    U盘装系统


    (责任编辑:www.upzxt.com)