无忧启动论坛

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

[原创] GRUB4DOS for UEFI

    [复制链接]
1621#
发表于 2021-5-30 16:07:19 | 只看该作者
2011yaya2007777 发表于 2021-5-30 15:47
修改为如下,效率高一些:
@@ -3575,7 +3695,8 @@ static int insmod_func(char *arg,int flags)
     GR ...

我是这样想的:
执行insmod xxx.mod -- 加载mod
执行insmod xxx          -- 加载外置命令
执行insmod不带参数 -- 加载内置的mod
回复

使用道具 举报

1622#
 楼主| 发表于 2021-5-30 16:28:29 | 只看该作者
这样简单一些
if (substring(skip_to(0,arg) - 4,".mod",1) == 0  ||  flags == 101)

run_line (embed_mod_cmd, 101);

点评

我是这样改的。 主要是不想把处理模块方面的代码放在 disk_io.c 里面,感觉怪怪的。  详情 回复 发表于 2021-5-30 17:18
回复

使用道具 举报

1623#
发表于 2021-5-30 17:18:57 | 只看该作者
2011yaya2007777 发表于 2021-5-30 16:28
这样简单一些
if (substring(skip_to(0,arg) - 4,".mod",1) == 0  ||  flags == 101)

我是这样改的。
主要是不想把处理模块方面的代码放在 disk_io.c 里面,感觉怪怪的。
  1. diff --git build build
  2. index 80b8e2d..e57201d 100755
  3. --- build
  4. +++ build
  5. @@ -136,13 +136,12 @@ make || exit $?
  6. #复制pre_stage2.exec
  7. mkdir $GRUB4DOS_TEMP/x86_64-efi
  8. cp stage2/pre_stage2.exec $GRUB4DOS_TEMP/x86_64-efi/kernel.img
  9. -cp $SOURCE_DIR/moddep.lst $GRUB4DOS_TEMP/x86_64-efi/moddep.lst
  10. platform=`uname -m`
  11. if [ $platform = 'x86_64' ]
  12. then
  13. -    $SOURCE_DIR/grub-mkimage64 -d $GRUB4DOS_TEMP/x86_64-efi -p /efi/grub -o BOOTX64.EFI -O x86_64-efi -c preset_menu.lst
  14. +    $SOURCE_DIR/mkimage -d $GRUB4DOS_TEMP/x86_64-efi -p /efi/grub -o BOOTX64.EFI -O x86_64-efi -c preset_menu.lst
  15. else
  16. -    $SOURCE_DIR/grub-mkimage -d $GRUB4DOS_TEMP/x86_64-efi -p /efi/grub -o BOOTX64.EFI -O x86_64-efi -c preset_menu.lst
  17. +    $SOURCE_DIR/mkimage.i386 -d $GRUB4DOS_TEMP/x86_64-efi -p /efi/grub -o BOOTX64.EFI -O x86_64-efi -c preset_menu.lst
  18. fi

  19. #**********************************************
  20. @@ -159,12 +158,11 @@ make clean
  21. make || exit $?
  22. mkdir $GRUB4DOS_TEMP/i386-efi
  23. cp stage2/pre_stage2.exec $GRUB4DOS_TEMP/i386-efi/kernel.img
  24. -cp $SOURCE_DIR/moddep.lst $GRUB4DOS_TEMP/i386-efi/moddep.lst
  25. if [ $platform = 'x86_64' ]
  26. then
  27. -    $SOURCE_DIR/grub-mkimage64 -d $GRUB4DOS_TEMP/i386-efi -p /efi/grub -o BOOTIA32.EFI -O i386-efi -c preset_menu.lst
  28. +    $SOURCE_DIR/mkimage -d $GRUB4DOS_TEMP/i386-efi -p /efi/grub -o BOOTIA32.EFI -O i386-efi -c preset_menu.lst
  29. else
  30. -    $SOURCE_DIR/grub-mkimage -d $GRUB4DOS_TEMP/i386-efi -p /efi/grub -o BOOTIA32.EFI -O i386-efi -c preset_menu.lst
  31. +    $SOURCE_DIR/mkimage.i386 -d $GRUB4DOS_TEMP/i386-efi -p /efi/grub -o BOOTIA32.EFI -O i386-efi -c preset_menu.lst
  32. fi

  33. #转到源目录
  34. @@ -176,7 +174,7 @@ cd $SOURCE_DIR
  35. rm -f ${RELEASE}.zip ${RELEASE}.rar ${RELEASE}.tar.gz || exit $?
  36. if ! 7z a ${RELEASE}.7z ${GRUB4DOS_TEMP}/BOOTX64.EFI ${GRUB4DOS_TEMP}/BOOTIA32.EFI $SOURCE_DIR/ChangeLog_UEFI.txt \
  37.      $SOURCE_DIR/menu.lst ${GRUB4DOS_TEMP}/Get_Source_of_This_Build.txt ${GRUB4DOS_TEMP}/grub4dos_${CURR_REVISION}.diff \
  38. -    ${GRUB4DOS_TEMP}/i386-efi ${GRUB4DOS_TEMP}/x86_64-efi grub-mkimage.exe; then
  39. +    ${GRUB4DOS_TEMP}/i386-efi ${GRUB4DOS_TEMP}/x86_64-efi mkimage.exe; then
  40.         echo 7z failed. Continue with zip or tar...
  41. fi

  42. diff --git stage2/builtins.c stage2/builtins.c
  43. index 7c25f41..91f4593 100644
  44. --- stage2/builtins.c
  45. +++ stage2/builtins.c
  46. @@ -3562,12 +3562,54 @@ static struct builtin builtin_command =
  47.    "--set-ext sets default extensions for executable files."
  48. };

  49. +static int insmod_embed (void)
  50. +{
  51. +  struct grub_module_header *header = 0;
  52. +  char *embed_mod = NULL;
  53. +  grub_size_t embed_mod_size = 0;
  54. +  char embed_mod_path[64];
  55. +  FOR_MODULES (header)
  56. +  {
  57. +    if (header->type != OBJ_TYPE_MEMDISK)
  58. +      continue;
  59. +
  60. +    embed_mod_size = header->size - header->pad_size - sizeof (struct grub_module_header);
  61. +    embed_mod = grub_malloc (embed_mod_size + 0x1ff);
  62. +    if (!embed_mod)
  63. +      return 0;
  64. +
  65. +    embed_mod = (char *)(grub_size_t)(((unsigned long long)(grub_size_t)embed_mod + 0x1ff) & 0xfffffffffffffe00);
  66. +    grub_memmove (embed_mod, (char *) header + sizeof (struct grub_module_header),
  67. +        embed_mod_size);
  68. +    grub_sprintf (embed_mod_path, "(md)0x%lx+0x%lx,0x%lx",
  69. +        ((grub_size_t) embed_mod) >> 9, (embed_mod_size + 0x1ff) >> 9, embed_mod_size);
  70. +
  71. +    /* load file.mod */
  72. +    if (!GRUB_MOD_ADDR)
  73. +    {        
  74. +      GRUB_MOD_ADDR = grub_malloc (0x100000);   //模块缓存
  75. +      mod_end = GRUB_MOD_ADDR;
  76. +    }
  77. +    struct exec_array *p_mod = (struct exec_array *) embed_mod;
  78. +    //skip grub4dos moduld head.
  79. +    if (strcmp(p_mod->name.sn,"\x05\x18\x05\x03\xBA\xA7\xBA\xBC") == 0)
  80. +      ++p_mod;
  81. +    while ((char *)p_mod < embed_mod + embed_mod_size && grub_mod_add (p_mod))
  82. +    {
  83. +      p_mod = (struct exec_array *)(p_mod->data + p_mod->len);
  84. +    }
  85. +    grub_free (embed_mod);
  86. +    return 1;
  87. +  }
  88. +  return 0;
  89. +}
  90. +
  91. static int insmod_func(char *arg,int flags);
  92. static int insmod_func(char *arg,int flags)
  93. {
  94.     errnum = 0;
  95.     if (arg == NULL || *arg == '\0')
  96. -      return 0;
  97. +      return insmod_embed ();
  98.     char *name = skip_to(1|SKIP_WITH_TERMINATE,arg);
  99.    
  100.    if (!GRUB_MOD_ADDR)
  101. @@ -10782,11 +10824,38 @@ ok:
  102.    }       
  103.    if (!UNIFONT_START)
  104.    {
  105. -    //进入图形模式,加载袖珍字库,防止黑屏。这样也可以使防止加载精简中文字库(不包含英文字符)的问题。
  106. -    grub_memmove ((char *)0x10000, mini_font_lzma, 820);
  107. -    font_func ("(md)0x80+2", 1);  //如果是gz压缩格式,要明确压缩文件尺寸,如:font_func ("(md)0x80+2,820", 1);
  108. +    struct grub_module_header *header = 0;
  109. +    char *embed_font = NULL;
  110. +    grub_size_t embed_font_size = 0;
  111. +    char embed_font_path[64];
  112. +    FOR_MODULES (header)
  113. +    {
  114. +      if (header->type != OBJ_TYPE_FONT)  //字体
  115. +        continue;
  116. +
  117. +      embed_font_size = header->size - header->pad_size - sizeof (struct grub_module_header);
  118. +      embed_font = grub_malloc (embed_font_size + 0x1ff);
  119. +      if (!embed_font)
  120. +        break;
  121. +
  122. +      embed_font = (char *)(grub_size_t)(((unsigned long long)(grub_size_t)embed_font + 0x1ff) & 0xfffffffffffffe00);
  123. +      grub_memmove (embed_font, (char *) header + sizeof (struct grub_module_header),
  124. +          embed_font_size);
  125. +      break;
  126. +    }
  127. +    if (!embed_font)
  128. +    {
  129. +      embed_font = (char *)0x10000;
  130. +      embed_font_size = 820;
  131. +      //进入图形模式,加载袖珍字库,防止黑屏。这样也可以使防止加载精简中文字库(不包含英文字符)的问题。
  132. +      grub_memmove ((char *)0x10000, mini_font_lzma, 820);
  133. +    }
  134. +    grub_sprintf (embed_font_path, "(md)0x%lx+0x%lx,0x%lx",
  135. +        ((grub_size_t) embed_font) >> 9, (embed_font_size + 0x1ff) >> 9, embed_font_size);
  136. +    font_func (embed_font_path, 1);
  137. +    grub_free (embed_font);
  138.    }
  139. -  
  140. +
  141.    return graphics_mode;
  142. bad_arg:
  143.         errnum = ERR_BAD_ARGUMENT;
  144. diff --git stage2/disk_io.c stage2/disk_io.c
  145. index 311fe8c..a661b26 100644
  146. --- stage2/disk_io.c
  147. +++ stage2/disk_io.c
  148. @@ -4269,7 +4269,8 @@ grub_efidisk_init (void)  //efidisk初始化

  149. //初始化变量空间       
  150.    run_line((char *)"set ?_BOOT=%@root%",1);
  151. -  QUOTE_CHAR = '"';       
  152. +  QUOTE_CHAR = '"';
  153. +  run_line ((char *) "insmod", 1);
  154. #if 0
  155.         run_line((char *)"errorcheck off",1);
  156.    if (!ret || i == 0xff)
  157. @@ -4277,5 +4278,6 @@ grub_efidisk_init (void)  //efidisk初始化
  158.    run_line((char *)"configfile /efi/grub/menu.lst",1);
  159.         run_line((char *)"errorcheck on",1);
  160. #endif
  161. +
  162.         cmain ();
  163. }
  164. diff --git stage2/shared.h stage2/shared.h
  165. index f4851c4..0d09ed9 100644
  166. --- stage2/shared.h
  167. +++ stage2/shared.h
  168. @@ -5304,24 +5304,22 @@ extern grub_efi_device_path_t *efi_file_path;
  169. extern grub_efi_handle_t efi_handle;
  170. extern void grub_machine_fini (void);

  171. -enum                //对象类型
  172. -{
  173. -  OBJ_TYPE_ELF,     //ELF             00
  174. -  OBJ_TYPE_MEMDISK, //内存盘          01
  175. -  OBJ_TYPE_CONFIG,  //配置            02
  176. -  OBJ_TYPE_PREFIX,  //前缀            03
  177. -  OBJ_TYPE_PUBKEY,  //公共密钥        04
  178. -  OBJ_TYPE_DTB      //数据传输总线    05
  179. -};
  180. +#define OBJ_TYPE_ELF     0x00  // 外部命令
  181. +#define OBJ_TYPE_MEMDISK 0x01  // MOD文件
  182. +#define OBJ_TYPE_CONFIG  0x02  // 配置菜单
  183. +#define OBJ_TYPE_PREFIX  0x03  // 前缀路径
  184. +#define OBJ_TYPE_FONT    0x04  // 字体

  185. -/* The module header.  模块标题*/
  186. +/* The module header.  */
  187. struct grub_module_header
  188. {
  189. -  /* The type of object.  对象的类型*/
  190. -  grub_uint32_t type;
  191. -  /* The size of object (including this header).  对象的大小(包括此标题)*/
  192. +  /* The type of object.  */
  193. +  grub_uint16_t type;
  194. +  /* real_size = size - sizeof (struct grub_module_header) - pad_size */
  195. +  grub_uint16_t pad_size;
  196. +  /* The size of object (including this header).  */
  197.    grub_uint32_t size;
  198. -};
  199. +} GRUB_PACKED;

  200. /* "gmim" (GRUB Module Info Magic).  GRUB模块信息魔法 */
  201. #define GRUB_MODULE_MAGIC 0x676d696d
