跳到主要內容

發表文章

OS Provision

  Kickstart - Common Issues HardDrive Issues - Side effects for the incomplete Intel RAID Metadata RHEL/CentOS 自動安裝中斷 - 顯示選擇網卡 Show NIC selection when setting the network command with the device option | dhcptimeout DHCP Timeout RHEL/CentOS6 RHEL/CentOS7 DriverDisk Apply DriverDisk on RHEL/CentOS6 Ubuntu-server Ubuntu/Debian本身所提供的自動安裝系統是透過preseed,而Kickstart compatibility project也打造了透過kickstart的方式讓你自動安裝系統。然而某些行為並無法單純使用kickstart完成,因此使用了preseed+kickstart的做法來完成我們需求。 Ubuntu-server的Provision已完成一段時日,待有閒會慢慢記錄一些技術細節。 Ubuntu-desktop無法使用kickstart部屬。 22.04已把pressed移除: link ,改用cloud.init。 Network Setting DHCP Timeout Setting VMWare ESXI About the Answer File About Boot.cfg Config syslog and firewall Debug常用指令 ESXi 8.0 因為安全性的提升,預設會禁止非安裝程式相關的執行檔執行。如果要關掉這個設定可以執行: localcli system settings advanced set -o / User / execInstalledOnly -i 0 # Query esxcli system settings advanced list -o / User / execInstalledOnly Reference: link , link Known Issues network command僅支援一個,如果不是透過script的方式,網卡只能設定一組。 ...

Windows環境變數PATH長度限制

Problem 某天同事和我說,測試系統怪怪的,在命令提示字元中輸入ipconfig之類的指令都會出現找不到的錯誤訊息。我聽到就想到要檢查環境變數,沒想到連環境變數視窗都無法打開: Root Cause & How to resolve? 接著我直接到windows system32找執行檔: 執行後發現一堆環境變數消失了: 會發生這個問題,可能與我們的程式有修改環境變數有關。於是我推測是Path長度影響的,所以我實驗將長度改到大於2048後,就會出現command找不到的問題,但此時還不會有環境變數消失的問題;接著我就把長度改到4096之後,就發生環境變數消失的問題了。 後來根據這個現象找到這篇 文章 ,得知長度過長會讓windows產生不正常的現象。 最後透過registry將PATH中,不必要的東西改掉就回復正常了。

How to identify OS Type of the ISO image?

SLES 查看根目錄下的media.1/products,SLES12: / SLES12-SP1 12.1-0 而位元種類判別可以看是否有boot/x86_64資料夾。 Ubuntu server 查看根目錄下的.disk/info,Ubuntu-Server 14.04.3: Ubuntu-Server 14.04.3 LTS "Trusty Tahr" - Beta i386 (20150805) VMWare ESXI 可以查看根目錄的.DISCINFO,ESXI5.5 U2: ESXi Version: 5.5.0-2.33.2068190 ESXI6.0 U2: ESXi Version: 6.0.0-2.34.3620759 在某個版本後的VMWare ESXI只支援64位元版本,可參考 link 。 CentOS(EOL) 可查看根目錄的.treeinfo,CentOS6.7: [general] version = 6.7 arch = x86_64 family = CentOS packagedir = timestamp = 1438724250.79 discnum = 1 variant = totaldiscs = 1 CentOS7: [general] name = CentOS-7 family = CentOS timestamp = 1449700442.21 variant = version = 7 packagedir = arch = x86_64

How to map the MegaRAID VirtualDrive to the OS Path?

Linux 執行storcli取得SCSI NAA ID內容,並到/dev/disk/by-id下找對應的WWN,最後根據路徑的實際mapping就可以找到對應的OS PATH。 storcli / call / vall show all Windows Windows上有幾種作法,目前第一種作法是確定可行,第二種和第三種還在反證中或找明確文件: 與smartctl比對 序號反轉 使用PCI資訊 以下是我的範例: smartctl smartctl的輸出中,有個Logical Unit Id會與SCSI NAA ID對應: 序號反轉 0x60030480070a14001dd43d642574735c # SCSI NA ID 030480070a14001dd43d642574735c # remove 0x60,6為IEEE registered extended format 5c747425643dd41d00140a07800403 # 以byte為單位反轉030480070a14001dd43d642574735c則為序號少開頭兩個0 序號可以到WMI中的Win32_DiskDrive中取得: 假如你是使用diskid32去取序號,則是將030480070a14001dd43d642574735c字串反轉。 PCI 這方法只是推測,假如說LSI Card是在bus且有兩個virtual drive(ID為0與1),在Win32_DiskDrive中的PNPDeviceID如下: PNPDeviceID: SCSI\DISK&VEN_SMC&PROD_LSI2208\5&25F6E07A&1&010000 PNPDeviceID: SCSI\DISK&VEN_SMC&PROD_LSI2208\5&25F6E07A&1&010100 尾巴的格式可能為1.0.0,也可能為010000;第一個byte應該就是bus,第二個就是fun也就是virtual drive id,第三個不重要省略。這個方法還需要測試與找明確證據。 Summary 在windows與liunx上最一致的做法,是藉由storcli與smartctl的比對,去找出VD與OS Path的對應;但要注...

Digest Authentication

