无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 17257|回复: 50
打印 上一主题 下一主题

[发布] 20190808更新:16MB RyanTC Linux RamOS PXE Server獨立版,M$ Win手工更換引導檔

    [复制链接]
跳转到指定楼层
#
发表于 2019-8-2 12:02:39 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
本帖最后由 hkkitlee 于 2019-10-20 11:42 编辑

更新參考:
編譯/設定ipxe usb UEFI Secure boot/Bios 遠程安裝 / 救援 Linux/Winpe10 +ValdikSS



教學已寫過兩編了,本編是成品
編譯/設定ipxe usb UEFI Secure boot/Bios 遠程安裝 / 救援 Linux/Winpe10 +ValdikSS
不足16MB的移動Linux系統建pxe伺服器。可由u盤,ipxe啟動

這是個操作系統!這是個操作系統!
說兩次是希望各人下載前看清楚!不太明白這是什麼請參考上面兩篇分享。

這版也是RamOS:除非使用者主動掛載電腦硬碟並對其操作,正常所有儲存操作是在內存發生的;所以重啟後會馬上還原。並因爲此特性不太懂Linux的朋友可以「一邊看教學帖,一邊進去一探究竟」,不怕誤操作危及自身機器。只要重啟就好了。

我的版本不足16MB的移動Linux系統建pxe伺服器。可由u盤,ipxe啟動中是需要連線回我的伺服作啟動。
由於我並不定時開機,所以對於各人使用/學習也不太方便。所以公開下載這個成品「獨立版」。
為了方便入門使用,將增加由「$M 網絡硬盤」更換「PXE引導檔」功能。

寫入影像請參考之前編譯/設定ipxe usb UEFI Secure boot/Bios 遠程安裝 / 救援 Linux/Winpe10 +ValdikSS

從主機下載:https://hkkitlee.ddns.net:9000/ryantc.zip

聲明:此版本可作獨立使用。TC啟動時「也是會連回我的主機嘗試更新」(請參考我不足16MB的移動Linux系統建pxe伺服器。可由u盤,ipxe啟動的更新bash),如有需要請自行修改。


评分

参与人数 2无忧币 +10 收起 理由
freesoft00 + 5
lhb9900 + 5 赞一个!

查看全部评分

44#
发表于 2024-1-25 21:27:13 | 只看该作者
fdgkldfghjsad规划局热太远了
回复

使用道具 举报

43#
 楼主| 发表于 2019-10-20 11:45:14 | 只看该作者
kenvpn 发表于 2019-10-19 01:12
备用档已经挂了,主力档也打不开了

不好意思
因嫌百度更新麻煩已刪除又忘記更新
請從主機下載
回复

使用道具 举报

42#
发表于 2019-10-19 01:12:43 | 只看该作者
备用档已经挂了,主力档也打不开了

点评

不好意思 因嫌百度更新麻煩已刪除又忘記更新 請從主機下載  详情 回复 发表于 2019-10-20 11:45
回复

使用道具 举报

41#
发表于 2019-8-6 07:51:20 来自手机 | 只看该作者
本帖最后由 江南一根葱 于 2019-8-6 07:52 编辑
hkkitlee  2019-8-6 00:27
ipxe script""bios/uefi,ipxe.efiv


共用吧,菜单还得分开写
回复

使用道具 举报

40#
 楼主| 发表于 2019-8-6 00:27:10 | 只看该作者
江南一根葱 发表于 2019-8-5 21:57
bios下的ipxe脚本算是最终形态了,不去折腾了,接下去折腾ipxe.efi脚本

ipxe script寫得"完整"是bios/uefi通用的,ipxe.efi可以不用折騰

点评

÷д  详情 回复 发表于 2019-8-6 07:51
回复

使用道具 举报

39#
 楼主| 发表于 2019-8-6 00:25:15 | 只看该作者
江南一根葱 发表于 2019-8-5 21:50
grub2做一般菜单还是挺简单的,
就是不支持https,启不了github上的文件,ipxe已经可以了。。。

我在Centos7:

grub2-install --target=x86_64-efi --efi-directory=efi/ --boot-directory=efi/EFI --removable --recheck
grub2-install --target=i386-pc --recheck --boot-directory=efi/EFI /dev/loop8

同一盤安裝兩個啟動,就是grub.cfg會放在不同的資料夾;不是一個cfg共用的..........
煩人
回复

使用道具 举报

38#
发表于 2019-8-5 21:57:49 | 只看该作者


bios下的ipxe脚本算是最终形态了,不去折腾了,接下去折腾ipxe.efi脚本

点评

ipxe script寫得"完整"是bios/uefi通用的,ipxe.efi可以不用折騰  详情 回复 发表于 2019-8-6 00:27
回复

使用道具 举报

37#
发表于 2019-8-5 21:50:52 | 只看该作者
hkkitlee 发表于 2019-8-5 21:39
我因為做這U盤,又跳進grub2這苦海

grub2做一般菜单还是挺简单的,
就是不支持https,启不了github上的文件,ipxe已经可以了。。。

点评

我在Centos7: grub2-install --target=x86_64-efi --efi-directory=efi/ --boot-directory=efi/EFI --removable --recheck grub2-install --target=i386-pc --recheck --boot-directory=efi/EFI /dev/loop8  详情 回复 发表于 2019-8-6 00:25
回复

使用道具 举报

36#
 楼主| 发表于 2019-8-5 21:39:16 | 只看该作者
江南一根葱 发表于 2019-8-5 20:33
grub2前几天折腾过的,有点惨,不支持https,http启动倒是很方便的,就是。。。

我因為做這U盤,又跳進grub2這苦海

点评

grub2做一般菜单还是挺简单的, 就是不支持https,启不了github上的文件,ipxe已经可以了。。。  详情 回复 发表于 2019-8-5 21:50
回复

使用道具 举报

35#
发表于 2019-8-5 20:33:02 | 只看该作者
grub2前几天折腾过的,有点惨,不支持https,http启动倒是很方便的,就是。。。

点评

我因為做這U盤,又跳進grub2這苦海  详情 回复 发表于 2019-8-5 21:39
回复

使用道具 举报

34#
 楼主| 发表于 2019-8-4 15:12:43 | 只看该作者
lhb9900 发表于 2019-8-4 14:27
是的,你可以慢慢移植

其實你可以用這個u盤:根據「本帖2#樓的教學」將你不同架構的引導文件「命名」「放入」在TC的「網絡磁碟」中,就可以使用你自己的引導給客戶機使用。

這個「u 盤」提供的是pxe環境,引導檔這類「軟件」是沒有限制的!!隨你喜歡的
回复

使用道具 举报

33#
 楼主| 发表于 2019-8-4 14:43:12 | 只看该作者
本帖最后由 hkkitlee 于 2019-8-4 14:45 编辑
lhb9900 发表于 2019-8-4 14:27
是的,你可以慢慢移植


我不會移植的啦

1我的u盤以小巧為主。一般系統最小也得幾百MB!是一定不放u盤內
2我u盤是要可線上更新。
3Grub2從編譯到腳本可真是牛刀。也因為做此u盤才*再*慢慢學習。
4好像沒https支援

論功能說,grub2跟操作系統差不了多小。
回复

使用道具 举报

32#
发表于 2019-8-4 14:27:38 | 只看该作者
本帖最后由 lhb9900 于 2019-8-4 14:29 编辑
hkkitlee 发表于 2019-8-4 14:23
這是否grub2的grub.cfg啟動腳本?


是的,你可以慢慢移植 grubfm.zip (6.29 KB, 下载次数: 1)

点评

其實你可以用這個u盤:根據「本帖2#樓的教學」將你不同架構的引導文件「命名」「放入」在TC的「網絡磁碟」中,就可以使用你自己的引導給客戶機使用。 這個「u 盤」提供的是pxe環境,引導檔這類「軟件」是沒有限制  详情 回复 发表于 2019-8-4 15:12
我不會移植的啦 1我的u盤以小巧為主。一般系統最小也得幾百MB! 2我u盤是要可線上更新。 3Grub2從編譯到腳本可真是牛刀。也因為做此u盤才*再*慢慢學習。 論功能說,grub2跟操作系統差不了多小。  详情 回复 发表于 2019-8-4 14:43
回复

使用道具 举报

31#
 楼主| 发表于 2019-8-4 14:23:21 | 只看该作者
lhb9900 发表于 2019-8-4 14:12
这是较完整LINUX启动脚本,看看就头疼,一直在寻找LINUX整体ISO的方法

這是否grub2的grub.cfg啟動腳本?

点评

是的  详情 回复 发表于 2019-8-4 14:27
回复

使用道具 举报

30#
发表于 2019-8-4 14:15:45 | 只看该作者
hkkitlee 发表于 2019-8-4 14:05
看來有點誤解了

1啟動方法跟互聯網/內網的「速度」是沒有直接關係的。