复制代码


回复

使用道具 举报

1624#
 楼主| 发表于 2021-5-30 18:46:34 | 只看该作者
执行insmod不带参数 -- 加载内置的mod

如果在命令行执行 insmod ,会产生问题。

点评

重复执行的话,只是会提醒 "xxx already loaded"。 要不就这样: if (arg == NULL || *arg == '\0') - return 0; + return flags == 101 ? insmod_embed () : 0;  详情 回复 发表于 2021-5-30 19:00
回复

使用道具 举报

1625#
发表于 2021-5-30 19:00:51 | 只看该作者
2011yaya2007777 发表于 2021-5-30 18:46
如果在命令行执行 insmod ,会产生问题。

重复执行的话,只是会提醒 "xxx already loaded"。
要不就这样:
    if (arg == NULL || *arg == '\0')
-      return 0;
+     return flags == 101 ? insmod_embed () : 0;
回复

使用道具 举报

1626#
发表于 2021-5-31 19:46:00 | 只看该作者
膜拜一个!
回复

使用道具 举报

1627#
发表于 2021-6-1 19:08:03 | 只看该作者
32位uefi下外部命令是不是没法获取正确的grub_efi_system_table的地址?
  1. static int main(char *arg,int key)
  2. {
  3.   get_G4E_image();
  4.   if (! g4e_data)
  5.     return 0;
  6.   return printf ("0x%lx\n", grub_efi_system_table);
  7. }
