ARM linux開發中,我們經常將主機Ubuntu設置成靜態IP。這有一些好處,譬如你的uboot的環境變量中serverip就不用每次改來改去的了。
我一直也是這麼做的,但是今天突然發現這樣會帶來很多問題。先說我碰到的情況:
做好的ubuntu和開發板,一切都ok。今天打開時突然發現以下症狀:
1、SecureCRT突然提示遠程主機拒絕連接。baidu一搜這種問題都是因為主機的ssh服務沒開啟,但是我明明開啟了啊,也用netstat驗證過了。
2、uboot中tftp來download文件總是不成功,反復重試好多次都不行。之前也有碰到過類似的情況,重新燒錄了uboot就好了。這次重新燒錄uboot還是不行。
3、不死心,再進之前燒好的linux中,使用tftp下載文件。還是提示time out而失敗。·····
打開另一個之前的虛擬機,嘗試開發板linux中tftp下載,竟然成功了。於是懷疑是虛擬機ubuntu被我搞壞了,幸好這個ubuntu之前有保存過一次,恢復到那個版本再試,還是不成功····抓狂·····
突然想到,這兩個ubuntu有個差異就是ip不同。成功的那個ubuntu是dhcp自動分配的IP,而失敗的這個則是靜態指定的IP。於是乎先記錄下來dhcp分配的這個IP,然後關掉該Ubuntu,把失敗的這個ubuntu的IP改成這個IP。再試,成功了。SecureCRT和tftp都恢復正常了。
至此,事情已經非常明晰了。自動分配的IP肯定不會IP沖突,而靜態IP呢如果因為局域網內別人比你先開機,從而在DHCP自動分配IP時使用了你這個IP,那你就悲劇了。