使用Cobbler批量部署Linux和Windows:Windows系統批量安裝(三)


說明:時不時會有讀者就遇到的一些問題留言或者私信詢問解決方法,但本人對 Desktop運維、PE鏡像等並不熟悉了解,這篇文章是我曾經一時出於工作需要而進行的研究,因此很多問題我也不了解,故而無法解答,對此表示抱歉。

不過可以借鑒的一點是,當初我探索這些自動化部署時遇到很多問題,這些問題都反映在我的文章中,本人完全是在全新的環境中部署了一次,確保可以成功后記錄了這篇文章,因此當您遇到問題時,請仔細閱讀blog以找出潛在的問題(尤其是配置文件的設置和鏡像文件版本,如是否修改版、是否64位)。

另外,有問題或者已解決問題的方法都可以在評論區留言,方便后來人參考。

 

Tutorial: Installing Windows with cobbler (cobbler安裝Windows)

Windows系統的自動安裝需要用到Win PE工具。流程如下:

  • 定制Win PE工具
  • Win PE ISO導入至Cobbler Server端
  • 通過samba共享Windows ISO
  • 客戶機器PXE啟動安裝

 

大致是上面四個過程,接下來具體說明相應配置。

定制Win PE工具:

定制Win PE工具的目的是為了在通過PXE方式啟動的客戶端上運行一個Windows預安裝環境(相當於linux的initrd.img和vmlinuz,畢竟安裝系統類似於安裝軟件,總得開機才能安裝,“開機”則需要運行系統,這個系統就是Win PE。),並且使得Windows預安裝環境能夠自動執行某些我們需要的動作。

Win PE的制作微軟官方提供有相應的工具,該工具叫做:Windows AIK。我們需要使用該工具來定制Win PE工具,可以從這里下載:適用於 Windows® 7 的 Windows® 自動安裝工具包 (AIK)

下載之后,解壓安裝,如下圖:

 

安裝完畢后,啟動該工具來定制Win PE鏡像,如下圖:

 

定制Win PE ISO所用命令及相關配置:

copype amd64 C:\winpe

imagex /mountrw c:\winpe\winpe.wim 1 c:\winpe\mount

echo ping -n 7 -l 69 192.168.1.199 >> C:\winpe\mount\Windows\System32\startnet.cmd
echo net use z: \\192.168.1.199\share >> C:\winpe\mount\Windows\System32\startnet.cmd
echo Z: >> C:\winpe\mount\Windows\System32\startnet.cmd

#win是包含windows 7 ISO解壓文件的父目錄
echo cd win >> C:\winpe\mount\Windows\System32\startnet.cmd
echo setup.exe /unattend:Autounattend.xml >> C:\winpe\mount\Windows\System32\startnet.cmd

imagex /unmount c:\winpe\mount /commit

copy c:\winpe\winpe.wim c:\winpe\ISO\sources\boot.wim

# "-bC"中間沒有空格
oscdimg -n -bC:\winpe\etfsboot.com c:\winpe\ISO c:\winpe\winpe_cobbler_amd64.iso

解釋一下上面的幾行命令:

1:使用copype命令創建C:\winpe目錄,並在該目錄下生成Win PE預安裝所需的文件。

3:使用imagex命令掛載c:\winpe\winpe.wim文件到c:\winpe\mount目錄下,以便后續進行修改,因為Windows系統的很多核心文件都被打包壓縮在這個文件里面,所以我們需要掛載才能讀寫修改。除了imagex這個工具可以完成修改之外,另一個工具DIMS也能做到,如果你熟悉該工具,則可以使用DIMS來做。

5-11:修改掛載后的wim文件,向C:\winpe\mount\Windows\System32\startnet.cmd文件中寫入一些腳本命令。其中第5行用於測試腳本有無執行,可以刪去。剩下的幾行是對samba共享文件的加載並執行,具體會在后續第三步samba文件共享那里詳細解釋。需要注意的是,這里用到的IP地址是我Cobbler Server服務器的地址,具體請根據你自己的服務器地址進行更改。至於為什么是寫入到startnet.cmd文件中,是因為Win PE第一次運行時固定使用 Wpeinit 和 Startnet.cmd 運行啟動腳本。但是對於Wpeinit我多次測試卻沒有成功過,因此選擇將命令腳本寫入到startnet.cmd文件中(startnet.cmd是Win PE ISO鏡像自帶的腳本文件)。

一個問題:寫入到腳本中的命令用到了Cobber Server端的IP地址,這個IP地址被硬編碼到了Win PE ISO鏡像中,一個可行的辦法是在這里不直接寫入具體命令,而是調用另外一個腳本,這個被掉的腳本可以放在其他地方,以方便后續修改。

13:完成修改后,提交保存修改並去除掛載。

15:拷貝修改后的winpe.wim到指定目錄並重命名。