复制代码

  1. diff --git a/g4eext/include/grub4dos.h b/g4eext/include/grub4dos.h
  2. index a7c9205..e317b25 100644
  3. --- a/g4eext/include/grub4dos.h
  4. +++ b/g4eext/include/grub4dos.h
  5. @@ -8,9 +8,9 @@
  6. #undef NULL
  7. #define NULL         ((void *) 0)
  8. #define        IMG(x)  ((x) - 0x8200 + g4e_data)
  9. -#define        SYSVAR(x)       (*(unsigned long long *)((*(unsigned long long *)IMG(0x8308)) + (x<<3)))
  10. -#define        SYSVAR_2(x)     (*(unsigned long long **)((*(unsigned long long *)IMG(0x8308)) + (x<<3)))
  11. -#define        SYSFUN(x)       (*(unsigned long long *)((*(unsigned long long *)IMG(0x8300)) + (x<<3)))
  12. +#define        SYSVAR(x)       (*(unsigned long *)((*(unsigned long *)IMG(0x8308)) + (x<<3)))
  13. +#define        SYSVAR_2(x)     (*(unsigned long **)((*(unsigned long *)IMG(0x8308)) + (x<<3)))
  14. +#define        SYSFUN(x)       (*(unsigned long *)((*(unsigned long *)IMG(0x8300)) + (x<<3)))

  15. #define L( x ) _L ( x )
  16. #define _L( x ) L ## x
  17. @@ -211,8 +211,8 @@ typedef enum
  18. #define quit_print             (SYSVAR(10))
  19. #define image   (SYSVAR(12))
  20. #define filesystem_type (SYSVAR(13))
  21. -#define grub_efi_image_handle (SYSVAR(14))
  22. -#define grub_efi_system_table (SYSVAR(15))
  23. +#define grub_efi_image_handle ((void *)*(SYSVAR_2(14)))
  24. +#define grub_efi_system_table ((void *)*(SYSVAR_2(15)))
  25. #define buf_geom ((struct geometry *)(SYSVAR(16)))
  26. #define tmp_geom ((struct geometry *)(SYSVAR(17)))
  27. #define term_table ((struct term_entry *)(SYSVAR(18)))                 //地址
  28. @@ -500,7 +500,7 @@ struct grub_datetime
  29. };

  30. //UEFI 函数调用约定
  31. -#if !(i386)
  32. +#ifndef __i386__
  33. #if (defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)))||(defined(__clang__) && (__clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 2)))
  34.    #define EFIAPI __attribute__((ms_abi))
  35. #else
