无忧启动论坛

标题: 大神们,ipxe脚本菜单,怎样加个直接启动本地硬盘系统的命令? [打印本页]

作者: nethuan    时间: 2015-11-23 15:33
标题: 大神们,ipxe脚本菜单,怎样加个直接启动本地硬盘系统的命令?
本帖最后由 nethuan 于 2015-11-23 15:37 编辑

假设本地Windows是HD0
我说明,百度了一天,没找到方法,我承认我很笨。

item --key x exit         Exit iPXE and continue BIOS boot这个命令不行,如果主板的启动顺序是从网络启动,退出后又进入菜单,造成循环。


  1. #!ipxe
  2.    set menu-timeout 16000
  3.    set menu-default w8pe
  4.    isset ${ip} || dhcp
  5.    isset ${next-server} || set next-server 192.168.0.205

  6. :start
  7.   menu iPXE Boot Menu
  8.   item --gap --             -------------------------------- WINPE TOOL ---------------------------
  9.   item wpeiso                  66369 2003 PE IN ISO
  10.   item 0peiso                  PSEUDO 03 0PE IN ISO
  11.   item w7pe                    WIN 7x86 PE IN WIM
  12.   item w8pe                    WIN 8x86 PE IN WIM
  13.   item w81pe                   WIN 81x86 PE IN WIM
  14.   item w8164pe                 WIN 81x64 PE IN WIM
  15.   item --gap --             -------------------------------- Advanced -----------------------------
  16.   item --key s shell             [S] Drop to iPXE Shell
  17.   item --key r reboot            [R] Reboot the Computer
  18.   item --key x exit              [X] Exit iPXE and Continue BIOS Booting
  19.   choose --timeout ${menu-timeout} --default ${menu-default} selected
  20.   goto ${selected}

  21. :shell
  22.   echo Type 'exit' to go back to the menu.
  23.   shell
  24.   goto start

  25. :reboot
  26.   reboot

  27. :exit
  28.   exit

  29. :wpeiso
  30.   initrd http://${next-server}/iso/TangoPE_NET.ISO
  31.   chain http://${next-server}/memdisk iso raw

  32. :0peiso
  33.   initrd http://${next-server}/wimboot/PSEUD0PE.ISO
  34.   chain http://${next-server}/wimboot/ISOLINUX/memdisk iso raw

  35. :w7pe
  36.   kernel http://${next-server}/wimboot/wimboot
  37.   initrd http://${next-server}/wimboot/bootmgr        bootmgr
  38.   initrd http://${next-server}/wimboot/bbb        bcd
  39.   initrd http://${next-server}/wimboot/boot.sdi        boot.sdi
  40.   initrd http://${next-server}/wimboot/WIN786PE.WIM        BOOT.WIM
  41.   boot
  42.   goto start

  43. :w8pe
  44.   kernel http://${next-server}/wimboot/wimboot
  45.   initrd http://${next-server}/wimboot/bootmgr        bootmgr
  46.   initrd http://${next-server}/wimboot/BCD        BCD
  47.   initrd http://${next-server}/wimboot/BOOT.SDI        BOOT.SDI
  48.   initrd http://${next-server}/wimboot/BOOT.WIM        BOOT.WIM
  49.   boot
  50.   goto start

  51. :w81pe
  52.   kernel http://${next-server}/wimboot/wimboot
  53.   initrd http://${next-server}/wimboot/bootmgr        bootmgr
  54.   initrd http://${next-server}/wimboot/bbb        bcd
  55.   initrd http://${next-server}/wimboot/boot.sdi        boot.sdi
  56.   initrd http://${next-server}/wimboot/WIN8186P.WIM        BOOT.WIM
  57.   boot
  58.   goto start

  59. :w81pe64
  60.   kernel http://${next-server}/wimboot/wimboot
  61.   initrd http://${next-server}/wimboot/bootmgr        bootmgr
  62.   initrd http://${next-server}/wimboot/bbb        bcd
  63.   initrd http://${next-server}/wimboot/boot.sdi        boot.sdi
  64.   initrd http://${next-server}/wimboot/WIN8164P.WIM        BOOT.WIM
  65.   boot
  66.   goto start

  67. :failed
  68.   echo Booting failed, dropping to [Shell]
  69.   goto shell
