无忧启动论坛

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

[原创] GRUB4DOS for UEFI

    [复制链接]
2401#
 楼主| 发表于 2022-3-24 11:31:32 | 只看该作者
继续测试。

BOOTX64-cs5.rar

142 KB, 下载次数: 3, 下载积分: 无忧币 -2

回复

使用道具 举报

2402#
发表于 2022-3-24 11:43:14 来自手机 | 只看该作者
2011yaya2007777 发表于 2022-3-24 11:31
继续测试。

最后两排是
ls_func-0,(hd1,2)/efi/boot/bootx64.efi
ls_func-3,

这个(hd1,2)就是ext4分区
回复

使用道具 举报

2403#
 楼主| 发表于 2022-3-24 11:59:21 来自手机 | 只看该作者
看来与ext4有关。
回复

使用道具 举报

2404#
 楼主| 发表于 2022-3-24 18:02:21 | 只看该作者
看看是否可以了。

BOOTX64-cs6.rar

142.03 KB, 下载次数: 2, 下载积分: 无忧币 -2

回复

使用道具 举报

2405#
发表于 2022-3-24 18:57:54 来自手机 | 只看该作者
2011yaya2007777 发表于 2022-3-24 18:02
看看是否可以了。

efidisk_init-10,0,81,
之后卡住了
回复

使用道具 举报

2406#
 楼主| 发表于 2022-3-24 21:24:24 | 只看该作者
如果这次启动成功,则进入命令行,执行:
vol
ls (ext4分区)/
看看功能是否正常,是否死机。

BOOTX64-cs7.rar

142.03 KB, 下载次数: 2, 下载积分: 无忧币 -2

回复

使用道具 举报

2407#
发表于 2022-3-24 22:04:35 来自手机 | 只看该作者
2011yaya2007777 发表于 2022-3-24 21:24
如果这次启动成功,则进入命令行,执行:
vol
ls (ext4分区)/

卡在booting find 界面了.
我用winhex把timeout改成9,进入了命令模式。
执行ls (hd0,2)/   成功死掉
ls_func-0,(hd0,2)/,
ls_func-3,
回复

使用道具 举报

2408#
发表于 2022-3-25 00:00:04 来自手机 | 只看该作者
2011yaya2007777 发表于 2022-3-24 21:24
如果这次启动成功,则进入命令行,执行:
vol
ls (ext4分区)/

我下载了最新的grub4efi源码,改了两个文件,把ext4宏定义和相关函数去掉,编译好了之后,跑的非常完美。
回复

使用道具 举报

2409#
发表于 2022-3-25 00:44:29 来自手机 | 只看该作者
2011yaya2007777 发表于 2022-3-24 21:24
如果这次启动成功,则进入命令行,执行:
vol
ls (ext4分区)/

大佬,reboot命令有问题,不能真正的完成重启复位。g4efi  这个reboot之后,进入bios会发现内存容量变成零,去看me固件版本也消失了。
回复

使用道具 举报

2410#
 楼主| 发表于 2022-3-25 08:32:52 | 只看该作者
本帖最后由 2011yaya2007777 于 2022-3-25 08:35 编辑

reboot命令,以前使用 UEFI 固件提供的 GRUB_EFI_RESET_WARM(热复位)。
现在使用 UEFI 固件提供的 GRUB_EFI_RESET_COLD(冷复位)。试试看,有何区别。

现在搞不懂为什么启动实机失败,而虚拟机正常!
含有ext4分区的这个特定机械硬盘,在其他电脑上,可否正常启动?其他电脑上含有ext4分区的机械硬盘(不是现在测试的这个特定硬盘),可否正常启动?
其他含有ext4分区的机械硬盘,在这台电脑上,可否正常启动?

BOOTX64-reboor.rar

140.68 KB, 下载次数: 2, 下载积分: 无忧币 -2

回复

使用道具 举报

2411#
发表于 2022-3-25 11:50:03 来自手机 | 只看该作者
2011yaya2007777 发表于 2022-3-25 08:32
reboot命令,以前使用 UEFI 固件提供的 GRUB_EFI_RESET_WARM(热复位)。
现在使用 UEFI 固件提供的 GRUB_ ...