复制代码


回复

使用道具 举报

1628#
 楼主| 发表于 2021-6-1 20:25:41 来自手机 | 只看该作者
32位efi,就是个鸡肋,食之无味,弃之可惜。没有几个人真真使用32位真实机。大部分是在搞测试,研究,或者搞启动管理器,想包罗万象得集大成。

点评

那确实,现在有强迫症,觉得没32位总不完整不完美的样  详情 回复 发表于 2021-6-2 10:02
确实。估计跑ia32 uefi的设备数量比arm64 uefi还要少。  详情 回复 发表于 2021-6-1 22:25
回复

使用道具 举报

1629#
发表于 2021-6-1 22:25:01 | 只看该作者
2011yaya2007777 发表于 2021-6-1 20:25
32位efi,就是个鸡肋,食之无味,弃之可惜。没有几个人真真使用32位真实机。大部分是在搞测试,研究,或者 ...

确实。估计跑ia32 uefi的设备数量比arm64 uefi还要少,而且数量不会继续增加了。
回复

使用道具 举报

1630#
发表于 2021-6-2 00:39:24 来自手机 | 只看该作者
2011yaya2007777 发表于 2021-3-29 10:15
我在 UEFI 环境测试,没有问题。
虽然菜单内存切换时又重新分配了一次,我这里没有影响,也可能影响到你 ...