18:生成Win PE ISO鏡像工具,路徑及名稱為C:\winpe\winpe_cobbler_amd64.iso。

 

Win PE ISO導入至Cobbler Server端:

上一步中已經定制好了Win PE ISO鏡像,接下來我們需要像前面安裝CentOS/Ubuntu系統那樣,把它導入到Cobbler Server端中。也是下面的三個流程

  1. 上傳ISO鏡像到 Cobbler Server 端
  2. 導入ISO鏡像到 Cobbler Server 端
  3. 配置ISO鏡像相關自動值守安裝文件

下面是具體配置:

  • 上傳ISO鏡像

將 winpe_cobbler_amd64.iso 鏡像拷貝至 Cobbler Server 服務器/root/目錄下,但無需掛載。


  • 導入ISO鏡像

cobbler distro add --name=windows7 --kernel=/var/lib/tftpboot/memdisk --initrd=/root/winpe_cobbler_amd64.iso --kopts="raw iso"

 

  • 配置ISO鏡像自動值守安裝文件

這里需要說明的是:事實上,該自動值守安裝文件並沒有作用,它不像CentOS的ks以及Ubuntu的Preseed文件那樣,內含有操作系統的那些設置,它的作用在於每個系統distro必須有一個profile,因此盡管它並不是實際用來設定系統設置的,但也要指定。如下:

touch /var/lib/cobbler/kickstarts/win7pe.xml
cobbler profile add --name=windows7 --distro=windows7 --kickstart=/var/lib/cobbler/kickstarts/win7pe.xml

  這里的win7pe.xml文件可以為空白,但必須要存在。否則,在通過PXE方式啟動客戶機器時,客戶機器看不到可以通過網絡安裝的Win PE系統。而實際設定Windows系統安裝的配置文件則會在第四步客戶機器PXE啟動安裝那里解釋。

 

通過samba共享Windows ISO:

前面已經完成Win PE ISO鏡像定制,該ISO鏡像通過PXE啟動后,能夠根據定制中的腳本命令自動獲取Windows 7鏡像並安裝,獲取Windows 7鏡像的方式是通過網絡共享下載。既然是通過網絡共享,那么Windows 7鏡像就要通過網絡共享提供出來,這里使用的方法是使用samba文件共享,通過Cobbler Server端安裝部署samba文件共享,提供Windows 7鏡像。這里使用的Windows 7 ISO鏡像並不是ghost之類的修改版,而是微軟官方發布的原生純凈ISO,如果你需要獲得相關鏡像,可以自行去微軟MSDN或者某些網站下載。具體如下:

 安裝並啟動samba:

yum install samba -y
service smb start
systemctl enable smb

  配置samba共享:

vi /etc/samba/smb.conf

# /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 = share directory目錄
path = /smb/
directory mask = 0755
create mask = 0755
guest ok=yes
writable=yes

配置完上面的smb之后,記得重啟服務

service smb restart

配置共享文件夾及Windows 7鏡像

mkdir -p /smb/win
mkdir /mnt/win7
mount -o loop,ro /root/cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso /mnt/win7
cp -r /mnt/win7/* /smb/win

上面的命令主要功能是創建samba共享文件夾、掛載Windows 7 ISO鏡像、拷貝Windows 7 ISO鏡像內容到samba共享文件夾中。實際上,這里的文件不僅僅是Windows 7 ISO鏡像解壓后的內容,還有一個名為“Autounattend.xml”的文件,這個文件並沒有通過上面的操作放入到samba共享文件夾中,它的作用和如何生成會在最后一步解釋。

做完這幾步后,我們可以通過Windows的 net use 命令加以訪問,如下:

這里解釋了上面第一步中定制Win PE ISO時用的那幾個命令的作用:通過net use訪問samba共享服務器上的Windows 7 ISO鏡像內容,並啟動Windows 7 ISO鏡像中的setup.exe程序進行安裝。

  

 

客戶機器PXE啟動安裝:

在第二步中配置ISO鏡像自動值守安裝文件時,說明到那里指定的profile文件可以為空,並不是實際的生效配置文件,第三步中也說到samba共享文件中不僅僅是Windows 7 ISO鏡像解壓后的內容,還有一個名為“Autounattend.xml”的文件。事實上,到這里已經很清楚,第二步中的空白profile文件無意義,有意義的文件跑到了第三步samba共享文件中。這個文件指定Windows 7系統安裝時的參數,比如賬號,硬盤分區,防火牆等。

這個名為“Autounattend.xml”的文件正是Windows 7 無人值守自動應答文件,它的制作生成稍微有一點繁瑣,我也是花了幾天才成功。具體可以參考我的另一篇博文:Windows 7 SP1無人值守自動應答文件制作

這里提供一份我制作好的應答文件:

md5:44ee48bd4bf78548b8b7760277e2ea0f

Autounattend.xml:點此下載

 

安裝過程圖示:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM