陈晓猫

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: :: 管理 ::
Veket_Porteus_Puppy安装器by双心
下载地址:
https://liuzhaoyzz.lanzoui.com/b00nlwy1c
https://lanzoui.com/b00nlwy1c
基于CxDirX86方案的模板文件4.6MB(不含Veket/Porteus.ISO)
请以管理员身份运行!请以管理员身份运行!请以管理员身份运行!
一、背景
    Veket/Porteus/Puppy作为轻量版linux系统,解压缩然后添加引导就可以启动,linux启动参数较复杂,为了方便在windows下快速写引导、写菜单,我写了个批处理,快速地在BIOS及UEFI启动的情况下添加Veket/Porteus/Puppy到grub4dos/grub2x64.efi启动菜单,主要实现以下目的:
1、快速部署,支持快速安装Veket/Porteus/Puppy到本地硬盘、优盘、移动硬盘。
★快速地安装Veket/Porteus/Puppy到本地硬盘、普通优盘、固态优盘、移动硬盘的任何一个盘符,快速地在boot.ini或BCD中增加grub4dos的启动项。
★支持VHD、RAMOS启动的情况在原来的C盘添加grub4dos启动项,无论原来的C盘是否被分配了盘符,只要是活动分区的就可以。
★支持多硬盘的情况下修改主引导区的boot.ini或BCD。
★支持NT5.x下主引导是NTLDR单引导或者主引导是bootmgr转NTLDR的情况,BCD优先。
★无损写入硬盘或优盘、移动硬盘的方式(不改变硬盘或优盘分区结构,不损坏原有数据)。
2、全自动编写菜单。
★Veket/Porteus/Puppy解压缩后,能够全自动编写grub4dos/grub2启动菜单,从而减少书写错误的几率。
★菜单项采用了sed进行离线行编辑,自动根据选中的镜像自动插入菜单项,如果你原来有菜单,也不会删除你原来的,只会增加非重复的启动项。
★插入菜单项时,如果grub4dos菜单已存在则删除里面已有的启动项后重建菜单,删除菜单启动项搜索的关键字是title+ISO镜像名称,一直删除到该行后的4行。UEFI如果采用grub2方案启动,\boot\grub2\grub.cfg菜单已存在则删除里面已有的启动项后重建菜单,删除菜单启动项搜索的关键字是menuentry+Veket/Porteus/Puppy名称,一直删除到该行后的5行,一行可以用英文分号来顺序执行多条语句。
3、grub4dos的菜单文件menu.lst编码会自动转换为utf-8格式,以便支持中文字库加载。
4、在BIOS下可以制作UEFI启动盘,在UEFI下也可以制作BIOS启动盘,适用于多硬盘、优盘各种复杂模式启动,支持一键安装Veket/Porteus/Puppy到空白硬盘,没有引导的一键添加引导。
★需要说明的是,很多新主板UEFI启动不但支持从GPT硬盘启动,还支持从MBR硬盘启动,甚至不需要FAT32分区,可以从MBR硬盘的NTFS分区启动。所以UEFI启动列举出了所有的分区,包括ESP/FAT32/NTFS分区供用户依据自己的引导分区情况自己选择,如果选择了\EFI\Microsoft\Boot\BCD不存在的分区,会自动补充UEFI所需的bootx64.efi、BCD引导文件。
★批处理会自动关闭前端进程输入法,按ALT+SHIFT(有的是CTRL+SHIFT)可以打开输入法。
 
二、软硬件适用条件
    只支持BIOS/UEFI启动Veket/Porteus/Puppy.ISO解开启动,支持在XP WIN7 8 10环境下写引导。对于bootmgr作为第一启动的方案,系统自带的bcdedit命令要求能够正常运行不出错,因为需要这个自带的命令修改BCD的启动项,而且要以管理员身份运行。
   
三、不同引导方式下的具体用法
简单点来说,内存满足、电脑位数X86、X64对应的前提下,把你喜欢的Veket/Porteus/Puppy.ISO解压缩到非中文目录下(我只测试了FAT32/NTFS分区下),然后复制vmlinuz所在的文件夹长路径,或者提示输入vmlinuz路径的时候直接拖拽到批处理上,根据提示操作即可。一般地增加的第二个启动项是刚才安装的Veket/Porteus/Puppy(第一个是windows)。 
 