那就是我的主板冷复位功能有问题了,不管是grub2efi  还是efishell 或是bios界面 我按键盘三个按键重启也是这个毛病!
至于ext4的事情,我已经拿优盘测试过了。
把硬盘都禁用,然后优盘弄成gpt分区表,分区就两个,一个ext4 一个esp 启动后也是会挂掉。
我的主板grub2efi 并无此问题,ext4分区正常访问

点评

弄一个小一点的可以重现问题的ext2分区,压缩下传给yaya看看  详情 回复 发表于 2022-3-25 16:45
回复

使用道具 举报

2412#
发表于 2022-3-25 13:10:41 | 只看该作者
谢谢分享
回复

使用道具 举报

2413#
 楼主| 发表于 2022-3-25 16:36:51 | 只看该作者
我的U盘分了4个区。包含fat16,ext4,ntfs。
无论在虚拟机启动,还是在实机启动,都很正常。
你的故障现象,在我这里不能重现。因此研究告一段落。
回复

使用道具 举报

2414#
发表于 2022-3-25 16:45:09 | 只看该作者
510819776 发表于 2022-3-25 11:50
那就是我的主板冷复位功能有问题了,不管是grub2efi  还是efishell 或是bios界面 我按键盘三个按键重启也 ...

弄一个小一点的可以重现问题的ext2分区,压缩下传给yaya看看
回复

使用道具 举报

2415#
发表于 2022-3-25 16:55:30 来自手机 | 只看该作者
2011yaya2007777 发表于 2022-3-25 08:32
reboot命令,以前使用 UEFI 固件提供的 GRUB_EFI_RESET_WARM(热复位)。
现在使用 UEFI 固件提供的 GRUB_ ...

大佬我找到了一种解决问题的新思路了,clover包含了一个从bios伪装成uefi的玩意。我把电脑的传统引导打开,然后利用grub4dos加载clover镜像进入冒牌uefi环境,然后去加载grub4efi,那个伪造的uefi坏境居然也会因为grub4efi的ext4问题崩溃掉,这说明了什么问题???   我自己编译的去掉ext4支持的版本,一切正常,我没有多余的电脑测试。
回复

使用道具 举报

2416#
发表于 2022-3-25 17:00:56 来自手机 | 只看该作者
wintoflash 发表于 2022-3-25 16:45
弄一个小一点的可以重现问题的ext2分区,压缩下传给yaya看看

没用的,因为我自己的优盘,硬盘塞进虚拟机故障也不会重现,这很可能就是我主板bios的坑,
刚刚我把uefi关掉,开传统引导grub4dos 然后加载clover伪造uefi环境,再去加载grub4efi 问题依旧,这次是clover的uefi环境直接崩溃,自己编译的去除ext4功能的版本却完全正常。
要么是ext4源码有坑,要么是我主板bios有坑。
回复

使用道具 举报

2417#
发表于 2022-3-25 17:10:34 | 只看该作者
本帖最后由 liuzhaoyzz 于 2022-3-25 17:14 编辑
2011yaya2007777 发表于 2022-3-25 16:36
我的U盘分了4个区。包含fat16,ext4,ntfs。
无论在虚拟机启动,还是在实机启动,都很正常。
你的故障现 ...

前面我也反馈了,虚拟机可以启动G4E,实体机不行,我的电脑也有个ext4分区,其实我也是感觉g4d/g4e的ext4驱动代码不够健壮,这是实际碰到的启动问题的感觉。http://wuyou.net/forum.php?mod=r ... &fromuid=298214

但是如果说是ext4驱动的问题,为什么g4e有的版本卡死,有的版本又不卡死?ext4驱动不同的g4e版本应该没动吧,为什么不同版本会卡死?实在匪夷所思,莫名其妙。        
回复

使用道具 举报

2418#
 楼主| 发表于 2022-3-25 17:58:07 来自手机 | 只看该作者
主要是我这里不能重现问题,我又不想麻烦别人不停地,枯燥无味地去测试。
回复

使用道具 举报

