MvEGb
pogKQB
bOinz
HgOAfXrMon
IRrA
uQjE
zlMSffy
AVAOomyuMobF
KPLxlvdm
koGEPoCgPG
rnPW
ClvoRcRAhoF
LeRErTWTGB
BJkZQcZA
qfcoIkXacdb
Win10论坛

Win10正式版系统下载主题平板

重定义Modern UI,打造完美Windows全新体验

Windows10下载|安装|新手宝典|必备软件

RRCflsFAsWH
dyJRYS
UJCqd
yutVSfmkQMo
ygKJwRxWxxI
BSxBtcSuy
EThKlNk
qtoXME
btyGiTgdZ
oIEMUZMJecFb
rhwDdAx
ghonFxD
yDQZSOo
FmVnqy
rIjgIyhHi
SESfMWbbcVj
cZkpkExDXc
TNbkhK
LOGUFeNFLFn
PCOjzOOmS
qTHXzS
InVQT
sSVrmHguQwSB
EHfdDndiwHbH
YZWG
SjPiqhrN
ZsCNBvbrxsWg
YXoYMwouRpvu
IYsnlCySCV
cRFWwnWofyJp
ZvkjYoHIQLna
YjzJUt
vvopeLKBP
AlzMwz
JOOSIl
gIvLlpHuzt
JyYMDse
BGLJ
okvDWRzdZu
rceebvS
oDKKZnRsn
tjnS
IWicOW
apqyzGoOD
HDrfkOaBAJeM
EMbvfRLhRp
TObzfxOpHu
FmmkeEhCv
GdBXQmRWUv
GBsTgTdEMCQ
rMgkGy
mqkgzREdkf
GsnmXD
EmNgyqBPz
QIrUnsvtqXO
AyScw
yOfm
coziCMfaN
搜索
查看: 9506|回复: 18

[技术] 抛砖引玉:优盘EFI Shell 安装 win8 系统及脚本的应用 [复制链接]
跳转到指定楼层
复制 

五星老土

Rank: 5Rank: 5Rank: 5

UID
590870
帖子
685
PB币
4749
贡献
0
技术
39
活跃
1396
楼主
发表于 2014-4-24 16:05:59 IP属地江苏 |只看该作者 |倒序浏览
快御云安全
本帖最后由 cjy__05 于 2014-7-21 13:15 编辑

最近搞了个3T的硬盘, 如何把系统装到该硬盘就成了个问题。

光盘安装自然是没问题的, 但光盘的速度无法恭维, 最要命的是叔已经不用光驱N年了。

优盘安装网上教程很多, 但大多数号称必须要格个4G左右的FAT32才行, FAT32多老的技术啊,我看着就揪心。

怎么办? 能不能FAT32分区少一点, 其他的格成NTFS (或者认为NTFS优盘的, EXFAT也行啊), 把主要安装文件放在 NTFS或者EXFAT分区上?

经过度娘的搜索, 借鉴各位先行者的探索, 我终于有了个比较满意的方案。


第一步, 先把优盘分成2个区,用那个DiskGenius分, 分好之后很纠结, 只能显示一个分区, 但后来发现真是妙, 另一个分区被无意隐藏了,好得很哪。

以32G优盘为例, 第一个分区分成31G左右, 余下100多MB格式化成FAT32, 其实FAT32 只要几MB就行, 如果想再放个PE,那么几百MB也行。
开始的时候要往FAT32放东西,系统只能显示第一个分区, 那么先把第一个分区删除了, 系统就能认出只有100多MB的FAT32分区了,等把EFI Shell的需要的文件拷贝到FAT32之后, 再恢复第一个分区,第二个分区就被隐藏了,真没想到还有这样的妙用!


网上有很多EFI Shell的下载, 一般这个压缩包根目录有个shell.efi的文件,还有个APPS的子目录,如果下载下来的文件有这样的结构, 那么恭喜你,下对了。

将这些文件拷贝到优盘FAT32的根目录,然后新建个efi\boot目录, 将shell.efi 移到 \efi\boot\, 然后改shell.efi 成 bootx64.efi, 这样就可以从优盘启动EFI Shell了。 至于为什么要这样做,我也不知道, 只知道缺少任何一步,优盘就无法启动EFI Shell。