menuentry "[L]用Linux方式启动ISO" --hotkey="L" --class iso{
        echo (正在查找ISO内的Linux启动文件,请等待。。即将菜单末尾列出启动文件)
       
  set k="1"
  GetHotkey
        regexp -s 1:devstr -s 2:path '\((.*)\)(.*)' "$grub_file"
       
                for cfg in /boot/grub/loopback.cfg /efi/boot/loopback.cfg /EFI/BOOT/loopback.cfg; do
                        if ! test -e (isoloop)$cfg; then continue; fi
                        cat -s cfgtext (isoloop)$cfg
                        if regexp '/grub/grub.cfg' "$cfgtext"; then
                                if ! test -e (isoloop)/grub/grub.cfg; then continue; fi
                        fi
                        if regexp '/casper/initrd.lz' "$cfgtext"; then
                                if ! test -e (isoloop)/casper/initrd.lz; then continue; fi
                        fi
                        menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" "$devstr" "$cfg" --hotkey="${k}"  --class ArrowR {
                                                                    echo (正在后台加载文件,请等待。。)
                                probe -u -s rootuuid $4
                                export rootuuid
                                set iso_path="$3"
                                export iso_path
                                loopback isoloop "$2"
                                set root=isoloop
                                configfile $5
                                loopback -d isoloop
                        }
                        unset cfgtext
                        loopback -d isoloop
                        return 0
                done
               
                for cfg in /boot/grub/grub.cfg /EFI/BOOT/grub.cfg /EFI/boot/grub.cfg /boot/grub2/grub.cfg        \
                                        /efi/boot/grub.cfg /isolinux/live.cfg /boot/isolinux/isolinux.cfg /slax/boot/syslinux.cfg /isolinux/txt.cfg; do
                        if ! test -e (isoloop)$cfg; then continue; fi
                        cat -s cfgtext (isoloop)$cfg
                        if regexp 'iso_path' "$cfgtext"; then
                                menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" "$devstr" "$cfg" --hotkey="${k}"  --class ArrowR {
                                                                            echo (正在后台加载文件,请等待。。)
                                        probe -u -s rootuuid $4
                                        export rootuuid
                                        set iso_path="$3"
                                        export iso_path
                                        loopback isoloop "$2"
                                        set root=isoloop
                                        configfile $5
                                        loopback -d isoloop
                                }
                                set loopok=1
                        elif regexp 'boot=casper' "$cfgtext"; then
                                if test -f (isoloop)/casper/filesystem.squashfs -a -f (isoloop)/casper/vmlinu* -a -f (isoloop)/casper/initr*; then
                                        menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" --hotkey="${k}"  --class ArrowR {
                                                                                    echo (正在后台加载文件,请等待。。)
                                                loopback isoloop "$2"
                                                for preseed in (isoloop)/preseed/*; do
                                                        regexp -s preseed '\(isoloop\)(.*)' "$preseed"
                                                        preseed="file=/cdrom/${preseed}"
                                                        break
                                                done
                                                for vmlinuz in (isoloop)/casper/vmlinu*; do
                                                        linux        $vmlinuz   ${preseed} boot=casper locale=zh_CN locales=zh_CN.UTF-8 iso-scan/filename=${3} quiet splash ---
                                                        unset vmlinuz
                                                        break
                                                done
                                                for initrd in (isoloop)/casper/initr*; do
                                                        initrd        $initrd
                                                        unset initrd
                                                        break
                                                done
                                        }
                                        set loopok=1
                                fi
                        elif regexp 'boot=live' "$cfgtext"; then
                                if test -f (isoloop)/live/filesystem.squashfs -a -f (isoloop)/live/vmlinu* -a -f (isoloop)/live/initr*; then
                                        if regexp 'menuentry "Clonezilla' "$cfgtext"; then set params="union=overlay username=user config noswap edd=on nomodeset locales= keyboard-layouts= ocs_live_run="ocs-live-general" ocs_live_extra_param="" ocs_live_batch="no" vga=788 ip= net.ifnames=0  nosplash i915.blacklist=yes radeonhd.blacklist=yes nouveau.blacklist=yes vmwgfx.enable_fbdev=1";
                                        elif regexp 'menuentry "GParted' "$cfgtext"; then set params="union=overlay username=user config noswap  ip= net.ifnames=0  nosplash";
                                        else set params="splash"; fi
                                        menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" "$params" --hotkey="${k}"  --class ArrowR {
                                                                                    echo (正在后台加载文件,请等待。。)
                                                loopback isoloop "$2"
                                                for vmlinuz in (isoloop)/live/vmlinu*; do
                                                        linux        $vmlinuz   boot=live locale=zh_CN locales=zh_CN.UTF-8 findiso=${3} components quiet ${4}
                                                        unset vmlinuz
                                                        break
                                                done
                                                for initrd in (isoloop)/live/initr*; do
                                                        initrd        $initrd
                                                        unset initrd
                                                        break
                                                done
                                        }
                                        set loopok=1
                                fi
                        elif regexp 'rd.live.image' "$cfgtext"; then
                                if test -d (isoloop)/LiveOS; then
                                        set isodev="UUID"
                                        if test -f (isoloop)/images/pxeboot/vmlinu* -a -f (isoloop)/images/pxeboot/initr*; then set bootpath="/images/pxeboot";
                                        elif test -f (isoloop)/isolinux/vmlinu* -a -f (isoloop)/isolinux/initr*; then set bootpath="/isolinux";
                                        elif test -f (isoloop)/boot/*/loader/linu* -a -f (isoloop)/boot/*/loader/initr*; then
                                                for bootpath in /boot/*/loader; do
                                                        if test -d (isoloop)$bootpath; then set isodev="CDLABEL"; break; fi
                                                done
                                        fi
                                fi
                                if [ -n "$bootpath" ]; then
                                        menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" "$bootpath" "$isodev" --hotkey="${k}"  --class ArrowR {
                                                                                    echo (正在后台加载文件,请等待。。)
                                                loopback isoloop "$2"
                                                if [ "$5" == "UUID" ]; then probe -u -s isouuid isoloop; else probe -l -s isouuid isoloop; fi
                                                for vmlinuz in (isoloop)${4}/vmlinu* (isoloop)${4}/linu*; do
                                                        if ! test -e $vmlinuz; then continue; fi
                                                        linux        $vmlinuz   root=live:${5}=${isouuid} rd.live.image quiet iso-scan/filename=${3}
                                                        unset vmlinuz
                                                        unset isouuid
                                                        break
                                                done
                                                for initrd in (isoloop)${4}/initr*; do
                                                        if ! test -e $initrd; then continue; fi
                                                        initrd        $initrd
                                                        unset initrd
                                                        break
                                                done
                                        }
                                        unset isodev
                                        unset bootpath
                                        set loopok=1
                                fi
                        elif regexp 'inst.stage2=hd:' "$cfgtext"; then
                                if test -f (isoloop)/images/pxeboot/vmlinu* -a -f (isoloop)/images/pxeboot/initr* -a -d (isoloop)/LiveOS; then
                                        menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" --hotkey="${k}"  --class ArrowR {
                                            echo (正在后台加载文件,请等待。。)
                                                loopback isoloop "$2"
                                                probe -u -s isouuid isoloop
                                                for vmlinuz in (isoloop)/images/pxeboot/vmlinu*; do
                                                        linux        $vmlinuz   inst.stage2=hd:UUID=${isouuid} rd.live.image quiet iso-scan/filename=${3}
                                                        unset vmlinuz
                                                        unset isouuid
                                                        break
                                                done
                                                for initrd in (isoloop)/images/pxeboot/initr*; do
                                                        initrd        $initrd
                                                        unset initrd
                                                        break
                                                done
                                        }
                                        set loopok=1
                                fi
                        elif regexp "initrd=/boot/initrd.gz root=/dev/ram0 vga=normal" "$cfgtext"; then
                                if test -f (isoloop)/boot/initrd.gz -a -f (isoloop)/boot/bzImage; then
                                        menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" --hotkey="${k}"  --class ArrowR {
                                                                                    echo (正在后台加载文件,请等待。。)
                                                loopback isoloop "$2"
                                                linux        (isoloop)/boot/bzImage root=/dev/ram0 vga=normal
                                                initrd        (isoloop)/boot/initrd.gz
                                        }
                                        set loopok=1
                                fi
                        elif regexp "tinycore.gz" "$cfgtext"; then
                                menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$cfg" --hotkey="${k}"  --class ArrowR {
                                                                            echo (正在后台加载文件,请等待。。)
                                        loopback isoloop "$2"
                                        set root=isoloop
                                        if regexp 'isolinux.cfg' "$3"; then syslinux_configfile $3; else configfile $3; fi
                                }
                                set loopok=1
                        fi
                        unset cfgtext
                        if [ -n "$loopok" ]; then loopback -d isoloop; unset loopok; return 0; fi
                done
                if test -f (isoloop)/casper/filesystem.squashfs -a -f (isoloop)/casper/vmlinu* -a -f (isoloop)/casper/initr*; then
                        menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" --hotkey="${k}"  --class ArrowR {
                                                                    echo (正在后台加载文件,请等待。。)
                                loopback isoloop "$2"
                                for preseed in (isoloop)/preseed/*; do
                                        regexp -s preseed '\(isoloop\)(.*)' "$preseed"
                                        preseed="file=/cdrom/${preseed}"
                                        break
                                done
                                for vmlinuz in (isoloop)/casper/vmlinu*; do
                                        linux        $vmlinuz   ${preseed} boot=casper iso-scan/filename=${3} quiet splash ---
                                        unset vmlinuz
                                        break
                                done
                                for initrd in (isoloop)/casper/initr*; do
                                        initrd        $initrd
                                        unset initrd
                                        break
                                done
                        }
                        set loopok=1
                elif test -f (isoloop)/live/filesystem.squashfs -a -f (isoloop)/live/vmlinu* -a -f (isoloop)/live/initr*; then
                        menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" --hotkey="${k}"  --class ArrowR {
                                                                    echo (正在后台加载文件,请等待。。)
                                loopback isoloop "$2"
                                for vmlinuz in (isoloop)/live/vmlinu*; do
                                        linux        $vmlinuz   boot=live findiso=${3} components quiet splash
                                        unset vmlinuz
                                        break
                                done
                                for initrd in (isoloop)/live/initr*; do
                                        initrd        $initrd
                                        unset initrd
                                        break
                                done
                        }
                        set loopok=1
                elif test -f (isoloop)/arch/boot/intel_ucode.img -a -f (isoloop)/arch/boot/*/archiso.img -a -f (isoloop)/arch/boot/*/vmlinuz; then
                        menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" "$devstr" --hotkey="${k}"  --class ArrowR {
                                                                    echo (正在后台加载文件,请等待。。)
                                loopback isoloop "$2"
                                probe -u -s devuuid $4
                                for vmlinuz in (isoloop)/arch/boot/*/vmlinuz; do
                                        linux        $vmlinuz img_loop=${3} img_dev=/dev/disk/by-uuid/$devuuid earlymodules=loop
                                        unset vmlinuz
                                        unset devuuid
                                        break
                                done
                                for initrd in (isoloop)/arch/boot/*/archiso.img; do
                                        initrd        (isoloop)/arch/boot/intel_ucode.img $initrd
                                        unset initrd
                                        break
                                done
                        }
                        set loopok=1
                elif test -f (isoloop)/antiX/vmlinu* -a -f (isoloop)/antiX/initr*; then
                        menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" --hotkey="${k}"  --class ArrowR {
                                                                    echo (正在后台加载文件,请等待。。)
                                loopback isoloop "$2"
                                for vmlinuz in (isoloop)/antiX/vmlinu*; do
                                        linux        $vmlinuz quiet fromiso=${3} from=usb,cd,hd
                                        unset vmlinuz
                                        break
                                done
                                for initrd in (isoloop)/antiX/initr*; do
                                        initrd        $initrd
                                        unset initrd
                                        break
                                done
                        }
                        set loopok=1
                elif test -e (isoloop)/rescue/livecd.squashfs -a -e (isoloop)/boot/kernel.x86_64-efi -a -e (isoloop)/boot/initfs.x86_64-efi        \
                -a -e (isoloop)/boot/kernel.i386-pc -a -e (isoloop)/boot/initfs.i386-pc; then
                        menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" --hotkey="${k}"  --class ArrowR {
                                                                    echo (正在后台加载文件,请等待。。)
                                loopback isoloop "$2"
                                if cpuid -l; then set arch="x86_64-efi"; else set arch="i386-pc"; fi
                                linux        (isoloop)/boot/kernel.${arch} root=/dev/ram0 real_root=/dev/loop0 loop=/rescue/livecd.squashfs cdroot_marker=/rescue/livecd.squashfs initrd udev cdroot scandelay=10 quiet splash isoboot=${3} lang=en
                                initrd        (isoloop)/boot/initfs.${arch}
                        }
                        set loopok=1
                elif test -e (isoloop)/pmagic/m64.img -a -e (isoloop)/pmagic/m32.img -a -e (isoloop)/pmagic/bzImage64 -a -e (isoloop)/pmagic/bzImage        \
                -a -e (isoloop)/pmagic/fu.img -a -e (isoloop)/pmagic/initrd.img; then
                        menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" --hotkey="${k}"  --class ArrowR {
                                                                    echo (正在后台加载文件,请等待。。)
                                loopback isoloop "$2"
                                if cpuid -l; then set bz="bzImage64"; set m="m64.img"; else set bz="bzImage"; set m="m32.img"; fi
                                linux        (isoloop)/pmagic/${bz} edd=on vga=normal iso_filename=${3}
                                initrd        (isoloop)/pmagic/initrd.img (isoloop)/pmagic/fu.img (isoloop)/pmagic/${m}
                        }
                        set loopok=1
                elif test -e (isoloop)/image.squashfs -a -e (isoloop)/livecd -a -e (isoloop)/isolinux/gentoo -a -e (isoloop)/isolinux/gentoo.igz; then
                        menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" --hotkey="${k}"  --class ArrowR {
                                                                    echo (正在后台加载文件,请等待。。)
                                loopback isoloop "$2"
                                linux        (isoloop)/isolinux/gentoo root=/dev/ram0 init=/linuxrc dokeymap looptype=squashfs loop=/image.squashfs cdroot vga=791 isoboot=${3}
                                initrd        (isoloop)/isolinux/gentoo.igz
                        }
                        set loopok=1
                elif test -e (isoloop)/image.squashfs -a -e (isoloop)/livecd -a -e (isoloop)/isolinux/gentoo -a -e (isoloop)/isolinux/gentoo.xz; then
                        menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" --hotkey="${k}"  --class ArrowR {
                                                                    echo (正在后台加载文件,请等待。。)
                                loopback isoloop "$2"
                                linux        (isoloop)/isolinux/gentoo root=/dev/ram0 init=/linuxrc dokeymap aufs looptype=squashfs loop=/image.squashfs cdroot console=tty1 isoboot=${3}
                                initrd        (isoloop)/isolinux/gentoo.xz
                        }
                        set loopok=1
                elif test -e (isoloop)/slax/boot/vmlinuz -a -e (isoloop)/slax/boot/initrfs.img; then
                        menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" --hotkey="${k}"  --class ArrowR {
                                                                    echo (正在后台加载文件,请等待。。)
                                loopback isoloop "$2"
                                linux        (isoloop)/slax/boot/vmlinuz vga=normal load_ramdisk=1 prompt_ramdisk=0 rw printk.time=0 slax.flags=automount from=$3
                                initrd        (isoloop)/slax/boot/initrfs.img
                        }
                        set loopok=1
                elif test -e (isoloop)/liveslak -a -e (isoloop)/boot/generic -a -e (isoloop)/boot/initrd.img; then
                        menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" "$devstr" --hotkey="${k}"  --class ArrowR {
                                                                    echo (正在后台加载文件,请等待。。)
                                loopback isoloop "$2"
                                probe -u -s deviceuuid $4
                                linux        (isoloop)/boot/generic load_ramdisk=1 prompt_ramdisk=0 rw printk.time=0 kbd=us tz=localtime locale=us_EN.utf8 livemedia=/dev/disk/by-uuid/${deviceuuid}:$3
                                initrd        (isoloop)/boot/initrd.img
                        }
                        set loopok=1
                elif test -e (isoloop)/wifislax64 -a -e (isoloop)/boot/vmlinuz -a -e (isoloop)/boot/initrd.xz; then
                        menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" "$devstr" --hotkey="${k}"  --class ArrowR {
                                                                    echo (正在后台加载文件,请等待。。)
                                loopback isoloop "$2"
                                probe -u -s deviceuuid $4
                                linux        (isoloop)/boot/vmlinuz kbd=us tz=US/Pacific locale=en_US.utf8 xkb= rw livemedia=/dev/disk/by-uuid/${deviceuuid}:$3
                                initrd        (isoloop)/boot/initrd.xz
                        }
                        set loopok=1
                elif test -e (isoloop)/wifislax -a -e (isoloop)/boot/vmlinuz -a -e (isoloop)/boot/initrd.xz; then
                        menuentry "[${k}] ${2} (Wifislax With KDE Desktop)" "$grub_file" "$path" --hotkey="${k}"  --class ArrowR {
                                                                    echo (正在后台加载文件,请等待。。)
                                loopback isoloop "$2"
                                linux        (isoloop)/boot/vmlinuz noload=000-SMP\;006-Xfce load=English from=${3}
                                initrd        (isoloop)/boot/initrd.xz
                        }
                        GetHotkey
                        menuentry "[${k}] ${2} (Wifislax With Xfce Desktop)" "$grub_file" "$path" --hotkey="${k}"  --class ArrowR {
                                                                    echo (正在后台加载文件,请等待。。)
                                loopback isoloop "$2"
                                linux        (isoloop)/boot/vmlinuz noload=000-SMP\;005-Kde load=English from=${3}
                                initrd        (isoloop)/boot/initrd.xz
                        }
                        set loopok=1
                elif test -e (isoloop)/suse -a -e (isoloop)/boot/*/loader/initrd -a -e (isoloop)/boot/*/loader/linux; then
                        for vmlinuz in (isoloop)/boot/*/loader/linux; do
                                if ! test -e $vmlinuz; then continue; fi
                                break
                        done
                        for initrd in (isoloop)/boot/*/loader/initrd; do
                                if ! test -e $initrd; then continue; fi
                                break
                        done
                        submenu "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" "$vmlinuz" "$initrd" --hotkey="${k}"  --class ArrowR {
                                menuentry "[1] Installation" "$2" "$3" "$4" "$5" --hotkey=1 {
                                                                            echo (正在后台加载文件,请等待。。)
                                        loopback isoloop "$2"
                                        linux        ${4} splash=silent install=hd:${3}
                                        initrd        ${5}
                                }
                                menuentry "[2] Upgrade" "$grub_file" "$path" "$4" "$5" --hotkey=2 {
                                                                            echo (正在后台加载文件,请等待。。)
                                        loopback isoloop "$2"
                                        linux        ${4} splash=silent upgrade=1 install=hd:${3}
                                        initrd        ${5}
                                }
                        }
                        unset vmlinuz
                        unset initrd
                        set loopok=1
                fi
                if [ -n "$loopok" ]; then loopback -d isoloop; unset loopok; return 0; fi
                loopback -d isoloop

}
回复

使用道具 举报

29#
发表于 2019-8-4 14:12:25 | 只看该作者
lhb9900 发表于 2019-8-4 14:10
menuentry "[L]用Linux方式启动ISO" --hotkey="L" --class iso{
        echo (正在查找ISO内的Linux启动文件, ...

这是较完整LINUX启动脚本,看看就头疼,一直在寻找LINUX整体ISO的方法

点评

這是否grub2的grub.cfg啟動腳本?  详情 回复 发表于 2019-8-4 14:23
回复

使用道具 举报

28#
发表于 2019-8-4 14:10:22 | 只看该作者
hkkitlee 发表于 2019-8-4 14:05
看來有點誤解了

1啟動方法跟互聯網/內網的「速度」是沒有直接關係的。

menuentry "[L]用Linux方式启动ISO" --hotkey="L" --class iso{
        echo (正在查找ISO内的Linux启动文件,请等待。。即将菜单末尾列出启动文件)
       
  set k="1"
  GetHotkey
        regexp -s 1:devstr -s 2:path '\((.*)\)(.*)' "$grub_file"
       
                for cfg in /boot/grub/loopback.cfg /efi/boot/loopback.cfg /EFI/BOOT/loopback.cfg; do
                        if ! test -e (isoloop)$cfg; then continue; fi
                        cat -s cfgtext (isoloop)$cfg
                        if regexp '/grub/grub.cfg' "$cfgtext"; then
                                if ! test -e (isoloop)/grub/grub.cfg; then continue; fi
                        fi
                        if regexp '/casper/initrd.lz' "$cfgtext"; then
                                if ! test -e (isoloop)/casper/initrd.lz; then continue; fi
                        fi
                        menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" "$devstr" "$cfg" --hotkey="${k}"  --class ArrowR {
                                                                    echo (正在后台加载文件,请等待。。)
                                probe -u -s rootuuid $4
                                export rootuuid
                                set iso_path="$3"
                                export iso_path
                                loopback isoloop "$2"
                                set root=isoloop
                                configfile $5
                                loopback -d isoloop
                        }
                        unset cfgtext
                        loopback -d isoloop
                        return 0
                done
               
                for cfg in /boot/grub/grub.cfg /EFI/BOOT/grub.cfg /EFI/boot/grub.cfg /boot/grub2/grub.cfg        \
                                        /efi/boot/grub.cfg /isolinux/live.cfg /boot/isolinux/isolinux.cfg /slax/boot/syslinux.cfg /isolinux/txt.cfg; do
                        if ! test -e (isoloop)$cfg; then continue; fi
                        cat -s cfgtext (isoloop)$cfg
                        if regexp 'iso_path' "$cfgtext"; then
                                menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" "$devstr" "$cfg" --hotkey="${k}"  --class ArrowR {
                                                                            echo (正在后台加载文件,请等待。。)
                                        probe -u -s rootuuid $4
                                        export rootuuid
                                        set iso_path="$3"
                                        export iso_path
                                        loopback isoloop "$2"
                                        set root=isoloop
                                        configfile $5
                                        loopback -d isoloop
                                }
                                set loopok=1
                        elif regexp 'boot=casper' "$cfgtext"; then
                                if test -f (isoloop)/casper/filesystem.squashfs -a -f (isoloop)/casper/vmlinu* -a -f (isoloop)/casper/initr*; then
                                        menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" --hotkey="${k}"  --class ArrowR {
                                                                                    echo (正在后台加载文件,请等待。。)
                                                loopback isoloop "$2"
                                                for preseed in (isoloop)/preseed/*; do
                                                        regexp -s preseed '\(isoloop\)(.*)' "$preseed"
                                                        preseed="file=/cdrom/${preseed}"
                                                        break
                                                done
                                                for vmlinuz in (isoloop)/casper/vmlinu*; do
                                                        linux        $vmlinuz   ${preseed} boot=casper locale=zh_CN locales=zh_CN.UTF-8 iso-scan/filename=${3} quiet splash ---
                                                        unset vmlinuz
                                                        break
                                                done
                                                for initrd in (isoloop)/casper/initr*; do
                                                        initrd        $initrd
                                                        unset initrd
                                                        break
                                                done
                                        }
                                        set loopok=1
                                fi
                        elif regexp 'boot=live' "$cfgtext"; then
                                if test -f (isoloop)/live/filesystem.squashfs -a -f (isoloop)/live/vmlinu* -a -f (isoloop)/live/initr*; then
                                        if regexp 'menuentry "Clonezilla' "$cfgtext"; then set params="union=overlay username=user config noswap edd=on nomodeset locales= keyboard-layouts= ocs_live_run="ocs-live-general" ocs_live_extra_param="" ocs_live_batch="no" vga=788 ip= net.ifnames=0  nosplash i915.blacklist=yes radeonhd.blacklist=yes nouveau.blacklist=yes vmwgfx.enable_fbdev=1";
                                        elif regexp 'menuentry "GParted' "$cfgtext"; then set params="union=overlay username=user config noswap  ip= net.ifnames=0  nosplash";
                                        else set params="splash"; fi
                                        menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" "$params" --hotkey="${k}"  --class ArrowR {
                                                                                    echo (正在后台加载文件,请等待。。)
                                                loopback isoloop "$2"
                                                for vmlinuz in (isoloop)/live/vmlinu*; do
                                                        linux        $vmlinuz   boot=live locale=zh_CN locales=zh_CN.UTF-8 findiso=${3} components quiet ${4}
                                                        unset vmlinuz
                                                        break
                                                done
                                                for initrd in (isoloop)/live/initr*; do
                                                        initrd        $initrd
                                                        unset initrd
                                                        break
                                                done
                                        }
                                        set loopok=1
                                fi
                        elif regexp 'rd.live.image' "$cfgtext"; then
                                if test -d (isoloop)/LiveOS; then
                                        set isodev="UUID"
                                        if test -f (isoloop)/images/pxeboot/vmlinu* -a -f (isoloop)/images/pxeboot/initr*; then set bootpath="/images/pxeboot";
                                        elif test -f (isoloop)/isolinux/vmlinu* -a -f (isoloop)/isolinux/initr*; then set bootpath="/isolinux";
                                        elif test -f (isoloop)/boot/*/loader/linu* -a -f (isoloop)/boot/*/loader/initr*; then
                                                for bootpath in /boot/*/loader; do
                                                        if test -d (isoloop)$bootpath; then set isodev="CDLABEL"; break; fi
                                                done
                                        fi
                                fi
                                if [ -n "$bootpath" ]; then
                                        menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" "$bootpath" "$isodev" --hotkey="${k}"  --class ArrowR {
                                                                                    echo (正在后台加载文件,请等待。。)
                                                loopback isoloop "$2"
                                                if [ "$5" == "UUID" ]; then probe -u -s isouuid isoloop; else probe -l -s isouuid isoloop; fi
                                                for vmlinuz in (isoloop)${4}/vmlinu* (isoloop)${4}/linu*; do
                                                        if ! test -e $vmlinuz; then continue; fi
                                                        linux        $vmlinuz   root=live:${5}=${isouuid} rd.live.image quiet iso-scan/filename=${3}
                                                        unset vmlinuz
                                                        unset isouuid
                                                        break
                                                done
                                                for initrd in (isoloop)${4}/initr*; do
                                                        if ! test -e $initrd; then continue; fi
                                                        initrd        $initrd
                                                        unset initrd
                                                        break
                                                done
                                        }
                                        unset isodev
                                        unset bootpath
                                        set loopok=1
                                fi
                        elif regexp 'inst.stage2=hd:' "$cfgtext"; then
                                if test -f (isoloop)/images/pxeboot/vmlinu* -a -f (isoloop)/images/pxeboot/initr* -a -d (isoloop)/LiveOS; then
                                        menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" --hotkey="${k}"  --class ArrowR {
                                            echo (正在后台加载文件,请等待。。)
                                                loopback isoloop "$2"
                                                probe -u -s isouuid isoloop
                                                for vmlinuz in (isoloop)/images/pxeboot/vmlinu*; do
                                                        linux        $vmlinuz   inst.stage2=hd:UUID=${isouuid} rd.live.image quiet iso-scan/filename=${3}
                                                        unset vmlinuz
                                                        unset isouuid
                                                        break
                                                done
                                                for initrd in (isoloop)/images/pxeboot/initr*; do
                                                        initrd        $initrd
                                                        unset initrd
                                                        break
                                                done
                                        }
                                        set loopok=1
                                fi
                        elif regexp "initrd=/boot/initrd.gz root=/dev/ram0 vga=normal" "$cfgtext"; then
                                if test -f (isoloop)/boot/initrd.gz -a -f (isoloop)/boot/bzImage; then
                                        menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" --hotkey="${k}"  --class ArrowR {
                                                                                    echo (正在后台加载文件,请等待。。)
                                                loopback isoloop "$2"
                                                linux        (isoloop)/boot/bzImage root=/dev/ram0 vga=normal
                                                initrd        (isoloop)/boot/initrd.gz
                                        }
                                        set loopok=1
                                fi
                        elif regexp "tinycore.gz" "$cfgtext"; then
                                menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$cfg" --hotkey="${k}"  --class ArrowR {
                                                                            echo (正在后台加载文件,请等待。。)
                                        loopback isoloop "$2"
                                        set root=isoloop
                                        if regexp 'isolinux.cfg' "$3"; then syslinux_configfile $3; else configfile $3; fi
                                }
                                set loopok=1
                        fi
                        unset cfgtext
                        if [ -n "$loopok" ]; then loopback -d isoloop; unset loopok; return 0; fi
                done
                if test -f (isoloop)/casper/filesystem.squashfs -a -f (isoloop)/casper/vmlinu* -a -f (isoloop)/casper/initr*; then
                        menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" --hotkey="${k}"  --class ArrowR {
                                                                    echo (正在后台加载文件,请等待。。)
                                loopback isoloop "$2"
                                for preseed in (isoloop)/preseed/*; do
                                        regexp -s preseed '\(isoloop\)(.*)' "$preseed"
                                        preseed="file=/cdrom/${preseed}"
                                        break
                                done
                                for vmlinuz in (isoloop)/casper/vmlinu*; do
                                        linux        $vmlinuz   ${preseed} boot=casper iso-scan/filename=${3} quiet splash ---
                                        unset vmlinuz
                                        break
                                done
                                for initrd in (isoloop)/casper/initr*; do
                                        initrd        $initrd
                                        unset initrd
                                        break
                                done
                        }
                        set loopok=1
                elif test -f (isoloop)/live/filesystem.squashfs -a -f (isoloop)/live/vmlinu* -a -f (isoloop)/live/initr*; then
                        menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" --hotkey="${k}"  --class ArrowR {
                                                                    echo (正在后台加载文件,请等待。。)
                                loopback isoloop "$2"
                                for vmlinuz in (isoloop)/live/vmlinu*; do
                                        linux        $vmlinuz   boot=live findiso=${3} components quiet splash
                                        unset vmlinuz
                                        break
                                done
                                for initrd in (isoloop)/live/initr*; do
                                        initrd        $initrd
                                        unset initrd
                                        break
                                done
                        }
                        set loopok=1
                elif test -f (isoloop)/arch/boot/intel_ucode.img -a -f (isoloop)/arch/boot/*/archiso.img -a -f (isoloop)/arch/boot/*/vmlinuz; then
                        menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" "$devstr" --hotkey="${k}"  --class ArrowR {
                                                                    echo (正在后台加载文件,请等待。。)
                                loopback isoloop "$2"
                                probe -u -s devuuid $4
                                for vmlinuz in (isoloop)/arch/boot/*/vmlinuz; do
                                        linux        $vmlinuz img_loop=${3} img_dev=/dev/disk/by-uuid/$devuuid earlymodules=loop
                                        unset vmlinuz
                                        unset devuuid
                                        break
                                done
                                for initrd in (isoloop)/arch/boot/*/archiso.img; do
                                        initrd        (isoloop)/arch/boot/intel_ucode.img $initrd
                                        unset initrd
                                        break
                                done
                        }
                        set loopok=1
                elif test -f (isoloop)/antiX/vmlinu* -a -f (isoloop)/antiX/initr*; then
                        menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" --hotkey="${k}"  --class ArrowR {
                                                                    echo (正在后台加载文件,请等待。。)
                                loopback isoloop "$2"
                                for vmlinuz in (isoloop)/antiX/vmlinu*; do
                                        linux        $vmlinuz quiet fromiso=${3} from=usb,cd,hd
                                        unset vmlinuz
                                        break
                                done
                                for initrd in (isoloop)/antiX/initr*; do
                                        initrd        $initrd
                                        unset initrd
                                        break
                                done
                        }
                        set loopok=1
                elif test -e (isoloop)/rescue/livecd.squashfs -a -e (isoloop)/boot/kernel.x86_64-efi -a -e (isoloop)/boot/initfs.x86_64-efi        \
                -a -e (isoloop)/boot/kernel.i386-pc -a -e (isoloop)/boot/initfs.i386-pc; then
                        menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" --hotkey="${k}"  --class ArrowR {
                                                                    echo (正在后台加载文件,请等待。。)
                                loopback isoloop "$2"
                                if cpuid -l; then set arch="x86_64-efi"; else set arch="i386-pc"; fi
                                linux        (isoloop)/boot/kernel.${arch} root=/dev/ram0 real_root=/dev/loop0 loop=/rescue/livecd.squashfs cdroot_marker=/rescue/livecd.squashfs initrd udev cdroot scandelay=10 quiet splash isoboot=${3} lang=en
                                initrd        (isoloop)/boot/initfs.${arch}
                        }
                        set loopok=1
                elif test -e (isoloop)/pmagic/m64.img -a -e (isoloop)/pmagic/m32.img -a -e (isoloop)/pmagic/bzImage64 -a -e (isoloop)/pmagic/bzImage        \
                -a -e (isoloop)/pmagic/fu.img -a -e (isoloop)/pmagic/initrd.img; then
                        menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" --hotkey="${k}"  --class ArrowR {
                                                                    echo (正在后台加载文件,请等待。。)
                                loopback isoloop "$2"
                                if cpuid -l; then set bz="bzImage64"; set m="m64.img"; else set bz="bzImage"; set m="m32.img"; fi
                                linux        (isoloop)/pmagic/${bz} edd=on vga=normal iso_filename=${3}
                                initrd        (isoloop)/pmagic/initrd.img (isoloop)/pmagic/fu.img (isoloop)/pmagic/${m}
                        }
                        set loopok=1
                elif test -e (isoloop)/image.squashfs -a -e (isoloop)/livecd -a -e (isoloop)/isolinux/gentoo -a -e (isoloop)/isolinux/gentoo.igz; then
                        menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" --hotkey="${k}"  --class ArrowR {
                                                                    echo (正在后台加载文件,请等待。。)
                                loopback isoloop "$2"
                                linux        (isoloop)/isolinux/gentoo root=/dev/ram0 init=/linuxrc dokeymap looptype=squashfs loop=/image.squashfs cdroot vga=791 isoboot=${3}
                                initrd        (isoloop)/isolinux/gentoo.igz
                        }
                        set loopok=1
                elif test -e (isoloop)/image.squashfs -a -e (isoloop)/livecd -a -e (isoloop)/isolinux/gentoo -a -e (isoloop)/isolinux/gentoo.xz; then
                        menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" --hotkey="${k}"  --class ArrowR {
                                                                    echo (正在后台加载文件,请等待。。)
                                loopback isoloop "$2"
                                linux        (isoloop)/isolinux/gentoo root=/dev/ram0 init=/linuxrc dokeymap aufs looptype=squashfs loop=/image.squashfs cdroot console=tty1 isoboot=${3}
                                initrd        (isoloop)/isolinux/gentoo.xz
                        }
                        set loopok=1
                elif test -e (isoloop)/slax/boot/vmlinuz -a -e (isoloop)/slax/boot/initrfs.img; then
                        menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" --hotkey="${k}"  --class ArrowR {
                                                                    echo (正在后台加载文件,请等待。。)
                                loopback isoloop "$2"
                                linux        (isoloop)/slax/boot/vmlinuz vga=normal load_ramdisk=1 prompt_ramdisk=0 rw printk.time=0 slax.flags=automount from=$3
                                initrd        (isoloop)/slax/boot/initrfs.img
                        }
                        set loopok=1
                elif test -e (isoloop)/liveslak -a -e (isoloop)/boot/generic -a -e (isoloop)/boot/initrd.img; then
                        menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" "$devstr" --hotkey="${k}"  --class ArrowR {
                                                                    echo (正在后台加载文件,请等待。。)
                                loopback isoloop "$2"
                                probe -u -s deviceuuid $4
                                linux        (isoloop)/boot/generic load_ramdisk=1 prompt_ramdisk=0 rw printk.time=0 kbd=us tz=localtime locale=us_EN.utf8 livemedia=/dev/disk/by-uuid/${deviceuuid}:$3
                                initrd        (isoloop)/boot/initrd.img
                        }
                        set loopok=1
                elif test -e (isoloop)/wifislax64 -a -e (isoloop)/boot/vmlinuz -a -e (isoloop)/boot/initrd.xz; then
                        menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" "$devstr" --hotkey="${k}"  --class ArrowR {
                                                                    echo (正在后台加载文件,请等待。。)
                                loopback isoloop "$2"
                                probe -u -s deviceuuid $4
                                linux        (isoloop)/boot/vmlinuz kbd=us tz=US/Pacific locale=en_US.utf8 xkb= rw livemedia=/dev/disk/by-uuid/${deviceuuid}:$3
                                initrd        (isoloop)/boot/initrd.xz
                        }
                        set loopok=1
                elif test -e (isoloop)/wifislax -a -e (isoloop)/boot/vmlinuz -a -e (isoloop)/boot/initrd.xz; then
                        menuentry "[${k}] ${2} (Wifislax With KDE Desktop)" "$grub_file" "$path" --hotkey="${k}"  --class ArrowR {
                                                                    echo (正在后台加载文件,请等待。。)
                                loopback isoloop "$2"
                                linux        (isoloop)/boot/vmlinuz noload=000-SMP\;006-Xfce load=English from=${3}
                                initrd        (isoloop)/boot/initrd.xz
                        }
                        GetHotkey
                        menuentry "[${k}] ${2} (Wifislax With Xfce Desktop)" "$grub_file" "$path" --hotkey="${k}"  --class ArrowR {
                                                                    echo (正在后台加载文件,请等待。。)
                                loopback isoloop "$2"
                                linux        (isoloop)/boot/vmlinuz noload=000-SMP\;005-Kde load=English from=${3}
                                initrd        (isoloop)/boot/initrd.xz
                        }
                        set loopok=1
                elif test -e (isoloop)/suse -a -e (isoloop)/boot/*/loader/initrd -a -e (isoloop)/boot/*/loader/linux; then
                        for vmlinuz in (isoloop)/boot/*/loader/linux; do
                                if ! test -e $vmlinuz; then continue; fi
                                break
                        done
                        for initrd in (isoloop)/boot/*/loader/initrd; do
                                if ! test -e $initrd; then continue; fi
                                break
                        done
                        submenu "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" "$vmlinuz" "$initrd" --hotkey="${k}"  --class ArrowR {
                                menuentry "[1] Installation" "$2" "$3" "$4" "$5" --hotkey=1 {
                                                                            echo (正在后台加载文件,请等待。。)
                                        loopback isoloop "$2"
                                        linux        ${4} splash=silent install=hd:${3}
                                        initrd        ${5}
                                }
                                menuentry "[2] Upgrade" "$grub_file" "$path" "$4" "$5" --hotkey=2 {
                                                                            echo (正在后台加载文件,请等待。。)
                                        loopback isoloop "$2"
                                        linux        ${4} splash=silent upgrade=1 install=hd:${3}
                                        initrd        ${5}
                                }
                        }
                        unset vmlinuz
                        unset initrd
                        set loopok=1
                fi
                if [ -n "$loopok" ]; then loopback -d isoloop; unset loopok; return 0; fi
                loopback -d isoloop

}

点评

这是较完整LINUX启动脚本,看看就头疼,一直在寻找LINUX整体ISO的方法  详情 回复 发表于 2019-8-4 14:12
回复

使用道具 举报

27#
发表于 2019-8-4 14:10:16 | 只看该作者
hkkitlee 发表于 2019-8-4 14:05
看來有點誤解了

1啟動方法跟互聯網/內網的「速度」是沒有直接關係的。

menuentry "[L]用Linux方式启动ISO" --hotkey="L" --class iso{
        echo (正在查找ISO内的Linux启动文件,请等待。。即将菜单末尾列出启动文件)
       
  set k="1"
  GetHotkey
        regexp -s 1:devstr -s 2:path '\((.*)\)(.*)' "$grub_file"
       
                for cfg in /boot/grub/loopback.cfg /efi/boot/loopback.cfg /EFI/BOOT/loopback.cfg; do
                        if ! test -e (isoloop)$cfg; then continue; fi
                        cat -s cfgtext (isoloop)$cfg
                        if regexp '/grub/grub.cfg' "$cfgtext"; then
                                if ! test -e (isoloop)/grub/grub.cfg; then continue; fi
                        fi
                        if regexp '/casper/initrd.lz' "$cfgtext"; then
                                if ! test -e (isoloop)/casper/initrd.lz; then continue; fi
                        fi
                        menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" "$devstr" "$cfg" --hotkey="${k}"  --class ArrowR {
                                                                    echo (正在后台加载文件,请等待。。)
                                probe -u -s rootuuid $4
                                export rootuuid
                                set iso_path="$3"
                                export iso_path
                                loopback isoloop "$2"
                                set root=isoloop
                                configfile $5
                                loopback -d isoloop
                        }
                        unset cfgtext
                        loopback -d isoloop
                        return 0
                done
               
                for cfg in /boot/grub/grub.cfg /EFI/BOOT/grub.cfg /EFI/boot/grub.cfg /boot/grub2/grub.cfg        \
                                        /efi/boot/grub.cfg /isolinux/live.cfg /boot/isolinux/isolinux.cfg /slax/boot/syslinux.cfg /isolinux/txt.cfg; do
                        if ! test -e (isoloop)$cfg; then continue; fi
                        cat -s cfgtext (isoloop)$cfg
                        if regexp 'iso_path' "$cfgtext"; then
                                menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" "$devstr" "$cfg" --hotkey="${k}"  --class ArrowR {
                                                                            echo (正在后台加载文件,请等待。。)
                                        probe -u -s rootuuid $4
                                        export rootuuid
                                        set iso_path="$3"
                                        export iso_path
                                        loopback isoloop "$2"
                                        set root=isoloop
                                        configfile $5
                                        loopback -d isoloop
                                }
                                set loopok=1
                        elif regexp 'boot=casper' "$cfgtext"; then
                                if test -f (isoloop)/casper/filesystem.squashfs -a -f (isoloop)/casper/vmlinu* -a -f (isoloop)/casper/initr*; then
                                        menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" --hotkey="${k}"  --class ArrowR {
                                                                                    echo (正在后台加载文件,请等待。。)
                                                loopback isoloop "$2"
                                                for preseed in (isoloop)/preseed/*; do
                                                        regexp -s preseed '\(isoloop\)(.*)' "$preseed"
                                                        preseed="file=/cdrom/${preseed}"
                                                        break
                                                done
                                                for vmlinuz in (isoloop)/casper/vmlinu*; do
                                                        linux        $vmlinuz   ${preseed} boot=casper locale=zh_CN locales=zh_CN.UTF-8 iso-scan/filename=${3} quiet splash ---
                                                        unset vmlinuz
                                                        break
                                                done
                                                for initrd in (isoloop)/casper/initr*; do
                                                        initrd        $initrd
                                                        unset initrd
                                                        break
                                                done
                                        }
                                        set loopok=1
                                fi
                        elif regexp 'boot=live' "$cfgtext"; then
                                if test -f (isoloop)/live/filesystem.squashfs -a -f (isoloop)/live/vmlinu* -a -f (isoloop)/live/initr*; then
                                        if regexp 'menuentry "Clonezilla' "$cfgtext"; then set params="union=overlay username=user config noswap edd=on nomodeset locales= keyboard-layouts= ocs_live_run="ocs-live-general" ocs_live_extra_param="" ocs_live_batch="no" vga=788 ip= net.ifnames=0  nosplash i915.blacklist=yes radeonhd.blacklist=yes nouveau.blacklist=yes vmwgfx.enable_fbdev=1";
                                        elif regexp 'menuentry "GParted' "$cfgtext"; then set params="union=overlay username=user config noswap  ip= net.ifnames=0  nosplash";
                                        else set params="splash"; fi
                                        menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" "$params" --hotkey="${k}"  --class ArrowR {
                                                                                    echo (正在后台加载文件,请等待。。)
                                                loopback isoloop "$2"
                                                for vmlinuz in (isoloop)/live/vmlinu*; do
                                                        linux        $vmlinuz   boot=live locale=zh_CN locales=zh_CN.UTF-8 findiso=${3} components quiet ${4}
                                                        unset vmlinuz
                                                        break
                                                done
                                                for initrd in (isoloop)/live/initr*; do
                                                        initrd        $initrd
                                                        unset initrd
                                                        break
                                                done
                                        }
                                        set loopok=1
                                fi
                        elif regexp 'rd.live.image' "$cfgtext"; then
                                if test -d (isoloop)/LiveOS; then
                                        set isodev="UUID"
                                        if test -f (isoloop)/images/pxeboot/vmlinu* -a -f (isoloop)/images/pxeboot/initr*; then set bootpath="/images/pxeboot";
                                        elif test -f (isoloop)/isolinux/vmlinu* -a -f (isoloop)/isolinux/initr*; then set bootpath="/isolinux";
                                        elif test -f (isoloop)/boot/*/loader/linu* -a -f (isoloop)/boot/*/loader/initr*; then
                                                for bootpath in /boot/*/loader; do
                                                        if test -d (isoloop)$bootpath; then set isodev="CDLABEL"; break; fi
                                                done
                                        fi
                                fi
                                if [ -n "$bootpath" ]; then
                                        menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" "$bootpath" "$isodev" --hotkey="${k}"  --class ArrowR {
                                                                                    echo (正在后台加载文件,请等待。。)
                                                loopback isoloop "$2"
                                                if [ "$5" == "UUID" ]; then probe -u -s isouuid isoloop; else probe -l -s isouuid isoloop; fi
                                                for vmlinuz in (isoloop)${4}/vmlinu* (isoloop)${4}/linu*; do
                                                        if ! test -e $vmlinuz; then continue; fi
                                                        linux        $vmlinuz   root=live:${5}=${isouuid} rd.live.image quiet iso-scan/filename=${3}
                                                        unset vmlinuz
                                                        unset isouuid
                                                        break
                                                done
                                                for initrd in (isoloop)${4}/initr*; do
                                                        if ! test -e $initrd; then continue; fi
                                                        initrd        $initrd
                                                        unset initrd
                                                        break
                                                done
                                        }
                                        unset isodev
                                        unset bootpath
                                        set loopok=1
                                fi
                        elif regexp 'inst.stage2=hd:' "$cfgtext"; then
                                if test -f (isoloop)/images/pxeboot/vmlinu* -a -f (isoloop)/images/pxeboot/initr* -a -d (isoloop)/LiveOS; then
                                        menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" --hotkey="${k}"  --class ArrowR {
                                            echo (正在后台加载文件,请等待。。)
                                                loopback isoloop "$2"
                                                probe -u -s isouuid isoloop
                                                for vmlinuz in (isoloop)/images/pxeboot/vmlinu*; do
                                                        linux        $vmlinuz   inst.stage2=hd:UUID=${isouuid} rd.live.image quiet iso-scan/filename=${3}
                                                        unset vmlinuz
                                                        unset isouuid
                                                        break
                                                done
                                                for initrd in (isoloop)/images/pxeboot/initr*; do
                                                        initrd        $initrd
                                                        unset initrd
                                                        break
                                                done
                                        }
                                        set loopok=1
                                fi
                        elif regexp "initrd=/boot/initrd.gz root=/dev/ram0 vga=normal" "$cfgtext"; then
                                if test -f (isoloop)/boot/initrd.gz -a -f (isoloop)/boot/bzImage; then
                                        menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" --hotkey="${k}"  --class ArrowR {
                                                                                    echo (正在后台加载文件,请等待。。)
                                                loopback isoloop "$2"
                                                linux        (isoloop)/boot/bzImage root=/dev/ram0 vga=normal
                                                initrd        (isoloop)/boot/initrd.gz
                                        }
                                        set loopok=1
                                fi
                        elif regexp "tinycore.gz" "$cfgtext"; then
                                menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$cfg" --hotkey="${k}"  --class ArrowR {
                                                                            echo (正在后台加载文件,请等待。。)
                                        loopback isoloop "$2"
                                        set root=isoloop
                                        if regexp 'isolinux.cfg' "$3"; then syslinux_configfile $3; else configfile $3; fi
                                }
                                set loopok=1
                        fi
                        unset cfgtext
                        if [ -n "$loopok" ]; then loopback -d isoloop; unset loopok; return 0; fi
                done
                if test -f (isoloop)/casper/filesystem.squashfs -a -f (isoloop)/casper/vmlinu* -a -f (isoloop)/casper/initr*; then
                        menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" --hotkey="${k}"  --class ArrowR {
                                                                    echo (正在后台加载文件,请等待。。)
                                loopback isoloop "$2"
                                for preseed in (isoloop)/preseed/*; do
                                        regexp -s preseed '\(isoloop\)(.*)' "$preseed"
                                        preseed="file=/cdrom/${preseed}"
                                        break
                                done
                                for vmlinuz in (isoloop)/casper/vmlinu*; do
                                        linux        $vmlinuz   ${preseed} boot=casper iso-scan/filename=${3} quiet splash ---
                                        unset vmlinuz
                                        break
                                done
                                for initrd in (isoloop)/casper/initr*; do
                                        initrd        $initrd
                                        unset initrd
                                        break
                                done
                        }
                        set loopok=1
                elif test -f (isoloop)/live/filesystem.squashfs -a -f (isoloop)/live/vmlinu* -a -f (isoloop)/live/initr*; then
                        menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" --hotkey="${k}"  --class ArrowR {
                                                                    echo (正在后台加载文件,请等待。。)
                                loopback isoloop "$2"
                                for vmlinuz in (isoloop)/live/vmlinu*; do
                                        linux        $vmlinuz   boot=live findiso=${3} components quiet splash
                                        unset vmlinuz
                                        break
                                done
                                for initrd in (isoloop)/live/initr*; do
                                        initrd        $initrd
                                        unset initrd
                                        break
                                done
                        }
                        set loopok=1
                elif test -f (isoloop)/arch/boot/intel_ucode.img -a -f (isoloop)/arch/boot/*/archiso.img -a -f (isoloop)/arch/boot/*/vmlinuz; then
                        menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" "$devstr" --hotkey="${k}"  --class ArrowR {
                                                                    echo (正在后台加载文件,请等待。。)
                                loopback isoloop "$2"
                                probe -u -s devuuid $4
                                for vmlinuz in (isoloop)/arch/boot/*/vmlinuz; do
                                        linux        $vmlinuz img_loop=${3} img_dev=/dev/disk/by-uuid/$devuuid earlymodules=loop
                                        unset vmlinuz
                                        unset devuuid
                                        break
                                done
                                for initrd in (isoloop)/arch/boot/*/archiso.img; do
                                        initrd        (isoloop)/arch/boot/intel_ucode.img $initrd
                                        unset initrd
                                        break
                                done
                        }
                        set loopok=1
                elif test -f (isoloop)/antiX/vmlinu* -a -f (isoloop)/antiX/initr*; then
                        menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" --hotkey="${k}"  --class ArrowR {
                                                                    echo (正在后台加载文件,请等待。。)
                                loopback isoloop "$2"
                                for vmlinuz in (isoloop)/antiX/vmlinu*; do
                                        linux        $vmlinuz quiet fromiso=${3} from=usb,cd,hd
                                        unset vmlinuz
                                        break
                                done
                                for initrd in (isoloop)/antiX/initr*; do
                                        initrd        $initrd
                                        unset initrd
                                        break
                                done
                        }
                        set loopok=1
                elif test -e (isoloop)/rescue/livecd.squashfs -a -e (isoloop)/boot/kernel.x86_64-efi -a -e (isoloop)/boot/initfs.x86_64-efi        \
                -a -e (isoloop)/boot/kernel.i386-pc -a -e (isoloop)/boot/initfs.i386-pc; then
                        menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" --hotkey="${k}"  --class ArrowR {
                                                                    echo (正在后台加载文件,请等待。。)
                                loopback isoloop "$2"
                                if cpuid -l; then set arch="x86_64-efi"; else set arch="i386-pc"; fi
                                linux        (isoloop)/boot/kernel.${arch} root=/dev/ram0 real_root=/dev/loop0 loop=/rescue/livecd.squashfs cdroot_marker=/rescue/livecd.squashfs initrd udev cdroot scandelay=10 quiet splash isoboot=${3} lang=en
                                initrd        (isoloop)/boot/initfs.${arch}
                        }
                        set loopok=1
                elif test -e (isoloop)/pmagic/m64.img -a -e (isoloop)/pmagic/m32.img -a -e (isoloop)/pmagic/bzImage64 -a -e (isoloop)/pmagic/bzImage        \
                -a -e (isoloop)/pmagic/fu.img -a -e (isoloop)/pmagic/initrd.img; then
                        menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" --hotkey="${k}"  --class ArrowR {
                                                                    echo (正在后台加载文件,请等待。。)
                                loopback isoloop "$2"
                                if cpuid -l; then set bz="bzImage64"; set m="m64.img"; else set bz="bzImage"; set m="m32.img"; fi
                                linux        (isoloop)/pmagic/${bz} edd=on vga=normal iso_filename=${3}
                                initrd        (isoloop)/pmagic/initrd.img (isoloop)/pmagic/fu.img (isoloop)/pmagic/${m}
                        }
                        set loopok=1
                elif test -e (isoloop)/image.squashfs -a -e (isoloop)/livecd -a -e (isoloop)/isolinux/gentoo -a -e (isoloop)/isolinux/gentoo.igz; then
                        menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" --hotkey="${k}"  --class ArrowR {
                                                                    echo (正在后台加载文件,请等待。。)
                                loopback isoloop "$2"
                                linux        (isoloop)/isolinux/gentoo root=/dev/ram0 init=/linuxrc dokeymap looptype=squashfs loop=/image.squashfs cdroot vga=791 isoboot=${3}
                                initrd        (isoloop)/isolinux/gentoo.igz
                        }
                        set loopok=1
                elif test -e (isoloop)/image.squashfs -a -e (isoloop)/livecd -a -e (isoloop)/isolinux/gentoo -a -e (isoloop)/isolinux/gentoo.xz; then
                        menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" --hotkey="${k}"  --class ArrowR {
                                                                    echo (正在后台加载文件,请等待。。)
                                loopback isoloop "$2"
                                linux        (isoloop)/isolinux/gentoo root=/dev/ram0 init=/linuxrc dokeymap aufs looptype=squashfs loop=/image.squashfs cdroot console=tty1 isoboot=${3}
                                initrd        (isoloop)/isolinux/gentoo.xz
                        }
                        set loopok=1
                elif test -e (isoloop)/slax/boot/vmlinuz -a -e (isoloop)/slax/boot/initrfs.img; then
                        menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" --hotkey="${k}"  --class ArrowR {
                                                                    echo (正在后台加载文件,请等待。。)
                                loopback isoloop "$2"
                                linux        (isoloop)/slax/boot/vmlinuz vga=normal load_ramdisk=1 prompt_ramdisk=0 rw printk.time=0 slax.flags=automount from=$3
                                initrd        (isoloop)/slax/boot/initrfs.img
                        }
                        set loopok=1
                elif test -e (isoloop)/liveslak -a -e (isoloop)/boot/generic -a -e (isoloop)/boot/initrd.img; then
                        menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" "$devstr" --hotkey="${k}"  --class ArrowR {
                                                                    echo (正在后台加载文件,请等待。。)
                                loopback isoloop "$2"
                                probe -u -s deviceuuid $4
                                linux        (isoloop)/boot/generic load_ramdisk=1 prompt_ramdisk=0 rw printk.time=0 kbd=us tz=localtime locale=us_EN.utf8 livemedia=/dev/disk/by-uuid/${deviceuuid}:$3
                                initrd        (isoloop)/boot/initrd.img
                        }
                        set loopok=1
                elif test -e (isoloop)/wifislax64 -a -e (isoloop)/boot/vmlinuz -a -e (isoloop)/boot/initrd.xz; then
                        menuentry "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" "$devstr" --hotkey="${k}"  --class ArrowR {
                                                                    echo (正在后台加载文件,请等待。。)
                                loopback isoloop "$2"
                                probe -u -s deviceuuid $4
                                linux        (isoloop)/boot/vmlinuz kbd=us tz=US/Pacific locale=en_US.utf8 xkb= rw livemedia=/dev/disk/by-uuid/${deviceuuid}:$3
                                initrd        (isoloop)/boot/initrd.xz
                        }
                        set loopok=1
                elif test -e (isoloop)/wifislax -a -e (isoloop)/boot/vmlinuz -a -e (isoloop)/boot/initrd.xz; then
                        menuentry "[${k}] ${2} (Wifislax With KDE Desktop)" "$grub_file" "$path" --hotkey="${k}"  --class ArrowR {
                                                                    echo (正在后台加载文件,请等待。。)
                                loopback isoloop "$2"
                                linux        (isoloop)/boot/vmlinuz noload=000-SMP\;006-Xfce load=English from=${3}
                                initrd        (isoloop)/boot/initrd.xz
                        }
                        GetHotkey
                        menuentry "[${k}] ${2} (Wifislax With Xfce Desktop)" "$grub_file" "$path" --hotkey="${k}"  --class ArrowR {
                                                                    echo (正在后台加载文件,请等待。。)
                                loopback isoloop "$2"
                                linux        (isoloop)/boot/vmlinuz noload=000-SMP\;005-Kde load=English from=${3}
                                initrd        (isoloop)/boot/initrd.xz
                        }
                        set loopok=1
                elif test -e (isoloop)/suse -a -e (isoloop)/boot/*/loader/initrd -a -e (isoloop)/boot/*/loader/linux; then
                        for vmlinuz in (isoloop)/boot/*/loader/linux; do
                                if ! test -e $vmlinuz; then continue; fi
                                break
                        done
                        for initrd in (isoloop)/boot/*/loader/initrd; do
                                if ! test -e $initrd; then continue; fi
                                break
                        done
                        submenu "[${k}] ${2}立即启动$grub_file" "$grub_file" "$path" "$vmlinuz" "$initrd" --hotkey="${k}"  --class ArrowR {
                                menuentry "[1] Installation" "$2" "$3" "$4" "$5" --hotkey=1 {
                                                                            echo (正在后台加载文件,请等待。。)
                                        loopback isoloop "$2"
                                        linux        ${4} splash=silent install=hd:${3}
                                        initrd        ${5}
                                }
                                menuentry "[2] Upgrade" "$grub_file" "$path" "$4" "$5" --hotkey=2 {
                                                                            echo (正在后台加载文件,请等待。。)
                                        loopback isoloop "$2"
                                        linux        ${4} splash=silent upgrade=1 install=hd:${3}
                                        initrd        ${5}
                                }
                        }
                        unset vmlinuz
                        unset initrd
                        set loopok=1
                fi
                if [ -n "$loopok" ]; then loopback -d isoloop; unset loopok; return 0; fi
                loopback -d isoloop

}
回复

使用道具 举报

26#
 楼主| 发表于 2019-8-4 14:05:13 | 只看该作者
本帖最后由 hkkitlee 于 2019-8-4 14:10 编辑
lhb9900 发表于 2019-8-4 13:41
互联网安装慢呀,这样的方法并不通用于其它LINUX,不同的LINUX要用不同的脚本


看來有點誤解了

1啟動方法跟互聯網/內網的「速度」是沒有直接關係的。

2這個方法,我已經在不同的Linux(Centos/Debian/Fedora/Kali/Tinycore/Ubuntu)中
在uefi/bios中測試過,是可以啟動的。些小改變是需要的

3ipxe中整個光盤引導的命令:sanboot,詳細請參閱官網

isoboot.efi在ipxe上chainload啟動有沒有限制?應該需要檢查isoboot.efi和ipxe的文件。因為我未測試過,所以沒有定論。

点评

menuentry "[L]用Linux方式启动ISO" --hotkey="L" --class iso{ echo (正在查找ISO内的Linux启动文件,请等待。。即将菜单末尾列出启动文件) set k="1" GetHotkey regexp -s 1:devstr -s 2:path '\((.*  详情 回复 发表于 2019-8-4 14:15
menuentry "[L]用Linux方式启动ISO" --hotkey="L" --class iso{ echo (正在查找ISO内的Linux启动文件,请等待。。即将菜单末尾列出启动文件) set k="1" GetHotkey regexp -s 1:devstr -s 2:path '\((.*  详情 回复 发表于 2019-8-4 14:10
menuentry "[L]用Linux方式启动ISO" --hotkey="L" --class iso{ echo (正在查找ISO内的Linux启动文件,请等待。。即将菜单末尾列出启动文件) set k="1" GetHotkey regexp -s 1:devstr -s 2:path '\((.*  详情 回复 发表于 2019-8-4 14:10
回复

使用道具 举报

25#
发表于 2019-8-4 13:41:28 | 只看该作者
本帖最后由 lhb9900 于 2019-8-4 13:42 编辑
hkkitlee 发表于 2019-8-4 12:26
Linux 在ipxe啟動,應該是選取「核心」vmlinuz,「內存盤」initrd.gz。需要時才加入核心啟動參數或額外的檔 ...


互联网安装慢呀,这样的方法并不通用于其它LINUX,不同的LINUX要用不同的脚本

点评

看來有點誤解了 1啟動方法跟互聯網/內網的「速度」是沒有直接關係的。 2這個方法,我已經在不同的Linux(Centos/Debian/Fedora/Kali/Tinycore/Ubuntu)中 在uefi/bios中測試過,是可以啟動的。 3ipxe中整個  详情 回复 发表于 2019-8-4 14:05
回复

使用道具 举报

24#
 楼主| 发表于 2019-8-4 13:12:12 | 只看该作者
江南一根葱 发表于 2019-8-4 12:41
要是能用php脚本控制,类似 https://netboot.xyz/这个就好了。。

看source code不像哦

像是用變量導入所需參數
回复

使用道具 举报

23#
发表于 2019-8-4 12:41:18 | 只看该作者
要是能用php脚本控制,类似 https://netboot.xyz/这个就好了。。

点评

看source code不像哦 像是用變量導入所需參數  详情 回复 发表于 2019-8-4 13:12
回复

使用道具 举报

22#
发表于 2019-8-4 12:29:04 | 只看该作者
不是很明白这个用途,不如何能具体解决一些什么场景问题
回复

使用道具 举报

21#
 楼主| 发表于 2019-8-4 12:26:50 | 只看该作者
Linux 在ipxe啟動,應該是選取「核心」vmlinuz,「內存盤」initrd.gz。需要時才加入核心啟動參數或額外的檔案,如Live的filesystem.squashfs。

上面的檔名在各發行版有些微不同,但這幾個就是{關鍵字}。

取自ipxe.org的例子:
  #!ipxe
  
  set base http://mirror.centos.org/centos/7/os/x86_64
  
  prompt -k 0x197e -t 2000 Press F12 to install CentOS... || exit
  kernel ${base}/images/pxeboot/vmlinuz initrd=initrd.img repo=${base}
  initrd ${base}/images/pxeboot/initrd.img
  boot

点评

互联网安装慢呀,这样的方法并不通用于其它LINUX  详情 回复 发表于 2019-8-4 13:41
回复

使用道具 举报

20#
发表于 2019-8-4 10:53:24 | 只看该作者
本帖最后由 lhb9900 于 2019-8-4 11:04 编辑
hkkitlee 发表于 2019-8-4 10:47
${xieyi} 走的是什麼協議?
還有就是什麼啟動方式?


走的是http协议


isset ${ip} || dhcp  #查询IP,否则分配IP
isset ${next-server} || set next-server ${dhcp-server} || set next-server 192.168.7.100
console --picture http://${next-server}/Boot/grub/back.png && set boot-server http://${next-server} || set boot-server #测试http,并设置优先使用http,否则使用TFTP

goto EFIstartISO

:EFIstartISO
initrd         ${boot-server}/ISO/my.iso  #请教这个文件大于2G时不能启动,1G是可以启动的
chain          ${boot-server}/ISO/isoboot.efi || goto ${PXE_MENU}
回复

使用道具 举报

19#
 楼主| 发表于 2019-8-4 10:47:51 | 只看该作者
本帖最后由 hkkitlee 于 2019-8-4 10:52 编辑
lhb9900 发表于 2019-8-4 10:42
IPXE

initrd  ${xieyi}://${next-server}/test.iso   当test.iso超大时(深度Linux deepin.iso 2.26GB ...


${xieyi} 走的是什麼協議?
還有就是什麼啟動方式?

不如你完整的放上來看一下

点评

http console --picture http://${next-server}/Boot/grub/back.png && set boot-server http://${next-server} :EFIstartISO initrd ${boot-server}/ISO/my.iso #这个文件2.26G chain ${  详情 回复 发表于 2019-8-4 10:53
回复

使用道具 举报

18#
发表于 2019-8-4 10:42:29 | 只看该作者

IPXE

initrd  ${xieyi}://${next-server}/test.iso   当test.iso超大时(深度Linux deepin.iso 2.26GB)载入始终卡在0%

点评

${xieyi} 走的是什麼協議?  详情 回复 发表于 2019-8-4 10:47
回复

使用道具 举报

17#
 楼主| 发表于 2019-8-4 01:16:50 | 只看该作者
lhb9900 发表于 2019-8-4 01:06
楼主来自香港吗,总是用繁体字

回复

使用道具 举报

16#
 楼主| 发表于 2019-8-4 01:16:08 | 只看该作者
guzhentao 发表于 2019-8-4 00:28
已经写入U盘了,引导不了

可否詳細說明你怎麼啟動不了?

你有看讀一樓,二樓嗎?
有自己放置啟動檔嗎?

我測試了很久是可以的
回复

使用道具 举报

15#
发表于 2019-8-4 01:06:50 | 只看该作者
楼主来自香港吗,总是用繁体字

点评

是  详情 回复 发表于 2019-8-4 01:16
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-12-1 18:27

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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