用最新版本替换这个版本,又出现这个问题了。多个菜单切换花屏。
回复

使用道具 举报

1631#
 楼主| 发表于 2021-6-2 09:55:55 | 只看该作者
@wintoflash 补丁已经提交官网。
把3处 ‘FOR_MODULES (header)’ 整合到一起了。
回复

使用道具 举报

1632#
 楼主| 发表于 2021-6-2 09:57:36 | 只看该作者
用最新版本替换这个版本,又出现这个问题了。多个菜单切换花屏。

你使用今天的版本试一试。如果仍然有问题,请提供可重复问题的菜单。

点评

用了6.2的版本还是出现花屏。有时候启动ramos菜单中的ramos启动项时卡界面。截屏如下: 我用的菜单如下: 主菜单 graphicsmode -1 1280 splashimage /efi/grub/0.jpg #foreground FFFF  详情 回复 发表于 2021-6-2 23:40
回复

使用道具 举报

1633#
发表于 2021-6-2 10:02:15 | 只看该作者
2011yaya2007777 发表于 2021-6-1 20:25
32位efi,就是个鸡肋,食之无味,弃之可惜。没有几个人真真使用32位真实机。大部分是在搞测试,研究,或者 ...

那确实,现在有强迫症,觉得没32位总不完整不完美的样
回复