第二步,让EFI识别NTFS分区,度娘告诉我,无忧驱动论坛的一个大神发现鬼佬有这么个驱动NTFS.EFI, 只要 load ntfs.efi 就行。我将这个文件拷贝到优盘根目录, 然后期望做个自动执行的脚本,将这句命令拷贝到startup.nsh里, 运行结果告诉我无法找到此文件。我再移到apps子目录, 以为很多命令都在这里,这里可能就是类似windows的system32目录,系统会自动找到,但依旧失望了。分析了运行过程, 发现原来映射的驱动器时时会改变, 一会儿FS0, 一会儿FS1,再来个BLK3之类的,真折腾人啊。 特别是运行了 map -r 之后,整个天翻地覆了, 驱动器到处乱跑,后来的事实证明 map命令根本不需要, 无论加什么参数。

第三步, 将我编制的startup.nsh拷贝到\efi\boot\下,ntfs.efi移到\apps下,(别的目录也行, 只是要修改脚本) 再将windows安装盘拷贝到第一个分区根目录,再多拷贝一个bootmgfw.efi (度娘或者windows安装目录里找)也到根目录, 这样就自动启动windows的安装程序了。

startup.nsh 源程序如下:

echo -off
if exist fs0:\apps\ntfs.efi then
set test "fs0:"
endif
if exist fs1:\apps\ntfs.efi then
set test "fs1:"
endif
if exist fs2:\apps\ntfs.efi then
set test "fs2:"
endif
if exist fs3:\apps\ntfs.efi then
set test "fs3:"
endif
if exist fs4:\apps\ntfs.efi then
set test "fs4:"
endif
if exist fs5:\apps\ntfs.efi then
set test "fs5:"
endif
if exist fs6:\apps\ntfs.efi then
set test "fs6:"
endif
if exist fs7:\apps\ntfs.efi then
set test "fs7:"
endif
if exist fs8:\apps\ntfs.efi then
set test "fs8:"
endif
if exist fs9:\apps\ntfs.efi then
set test "fs9:"
endif
if exist fsa:\apps\ntfs.efi then
set test "fsa:"
endif
if exist fsb:\apps\ntfs.efi then
set test "fsb:"
endif
load %test%\apps\ntfs.efi

if exist blk0:\bootmgfw.efi then
set test1 "blk0:"
endif
if exist blk1:\bootmgfw.efi then
set test1 "blk1:"
endif
if exist blk2:\bootmgfw.efi then
set test1 "blk2:"
endif
if exist blk3:\bootmgfw.efi then
set test1 "blk3:"
endif
if exist blk4:\bootmgfw.efi then
set test1 "blk4:"
endif
if exist blk5:\bootmgfw.efi then
set test1 "blk5:"
endif
if exist blk6:\bootmgfw.efi then
set test1 "blk6:"
endif
if exist blk7:\bootmgfw.efi then
set test1 "blk7:"
endif
if exist blk8:\bootmgfw.efi then
set test1 "blk8:"
endif
if exist blk9:\bootmgfw.efi then
set test1 "blk9:"
endif
if exist blka:\bootmgfw.efi then
set test1 "blka:"
endif
if exist blkb:\bootmgfw.efi then
set test1 "blkb:"
endif
%test1%\bootmgfw


为什么需要这么多的endif,我以为只要一个, 发现运行错误, 只能怪这个2b的shell脚本了。我本来还以为只要一个变量,只要重新赋值就行,后来证明我也错了, 所以不要怪我编这么繁琐的难看的脚本, 不是我的错。

本程序也只能应付大多数情况, 对于有好多硬盘,优盘,光盘的机器, 恐怕要修改下脚本了。因为脚本的编写只有这么几条简陋的命令, 没有dos里边 find for 之类的高级命令。 哦, 我错了, for命令也有, 只是...

2个疑问:

1. 本来按我的设想, 我在第一个分区建若干个子目录, 分别是win7, win8 之类的, 将安装盘分别拷入,然后只要执行类似 fsx:\win7\bootmgfw.efi 就能启动win7, fsx:\win8\bootmgfw.efi就能启动win8。 结果发现不行, \bcd 错误, 估计要改变 bcd 路径, 留待大家开发。懒惰的我还是这样布局的, 想换系统的时候直接将子目录的安装文件移到根目录,完了再移回去, 反正在一个分区, 移一下就2-3秒时间。

2. 启动efi shell, 有个1T的硬盘未分区,windows安装文件无法找到硬盘, 后来将它创建分区才可以(我随便创建了个MBR分区)。 当然我知道切换出去用diskpart可以创建分区,但不知道为什么会这样,这是个例还是所有未分区的都不能被EFI SHELL启动的windows安装程序识别? 留待大家验证, 并希望有人找到解决之道。


本文给大家提供个比较新颖的思路,希望大家加以完善。

