1,393 瀏覽數

WinXP 時代的 Linux PXE + WinPE

下面適用於 WinXP 所產生的 WinPE ,新版的會產生錯誤訊息如下:
pxe003
“INF file txtsetup.sif is corrupt or missing, status 2. Setup cannot continue. Press any key to exit.

Step 1 : 下載相關檔案
第一步就是下載 PE
而下面的是 microsoft 提供的 WinPE 2004 ,是基於 Windows XP SP2 的 WinPE,其中還包含了一些製作光碟的工具.
下載地址:http://oem.microsoft.com/downloads/worldwide/
因為我們要修改 WinPE.ISO 的內容,所以我們還需要一些 tools.通常在 /winpe 目錄下可以找到.但是如果你用的是較舊的版本沒有提供修改光碟片的相關工具,還需要下載下面的工具回來使用.
下載:Windows Automated Installation Kit (WAIK) – 目前找不到 WinXP 版的 WinPE
http://www.microsoft.com/downloads
下載後就可以開始我們的工作了.用 winimage 解開後在跟目錄下執行 STARTCD.EXE 並點選 “Windows AIK 安裝程式(W)"

Step 2 : kernel
們需要 Windows 2003 (WinXP 也可以)裡面的幾個檔案,這相當於 windows 的 kernel

  1. i386/startrom.n1_
  2. i386/setupldr.ex_
  3. i386/ntdetect.com
  4. winnt.sif

因為上面的東西都是壓縮檔所以我們還要去下載一個 Tool “cabextract" 才能解壓縮.
http://www.cabextract.org.uk/

[root@benjr ~]# cabextract /media/cdrom/i386/startrom.n1_
[root@benjr ~]# mv startrom.n12 startrom.0
[root@benjr ~]# cabextract /media/cdrom/i386/setupldr.ex_
[root@benjr ~]# mv setupldr.exe NTLDR
[root@benjr ~]# cp /media/cdrom/i386/NTDETECT.COM ntdetect.com

要特別注意大小寫問題.下面這個檔是需要手動編輯的

[root@benjr ~]# vi winnt.sif
[SetupData]
BootDevice = “ramdisk(0)"
BootPath = “\i386\system32\"
OsLoadOptions = “/noguiboot /fastdetect /minint /rdexportascd /rdpath=PE86.ISO"

並將開機所需的檔案複製到 “/tftpboot/ 目錄下

[root@benjr ~]# cp startrom.0 /tftpboot/
[root@benjr ~]# cp NTLDR /tftpboot/
[root@benjr ~]# cp ntdetect.com /tftpboot/
[root@benjr ~]# cp winnt.sif /tftpboot/

Step 3 : tftp server 的設定
1. 編輯 “/etc/xinetd.d/tftp” 並將 server 開啟

[root@benjr ~]# vi /etc/xinetd.d/tftp
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot
disable = no
per_source = 11
CPUS = 100 2
flags = IPv4
}

將 disable 設定成為 no 即可.或者你可以用下面的指令將 tftp 功能開啟

[root@benjr ~]# chkconfig tftp on

2.啟動 tftp servicee

[root@benjr ~]# service xinetd restart

Step 4 : PXE 設定檔
2.編輯 /tftpboot/linux-install/pxelinux.cfg/default (這個檔案定義了與PXE的Clients可以經由按鍵來選擇安裝的系統)

[root@benjr ~] # vi /tftpboot/linux-install/pxelinux.cfg/default
default 0
timeout 2000
F1 msgs/boot.msg
prompt 1
display msgs/boot.msg
label 0
localboot 1
label winpe
kernel startrom.0

Step 5 : DHCP Server
編輯 /etc/dhcpd.conf

[root@benjr ~]# vi /etc/dhcpd.conf
#iddns-update-style interim;
ddns-update-style none;
ignore client-updates;
allow booting;
allow bootp;
class “pxeclients" {
match if substring(option vendor-class-identifier, 0, 9) = “PXEClient";
next-server 192.10.0.1;
filename “linux-install/pxelinux.0″;
}
subnet 192.10.0.0 netmask 255.255.255.0 {
range 192.10.0.150 192.10.0.180;
option broadcast-address 192.10.0.255;
option routers 192.10.0.1;
option subnet-mask 255.255.255.0;
}

Step 6 : Samba
因為我們主要是透過 SMB(DOS 下使用 a:\net use )的方式來接網路磁碟機所以我們還要將這個目錄透過 samba 的方式分享出來。

[root@unsvr root]# vi /etc/samba/smb.conf
[global]
…
netbios name = ntinstall
guest account = guest
security = user
…
[install]
comment = Unattended
writable = no
locking = no
path = /var/ftp/install
guest ok = yes
valid users = user1

系統預設使用 \\ntinstall\install 連接網路磁碟,帳號和密碼皆為 guest。因為 net use 一定要指定名稱,所以我們的名稱解析可以透過 DNS 或 netbios name 來處理。所以我們要開始建立 guest 帳號密碼至 samba server,密碼存在 /etc/samba/smbpasswd ,但使用者必先存在於 /etc/passwd

[root@unsvr root]# adduser guest
[root@unsvr root]# passwd guest
[root@unsvr root]# smbpasswd -a guest
New SMB password:
Retype new SMB password:
Added user guest.
[root@unsvr root]# service smb restart
Starting SMB services: [ OK ]
Starting NMB services: [ OK ]

PXE and Kickstart, Automated Installations for Linux via WDS

這個網站介紹了透過 WDS 來建構 Linux PXE 的環境

http://www.ohjeah.net/2008/09/24/pxe-and-kickstart-automated-installations-for-linux-via-wds/

網友的想法

  1. 自動參照通知: WinPE + RIS / WDS | Benjr.tw

發表迴響