今年有一個工作是要撰寫 kickstart 自動安裝設定檔(裡面安裝完rhel 5 之後會自動安裝我們的一些應用程式)然後給廠商去全台灣跑透透更新現有的機器(課長想要這個過程全自動,也就是最好是不要讓廠商再手動鍵入指令安裝)。
本來想說蠻簡單的…沒想到….事情不是憨人想的那麼簡單 T_T 主要是測一次要好久…(等於要重裝一次,在vm 上測最少時間也要20min左右) 加上 post區塊的程式碼很難debug。後來我才查到可以在安裝的時候按alt+f3 看到詳細的安裝過程(不過訊息實在是一閃即逝,這個過程跟古代某位神射手看紡織機上的飛梭來鍛鍊眼力的過程是一樣的),alt+f2 則可以有個tty 。此外網路上也查到可以重導std包裹%post 區塊來把過程寫到文字檔中:
%post
(
do your stuff here
) 1>/root/kickstart-post-install.log 2>&1
不過我測起來是沒有作用的…. =.= 反而原本的都不會跑了。後來我覺得這個小案子中 我一定是塞到爆炸….
因為要裝得軟體原始檔就有3xx,所以肯定是無法封在原本的vcd中。於是就剩下兩個方法:從網路上抓 or 包成dvd(外接光碟機)。
方案一: 透過網路抓取,安裝程式碼寫到kickstart 的%post 區塊。
這邊一直卡在網路不通,一直以為是我打錯設定,不停地反覆查看(不過重開機後就通了)。後來才想到可能是網卡沒啟動… =.=…老天爺…。
所以要加上
/etc/init.d/networking start –force
這樣網路就會通了,不過後來我到家裡附近的實機去測….發現居然網路不通…orz(在組織裡面有台一模一樣的機器那時候測試是通得阿!!!!)。
現場機器的 cdrom+floppy 全部壞光光… 我裝kickstart 的floppy 放進去一拿出來居然滿是灰塵!!! 這就是所謂的白floppy 進,黑floppy出嗎…. 所以我根本無法現場改… =.= 此外光是讓它降尊紆貴來讀我的pioneer 外接光碟機就搞了一個鐘頭…… 這的事愛讀不讀的 有時候又讀不到,我那天真的受夠大廠牌伺服器的臉色。
網路的話,重開機就好了,但是這樣給廠商去裝變數實在太大,所以此路不通,走另外一條。
方案二:封在dvd裡
我在這邊採取的解法是把在%post區塊把安裝檔從cdrom 下載到 系統中,然後把安裝指令寫到rc.local ,開機的時候安裝,裝好之後再把自己的指令移除。不過這邊又遇到幾個問題。
1. 你得跑在 –nochroot 才有辦法讀到光碟機
2. 該死的rhel 會在跑 %post 之前就把光碟機退出去,就算我下了 reject -T 把托盤收回去,它還是不願意認領那邊光碟片(也就是說 ls /dev/cdrom 沒有東西….)。基本上這時候的rhel 擺出的是六親不認的關卡,他認為退出去的光碟片像是嫁出去的女兒( a.k.a 潑出去的水)。
2.1 所以 你得修改原本的rhel dvd中的安裝印象檔中的指令檔….. 。讓它知道誰是老大,阿 不是 是讓他在跑完%post 之後才退出光碟機。這邊很麻煩。步驟如下:
- 先把rhel dvd 作成 iso 檔
- mount iso 到 /tmp/rhel5
- copy * to newiso/
- mount -o,loop newiso/images/stage2.img /tmp/stage2/
- copy /tmp/stage2/* newstage2/
- 修改 newstage2/usr/lib/anaconda/dispatch.py 把裡面的
(“methodcomplete”, doMethodComplete, ),
(“dopostaction”, doPostAction, ),
改成
(“dopostaction”, doPostAction, ),
(“methodcomplete”, doMethodComplete, ),
好了之後就可以開始封裝了 cd newstages/ && mkfs.cramfs . ../stage2.img
塞回原本的目錄 cp stage2.img newiso/images/
ok done, 封好
mkisofs -o rhel5.iso -b isolinux.bin -c boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -T newiso/
燒出來就可以了,如果你還有想放程式進去也可以在這邊塞進去喔~~~
事情終於結束了耶~~~~ 才怪…. 禍不單行的啦~~~
3. 到實機上測試的組合有 floppy(kickstart)+外接dvd & 外接dvd 單槍匹馬
3.1 floppy + 外接dvd : 好樣的,透過外接dvd開機,然後會把機器上得光碟托盤退出來,跟我說找不到安裝光碟,我要不是脾氣好一定指著你的鼻子罵說:「你是瞎了阿,你不是就從外接dvd開機的,現在還跟我要光碟片。」無解….. ,網路上查到的原因有些是說換個孔 or 有時候就會好…@@ 。反正我就把內建光碟機拔掉,不過事情還是沒完,這是機器的逆襲。
3.1.1 它還是會跟你說找不到媒體,問你要用哪種方式安裝(hd,network…)。不要理它胡言亂語,直接esc 跳過。
3.2 外接dvd 單槍上陣: 當你鍵入 linux ks=cdrom://ks/xxx.cfg 的時候會正常開始跑,然後又會跟你說找不到kickstart檔要你鍵入正確的路徑。這時候機器處於敬酒不吃吃罰酒的狀態,enter連發 它就會找到了,你說,它是不是欠揍。這場景就像是你炒了盤好吃的炒飯給它吃,它跟你說:「這看起來好難吃,可以吃得東西在哪裡?」 然後你就把它的頭壓到飯裡面。它就會乖乖吃了。
.我這一個月來的血淚史阿….. 應該在此處完結了….. 真是搞死我了…orz 人太弱就是慘
最新留言