跳到主要內容

發表文章

Hello World!

即將要搬家,因此舊網頁內容將慢慢轉移至Blogger。 如果要存取舊網頁,可以使用以下連結: https://wiki.tonylin.idv.tw/dokuwiki/doku.php
最近的文章

Apply DriverDisk on RHEL/CentOS6

Problem 在系統自動安裝部屬時,可能有以下原因需要更新驅動: 安裝光碟搭載的kernel版本不支援新硬體。 安裝光碟搭載的kernel版本過舊。 最常遇到的問題,莫過於在更新網卡或磁碟陣列驅動了。如果使用kickstart自動部屬,在發生硬體找不到時,應會出現如下圖錯誤: 本篇主要分享我解決此問題的方法,有以下幾個步驟: 準備driver rpm。 製作driverdisk。 指定driverdisk。 調整kickstart檔案。 準備driver rpm 準備rpm目前我試了兩種方法: 直接透過rpmbuild打包Intel下載的驅動包。 自行撰寫rpm spec檔案去產生rpm檔。 透過Intel驅動包產生rpm 最初使用這方法產生的rpm包裝driverdisk,卻發現一直無法正常載入: 在使用方法二與檢查driverdisk程式碼後,發現原因主要有二: kernel-modules版本的判別: .spec的Providers宣告不滿足需求,參考程式碼 link 與 link 。 kernel-modules檔案的副檔名: 檔名需為.ko,參考程式碼 link 。 因此針對Intel驅動包內的.sepc,我做了以下修改(以ixgbe驅動為例): # 原本為Provides: %{name},修改為以下 Provides: kernel-modules > = 2.6.32- 220   # 原本為將ixgbe.ko改名為ixgbe.ko.new,我改為複製並放入檔案清單中 find lib -name "ixgbe.*o" -exec cp { } { } .new \; \ -fprintf % { _builddir } /% { name } - % { version } / file.list "/%p.new \n /%p \n " 修改後再重新產生的rpm與driverdisk就能夠正常載入驅動。 自行撰寫rpm spec去產生rpm 一開始使用方法一失敗後,並沒足夠時間追究原因,後來是學網路上教學自己寫。 製作driverdisk 我所產生的driverdisk,以iso為主;driverdisk的內容,會長這樣: rhdd3 rpms / rpms

RHEL/CentOS7在執行kickstart安裝時的DHCP Timeout設定

Problem 本篇主要說明如何在RHEL/CentOS7上設定DHCP Timeout。首先在安裝系統或找某個既有系統,觀察某張抓不到DHCP網卡的log: 以上圖測試結果,並且確認過Anaconda的source code,可以得知預設timeout為45秒。在寫本篇文章之前,已經試過了以下幾種方式且失敗: kickstart中加入–dhcptimeout。 在/etc/dhclient.conf與/etc/dhcp/dhclient.conf加入timeout。 在NetworkManager.conf加入ipv4.dhcp-timeout設定。 也透過nmcli試圖修改ipv4.dhcp-timeout設定,但在CentOS7.2上找不到此設定。 以上方法測試於CentOS7.2中。 How to resolve? 經由尋找解答與測試過程中,得知RHEL/CentOS7的安裝環境,網路是透過NetworkManager控制與設定: 而在網卡還沒正常啟動前,NetworkManager每隔一段時間就會透過dhclient重新偵測此網卡。假如你的DHCP Server有機會能在45秒內完成配置,那就不會有問題;如果不行,那請繼續看下去。經過研究一番,我在RHEL7.3 beta release note中,發現是可以在ifcfg設定檔中,加入IPV4_DHCP_TIMEOUT設定dhcp timeout: DHCP timeout in NetworkManager is configurable The faster fallback in a Dynamic Host Configuration Protocol (DHCP) negotiation is useful in case a server is not present. With this update, the user can set the value of the ipv4.dhcp-timeout property or the IPV4_DHCP_TIMEOUT option in the ifcfg files. As a result, NetworkManager waits for a response from the DHCP server only for a giv