使用道具 举报

1634#
发表于 2021-6-2 10:42:51 | 只看该作者
yaya大大,我看到g4dUEFI支持ftp网起,就尝试用网络启动的方式加载g4dUEFI,方式是通过ipxe的形式chain tftp://ip/bootx64.efi 。结果是一上来黑屏,此时键盘有响应,视频输出信号也有,但是是纯黑内容。
在此状态放置一段时间(5-20分钟随机?还没摸到规律)之后,屏幕突然亮起,显示内置菜单。
看样子时里面哪里出状况了,不知有什么方式可以查找么。同一个bootx64.efi用硬盘引导的方式可以立即显示菜单。菜单内容
  1. default 0
  2. title 命令行
  3. commandline

  4. title 退出grub4dos
  5. exit_g4d

  6. title 重启
  7. reboot

  8. title 关机
  9. halt
复制代码
回复

使用道具 举报

1635#
 楼主| 发表于 2021-6-2 12:26:54 来自手机 | 只看该作者
比较诡异。网启不太熟悉,看看有没有人懂。
回复

使用道具 举报

1636#
发表于 2021-6-2 18:45:51 | 只看该作者
本帖最后由 2011whp 于 2021-6-4 14:07 编辑
把3处 ‘FOR_MODULES (header)’ 整合到一起了。

试makeimge

打包用的 字体  ,  非 16 字体 不可用

官网内置菜单示例:
pxe detect
configfile
default 0
timeout 1
title find /efi/grub/menu.lst
        errorcheck off
        find --set-root /efi/grub/menu.lst
        configfile /efi/grub/menu.lst
        errorcheck on
        commandline
title commandline
        commandline
title reboot
        reboot
title halt
        halt


回复

使用道具 举报

1637#
发表于 2021-6-2 23:40:03 | 只看该作者
本帖最后由 d634655401 于 2021-6-2 23:46 编辑
2011yaya2007777 发表于 2021-6-2 09:57
你使用今天的版本试一试。如果仍然有问题,请提供可重复问题的菜单。

用了6.2的版本还是出现花屏。有时候启动ramos菜单中的ramos启动项时卡界面。截屏如下:



我用的菜单如下:






主菜单

graphicsmode -1 1280

splashimage /efi/grub/0.jpg

#foreground FFFFFF
#background 0000AD

find --set-root /EFI/grub/unifont.hex.gz
#font /EFI/grub/unifont.hex.gz
font --font-high=40 /EFI/grub/menu40.hex.gz

#ctrl+alt+f12=ScreenShot,save in FAT32 partition
#load -n /EFI/grub/CrScreenshotDxe.efi
#color white/blue blue/yellow light-red/blue 10

#color normal=0x07 highlight=0xF1 helptext=0x07 heading=0x02 standard=0x07 border=0x09
color normal=0X0033ff highlight=0x0B helptext=0x04 heading=0x02

setmenu --triangle-on
setmenu --ver-off
setmenu --box x=42 w=20 y=5 h=8 l=0
setmenu --keyhelp=1 --lang=zh
setmenu --auto-num-off
setmenu --help=1=1
#setmenu --font-spacing=1:4
setmenu --string=37=2=0X0033ff="date&time=yyyy-MM-dd  HH:mm:ss"
setmenu --string=42=3=0X0033ff="UEFI-GKSP"
setmenu --timeout=36=6=0xff0066

timeout 99
default 0


title  RAMOS 系统
        configfile /efi/grub/uefi-ramos.lst

title  W I N 系统
        configfile /efi/grub/uefi-win.lst

title  P  E 系 统
        configfile /efi/grub/uefi-pe.lst

title  重 启
reboot

title  关 机
halt