2419#
发表于 2022-3-25 19:25:59 来自手机 | 只看该作者
liuzhaoyzz 发表于 2022-3-25 17:10
前面我也反馈了,虚拟机可以启动G4E,实体机不行,我的电脑也有个ext4分区,其实我也是感觉g4d/g4e的ext4 ...

自己编译了一个不支持ext4的grub4efi最新版,顺便改成了reboot命令冷重启,用起来还算重舒服.
主要还是用来配合vbus使用,非常棒!
回复

使用道具 举报

2420#
发表于 2022-3-25 20:54:54 | 只看该作者
感谢楼主分享 好东西
回复

使用道具 举报

2421#
发表于 2022-3-25 21:09:00 | 只看该作者
2011yaya2007777 发表于 2022-3-25 17:58
主要是我这里不能重现问题,我又不想麻烦别人不停地,枯燥无味地去测试。

上面510819776测试了BOOTX64-cs7.rar啊。

我的ext4分区是用diskgenius4.9.5格式化出来的。你看下你那边能否重现。
你改进下,我可以帮忙测试。
        
回复

使用道具 举报

2422#
 楼主| 发表于 2022-3-25 21:35:49 来自手机 | 只看该作者
我用diskgenius4.9.5在U盘分了一个ext4分区,实机启动正常。
回复

使用道具 举报

2423#
 楼主| 发表于 2022-3-25 21:41:08 来自手机 | 只看该作者
上面510819776测试了BOOTX64-cs7.rar啊。       没有明确告知测试结果。是否与热重启不同,既有关内存是否改善。
回复

使用道具 举报

2424#
 楼主| 发表于 2022-3-25 21:44:33 来自手机 | 只看该作者
好吧,我抽时间在ext模块添加一些调试信息,然后帮忙看看。
回复

使用道具 举报

2425#
发表于 2022-3-25 22:16:51 来自手机 | 只看该作者
2011yaya2007777 发表于 2022-3-25 21:41
上面510819776测试了BOOTX64-cs7.rar啊。       没有明确告知测试结果。是否与热重启不同,既有关内存是否 ...

cs7卡booting find  
我改timeout 9后 用ls (hd0,2)直接挂掉
ls-func-0
ls-func-3
就显示两排    那个改重启的版本 直接卡死 无任何提示  我自己把热启动改成cold后,解决了重启问题
回复

使用道具 举报

2426#
发表于 2022-3-26 01:14:20 | 只看该作者
2011yaya2007777 发表于 2022-3-25 21:44
好吧,我抽时间在ext模块添加一些调试信息,然后帮忙看看。

我的真机自己开了ext2fs调试了,用的是2022年0723版本,更高版本会因为ext4问题卡booting界面 卡find 命令
输入ls (hd0,2)/
inode 2
dirname=/
ipg=8192,dpb=64
group_id=0 group_desc=1 desc=0
fsblock 1 buffer 3227612640

同一块硬盘,我在虚拟机中测试的结果
inode 2
dirname=/
ipg=8192,dpb=64
group_id=0 group_desc=1 desc=0
fsblock 1 buffer 1005987296
inode table fsblock =1065
fsblock 1065 buffer 1005991392
ipb=16, sizeof(inode)=256
inode=3bf635e0,raw_inode=3bf636e0
offset into inode table block=256
00 00 00 00 00 0 00 f3 44 3e 60 f3 44 3e 60
.........后面都是16进制的

查看源码?????