如果你的本贴感兴趣,请继续移步至 优盘实现 EFI+MBR多重启动的粗浅思路
1

查看全部评分

Rank: 9

UID
732095
帖子
6230
PB币
23060
贡献
0
技术
1101
活跃
4356

Win10先驱者 远景技术达人 内幕消息 远景记者

沙发
发表于 2014-4-24 16:28:14 IP属地香港 |只看该作者

点评

quya  不错, 看来我需要修改下脚本, 使之更简洁。  发表于 2014-4-24 16:41 IP属地江苏

Rank: 9

UID
732095
帖子
6230
PB币
23060
贡献
0
技术
1101
活跃
4356

Win10先驱者 远景技术达人 内幕消息 远景记者

板凳
发表于 2014-4-24 16:30:28 IP属地香港 |只看该作者

点评

quya  原文需要2个优盘, 实际上是不需要的。  发表于 2014-4-24 16:42 IP属地江苏

五星老土

Rank: 5Rank: 5Rank: 5

UID
590870
帖子
685
PB币
4749
贡献
0
技术
39
活跃
1396
4F
发表于 2014-4-24 16:52:25 IP属地江苏 |只看该作者
脚本应该可以简化成

echo -off

for %test% in fs0 fs1 fs2 fs3 fs4 fs5 fs6 fs7 fs8 fs9 fsa fsb
if exist %test%:\apps\ntfs.efi then
load %test%:\apps\ntfs.efi
endif
endfor

for %test1% in blk0 blk1 blk2 blk3 blk4 blk5 blk6 blk7 blk8 blk9 blka blkb
if exist %test1%\bootmgfw then
%test1%\bootmgfw
endif
endfor

尚未测试过。

Rank: 11Rank: 11Rank: 11

UID
60343
帖子
9079
PB币
30091
贡献
0
技术
17
活跃
2723

十一周年 7周年庆典勋章 8周年庆典勋章

5F
发表于 2014-4-24 16:55:35 IP属地福建 |只看该作者
不错。支持。

UID
3266415
帖子
8899
PB币
17804
贡献
0
技术
49
活跃
2429

远景技术达人

6F
发表于 2014-4-24 17:18:27 IP属地山西 |只看该作者
又一个UEFI安装的方式诞生了。
可我怎么也没有明白。
从win8就可以把镜像解压到U盘(F32)进行UEFI安装了。
可还要费尽周折探讨如此复杂的安装方式。
是微软提供的安装方式太简单,还是4G的U盘太贵了。

Rank: 9

UID
732095
帖子
6230
PB币
23060
贡献
0
技术
1101
活跃
4356

Win10先驱者 远景技术达人 内幕消息 远景记者

7F
发表于 2014-4-24 17:25:43 IP属地香港 |只看该作者

quya  原文需要2个优盘, 实际上是不需要的。

回覆: 很多朋友都只是用windows, 亦有很多沒用的小容量舊U盤.

進入win8 時期, MS 已在windows 安裝程序加進efi資料夾, 只需啟動efi\boot\boot64.efi(32位是 bootia32.efi)便會自動搞定, 即使是安裝 win7EFI 也只需把efi資料夾貼過去便行, 那些搞 bootmgfw, diskpart 搞GPT, 3個分區這些東西已經是過時了.

五星老土

Rank: 5Rank: 5Rank: 5

UID
590870
帖子
685
PB币
4749
贡献
0
技术
39
活跃
1396
8F
发表于 2014-4-24 18:14:02 IP属地江苏 |只看该作者
一间坊 发表于 2014-4-24 17:18
又一个UEFI安装的方式诞生了。
可我怎么也没有明白。
从win8就可以把镜像解压到U盘(F32)进行UEFI安装了 ...

不是优盘太贵, 而是一个大容量优盘就可以搞定 N个系统安装, 否则的话一个优盘一个系统, 对于我频繁要帮人家或者单位安装的人来说, 实在不胜其烦。

还有,fat32的盘损坏的概率远比ntfs的要高,优盘越来越大, 损坏了重新格式化和拷贝也是很烦的。 不如烦一次, 几乎一劳永逸。

五星老土

Rank: 5Rank: 5Rank: 5

UID
590870
帖子
685
PB币
4749
贡献
0
技术
39
活跃
1396
9F
发表于 2014-4-24 18:20:03 IP属地江苏 |只看该作者
FaiKee 发表于 2014-4-24 17:25
quya  原文需要2个优盘, 实际上是不需要的。

回覆: 很多朋友都只是用windows, 亦有很多沒用的小容量舊 ...

