Basic Process
在RHEL/CentOS、VMWare ESXI與SLES的自動安裝系統流程中,都有pre與post階段。Ubuntu的kickstart檔案,也提供了pre與post區塊;但Ubuntu與其它distribution最大差異在於: pre階段並沒載入網卡驅動。它的流程像這樣:
- Run pre script。
- Detect HW。
- Install OS。
- Run post script。
在Detect HW階段,會去偵測並設定網卡。
Multiple NICs Warning
當你有兩張以上網卡且都可以連線的時候,安裝就會停住,並要求你選一張:(圖片來自於link)
原先我是在preseed檔案中宣告了:
d-i netcfg/choose_interface select auto
但它卻很惱殘的選第一張且無法連線的網卡。後來爬文發現這是一個bug,所以改在isolinux.cfg或grub.cfg中串入以下參數:
netcfg/choose_interface=auto
以isolinux.cfg為例:
append file=/cdrom/example.seed initrd=/install/initrd.gz ks=cdrom:/ks.cfg netcfg/choose_interface=auto
如此就會自動挑一張可以用的或者是你在kickstart檔案中所宣告的device名稱。
Config Multiple NICs
在RHEL/CentOS中,面對多張需要被設定的網卡,你可以在kickstart檔案中,透過多個network指令與–device參數去完成設定。而在Ubuntu上,即使你設定了多個network指令,也只有最後一個會生效。這意味著以下的內容只有em2會在第二階段被設定:
network --bootproto=dhcp --device=em1 network --bootproto=dhcp --device=em2
這個問題我目前的解決方式是在%post的區塊去設定網卡。我提供設定dhcp的方式給大家參考:
%post --interpreter=/bin/bash FILE_NET_CONFIG=/etc/network/interfaces network_devices=($(ls -I lo /sys/class/net)) for device in ${network_devices[@]}; do check_config=`cat $FILE_NET_CONFIG | grep $device` if [ ! "$check_config" ]; then echo auto $device >> $FILE_NET_CONFIG echo iface $device inet dhcp >> $FILE_NET_CONFIG dhclient -r $device dhclient $device ifconfig $device down status="up"; until [ -z "$status" ] do status=$(ifconfig |grep -e '^$device ') sleep 1 done ifconfig $device up fi done
設定static ip的方式等到我有做再分享。
留言
張貼留言