差異處

這裏顯示兩個版本的差異處。

連向這個比對檢視

osprovision:kickstart:ubuntu:networkproblem:basic [2018/11/23 23:33]
tony
osprovision:kickstart:ubuntu:networkproblem:basic [2023/06/25 09:48]
行 1: 行 1:
-{{tag>​Ubuntu kickstart Os_Provision}} 
-====== Ubuntu-server Network Setting Of The Automated Installation ====== 
-===== 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 ===== 
-當你有兩張以上網卡且都可以連線的時候,安裝就會停住,並要求你選一張:​(圖片來自於[[http://​askubuntu.com/​questions/​617558/​preseed-doesnt-automatically-select-network-interface-on-ubuntu-14-04-automate|link]])\\ 
-{{:​osprovision:​kickstart:​ubuntu:​networkproblem:​ubuntu_config_network.png?​600|}}\\ 
-原先我是在preseed檔案中宣告了:​ 
-<code bash> 
-d-i netcfg/​choose_interface select auto 
-</​code>​ 
-但它卻很惱殘的選第一張且無法連線的網卡。後來爬文發現這是一個bug,所以改在isolinux.cfg或grub.cfg中串入以下參數:​ 
-<code bash> 
-netcfg/​choose_interface=auto 
-</​code>​ 
-以isolinux.cfg為例:​ 
-<code bash> 
-append file=/​cdrom/​example.seed ​ initrd=/​install/​initrd.gz ks=cdrom:/​ks.cfg netcfg/​choose_interface=auto 
-</​code>​ 
-如此就會自動挑一張可以用的或者是你在kickstart檔案中所宣告的device名稱。 
-===== Config Multiple NICs ===== 
-在RHEL/​CentOS中,面對多張需要被設定的網卡,你可以在kickstart檔案中,透過多個network指令與--device參數去完成設定。而在Ubuntu上,即使你設定了多個network指令,也只有最後一個會生效。這意味著以下的內容只有em2會在第二階段被設定:​ 
-<code bash> 
-network --bootproto=dhcp --device=em1 
-network --bootproto=dhcp --device=em2 
-</​code>​ 
-這個問題我目前的解決方式是在%post的區塊去設定網卡。我提供設定dhcp的方式給大家參考:​ 
-<code bash> 
-%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 
-</​code>​ 
-設定static ip的方式等到我有做再分享。 
-===== Reference ===== 
-  * [[http://​askubuntu.com/​questions/​617558/​preseed-doesnt-automatically-select-network-interface-on-ubuntu-14-04-automate|automatically select network interface problem]]