差異處
這裏顯示兩個版本的差異處。
Both sides previous revision 前次修改 下次修改 | 前次修改 | ||
osprovision:kickstart:ubuntu:networkproblem:dhcptimeout [2016/10/06 11:10] tony |
osprovision:kickstart:ubuntu:networkproblem:dhcptimeout [2023/06/25 09:48] (目前版本) |
||
---|---|---|---|
行 2: | 行 2: | ||
====== Ubuntu-server在執行kickstart安裝時的DHCP Timeout設定 ====== | ====== Ubuntu-server在執行kickstart安裝時的DHCP Timeout設定 ====== | ||
===== Problem ===== | ===== Problem ===== | ||
- | Ubuntu在安裝過程中,會在這個階段去設定網路:\\ | + | Ubuntu在安裝過程中,會在%pre後如下圖的階段去設定網路:\\ |
{{:osprovision:kickstart:ubuntu:networkproblem:ubnutu_config_dhcp.png|}}\\ | {{:osprovision:kickstart:ubuntu:networkproblem:ubnutu_config_dhcp.png|}}\\ | ||
而我們曾遇過幾次DHCP取不到的問題。本篇文章主要告訴你,如何去設定DHCP Timeout。 | 而我們曾遇過幾次DHCP取不到的問題。本篇文章主要告訴你,如何去設定DHCP Timeout。 | ||
===== Diagnostic Result ===== | ===== Diagnostic Result ===== | ||
+ | 首先是確認Ubuntu使用什麼工具去透過DHCP取得IP,通常都是使用dhclient。檢查/var/log/syslog可以確定是dhclient:(以下的圖有將timeout改為40秒)\\ | ||
+ | {{:osprovision:kickstart:ubuntu:networkproblem:ubuntu_discover_dhclient_duration.png|}}\\ | ||
+ | 接著就是確認dhclient設定檔。通常dhclient設定檔會放在/etc/dhclient.conf或/etc/dhcp/dhclient.conf中,而在整個安裝過程中,你可能會找到三個dhclient設定檔: | ||
+ | - /mnt/etc/dhcp/dhclient.conf | ||
+ | - /target/etc/dhcp/dhclient.conf | ||
+ | - /etc/dhclient.conf | ||
+ | 第一個是安裝來源(如光碟)所攜帶的;第二個是安裝完系統上的;第三個則是安裝環境使用的,必須kickstart中network使用dhcp才會出現。此外,檢查/etc/dhclient.conf可以發現預設的timeout為30秒。 | ||
===== How to resolve? ===== | ===== How to resolve? ===== | ||
+ | ==== 使用preseed ==== | ||
+ | 首先在isolinux.cfg的append中加入preseed檔案路徑:(以檔名test.seed為例) | ||
+ | <code bash> | ||
+ | append file=/cdrom/test.seed initrd=/install/initrd.gz ks=cdrom:/ks.cfg | ||
+ | </code> | ||
+ | 而test.seed內要包含以下設定: | ||
+ | <code bash> | ||
+ | d-i netcfg/dhcp_timeout string 60 | ||
+ | d-i netcfg/dhcpv6_timeout string 60 | ||
+ | </code> | ||
+ | 在安裝過程中,可以去檢查/etc/dhclient.conf,會改成你所設定的值:\\ | ||
+ | {{:osprovision:kickstart:ubuntu:networkproblem:ubuntu_dhclient_conf.png|}} | ||
+ | ==== 使用udhcpc ==== | ||
+ | 假如不想透過preseed的方式,可以透過udhcpc。udhcpc是BusyBox內建的DHCP client程式,你可以這樣去設定timeout: | ||
+ | <code bash> | ||
+ | udhcpc -i eno2 -T 90 -n | ||
+ | </code> | ||
+ | -T是timeout;-n則是代表發生錯誤後就離開。 | ||
+ | ==== 使用dhclient ==== | ||
+ | 在經過installer的網路設定階段後,dhclient套件就會被放到安裝系統中。而如果要使用dhclient去偵測網路,必須注意執行的角色。我們來討論以下兩種情況: | ||
+ | - 無chroot: %post有宣告--nochroot。 | ||
+ | - 有chroot: %port沒宣告--nochroot的預設值。 | ||
+ | 在第一種情況下,經過試驗且沒特別指定就是30秒,可以透過-cf參數指定dhclient.conf;而第二種情況下,會使用/target/etc/dhcp/dhclient.conf中的timeout,預設為300秒。 | ||
===== Reference ===== | ===== Reference ===== | ||
* [[https://www.debian.org/releases/lenny/example-preseed.txt|example-preseed]] | * [[https://www.debian.org/releases/lenny/example-preseed.txt|example-preseed]] | ||
* [[http://felix-lin.com/linux/busybox-%E6%87%89%E7%94%A8-udhcpc|udhcpc的使用]] | * [[http://felix-lin.com/linux/busybox-%E6%87%89%E7%94%A8-udhcpc|udhcpc的使用]] | ||
+ | ===== ===== | ||
+ | ---- | ||
+ | \\ | ||
+ | ~~DISQUS~~ | ||