Sequence Client對Resource發存取請求。 Server回應Header WWW-Authenticate: Digest realm、qop、nonce與Opaque。 Client以realm、nonce與Opaque做驗證。 Server回應驗證結果。 realm: 提示user此resource該輸入的account與password。 qop: quality of protection,決定驗證字串的表達方式。步驟二中,server應提供所支援的方式,包含auth與auth-int。 nonce: 用於某次請求的字串。可能是個timestamp。 opaque: 詳細用途不曉得。根據rfc2617中表達內容,像是一種server的metadata。 步驟三中,在給server request header中的response ,會根據qop而有所不同。可參考link中的Overview。另外附加的nonceCount與clientNonce,是由client所控制決定,用來避免Chosen Plaintext attacks。Server可根據內容決定驗證結果。 在spring-securiry-web 3.2.5版本中,僅支援qop=auth,其中nonceCount與clientNonce只要與response對得起來,並不會另外做特別驗證。 Client Tool的使用 cURL curl --digest -u "user:passwd" http: // request_url Postman 與cURL最大差別在於要發兩次request,一次是為了拿nonce,一次是驗證並拿回結果。 針對resource的URL發一次request。 從header內容中拿取realm與nonce。如果有opaque也要拿出來用。 填至Digest Auth表單中,並點擊Refresh headers。Postman會自動幫你算出response內容。 發出請求。 Reference Nonce Digest Access Authentication 用 PHP 實現 HTTP 身份驗證 HTTP Digest Authentication: Does the server store plaintext pas...

Let's Encrypt

Introduction 原先我使用StartSSL的免費Certificate在我的web server上,後來因為此篇 新聞 的原因,導致我需要找新的方法。Let's Encrypt是Linux基金會託管項目,雖然每次證書只有三個月的效用,但可解我燃眉之急。 2024-07-22 後來我改用docker+Let's Encrypt了。 How to? 無法啟動httpd的問題 我參考了 此篇教學 。cerbot這隻程式將一切過程變得相當容易,首先下載cerbot: mkdir / opt / cerbot cd / opt / cerbot wget https: // dl.eff.org / certbot-auto chmod a+x certbot-auto 接著就是使用管理權限執行cerbot,而我遇到的問題是驗證失敗,這是由於驗證伺服器無法連接到我伺服器而造成的。原因是httpd啟動失敗: 這是由於cerbot自動產生一個ssl設定到httpd/conf下,與原本的衝突導致的;於是我註解原本的ssl設定後,就可以正常啟動httpd。最後重新執行certbot,按照指示做重新啟動httpd即可獲得可信任的certificate。 由於它是3個月一簽,透過crontab去幫我們自動更新會比較方便,可以透過以下腳本進行更新: #!/bin/bash / opt / cerbot / cerbot-auto renew --quiet --no-self-upgrade --post-hook "service httpd reload" 在更新後,透過posthook去重新載入httpd設定。crontab設定方法可以參考此link。 多個domain的問題 在完成上面步驟後,我發現www.tonylin.idv.tw可以正常使用,而tonylin.idv.tw不行。後來得知可以透過以下指令擴展domain名稱: . / certbot-auto -d www.tonylin.idv.tw -d tonylin.idv.tw 在執行時,它會問你要擴展還是取代原本的,選擇擴展即可: 最後重新載入httpd即完成。 Reference NGINX 使用 Let’s Encrypt 免費 SSL 憑證設定 ...

How to setup free SSL with StartSSL on apache and tomcat?

Introduction 本篇文章在我重新整理時,可能已經過時了,但我主要想記錄申請憑證過程。 Domain Validation 在拿到Web Server SSL/TLS Certificate前,必須先做Domain Valiation。可以點擊Validations Wizard並選擇Domain Validation開始驗證之路。然而我遇到的問題是: StartSSL根據我domain所解析出來的信箱,沒半個是我的!! 所以我的處置是: 根據 whois 服務所抓到的信箱,抓一張圖一下。 點擊StartSSL驗證畫面右上的report bug,直接告訴它: 沒出現正確的信箱! 請幫忙! 不到兩天就收到了處理結果: 再次進行驗證,我的信箱出現了: 選擇自己信箱,送出驗證碼並做完驗證後,這項目就算完成了。 Web Server SSL/TLS Certificate 點擊Certificates Wizard,接著選擇Web Server SSL/TLS Certificate並送出(2017年時改為DV SSL Certificate)。接著上方就是填入你的hostname,下方就是放csr。csr的部分,我是沒試驗成功,所以我直接用Generated by PKI system。Generated by PKI system在你submit之後,就會產生key讓你下載(ssl.key),下載並送出後就算是申請成功了。接著到Tool Box > Certificate List中,可以看到Certificate列表,點擊Retrieve後會載下一包zip: 解開後,我用到的是apache的2_domainname.crt: Root and Intermediate CA Certificate 接著我們會需要Root與Intermediate CA Certificate。這是用來告訴瀏覽器憑證的驗證機構。如果沒做這個步驟,firefox會跳出警告訊息。 連至https://startssl.com/root。 下載Root CA Certificates: 點擊Root 1 - StartCom Certification Authority中的ca.crt(pem)。(檔名為ca.crt) 下載Intermediate CA Certificat...