【01-Veket/Porteus/Puppy安装器by双心】批处理(请以管理员身份运行):
1、BIOS启动菜单:
(1)ntldr/bootmgr==>grldr==>Veket/Porteus/Puppy,本地MBR硬盘和USB设备均可用(支持XP、WIN7/8/10,需要二次选择菜单)。
该方案能够在XP或者win7 8 10的引导菜单中增加grub4dos引导项目,电脑启动后按上下键就能选择grub4dos从而启动Veket/Porteus/Puppy。多次运行不会增加重复启动项。
★当引导盘MBR为ntldr的时候,批处理会自动修改MBR/PBR为ntldr,引导流程为MBR→ntldr→boot.ini→grldr→Veket/Porteus/Puppy。
★当引导盘MBR不是ntldr的时候,批处理会自动修改MBR为bootmgr,此时批处理会检测PBR是否为ntldr,如果是ntldr会提示修改为bootmgr(适用于MBR是bootmgr引导分区上的xp系统场景),引导Veket/Porteus流程为MBR→bootmgr→\boot\bcd→grldr→Veket/Porteus/Puppy。
(2)grldr==>Veket/Porteus/Puppy,本地硬盘和USB设备均可用,USB设备推荐用该方式(一次选择菜单),会修改启动盘MBR为grub4dos。
★该方案把grub4dos写入硬盘MBR,写入参数可以根据需要进行修改,当然也可以直接用Bootice的GUI。
★该方案同时在引导盘和目标盘根目录menu.lst中以非重复方式离线插入启动项,避免启动时优先找到的是启动盘的menu.lst导致无法看到目标盘里的启动项。
(3)修改启动盘MBR为windows ntldr/bootmgr
★如果引导盘存在bootmgr,就把MBR/PBR均修改为bootmgr,并自动修复引导所需的bootmgr、BCD引导文件;如果不存在bootmgr,但存在ntldr,就把MBR/PBR均修改为ntldr。
(4)一键添加grub4dos/grub2x64.efi引导的BIOS/UEFI双启动Veket/Porteus/Puppy(一般需要MBR硬盘上有一个FAT32激活分区,需要关闭安全启动)
★注意:BIOS/UEFI双启动一般需要MBR分区表,一般要有个激活的FAT/ESP分区,但有的电脑不需要任何FAT/ESP分区也可以,不一而论。
(5)切换到UEFI制作模式,用于制作UEFI启动盘。
 
2、UEFI启动菜单:
(1)grub2x64.efi==>Veket/Porteus/Puppy,本地硬盘和USB设备均可用,USB设备推荐用该方式(一次选择菜单)。
(2)一键添加grub4dos/grub2x64.efi引导的BIOS/UEFI双启动Veket/Porteus/Puppy(一般需要MBR硬盘上有一个FAT32激活分区,需要关闭安全启动)
★注意:BIOS/UEFI双启动一般需要MBR分区表,一般要有个激活的FAT/ESP分区,但有的电脑不需要任何FAT/ESP分区也可以,不一而论。
(3)切换到BIOS制作模式,用于制作BIOS启动盘
 
温馨提示:
★BIOS启动菜单,按1 run mem automenu by sratlf-20141206可以遍历任意一个PE.ISO并启动。
★UEFI启动菜单,按1.grubfm_iso_wim_img,可以遍历任意一个PE.ISO并启动。
 
四、用到的命令或工具
1、DetectEFI32,50KB,adef提供,我重新编译,检测当前系统是BIOS启动还是UEFI启动。
http://bbs.wuyou.net/forum.php?mod=redirect&goto=findpost&ptid=413675&pid=3792649&fromuid=298214
判断当前系统是BIOS启动还是UEFI启动,分区表是MBR还是GPT(by双心)V1.3 http://wuyou.net/forum.php?mod=viewthread&tid=412368 (文件稍大已放弃)
2、grub4dos-0.4.6a-2016-12-23,310KB,该版本与sratlf版主的RUN20141206版本兼容性较好,较新版本的grub4dos可能与sratlf的RUN模块不兼容,因此不推荐更换为最新版本的grub4dos,除非你不用RUN模块,或者当前版本的grub4dos在你的电脑上根本无法启动。
3、sratlf的RUN20141206模块,746KB,RUN 1206 更新 支持磁盘交换,文件检索,自动菜单,自动列表,全自动安装nt5x系统
 
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=191301
4、booticeX861.3.4,451KB,pauly的写引导工具。http://wuyou.net/forum.php?mod=viewthread&tid=57675&extra=page%3D1
   XorbootUEFI0.2.5,3.88MB,pauly的UEFI引导工具(暂不支持命令行,改用grub2)。http://wuyou.net/forum.php?mod=viewthread&tid=157812&extra=page%3D1
