无忧启动论坛

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

在 windows 下安装 grub4dos 引导代码

    [复制链接]
1#
发表于 2022-4-4 18:10:51 | 显示全部楼层
感觉winhex有点大,以后如果有人兴趣用c或者c++写一个就好了。

diskrw是个有一定风险的命令,边界条件很重要,搞错了有风险。

回复

使用道具 举报

2#
发表于 2022-4-4 20:42:54 | 显示全部楼层
wintoflash 发表于 2022-4-4 18:24
凑个热闹
前段时间写的 diskfire 小程序,支持安装 GRUB4DOS MBR/PBR,支持安装到 MBR/GPT 分区表。
由于 ...

diskfire.exe mbr -i=GRUB4DOS (hd1)
这个(hd1)能否用盘符代替之啊?比如说:
diskfire.exe mbr -i=GRUB4DOS C:,这样子的命令,可以把C:盘所在的硬盘的MBR修改为g4d,用批处理还要判断很多。

grubinst直接直接盘符调用安装grldr.MBR。

点评

不支持。需要用 probe 从分区名反查卷标:diskfire.exe probe --letter [attachimg]499130[/attachimg] hd0 对应的是 \.\PhysicalDrive0, hd1 对应的是 \.\PhysicalDrive1, 以此类推。 但是分区就没有这种对应关  详情 回复 发表于 2022-4-4 21:09
回复

使用道具 举报

3#
发表于 2022-4-5 09:18:48 来自手机 | 显示全部楼层
wintoflash 发表于 2022-4-4 21:09
不支持。需要用 probe 从分区名反查卷标:diskfire.exe probe --letter

hd0 对应的是 \.\PhysicalDriv ...

就按照你上面的截图来说,已知一个盘符C:,就可以判定他位于(hd0)上面;
已知一个盘符D:或E:,就可以判定他位于(hd1)上面。
对于没有盘符的分区,不做要求。

就是说可以通过盘符求(hdx)。
这是单向映射,不是反过来已知(hdx)求盘符呀。

点评

本身盘符和GRUB2分区的对应关系就是"猜"出来的。我不知道怎么用 windows api 来通过盘符获取它所在的磁盘。 按你这样说的,不好弄。  详情 回复 发表于 2022-4-5 10:11
回复

使用道具 举报

4#
发表于 2022-4-5 11:21:42 | 显示全部楼层
wintoflash 发表于 2022-4-5 10:11
本身盘符和GRUB2分区的对应关系就是"猜"出来的。我不知道怎么用 windows api 来通过盘符获取它所在的磁盘 ...

那就靠“猜”吧,即使“猜”错了,也没事吧,因为后续写MBR引导扇区啥的,会进行判断吧,会设置安全边界,不会造成分区的数据损毁吧,顶多也就是写错了盘符,可能导致原本是windows.mbr的,变成了grldr.mbr,只要保证数据安全,写错盘符不是什么大问题。

高大上的c/c++还要搭配批处理通过分区判断(hdx),感觉low了点。

靠盘符定位硬盘(hdx)感觉简单多了,因为windows本来就是通过盘符来定位分区的。可以参考下grubinst或者bootice的效果,当然是在你有兴趣的前提下咯。

网上再找找看有没有什么API能够搞定这个的。不着急,慢慢来吧。

点评

api可以用上面说的DeviceIoControl试。下面的代码可以去pecmd里测下。 CALL $--qd --ret:&R Kernel32.dll,CreateFileW,$\\.\C:,#0,#3,#0,#3,#0,#0 ENVI$ &C=*12 0 CALL $--qd Kernel32.dll,DeviceIoControl,#%&  详情 回复 发表于 2022-4-6 10:45
我说了,不合适。  详情 回复 发表于 2022-4-5 11:27
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-14 00:48

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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