复制代码

作者: zhaohj    时间: 2015-11-23 16:53
本帖最后由 zhaohj 于 2015-11-23 17:24 编辑

那就转到grub4dos
chain grldr
不知这样行不行?
chain http://${next-server}/grub.exe  --config-file="chainloader (hd0)+1"
非(hd0)就要多加几条命令了,用“;"隔开,如:
chain http://${next-server}/grub.exe  --config-file="find --set-root --devices=h /bootmgr || find --set-root --devices=h /ntldr;map () (hd0);map (hd0) ();map --rehook;chainloader (hd0)+1"
作者: 假大空    时间: 2015-11-23 17:17
呵呵,我也是转到grldr实现的默认从本地硬盘启动
作者: nethuan    时间: 2015-11-23 22:06
我也想到了grub,但我固执的认为ipxe应该可以一条命令解决,唉,原来没那么简单
作者: captain_g    时间: 2015-11-26 13:19
#5所说 确如 官网 http://ipxe.org/cmd/sanboot 说明

只是没试过
作者: nethuan    时间: 2015-11-27 09:10
本帖最后由 nethuan 于 2015-11-27 09:25 编辑
cckp 发表于 2015-11-26 13:28
一直用的这个命令。肯定有效的


我来试试


感谢感谢。确实可以了,就是这么简单,只怪英文太烂,在官网翻了半天没找到。
作者: rampage    时间: 2016-2-8 20:19

  1. item shell      Drop to iPXE shell
  2. item --key r reboot     Reboot Computer
  3. item exit       Exit iPXE (Continue BIOS boot/local disk)
  4. choose --default exit --timeout 30000 target && goto ${target}

  5. :exit
  6. exit
复制代码


shell可开命令行,来直接写脚本用于启动或者重启或者退出
exit 退出iPXE,开始按照BIOS顺序启动下一个,一般是硬盘
reboot 重启

作者: rampage    时间: 2016-2-8 20:20

  1. item grub_hd0                boot to hd0 (via grub4dos)

  2. :grub_hd0
  3. chain ${boot-url}/files/grub.exe --config-file="rootnoverify (hd0);chainloader +1" || goto failed
  4. goto start


复制代码


此法来启动本地硬盘
作者: tanghe791    时间: 2016-3-15 08:54
谢谢楼主  。。。。。。
作者: papago    时间: 2018-10-21 18:18
ipxe 启动本地硬盘的菜单
作者: a1379388505    时间: 2019-12-11 17:04
难道不是  sanboot --no-describe --drive 0x80 ?
作者: hkkitlee    时间: 2019-12-12 17:19
a1379388505 发表于 2019-12-11 17:04
难道不是  sanboot --no-describe --drive 0x80 ?

我直接使用exit
作者: a1379388505    时间: 2019-12-12 17:38
hkkitlee 发表于 2019-12-12 17:19
我直接使用exit

我用exit结果并没有退出而是又重新进入ipex了 应该是我的内置菜单有问题。如果前面挂载了iscsi 用sanboot --no-describe --drive 0x80确实不行
会直接启动已经挂载的iscsi磁盘
作者: hkkitlee    时间: 2019-12-12 21:42
a1379388505 发表于 2019-12-12 17:38
我用exit结果并没有退出而是又重新进入ipex了 应该是我的内置菜单有问题。如果前面挂载了iscsi 用sanboot ...

https://forum.ipxe.org/showthread.php?tid=6775

exit / sanboot --no-describe --drive 0x80 都可以的
作者有說明這可能是bios/uefi的bug,建議更新
作者: 江南一根葱    时间: 2019-12-13 13:51
efi下的话我直接chain file:\efi\boot\bootx64.efi了
作者: hnrrn    时间: 2020-10-22 22:05
学习一下




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3