5、grubinst1.4,151kb,freesoft00分享,用于写入grub4dos引导,bootice命令行写入MBR有bug,会导致“优先尝试引导原来的MBR”选项被选中,对于一个空白的新硬盘或者优盘,当PBR是ntldr/bootmgr,而盘上不存在ntldr/bootmgr这一套引导文件的时候,“优先尝试引导原来的MBR”这个选项会导致空白的新硬盘或者优盘无法引导。因此放弃bootice写入方案,改用grubinst1.4命令行写入方案。http://bbs.wuyou.net/forum.php?mod=viewthread&tid=355942
6、CxDirX86,23.5KB,2012jiashanni分享,用于显示磁盘分区相关信息,例如磁盘大小、卷标、MBR/GPT、文件分区、活动分区,可能是某网友基于drvtype思想写的,来源不明,总之是大神写的。当初也曾考虑过采用diskpart方案,diskpart限制太多,涉及到windows不同版本需要做很多测试,而且需要用到很多批处理技巧,因此放弃diskpart,直接采用现成的CxDirX86。
http://bbs.wuyou.net/forum.php?mod=redirect&goto=findpost&ptid=414335&pid=3789135&fromuid=298214
7、sed for windows,233KB,为批处理插上了飞翔的翅膀,是批处理的灵魂。https://github.com/mbuilov/sed-windows
8、encodeconv.exe,162KB,游蓝海原创,liuzhaoyzz改进后可自动识别原文件编码,静态编译不需要运行库支持。https://www.cnblogs.com/liuzhaoyzz/p/11392294.html
concmd,261KB,tmplinshi版主提供,用于gbk,utf8编码转换。http://www.bathome.net/thread-12595-1-1.html(已放弃,因为需要语言包支撑)
9、find,15.5KB,windows系统自带的。不同系统命令不一定通用,因为windows的小程序都有文件签名,所以未放到文件包里。
10、mountvol,14.5KB,windows系统自带的。不同系统命令不一定通用,因为windows的小程序都有文件签名,所以未放到文件包里。
11、bcdeditX86,320KB,提取自win8X86,可以解决部分WIN7系统bcdedit无法运行的问题,要求当前系统盘必须激活。
12、bootsect.exe,108KB,提取自微软光盘,用于修改MBR/pbr为ntldr/bootmgr。
13、[测试]GRUB2 UEFI 下的磁盘仿真 20191105更新 - GRUB2 - 无忧启动论坛 -
http://wuyou.net/forum.php?mod=viewthread&tid=417233&extra=page%3D1
https://github.com/a1ive/grub
采用wintoflash大神修改的grub2,支持UEFI下map --mem PE.ISO,为了保持目录结构清晰,因此69楼用grub-mkimage -c bootconfig.cfg命令进行了定制修改,默认查找\boot\grub2\grub.cfg。
还采用了wintoflash的grub2-filemanager模块用于遍历pe.wim文件并启动,参考了hilsonma给出的菜单。
https://github.com/a1ive/grub2-filemanager
14、采用我编写的40KB的closeinput来关闭输入法,防止盘符输入干扰。
15、感谢5大提供的ChkMbrPbr检测MBR/PBR是NT5/NT6:
http://wuyou.net/forum.php?mod=viewthread&tid=420355&extra=
16、采用zhs509分享的grub4dos精简中文字体(6500个汉字),注意需要menu.lst为utf-8编码。--感谢zhs509!精简后字库文件(600KB)!
http://wuyou.net/forum.php?mod=viewthread&tid=210325
17、感谢plusv大神修改的dsptw:http://wuyou.net/forum.php?mod=redirect&goto=findpost&ptid=420516&pid=4061911&fromuid=298214
感谢原作者19951001:http://bbs.wuyou.net/forum.php?mod=viewthread&tid=109935&extra=&page=1
 

五、待完善的地方:
1、grub4dos启动画面没有用图片,不够精美,没有用采用中文菜单,因为一闪而过。注意如果采用中文,menu.lst必须采用utf-8编码。
2、用的批处理连接各个exe小程序,不如直接用au3、VBVC、delphi这样的工具写出来的高大上,界面不够美观。有利有弊吧,批处理的好处是开源、接地气,大家都可以根据自己的情况更改代码,以适应自己的需求。
 
六、特别鸣谢
不点、bean、chenall、2011yaya2007777(grub4dos开发者们)、pauly(bootice、XorbootUEFI作者)、jianliulin(FbinstTool)、adef(DetectEFI)、CxDir(2012jiashanni)、sratlf(RUN模块作者)、歌理(PXE免配菜单)、ljycslg(tinypxeserver汉化分享)、芈员外(一键RAMOS框架)、tmplinshi(concmd作者)、freesoft00(grubist1.4分享)、wintoflash(UEFI-grub2_map、ntboot)、hilsonma、极限驱动、2011hiboy(Grub2定制UEFI模板)、captain_g(IPXE-UEFI网启小工具)、yigeren(TinyPXEServer自动识别BIOS/UEFI的配置文件)、江南一根葱、jie_china(grub2-pxe文章推送)、527104427(5大提供了ChkMbrPbr检测MBR/PBR)、2011泥土清香(问题反馈)、zhs509(grub4dos精简字库文件)、plusv、19951001(dsptw扇区读写工具)...等等等等。
 
 
 
 
 
 
 
 
 
 
 
 
 
posted on 2020-05-29 14:35  陈晓猫  阅读(962)  评论(0编辑  收藏  举报