ext2_rdfsb (unsigned long long fsblock, int buffer)
{
#ifdef E2DEBUG
  printf ("fsblock %d buffer %d\n", fsblock, buffer);
#endif /* E2DEBUG */
  return devread (fsblock * (EXT2_BLOCK_SIZE (SUPERBLOCK) / DEV_BSIZE), 0,
          EXT2_BLOCK_SIZE (SUPERBLOCK), (unsigned long long)(grub_size_t)(char *)(grub_size_t) buffer, 0xedde0d90);
}











  while (1)
    {
#ifdef E2DEBUG
      printf ("inode %d\n", current_ino);
      printf ("dirname=%s\n", dirname);
#endif /* E2DEBUG */

      /* look up an inode */
      group_id = tem = (current_ino - 1) / SUPERBLOCK->s_inodes_per_group;
            if ((EXT4_HAS_INCOMPAT_FEATURE(SUPERBLOCK,EXT4_FEATURE_INCOMPAT_META))
                && (group_id >= (int)SUPERBLOCK->s_first_meta_bg))
            {
                group_id = (group_id - SUPERBLOCK->s_first_meta_bg)
                    % EXT4_META_GROUP_SIZE(SUPERBLOCK);
                group_desc = (group_id >> log2_tmp (EXT2_DESC_PER_BLOCK (SUPERBLOCK)))
                    + (tem - group_id) * SUPERBLOCK->s_blocks_per_group
                    + (SUPERBLOCK->s_first_meta_bg == 0 ?
                    (WHICH_SUPER + SUPERBLOCK->s_first_data_block) : WHICH_SUPER);
            }
            else
            {
                group_desc = (group_id >> log2_tmp (EXT2_DESC_PER_BLOCK (SUPERBLOCK)))
                    + WHICH_SUPER + SUPERBLOCK->s_first_data_block;
            }
      desc = group_id & (EXT2_DESC_PER_BLOCK (SUPERBLOCK) - 1);
#ifdef E2DEBUG
      printf ("ipg=%d, dpb=%d\n", SUPERBLOCK->s_inodes_per_group,
          EXT2_DESC_PER_BLOCK (SUPERBLOCK));
      printf ("group_id=%d group_desc=%d desc=%d\n", group_id, group_desc, desc);
#endif /* E2DEBUG */
            if (!ext2_rdfsb (group_desc,(grub_size_t) GROUP_DESC))   
    {
      return 0;
    }
      ext4_gdp = (struct ext4_group_desc *)( (__u8*)GROUP_DESC +
                      desc * EXT2_DESC_SIZE(SUPERBLOCK));

        ino_blk = (EXT4_HAS_INCOMPAT_FEATURE(SUPERBLOCK,EXT4_FEATURE_INCOMPAT_64BIT) ?
            ((unsigned long long)ext4_gdp->bg_inode_table_hi<<32) : 0) + ext4_gdp->bg_inode_table_lo +
    (((current_ino - 1) % (SUPERBLOCK->s_inodes_per_group))
     >> log2_tmp (EXT2_INODES_PER_BLOCK (SUPERBLOCK)));
#ifdef E2DEBUG
      printf ("inode table fsblock=%d\n", ino_blk);
#endif /* E2DEBUG */
回复

使用道具 举报

2427#
 楼主| 发表于 2022-3-26 07:11:23 | 只看该作者
g4efi  这个reboot之后,进入bios会发现内存容量变成零,去看me固件版本也消失了。

热重启改为冷重启后,内存容量为非零,去看me固件版本仍然存在?即解决了问题?

请你把测试ext4的分区表发过来。
回复

使用道具 举报

2428#
 楼主| 发表于 2022-3-26 10:02:09 | 只看该作者
请测试。

BOOTX64-测试ext4-0.rar

141.08 KB, 下载次数: 15, 下载积分: 无忧币 -2

回复

使用道具 举报

2429#
发表于 2022-3-26 10:23:41 来自手机 | 只看该作者
2011yaya2007777 发表于 2022-3-26 07:11
热重启改为冷重启后,内存容量为非零,去看me固件版本仍然存在?即解决了问题?

请你把测试ext4的分区 ...

大佬,ext4的分区表怎么获取呀?我只会抓gpt分区表
回复

使用道具 举报

2430#
发表于 2022-3-26 10:26:58 来自手机 | 只看该作者
2011yaya2007777 发表于 2022-3-26 07:11
热重启改为冷重启后,内存容量为非零,去看me固件版本仍然存在?即解决了问题?

请你把测试ext4的分区 ...

这个应该是我的主板热复位功能有问题,键盘ctrl alt del 重启也会出现掉me固件,内存识别为零。
这个bug并不影响ext4的测试的结果。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-4-24 06:05

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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