菜单1  (ramos系统

graphicsmode -1 1280

splashimage /efi/grub/1.jpg

#foreground FFFFFF
#background 0000AD

find --set-root /EFI/grub/unifont.hex.gz
#font /EFI/grub/unifont.hex.gz
font --font-high=40 /EFI/grub/menu40.hex.gz

#ctrl+alt+f12=ScreenShot,save in FAT32 partition
#load -n /EFI/grub/CrScreenshotDxe.efi
#color white/blue blue/yellow light-red/blue 10

#color normal=0x07 highlight=0xF1 helptext=0x07 heading=0x02 standard=0x07 border=0x09
color normal=0X0033ff highlight=0x0B helptext=0x04 heading=0x02

setmenu --triangle-on
setmenu --ver-off
setmenu --box x=5 w=0 y=5 h=8 l=0
setmenu --keyhelp=1 --lang=zh
setmenu --auto-num-off
setmenu --help=1=1
setmenu --string=6=2=0X0033ff="date&time=yyyy-MM-dd  HH:mm:ss"
setmenu --string=11=3=0X0033ff="UEFI-RAMOS"
setmenu --timeout=30=2=0X0033ff

#timeout 99
default 0


菜单2

graphicsmode -1 1280

splashimage /efi/grub/2.jpg

find --set-root /EFI/grub/unifont.hex.gz
#font /EFI/grub/unifont.hex.gz
#font --font-high=40 /EFI/grub/menu40.hex.gz
font --font-high=24 /EFI/grub/zt24.hex

color normal=0x0A highlight=0x0B helptext=0x04 heading=0x02

setmenu --triangle-oN
setmenu --ver-off
setmenu --box x=12 w=40 y=22 h=8 l=0
setmenu --keyhelp=1 --lang=zh
setmenu --auto-num-off
setmenu --help=1=1
#setmenu --font-spacing=1:4
setmenu --string=10=19=0x99ff00="date&time=yyyy-MM-dd  HH:mm:ss"
setmenu --string=14=20=0x99ff00="U E F I"
setmenu --timeout=80=21=0x99ff00




#timeout 99
default 0


菜单3

graphicsmode -1 1280

splashimage /efi/grub/3.jpg

find --set-root /EFI/grub/unifont.hex.gz
font --font-high=40 /EFI/grub/menu40.hex.gz

color normal=0x99ff00 highlight=0x0B helptext=0x04 heading=0x02

setmenu --triangle-oN
setmenu --ver-off
setmenu --box x=10 w=20 y=6 h=8 l=0
setmenu --keyhelp=1 --lang=zh
setmenu --auto-num-off
setmenu --help=1=1
setmenu --string=6=3=0x99ff00="date&time=yyyy-MM-dd  HH:mm:ss"
setmenu --string=10=4=0x99ff00=" U E F I "
setmenu --timeout=38=2=




#timeout 99
default 0



021.jpg (40.44 KB, 下载次数: 100)

021.jpg

112.jpg (312.64 KB, 下载次数: 103)

112.jpg
回复

使用道具 举报

1638#
 楼主| 发表于 2021-6-4 10:24:51 | 只看该作者
用了6.2的版本还是出现花屏

没有重现你说的问题。

在子菜单里,不应当重复设置 graphicsmode -1 1280
如果下一级菜单字体尺寸一样的话,没有必要重复设置 font --font-high=40 /EFI/grub/menu40.hex.gz

点评

我试试先  详情 回复 发表于 2021-6-5 21:38
回复

使用道具 举报

1639#
发表于 2021-6-4 11:03:03 | 只看该作者
32位外置的编译搞稔了没有
回复

使用道具 举报

1640#
 楼主| 发表于 2021-6-4 11:46:24 来自手机 | 只看该作者
没有顾上。这个不着急,慢慢弄。
回复

使用道具 举报

1641#
发表于 2021-6-5 21:38:53 | 只看该作者
2011yaya2007777 发表于 2021-6-4 10:24
没有重现你说的问题。

在子菜单里,不应当重复设置 graphicsmode -1 1280

我试试先
回复

使用道具 举报

1642#
发表于 2021-6-5 23:42:51 | 只看该作者
終於支援UEFI了,真是太棒了
讚讚讚讚讚
BOOTX64.EFI 好像不會直接執行 Menu.lst
必須按Enter才會開始執行 Menu.lst
回复

使用道具 举报

1643#
 楼主| 发表于 2021-6-6 05:30:49 来自手机 | 只看该作者
设置倒计时为1秒,或者0。
回复

使用道具 举报

1644#
发表于 2021-6-8 14:50:48 | 只看该作者
請問有支持 NTBOOT 這個命令?
語法如何下?

点评

NTloader: BIOS/UEFI 下用 GRUB4DOS 启动 VHD/WIM - GRUB4DOS - 无忧启动论坛 - Powered by Discuz! http://wuyou.net/forum.php?mod=viewthread&tid=423940  详情 回复 发表于 2021-6-8 15:21
回复

使用道具 举报

1645#
发表于 2021-6-8 15:21:04 | 只看该作者
minmax 发表于 2021-6-8 14:50
請問有支持 NTBOOT 這個命令?
語法如何下?

NTloader: BIOS/UEFI 下用 GRUB4DOS 启动 VHD/WIM - GRUB4DOS - 无忧启动论坛 - Powered by Discuz! http://wuyou.net/forum.php?mod=viewthread&tid=423940

点评

NTloader 會出現 0xc000000f錯誤 http://bbs.wuyou.net/forum.php?mod=attachment&aid=NDA1NDM0fDFmNjM0YjllfDE2MjMxNDEzNTV8MjI1ODY1fDQxNzU0NQ%3D%3D&noupdate=yes  详情 回复 发表于 2021-6-8 16:46
回复

使用道具 举报

1646#
发表于 2021-6-8 16:46:45 | 只看该作者
liuzhaoyzz 发表于 2021-6-8 15:21
NTloader: BIOS/UEFI 下用 GRUB4DOS 启动 VHD/WIM - GRUB4DOS - 无忧启动论坛 - Powered by Discuz! http ...

NTloader 會出現 0xc000000f錯誤
http://bbs.wuyou.net/forum.php?m ... 3D&noupdate=yes

点评

按回车  详情 回复 发表于 2021-6-8 17:35
用最新版g4e搭配chainloader initrd.lz1方案,本人亲测没问题,论坛里面也有很多网友反馈没问题,你的菜单要搞对!答主请认真看贴!  详情 回复 发表于 2021-6-8 17:29
回复

使用道具 举报

1647#
发表于 2021-6-8 17:29:06 | 只看该作者
minmax 发表于 2021-6-8 16:46
NTloader 會出現 0xc000000f錯誤
http://bbs.wuyou.net/forum.php?mod=attachment&aid=NDA1NDM0fDFmNjM0 ...

用最新版g4e搭配chainloader initrd.lz1方案,本人亲测没问题,论坛里面也有很多网友反馈没问题,你的菜单要搞对!答主请认真看贴!

点评

有支持VHDX嗎 問題可能出在這  详情 回复 发表于 2021-6-8 18:30
回复

使用道具 举报

1648#
发表于 2021-6-8 18:30:42 | 只看该作者
liuzhaoyzz 发表于 2021-6-8 17:29
用最新版g4e搭配chainloader initrd.lz1方案,本人亲测没问题,论坛里面也有很多网友反馈没问题,你的菜 ...

有支持VHDX嗎 問題可能出在這

点评

不支持vhdx,说明里面有啊!你的vhd超过2TB了吗?如果没有超过2TB,vhd就足够了!  详情 回复 发表于 2021-6-8 20:47
回复

使用道具 举报

1649#
发表于 2021-6-8 20:47:55 | 只看该作者
minmax 发表于 2021-6-8 18:30
有支持VHDX嗎 問題可能出在這

不支持vhdx,说明里面有啊!你的vhdx超过2TB了吗?如果没有超过2TB,vhd就足够了!
回复

使用道具 举报

1650#
发表于 2021-6-12 08:26:52 | 只看该作者
新闻(阅后删):Linux x86/x86_64现在将始终保留前1MB的内存
https://www.chinaz.com/2021/0607/1261487.shtml

https://www.codingsky.com/news/2021-06-09/111343.html

OEM机 修复 cpu的代码 在哪运行,是不是 在低1MB

bios加电 时,cpu缓冲运行 ,不能一直用这个缓冲

回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-4-30 19:58

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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