用Ubuntu建立一個由網路開機「載入WinPE 自動化安裝Windows OS」的環境

最初開始研究如何透過「tftp+dhcp+samba+syslinux+binlsrv@ubuntu」打造一個網路啟動系統核心之後引導至安裝 windows 2000,xp,2003 動作的環境,到由網路啟動 WinPE 環境,並在 WinPE 環境手動執行安裝作業系統。到現在這篇「PXE load Winpe and auto install os」,和上一篇不同的地方只是這次加上一些設定值和執行批次作業,讓安裝的過程更簡單方便而已。

接續上一篇的環境架構,這次的工作就是要讓 WinPE 載入後能執行執行自訂啟動腳本。而腳本基本上僅掛載網芳資料夾(包含了各式Windows系統的安裝檔資料夾)為網路磁碟,並執行網路磁碟的安裝系統選單的批次檔,提供選單讓我們可以選擇想要安裝的系統並自動安裝。

修改 winpe.wim 檔,重新建立新的 winpe.iso 。讓 PE 環境載入後,能執行我們要的批次命令。

在安裝 Windows AIK 電腦上執行

在 c:\winpe_x86\ 目錄下建立 auto_mount.bat 批次檔

net use n: \\192.168.101.1\reminst :: 掛載網路磁碟
n:\install_menu.bat :: 執行安裝選單批次檔

在 c:\winpe_x86\ 目錄下建立 startnet.cmd

wpeinit
auto_mount.bat

或是在 c:\winpe_x86\ 目錄下建立 winpeshl.ini 初始設定檔,在 Winpe.wim 並沒這個檔案需要自已建立。通常它是用來讓PE載入自訂Sell和執行應用程式的,當然也能用來執行我們的批次,但是要注意的是這句「當您結束 [命令提示字元] 視窗或自訂殼層應用程式時,Windows PE 會重新啟動。」,當PE自動重新啟動時不用覺得意外。

[LaunchApp]
AppPath = %SYSTEMDRIVE%\myshell.exe
[LaunchApps]
%SYSTEMDRIVE%\mydir\application1.exe, -option1 -option2
application2.exe, -option1 -option2

執行WinPE工具命令提示,掛載 winpe.wim 到 mount 目錄

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

將 startnet.cmd 和 auto_mount.bat 複製到 mount/ 並完成 winpe.wim 的修改

copy startnet.cmd mount\Windows\System32
copy auto_mount.bat mount\Windows\System32
imagex /unmount mount /commit

重新製做 winpe_x86.iso 光碟映像檔

copy winpe.wim iso\source
oscdimg -n -bc:\winpe_x86\etfsboot.com iso winpe_x86.iso

### 現在我們的 winpe_x86.iso 執行我們 auto_mount 的腳本了。

用 winscp 複製 winpe_x86.iso 到 ubuntu’s tftpboot 的根目錄

設定 ubuntu samba server 的分享目錄 reminst 這個目錄也同樣是 tftpboot 的根目錄 「/var/lib/tftpboot」。

我們要在這裏新增幾個目錄裏面要放系統安裝檔案,規劃大致如下:

drwxrwxr-x  9 root nogroup      4096 2012-03-29 11:23 ./
drwxr-xr-x 62 root root         4096 2012-03-19 10:21 ../
-rwxrwxr-x  1 root root        19680 2012-03-27 16:44 chain.c32*
-rwxrwxr-x  1 root root           83 2012-03-27 13:35 diskpart.script*
-rwxrwxr-x  1 root root         2105 2012-03-28 13:17 install_menu.bat*
-rwxrwxr-x  1 root root        25244 2012-03-13 15:55 memdisk*
-rwxrwxr-x  1 root root        60800 2012-03-13 15:54 menu.c32*
-rwxrwxr-x  1 root root     28784640 2012-03-20 11:40 nonxpe.iso*
-rwxrwxr-x  1 root root        26742 2012-03-13 15:55 pxelinux.0*
drwxrwxr-x  2 root root         4096 2012-03-28 13:38 pxelinux.cfg/
-rwxrwxr-x  1 root root          623 2012-03-19 14:56 tftpd.remap*
drwxrwxr-x  3 root root         4096 2012-03-28 11:25 win2k/
drwxrwxr-x  3 root root         4096 2012-03-28 08:43 win2k3/
drwxrwxr-x  7 root root      1024000 2012-03-19 15:53 win2k8/
-rwxrwxr-x  1 root root          113 2012-03-28 10:12 win2k_add_product_id.reg*
-rwxrwxr-x  1 root root    213225472 2012-03-20 13:56 winpe_x64.iso*
-rwxrwxr-x  1 root root    197928960 2012-03-27 11:11 winpe_x86.iso*
drwxrwxr-x  7 root root         4096 2012-03-27 14:54 winxp_cht/
drwxrwxr-x  3 root root         4096 2012-03-15 17:05 winxp_en/
drwxrwxr-x  8 root root         4096 2012-03-27 15:18 winxp_jp/

