|
i386-pc 下的 map 和 efi 下的完全不一样,不支持磁盘仿真。
map 实际上是 drivemap,用于交换或屏蔽磁盘。
想启动 ISO/IMG 请用 memdisk/grub4dos,以下菜单仅供参考,不保证正确。
- function to_g4d_path {
- unset g4d_path;
- if regexp --set=1:num '^\(hd[0-9]+,[a-zA-Z]*([0-9]+)\).*' "${1}"; then
- # (hdx,msdosy) (hdx,gpty) (hdx,y)
- expr --set=num "${num} - 1";
- regexp --set=1:path_1 --set=2:path_2 '^(\(hd[0-9]+,)[a-zA-Z]*[0-9]+(\).*)' "${1}";
- set g4d_path="${path_1}${num}${path_2}";
- elif regexp '^\([chf]d[0-9]*\).*' "${1}"; then
- # (hd) (cd) (fd) (hdx) (cdx) (fdx)
- set g4d_path="${1}";
- fi;
- }
- menuentry "Boot WinPE ISO" {
- set iso_file="(hd0,2)/winpe.iso";
- if [ "$grub_platform" = "efi" ]; then
- map -f "${iso_file}";
- elif [ "$grub_platform" = "pc" ]; then
- to_g4d_path "${iso_file}";
- if [ -n "${g4d_path}" ]; then
- set g4d_cmd="map ${g4d_path} (0xff);map --hook;chainloader (0xff);boot";
- linux ${prefix}/grub.exe --config-file=${g4d_cmd};
- else
- set enable_progress_indicator=1;
- linux16 ${prefix}/memdisk iso raw;
- initrd16 "${iso_file}";
- fi;
- boot;
- fi;
- }
复制代码 |
|