微pe选择windows安装文件的位置:WinPE中通过Rclone挂载Minio分布存储为本地盘
微pe选择windows安装文件的位置:WinPE中通过Rclone挂载Minio分布存储为本地盘wim镜像挂载编辑工具,用来挂载编辑boot.wim镜像文件。Dism 虚拟机软件,用来验证winpe镜像UltraISOISO文件管理软件,用来从ISO文件中提取boot.wim镜像文件。
一、资源清单
名称 |
用途 |
备注 |
VirtualBox |
虚拟机软件,用来验证winpe镜像 | |
UltraISO |
ISO文件管理软件,用来从ISO文件中提取boot.wim镜像文件。 | |
Dism |
wim镜像挂载编辑工具,用来挂载编辑boot.wim镜像文件。 | |
winpe镜像 |
N/A | |
Rclone |
用来挂载minio存储 | |
Winfsp |
FUSE支持 |
使用UltraISO将winpe的ISO文件打开,提取出boot.wim文件。
使用Dism 软件挂载boot.wim文件到一个指定目录。
2、复制文件- 下载Rclone :https://rclone.org/downloads/ 和WinFsp: https://github.com/billziss-gh/sshfs-win/releases/download/v3.5.20357/sshfs-win-3.5.20357-x64.msi
- 在宿主机解压Rclone到一个指定目录。(注:这个目录需要记录好,后面配置会用到)
- 在宿主机安装WinFsp到一个指定目录。注:这个目录需要记录好,后面配置会用到)
- 进入boot.wim的挂载目录,将Rclone目录和WinFsp目录复制到挂载目录中的指定目录(最好与宿主机上的目录保持一致)。
- 在宿主机打开注册表,挂载boot.wim挂载目录中的注册表文件到一个路径下。
- 导入注册表文件(system和software,分两次挂载)
- 卸载挂载的目录(system和software,分两次卸载)
- 退出注册表
在boot.wim挂载根目录的“Users\Default\AppData\Roaming\”目录下创建rclone目录,并在这个目录下创建rclone.conf文件,文件内容如下:
[minio]
type = s3
provider = Minio
access_key_id = aOcrQYExLmNQ855RgMhW74ZZJEgTaYsg
secret_access_key = l6odGVeFTwXFwT8jbTaOIwNZjACXuGV1
region = us-east-1
endpoint = http://10.0.2.130:9001
其中access_key_id、secret_access_key、region和endpoint按Minio集群的实际配置进行替换。
三、验证- 完成以上变更后,使用dism 另存为boot.wim到单独的一个位置。
- 使用UltraISO打开winpe的ISO文件,使用上一步生成的boot.wim文件进行替换。
- 使用新生成的winpe的ISO文件在VirtualBox进行引导。
- 进入WINPE后在CMD命令行进行验证。
关于WINPE的时间同步,可通过python脚本实现,脚本内容如下示:
# -*- coding:utf-8 -*-
import time
import ntplib
import win32api
# Sync NTP time class
class syctimes():
# Get NTP
def getTime1(self):
c = ntplib.NTPClient()
# NTP Address: pool.ntp.org
# 如果没法连公网可以换成内网的NTP server地址
response = c.request('pool.ntp.org')
ts_stamp = response.tx_time
ts = time.localtime(ts_stamp)
# print(ts time.mktime(ts))
# east 8 zone
ttime = time.localtime(time.mktime(ts) 8 * 60 * 60)
return ts
# Setting local time
def setTime1(self time_cls):
ttime = time.localtime(time.mktime(time_cls) - 8 * 60 * 60)
time_cls = ttime
win32api.SetSystemTime(time_cls.tm_year time_cls.tm_mon time_cls.tm_wday time_cls.tm_mday time_cls.tm_hour time_cls.tm_min time_cls.tm_sec 0)
if __name__ == "__main__":
classSyc = syctimes()
time_list = classSyc.getTime1()
classSyc.setTime1(time_list)
五、rclone程序后台启动
dimobjShell
setobjShell=wscript.createObject("WScript.Shell")
iReturnCode=objShell.Run("c:\rclone\rclone.exe mount minio:/ I:" 0 TRUE)