以建立 Windows XP CHT 安裝資料夾為例:

建立 winxp_cht 目錄

sudo mkdir /var/lib/tftpboot/winxp_cht

放入 windows xp 安裝光碟,將光碟裏所有檔案全部複製到 winxp_cht 目錄裏。並設定檔案存取權為「775」。(windowsxp_disk 請打上你自已的安裝光碟名稱)

sudo cp -R /media/windowsxp_disk/* /var/lib/tftpboot/winxp_cht
sudo chmod -R 775 /var/lib/tftpboot/winxp_cht/

以上僅為XPCHT的安裝目錄,可用同樣的方法建立其它OS的安裝目錄。

建立安裝選單批次檔 install_menu.bat 放在 /var/lib/tftpboot/ 目錄下,如果當你要自已建立選單的執行命令時最好在 Winpe 的環境下測試可不可行。

vim /var/lib/tftpboot/install_menu.bat

### /var/lib/tftpboot/install_menu.bat ##############################
@echo off

:start ::顯示選單資訊
echo Install Menu for windows 2000 / xp / 2003
echo ===========================================
echo 1. Install Windows XP CHT SP3
echo 2. Install Windows XP JP SP3
echo 3. Install Windows XP EN SP3
echo 4. Install Windows 2003 Standard CHT
echo 5. Install Windows 2000 Standard CHT
echo 9. Exit Menu and Reboot
echo ===========================================
echo.

:: 用變數 %choice% 來接收鍵盤所輸入的數字,判斷程式該跳到哪邊去繼續執行
:: 也就是選擇要安裝哪一套作業系統,就跑去執行那段指令而已。
set /p choice=Please Choice a function for running:
if %choice% == 9 goto reboot
if %choice% == 5 goto windows2000s
if %choice% == 4 goto windows2003s
if %choice% == 3 goto windowsxpen
if %choice% == 2 goto windowsxpjp
if %choice% == 1 goto windowsxpcht

goto start ::若沒有符合任何條件則回到 label:start 重新再來一遍

:windows2000s ::安裝 windows 2000 從這裏開始
echo start install windows 2000
N: ::切換到 N 磁碟槽,由auto_mount.bat 掛起的網路磁碟
cd \ ::到 N 的根目錄下
if exist c:\ goto format ::判斷硬碟是否已經有 C: 分割區
diskpart /s diskpart.script ::沒有 C: 分割區,將第一顆硬碟全部劃為 C: 分割區
:format
echo Y |format c: /fs:ntfs /q ::快速格式化 C: 分割區
regedit /s win2k_add_product_id.reg ::這是安裝 win2000 才需要的步驟,要修改PE環境註冊檔,將產品編號改為win2000
bootsect.exe /nt52 c: /force ::建立32位元系統的啟動磁區
win2k\i386\winnt32.exe /syspart:c: /makelocalsource /unattend:win2k\win2k.sif ::開始複製安裝檔到硬碟,安裝時會依照 unattend 設定。
goto exit

:windows2003s
echo start install windows 2003 en
N:
cd \
if exist c:\ goto format
diskpart /s diskpart.script
:format
echo Y |format c: /fs:ntfs /q
bootsect.exe /nt52 c: /force
win2k3\i386\winnt32.exe /syspart:c: /makelocalsource /unattend:win2k3\win2k3.sif
exit

:windowsxpen
echo start install windows xp en
N:
cd \
if exist c:\ goto format
diskpart /s diskpart.script
:format
echo Y |format c: /fs:ntfs /q
bootsect.exe /nt52 c: /force
winxp_en\i386\winnt32.exe /syspart:c: /makelocalsource /unattend:winxp_en\winxp.sif
exit

:windowsxpjp
echo start install windows xp jp
N:
cd \
if exist c:\ goto format
diskpart /s diskpart.script
:format
echo Y |format c: /fs:ntfs /q
bootsect.exe /nt52 c: /force
winxp_jp\i386\winnt32.exe /syspart:c: /makelocalsource /unattend:winxp_jp\winxp.sif
exit

:windowsxpcht
echo start install windows xp cht
N:
cd \
if exist c:\ goto format
diskpart /s diskpart.script
:format
echo Y |format c: /fs:ntfs /q
bootsect.exe /nt52 c: /force
winxp_cht\i386\winnt32.exe /syspart:c: /makelocalsource /unattend:winxp_cht\winxp.sif
exit

:exit ::告知安裝檔已複製完成,機器將重新開機並繼續安裝作業系統
echo WinPE will restart this machine and Boot from HD to continue install OS .
pause

:reboot ::重新開機
exit
####################################################################

建立 Diskpart 自動執行腳本,這裏也可以設定分割區的大小

vim /var/lib/tftpboot/diskpart.script

### /var/lib/tftpboot/diskpart.script ##############################
select disk 0
create partition primary
select partition 1
assign letter=c:
exit
####################################################################

建立 win2k_add_product_id.reg ,修改 PE 環境註冊表符合 win2000 的安裝條件

vim /var/lib/tftpboot/win2k_add_product_id.reg

### /var/lib/tftpboot/win2k_add_product_id.reg #####################
REGEDIT4
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion]
"ProductID"="52430-270-9251074-05396"
####################################################################

建立 winxxx.sif 自動安裝應答檔

vim /var/lib/tftpboot/winxp_cht/winxp.sif

### /var/lib/tftpboot/winxp_cht/winxp.sif #####################
;SetupMgrTag
[Data]
    AutoPartition=1
    MsDosInitiated="1"
    UnattendedInstall="Yes"

[Unattended]
    UnattendMode=FullUnattended
    OemSkipEula=Yes
    OemPreinstall=Yes
    TargetPath=\WINDOWS
    FileSystem=ConvertNTFS
    NtUpgrade=No
    OverwriteOemFilesOnUpgrade=No

[GuiUnattended]
    AdminPassword="xxxxxxxxxx"
    EncryptedAdminPassword=NO
    OEMSkipRegional=1
    TimeZone=220
    OemSkipWelcome=1

[UserData]
    ProductKey=XXXXX-XXXXX-XXXXX-XXXXX-XXXXX
    FullName="toyoink-ct"
    OrgName="toyoink-ct"
    ComputerName=%MACHINENAME%

[TapiLocation]
    CountryCode=886

[RegionalSettings]
    LanguageGroup=7,9,8,10

[Identification]
    JoinDomain=%MACHINEDOMAIN%
    DoOldStyleDomainJoin=Yes

[Networking]
    InstallDefaultComponents=Yes
    ProcessPageSections=Yes

[RemoteInstall]
    Repartition=NO

####################################################################

當上述這些都完善後,就已經可以透過網路啟動 PE 安裝 Windows 了。

安裝64位元的作業系統

當然這僅有對 X86 系統的安裝說明罷了,如果要安裝 X64 的系統則需要介由 X64 的PE環境來安裝。若想運行 WinPE_X64 則電腦上至少要有 1GB 的記憶,和運行 WinPE X86 的電腦的記憶體只要 512MB 相差了一倍。

建立 X64 PE的映像檔,最好是能在 Windows 64 位元的電腦上建立。因為我在安裝 VistaPE2.0 的 Windows XP 上不管怎麼建立做出來的映像檔(有封裝網路卡驅動程式)都無發開機。直到在 Windows 7 64 位元的電腦上,使用 Win7PE3.0 來建立才算正常產出有封裝網卡驅動的映像檔。

Win7PE3.0 要封裝驅動程式,必須用 DISM 指令執行。而 WinVistaPE2.0 則是用 PEIMG 進行封裝動作。

至於該如何安裝64位元的系統,其實還算蠻簡單的。

只需要將 windows 2008/vista/7 64 位元 安裝光碟內的資料全部複製到 samba server 資享目錄下。

接著設定要安裝的電腦由網路開機選擇進入到 winpe x64 的 PE 環境,掛載網路磁碟 samba server 的系統安裝目錄。

執行網路磁碟上的 setup.exe 安裝檔,接著就可以開始安裝 Windows OS 了。

參考來源:
快速裝機 Windows XP自動安裝全攻略
部署逐步解說
逐步解說:使用 Windows 安裝程式部署映像

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s