无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
楼主: Pauly
打印 上一主题 下一主题

【BOOTICE: 启动维护工具】-(2016-06-17 v1.3.4 测试)

    [复制链接]
1#
发表于 2009-3-22 11:40:57 | 显示全部楼层
关于GRLDR.MBR,
参考grub4dos_readme的以下部份,基本上可以实现所有的功能了.
grldr.mbr - Details about the control bytes

比较保险的方法是调用bootlace.com来操作.只要把硬盘的MBR(前18扇区备份下来)
BOOTLACE.COM可以对这个备份文件进行操作,然后再还原回去就好了.缺点,PE由于缺少16位运行库,不能使用.
回复

使用道具 举报

2#
发表于 2009-3-22 11:42:51 | 显示全部楼层
很不错的工具,收下备用.
回复

使用道具 举报

3#
发表于 2009-3-24 23:51:06 | 显示全部楼层
在GRUB4DOS安装功能中,能不能把热键设置成选择的方式?或类似GRUBINST可以直接使用键名比如
F8/F11/A/B/C的.因为大多数人并不清楚热键代码.
回复

使用道具 举报

4#
发表于 2009-3-28 10:18:46 | 显示全部楼层
关于GRLDR或GRLDR.MBR改名可以按照GRUBINST的源码来修改.这样子应该可以适应于所有的版本了.
若用GRUBINST它会读取0X1FFA的值和自带的GRLDR.MBR的值对比,如果不一样就提示版本不符,其实目前的改名方法都是一样的.


  1. if (boot_file)
  2.     {
  3.       unsigned short ofs,len,len1;

  4.       len=strlen(boot_file);

  5.       // Patching the FAT32 boot sector
  6.       ofs=valueat(grub_mbr,0x400+0x1EC,unsigned short) & 0x7FF;
  7.       strcpy(&grub_mbr[0x400+ofs],boot_file_83);
  8.       if (load_seg)
  9.         valueat(grub_mbr,0x400+0x1EA,unsigned short)=load_seg;

  10.       // Patching the FAT12/FAT16 boot sector
  11.       ofs=valueat(grub_mbr,0x600+0x1EC,unsigned short) & 0x7FF;
  12.       strcpy(&grub_mbr[0x600+ofs],boot_file_83);
  13.       if (load_seg)
  14.         valueat(grub_mbr,0x600+0x1EA,unsigned short)=load_seg;

  15.       // Patching the EXT2 boot sector
  16.       ofs=valueat(grub_mbr,0x800+0x1EE,unsigned short) & 0x7FF;
  17.       len1=valueat(grub_mbr,0x800+0x1EE,unsigned short) >> 11;
  18.       if (len>len1)
  19.         {
  20.           char buf[80];

  21.           sprintf(buf,"Boot file name too long for ext2 partition (%d>%d)",len,len1);
  22.           print_apperr(buf);
  23.           close(hd);
  24.           return 1;
  25.         }
  26.       else
  27.         strcpy(&grub_mbr[0x800+ofs],boot_file);

  28.       // Patching the NTFS sector
  29.       ofs=valueat(grub_mbr,0xA00+0x1EC,unsigned short) & 0x7FF;
  30.       len1=valueat(grub_mbr,0xA00+0x1EC,unsigned short) >> 11;
  31.       if (len>len1)
  32.         {
  33.           char buf[80];

  34.           sprintf(buf,"Boot file name too long for ntfs partition (%d>%d)",len,len1);
  35.           print_apperr(buf);
  36.           close(hd);
  37.           return 1;
  38.         }
  39.       else
  40.         strcpy(&grub_mbr[0xA00+ofs],boot_file);

  41.       if (load_seg)
  42.         valueat(grub_mbr,0xA00+0x1EA,unsigned short)=load_seg;

  43.       if (afg & AFG_VERBOSE)
  44.         {
  45.           fprintf(stderr,"Boot file changed to %s\n",boot_file);
  46.           if (load_seg)
  47.             fprintf(stderr,"Load segment changed to %04X\n",load_seg);
  48.         }
  49.     }
复制代码
回复

使用道具 举报

5#
发表于 2009-3-28 10:36:03 | 显示全部楼层
另外发现这个写入MBR时没有修改热键的提示,也就是开机的提示上没有显示热键.
默认如果热键是space会提示按space启动grub,否则会提示按hot-key启动grub.
这个hot-key可以修改的.当然了如果没有提示可以防止一些不清楚的人进入GRUB.但有时需要一个提示,否则都不知道热键是什么.

建议添加为可选项,是否提示热键.

修改方法.
读取GRLDR.MBR或GRLDR偏移0X1FFA这个字节的值.(GRLDR或GRLDR.MBR的版本号)
如果是02就把热键名直接写入0X1FEC处再添加\00结束. (最早的版本)
03 对应的地址 0x23ec (大概在2008-05月到12月之间的版本)
04 对应的地址 0x1FE8 (2008-12月至目前的版本)
回复

使用道具 举报

6#
发表于 2009-4-13 22:24:25 | 显示全部楼层
安装三重MBR需要重新分区格式化吗?
还是直接在原来的基础上修改,如果这样的话就方便多了.
回复

使用道具 举报

7#
发表于 2009-9-2 13:17:23 | 显示全部楼层
又更新了,我也更新下,
回复

使用道具 举报

8#
发表于 2013-9-24 09:24:07 | 显示全部楼层
建议不要写注册表。。。。。。
绿色软件就应该尽量不要去写入到系统中。
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-5-6 06:08

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表