Show NIC selection when setting the network command with the device option

 Problem  在answer file中設定網卡名稱後,安裝時會停在以下畫面: 所使用的command參數如下: network --onboot = yes --bootproto =dhcp --ipv6 =auto --device =eth1 Diagnostic Result 這樣的參數,以前試驗過是可以安裝完成的。因此在發生這個問題後,我檢查了它的debug console: 從console得知,eth1可能是沒有連接網路線或者是網路太慢而導致的問題。後來和Ivy再三確認,有問題的是有接網路線的網卡,且問題是發生在activate階段: Solution 我想既然有retry應該就有次數或者timeout限制,因此發現在Anaconda的說明文件中( link ),有提到dhcptimeout這個boot參數。看了一些人的使用範例,應該是可以直接串在isolinux.cfg中,如下: default linux ksdevice = link ip =dhcp ks =cdrom: / ks.cfg dhcptimeout = 90 然而我在RHEL/CentOS 6.7與6.8試驗後都無效。 因此我就拿了顯示的錯誤字串,問問Google大師,想找一下Anaconda source code來看一下。最後找到別人根據Anaconda code修改的版本: link ,關鍵在於setupIfaceStruct函式中的setupIfaceStruct與readNetConfig: setupIfaceStruct: 會在dhcp時設定dhcptimeout。 readNetConfig: 在writeEnabledNetInfo將timeout寫入dhclient config中;在wait_for_iface_activation內會根據timeout做retry。 再來從log與code可以得知,它讀取的檔案是answer file而不是boot command line。因此我接下來的測試,就是在answer file的network command上加入dhcptimeout: network --onboot = yes --bootproto =dhcp --ipv6 =auto --device =eth1 --dhcptimeo

Ubuntu-server在執行kickstart安裝時的DHCP Timeout設定

Problem Ubuntu在安裝過程中,會在%pre後如下圖的階段去設定網路: 而我們曾遇過幾次DHCP取不到的問題。本篇文章主要告訴你,如何去設定DHCP Timeout。 Diagnostic Result 首先是確認Ubuntu使用什麼工具去透過DHCP取得IP,通常都是使用dhclient。檢查/var/log/syslog可以確定是dhclient:(以下的圖有將timeout改為40秒) 接著就是確認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? 使用preseed 首先在isolinux.cfg的append中加入preseed檔案路徑:(以檔名test.seed為例) append file = / cdrom / test.seed initrd = / install / initrd.gz ks =cdrom: / ks.cfg 而test.seed內要包含以下設定: d-i netcfg / dhcp_timeout string 60 d-i netcfg / dhcpv6_timeout string 60 在安裝過程中,可以去檢查/etc/dhclient.conf,會改成你所設定的值: 使用udhcpc 假如不想透過preseed的方式,可以透過udhcpc。udhcpc是BusyBox內建的DHCP client程式,你可以這樣去設定timeout: udhcpc -i eno2 -T 90 -n -T是timeout;-n則是代表發生錯誤後就離開。 使用dhclient 在經過installer的網路設定階段後,dhclient套件

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 當你有兩張以上網卡且都可以連線的時候,安裝就會停住,並要求你選一張:(圖片來自於 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 / ne

Notes of SLES15 autoinstallation file

Useful configurations Disable self update SLES15在安裝之前,會先透過線上下載最新的安裝程式內容,如果不想執行這段可以用以下設定略過,如果“你沒設定”且網路連不到它也會自動略過: <general > <self_update config:type = "boolean" > false </self_update > ... </general > 如果你有設定為true,沒網路就會GG。 Disable Installing Recommended Packages/Pattern install_recommended預設為true,會安裝所有的Packages;把它disable後,就可以設定自己要安裝的packages: <software > <install_recommended config:type = "boolean" > false </install_recommended > ... </software > Know-How DVD iso SLES15後所提供的DVD iso,細分成三種用途,我以SLES15 SP1為例子: SLE-15-SP1-Installer-DVD-x86_64-GM-DVD1.iso: 安裝程式,僅提供執行安裝程式的能力。 SLE-15-SP1-Installer-DVD-x86_64-GM-DVD2.iso: Source code。 SLE-15-SP1-Packages-x86_64-GM-DVD1.iso: 所有要安裝的套件。 Addon 在answer file中,有一個add-on block可以指定要安裝的模組,這邊記錄幾個重要的模組,詳情可以參考Deployment Guide: Basesystem Module: 預設會被安裝的模組,提供了base system。 Desktop Applications Module: 提供Desktop與相關的應用程式模組。 Server Applications Module: 提供Server相關packages的模

Kickstart - HardDrive Issues, Side effects for the incomplete Intel RAID Metadata

Problem 剛好碰到有人把使用過Intel RAID的硬碟,拔起來插在另外一台上;在用KS安裝時,會出現以下訊息 檢查發現有/dev/md*映射檔案,應是偵測到有RAID資訊,但實際上是沒做Intel RAID。 How to resolve? 假如是硬碟sda,可以透過以下指令清掉RAID資訊,問題即解決。 dd if = / dev / zero of = / dev / sda bs = 512 seek =$ ( ( $ ( blockdev --getsz / dev / sda ) - 1024 ) ) count = 1024 Reference Removing RAID metadata