使用Clonezill還原M$ Windows後,如何讓複製出來的電腦啟動後用的hostname是不一樣的? |
請參考 "drbl-winRoll 安裝"。drbl-winRoll 提供整合且便潔的解決工具。
以下為舊有資料,如果你仍需參考:
Clonezilla無法直接修改M$ Windows partition中的檔案來做到這樣的目的,所以您必須在做母片(指當範本的機器)之前,先在該台電腦植入一個程式,以便那個映像檔複製給其他台電腦後,那些電腦自動開機後改hostname。作法如下:
步驟一. 安裝Cygwin
(1). install cygwin
http://sources.redhat.com/cygwin
http://sources.redhat.com/cygwin/setup.exe
務必安裝
(a). Admin -> cygrunsrv, shutdown
(b). Net -> openssh
其他就照預設的.
(2). 設定環境變數,選定NTSEC
開始->控制台->系統(若是一般user,請點選,然後按shift+mouse 右鍵A選執行為,然後輸入root的帳號及密碼)->進階->環境變數->系統變數->新增
CYGWIN=ntsec tty
以及在PATH的地方,在最後面加上";c\cygwin\bin",也就是變成例如這樣:
%SystemRoot%\system32;%SystemRoot%;c:\cygwin\bin
註:
以上的"CYGWIN=ntsec tty"是將security上設為與NT的security相關,也就是user的權限等是依照NT的user權限來開。
注意:檔案權限等只有在檔案系統為NTFS時才有用,若為FAT/FAT32就沒有檔案權限的關係全部只與login的user有關
(3). 安裝完後執行
ssh-host-config
會問你要不要安裝成service,選yes
步驟二. 要讓開機之後自動將機器的hostname改成唯一的一個名字:
(1). 點這裡下載chkhostname.reg, chkname.sh,以及wsname.exe。然後在M$ Windows中,將chkhostname.reg點兩下,這會在開機的時候執行一個程式chkname.sh,來判斷hostname是否不同,如果不同就透過wsname.exe改名,經hostname改成IP addresss轉換過來的名字(例如192-168-1-1)
點選完chkhostname.reg之後,請在M$ Windows下執行regedit,看一下其中的
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
是否有chkname,沒有的話,就是您下載下來的chkhostname.reg檔案並不是unicode,請轉成unicode,然後重新點兩下chkhostname.reg
(2). 將chkname.sh與wsname.exe copy到c:/cygwin/bin下,
(3). 將機器設成autologin,這樣重新開機後才能自動執行chkname.sh
----------------------------------------------------------------------
這裡可以參考微軟網頁中的說明:
http://support.microsoft.com/default.aspx?scid=kb;en-us;315231
(a). 選開始->執行->如果是WinXP,請輸入"control userpasswords2",如果是Win2K請輸入"control userpasswords",然後選確定.
(b). 不要勾選"必須輸入使用者名稱和密碼,才能使用這台電腦",這樣就可以自動登入.
----------------------------------------------------------------------
(4). 如果您想要從DRBL server直接下指令來控制用戶端的電腦(指的是作業系統是M$ Windows),您必須完成這個步驟以及步驟(5)
在DRBL server產生root的ssh key (如果你還沒產生的話)
ssh-keygen -d
然後就會在.ssh下產生兩個檔
id_dsa id_dsa.pub
然後將id_dsa.pub 傳到範本機器中,管理者(administrator)的家目錄下的.ssh目錄(一般是c:\cygwin\home\Administrator\.ssh\)中,存成
authorized_keys
(.ssh目錄如果你沒用administrator帳號執行過ssh的話,要自己建)
另外,建議加一個root帳號,權限和Administrtor一樣,也將
id_dsa.pub傳到cygwin機器中的root/.ssh/中,存成authorized_keys
(5). 現在可以試看看是否可以由server端下指令直接執行範本機器,例如:
ssh administrator@computer_M_IP date
computer_M_IP指的是範本機器的IP(照上例的話,這裡就不需輸入密碼)。如果會顯示出範本機器的時間就代表您成功了。
|
註1:
chkhostname.reg內容(務必確認為Unicode),注意:這個語法只符合M$ Win 2k, XP:
----------------------------------------------------------------------
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce]
"chkname"="c:\\cygwin\\bin\\sh.exe c:\\cygwin\\bin\\chkname.sh"
----------------------------------------------------------------------
chkname.sh內容
----------------------------------------------------------------------
#!/bin/sh
IP=$(ipconfig |grep "IP Address"|cut -d":" -f2|sed -e "s/\./-/g" -e "s/ //g")
echo "IP:$IP"
while [ "$IP" = "0-0-0-0" -o "$(echo $IP | cut -d- -f1)" = "169" ]
do
ipconfig /renew
IP=$(ipconfig |grep "IP Address"|cut -d":" -f2|sed -e "s/\./-/g" -e "s/ //g")
echo "IP:$IP"
done
HNAME=$(hostname)
echo "Hostname:$HNAME"
if [ "$HNAME" != "$IP" ]; then
echo "The hostname is not the right one... we will change it!"
echo "Then reboot the machine to make it work!"
sleep 5
wsname.exe /N:%IP /REBOOT
fi
----------------------------------------------------------------------
wsname.exe可以在這裡下載:
http://mystuff.clarke.co.nz/
----------------------------------------------------------------------
註2:
如果要在server強迫reboot or shutdown
在DRBL server中:
下指令將Client reboot:
a. client為M$ windows機器
drbl-doit -u administartor /usr/bin/reboot -f now
b. client為DRBL client機器
drbl-doit -u root /sbin/reboot
下指令將Client關機:
a. client為M$ windows機器
drbl-doit -u administartor /usr/bin/shutdown -f now
b. client為DRBL client機器
drbl-doit -u root /sbin/shutdown -f now
----------------------------------------------------------------------
註3.
如果不想用regedit的方式來自動執行,或是在Win98中,可以放一個批次檔到 開始->程式集->啟動中,例如此批次檔為run_ckhn.bat
---------------------------------------------
set PATH=%PATH%;c:\cygwin\sbin;c:\cygwin\bin
c:\cygwin\bin\sh.exe c:\cygwin\bin\chkname.sh
---------------------------------------------
不過這樣就是每次使用者登入的時候都會執行這個批次檔。
|
|