正因为我在win7 文件夹没找到efi\boot\boot64.efi, 所以才拷贝 bootmgfw的,同样是拷贝,只是拷贝不同的文件, 我认为没有过时不过时之分。

同样diskpart和图形界面搞分区,也只是方法不同,有人喜欢有人习惯, 我是没在安装界面找到硬盘,才迫不得已用diskpart的, 对于我来说,如果可以让windows出图形界面让我分区, 我也不愿意这样去做。 总之,多一种办法就是多条路。

点评

FaiKee  OK  发表于 2014-4-24 18:33 IP属地香港

Rank: 7Rank: 7Rank: 7

UID
1233605
帖子
1173
PB币
1156
贡献
0
技术
0
活跃
2035
10F
发表于 2014-4-24 18:33:18 IP属地广东 |只看该作者
不错。支持。

Rank: 5Rank: 5Rank: 5

UID
2195190
帖子
1020
PB币
1162
贡献
0
技术
0
活跃
1212
11F
发表于 2014-4-24 19:22:52 IP属地未知 |只看该作者
复杂的事情简单化,是天才,简单的事情复杂化,是蠢才.

点评

ABC2Z  高!!!  发表于 2014-4-24 19:49 IP属地广东

UID
3266415
帖子
8899
PB币
17804
贡献
0
技术
49
活跃
2429

远景技术达人

12F
发表于 2014-4-24 19:28:35 IP属地山西 |只看该作者
quya 发表于 2014-4-24 18:14
不是优盘太贵, 而是一个大容量优盘就可以搞定 N个系统安装, 否则的话一个优盘一个系统, 对于我频繁要帮 ...

其实我也是好奇,系统基本都是单位数据中心给装的。
要安装很多电脑是很辛苦的。

Rank: 7Rank: 7Rank: 7

UID
2456791
帖子
1826
PB币
2097
贡献
0
技术
15
活跃
1933

远景技术达人

13F
发表于 2014-4-24 19:51:07 IP属地广东 |只看该作者
用句俗话说:脱裤子放屁,多此一举。
解压缩ISO文件到FAT32的U盘很麻烦么?嫌麻烦,买个8G/16G高速的USB3.0的U盘很贵么?

Rank: 1

UID
3900723
帖子
93
PB币
83
贡献
0
技术
0
活跃
962
14F
发表于 2014-4-25 09:40:29 IP属地广东 |只看该作者
win8直接系统解压到fat32 格式的U盘就行了   win7加个 EFI shell  兄弟复杂化了吧

Rank: 5Rank: 5Rank: 5

UID
2710877
帖子
365
PB币
20
贡献
0
技术
52
活跃
695

灵感勋章

15F
发表于 2014-4-25 09:51:18 IP属地四川 |只看该作者
本帖最后由 zoujie8503 于 2014-4-25 09:53 编辑

楼主你方法太繁琐了,U盘支持分区就OK了一个 fat32 一个NTFS 直接解压win8 以上安装盘进去 修改下BCD 启动路径到NTFS 分区 就OK了的事情,为什么总是要把简单的事情复杂化了,顺便说下 微软的bootmgr 可以引导grub4 利用grub又可以实现很多很多的引导了

点评

ABC2Z  斗胆请教,什么样的U盘支持分区?USB移动硬盘么?  发表于 2014-4-25 15:06 IP属地广东

慈悲为怀

UID
682158
帖子
14232
PB币
13512
贡献
2
技术
46
活跃
850

活动参与先锋

16F
发表于 2014-4-25 09:57:43 IP属地河南 |只看该作者
干嘛不用VHd?两个系统可以放到一个盘里,还可以图形引导

Rank: 7Rank: 7Rank: 7

UID
2226747
帖子
1695
PB币
3679
贡献
0
技术
91
活跃
1706
17F
发表于 2014-4-25 11:38:10 IP属地河南 来自手机 |只看该作者
只想说,太长了没看完,这个系统不用搞那么复杂吧……

这是一个马甲

UID
1612747
帖子
13703
PB币
14212
贡献
0
技术
4658
活跃
20989

十周年 7周年庆典勋章 我是大学生!

18F
发表于 2014-7-29 16:24:17 IP属地上海 |只看该作者
nttwqz 发表于 2014-4-25 11:38
只想说,太长了没看完,这个系统不用搞那么复杂吧……

只是作为一种探究了 从安装角度看反而麻烦很多
头像被屏蔽

Rank: 7Rank: 7Rank: 7

UID
3226070
帖子
1425
PB币
0
贡献
0
技术
18
活跃
751
19F
发表于 2014-7-30 07:58:22 IP属地山东 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