<!doctype html>02_2.部署Windows7
定制PE工具
首先下載微軟官方提供的制作工具 Windows AIK。點擊 | 進入下載頁面
下載完成之后,解壓壓縮包,點擊目錄中的StartCD.exe
進行安裝
選擇Windows AIK安裝程序進行安裝
安裝完畢之后,以管理員身份運行該工具
# 使用copype創建E:\winpe目錄,同時在該目錄下生成Win PE預安裝所需文件
copype amd64 E:\winpe
# 使用imagex命令掛載E:\winpe\winpe.wim文件到E:\winpe\mount目錄下,主要是掛載完成之后,方便我們進行修改。
imagex /mountrw E:\winpe\winpe.wim 1 E:\winpe\mount
# 向startnet.cmd文件中寫入一些腳本命令
# 測試機器與Cobbler機器之間的網絡是否相同,如果無法ping通,則檢查網絡
echo ping -n 3 -l 69 192.168.0.196 >> E:\winpe\mount\Windows\System32\startnet.cmd
# 訪問連接samba共享的目錄(samba服務具體看后面)
echo net use z: \\192.168.0.196\share >> E:\winpe\mount\Windows\System32\startnet.cmd
# 進入到samba服務目錄中
echo z: >> E:\winpe\mount\Windows\System32\startnet.cmd
# 進入win目錄中(對應后文中的/smb/win的win)
echo cd win >> E:\winpe\mount\Windows\System32\startnet.cmd
# 此步為最關鍵的一步,具體的自動化安裝為該步,Autounttend.xml的制作方式后面詳細說明
echo setup.exe /unattend:Autorunwin7.xml >> E:\winpe\mount\Windows\System32\startnet.cmd
# 去除掛載
imagex /unmount E:\winpe\mount /commit
# 拷貝修改后的winpe.wim文件
copy E:\winpe\winpe.wim E:\winpe\ISO\sources\boot.wim
# 生成Win PE ISO鏡像工具
oscdimg -n -bE:\winpe\etfsboot.com E:\winpe\ISO E:\winpe\winpe_cobbler_amd64.iso
Cobbler服務端
1.上傳ISO鏡像到Cobbler Server端
2.導入ISO鏡像到Cobbler Server端
# 將winpe_cobbler_amd64.iso鏡像拷貝到Cobbler Server端
# 導入鏡像
$ Cobbler distro add --name=windows7 --kernel=/var/lib/tftpboot/memdisk --initrd=/root/winpe_cobbler_amd64.iso --kopts="raw iso"
3.配置ISO鏡像相關的自動值守安裝文件
$ touch /var/lib/cobbler/kickstarts/win7pe.xml
$ cobbler profile add --name=windows7 --distro=window7 --kickstart=/var/lib/cobbler/kickstarts/win7pe.xml
4.配置samba共享Windows ISO
4.1 安裝samba服務
$ yum -y install samba
$ systemctl start smb && systemctl enable smb
4.2 配置共享
x
$ vim /etc/samba/smb.conf
[global]
log file = /var/log/samba/log.%m
max log size = 5000
security = user
guest account = nobody
map to guest = Bad User
load printers = yes
cups options = raw
···
[share]
comment = this is samba share directory
path = /smb/ # 共享目錄
directory mask = 0755
create mask = 0755
guest ok = yes
writable = yes
# 更改配置文件,重啟生效
$ systemctl restart smb
$ mkdir -p /smb/win
$ mkdir /mnt/win7
# 將WIN7的鏡像掛載到/mnt/win7
$ mount -o loop,ro cn_windows_7_ultimate_x64_dvd_x15-66043.iso /mnt/win7
# 將鏡像中的內容拷貝到samba的共享目錄中
$ cp /mnt/win7/* /smb/win
此時我們已經完成了整個流程的一部分,接下來進行調試
本地測試
# 連接samba共享
net use z: \\192.168.0.196\share
# 進入samba目錄
z:
# 進入到鏡像目錄
cd win
# 此時目錄中可以看到一個setup.exe文件。該文件就是安裝win7的安裝程序文件
setup.exe # 可以看到如下圖
此時我們已經進入到了可以手動安裝win7的界面,接下來說明自動化的關鍵步驟,也就是前面的Autorunwin7.xml
4.3 Autorunwin7.xml
一定要使用純凈版的ISO鏡像,不然可能會出現各種各樣的問題
打開AIK工具中的Windows 映像管理器
打開工具之后界面如下:
此時我們將我們的win7鏡像解壓到一個目錄中,然后通過 Windows system image manager工具,選擇Windows 映像或編錄文件,選擇的文件為鏡像解壓的目錄中的sources/install.wim文件,此時會彈出四個版本選擇(這里的選擇要對應我們后文中的選擇,此次我們安裝的是旗艦版,所以選擇最后一個)
選擇完成之后,左下角會出現兩個目錄,一個Componets 和 Packages,點開Compontes,里面會出現很多內容。
不要覺得很復雜看不懂,跟我一起制作完成一個,你就會基本了解,並且簡單的閱讀制作完成的xml文件,你也可以更加的理解之前的配置。
1.新建應答文件
2.指定地區和語言選項
- amd64_Microsoft-Windows-International-Core-WinPE
設置語言
設置安裝windows時的語言
3.接受EULA
- Microsoft-Windows-Setup
接受Eula,設置AcceptEula=true
4.選擇鏡像版本
設置Key為 /image/index Value為 4
該值對應的是版本號,之前我們添加鏡像的時候選擇的是第四個旗艦版本,這里的4與之對應,也可以通過AIK的Tools工具進行查看。
imagex /info E:\ISO\win7\sources\install.wim
這個鏡像包含四個版本,我們往下翻,可以看到IMAGE INDEX="4" Ultimate ,確定我們的Value為4
5.配置磁盤
DiskID是硬盤編號,從0開始,表示第一塊硬盤
WillWipeDisk表示是否格式化硬盤
Order表示硬盤的分區順序,與后面添加磁盤符標簽等時的Order要一致
Size表示分區大小
Type表示類型,這里設置為主分區
Active表示是否激活磁盤
Extend
Format表示磁盤格式為NTFS
Label表示標簽,也就是磁盤的名字
Letter表示磁盤的盤符,這里設置為 C
Order與前面的對應
PartitionID分區ID,與后面設置的要一致
選擇系統鏡像的安裝位置,磁盤ID為0,分區ID為1.與前面的設置對應
6.設置用戶名和計算機名
Microsoft-Windows-Shell-Setup
DisplayName 顯示的用戶名
Group 用戶組
Name 用戶名
ComputerName 設置計算機名。 *表示隨機生成
7.設置密碼
設置用戶的密碼,空字符串為無密碼
8.設置Windows密鑰
隨便百度一個與你安裝版本對應的密鑰即可,不一定是要能激活的秘鑰
6K2KY-BFH24-PJW6W-9GK29-TMPWP
9.網絡
Micrisift-Windows-Shell-Setup
NetworkLocation=work表示工作網絡
ProtecYourPC=3表示以后詢問我
具體界面展示如下:
10.時區
TimeZone : China Standard Time
至此,自動應答文件創建結束,保存即可
4.4 參考
<unattend xmlns="urn:schemas-microsoft-com:unattend">
<settings pass="windowsPE">
<component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SetupUILanguage>
<UILanguage>zh-CN</UILanguage>
</SetupUILanguage>
<InputLocale>zh-CN</InputLocale>
<SystemLocale>zh-CN</SystemLocale>
<UILanguage>zh-CN</UILanguage>
<UserLocale>zh-CN</UserLocale>
</component>
<component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<UserData>
<ProductKey>
<Key>87VT2-FY2XW-F7K39-W3T8R-XMFGF</Key>
</ProductKey>
<AcceptEula>true</AcceptEula>
</UserData>
<ImageInstall>
<OSImage>
<InstallFrom>
<MetaData wcm:action="add">
<Key>/image/index</Key>
<Value>4</Value>
</MetaData>
</InstallFrom>
<InstallTo>
<DiskID>0</DiskID>
<PartitionID>1</PartitionID>
</InstallTo>
</OSImage>
</ImageInstall>
<DiskConfiguration>
<Disk wcm:action="add">
<CreatePartitions>
<CreatePartition wcm:action="add">
<Order>1</Order>
<Size>30000</Size>
<Type>Primary</Type>
</CreatePartition>
</CreatePartitions>
<DiskID>0</DiskID>
<WillWipeDisk>true</WillWipeDisk>
<ModifyPartitions>
<ModifyPartition wcm:action="add">
<Active>true</Active>
<Extend>false</Extend>
<Format>NTFS</Format>
<Label>OS</Label>
<Letter>C</Letter>
<Order>1</Order>
<PartitionID>1</PartitionID>
</ModifyPartition>
</ModifyPartitions>
</Disk>
</DiskConfiguration>
</component>
</settings>
<settings pass="oobeSystem">
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<UserAccounts>
<LocalAccounts>
<LocalAccount wcm:action="add">
<Password>
<Value>UABhAHMAcwB3AG8AcgBkAA==</Value>
<PlainText>false</PlainText>
</Password>
<Group>Administrator</Group>
<Name>XLL</Name>
<DisplayName>XLL</DisplayName>
</LocalAccount>
</LocalAccounts>
</UserAccounts>
<OOBE>
<NetworkLocation>Work</NetworkLocation>
<ProtectYourPC>1</ProtectYourPC>
<HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
</OOBE>
<TimeZone>China Standard Time</TimeZone>
</component>
</settings>
<settings pass="specialize">
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ComputerName>*</ComputerName>
</component>
<component name="Microsoft-Windows-Security-SPP-UX" processorArchitecture="wow64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SkipAutoActivation>true</SkipAutoActivation>
</component>
</settings>
<cpi:offlineImage cpi:source="wim:e:/iso/win7/sources/install.wim#Windows7 64位旗艦版" xmlns:cpi="urn:schemas-microsoft-com:cpi" />
</unattend>
至此,我們查看完XML文件,其實大部分都是可以看懂,你可以進一步深入了解,自定義更多功能
4.5 可能出現的問題
運行setup.exe顯示拒絕訪問
。
#需要在smb共享的目錄中,給予setup.exe權限
$ chmod 666 /smb/win/setup.exe
- 在執行setup.exe AutorunWin7.xml時報錯
Error: The file 'autorun.dll' could not be loaded or is corrupt. Setup cannot continue: Error code is [0x7E]
# 很大一部分可能性是因為鏡像不是純凈版,哪怕你這個鏡像你自己單獨安裝沒有問題,但是這里這里就是不行
Windows 7 Ultimate (x64) - DVD (Chinese-Simplified)
文件名:cn_windows_7_ultimate_x64_dvd_x15-66043.iso
SHA1:4A98A2F1ED794425674D04A37B70B9763522B0D4
文件大小:3.11GB
下載地址:ed2k://|file|cn_windows_7_ultimate_x64_dvd_x15-66043.iso|3341268992|7DD7FA757CE6D2DB78B6901F81A6907A|/
- 一直卡在 setup.exe /unattend.Autoattend.xml或者啟動安裝程序中
出現這種情況可能是你的配置文件出現了錯誤,或者你缺少了一些必要的選項