lxr : Web Base code view system

 我們在閱讀linux源代碼時都有這樣的體會:核心的組織相對松散,在看一個文件時往往要牽涉到其他的頭文件、源代碼文件。如此來回跳轉尋找變量、常量、函數的定義十分不方便,這樣折騰几次,便使讀代碼的心情降到了低點。
 
  lxr(linux cross reference)就是一個解決這個問題的工具:他對指定的源代碼文件建立索引數據庫,利用perl腳本CGI動態生成包含碼的web頁面,你可以用任何一種瀏覽器查閱。在此web頁中,所有變量、常量、函數都以超連接的形式給出,十分方便查閱。比如你閱讀/usr/src/linux/net/socket.c的源代碼,發現函數 get_empty_inode不知道是如何以及在哪里定義的,這時候你只要點擊 get_empty_inode,lxr將返回此函數的定義、實現以及各次引用是在什麼文件的哪一行,注意,這些信息也是超連接,點擊將直接跳轉到相應的文件相應的行。另外lxr還提供標識符搜索、文件搜索,結合程序 glimpse還可以提供對所有的[url=http://www.pccode.net].net" class="wordstyle"源碼文件進行全文檢索,甚至包括注釋!
 
  下面將結合實例介紹一下lxr和glimpse的基本安裝和使用,由於glimpse比較簡單,就從它開始:  
首先訪問站點: http://glimpse.cs.arizona.edu/ 得到glimpse的[url=http://www.pccode.net].net" class="wordstyle"源碼,比如我得到的是glimpse-4.12.5.tar.gz . 用root登錄,在任一目錄下用tar zxvf glimpse-4.12.5.tar.gz解開壓縮包,在當前目錄下出現新目錄glimpse-4.12.5 .進入該目錄,執行make即可。進入bin目錄,將文件glimpse和glimpseindex拷貝到/bin或/usr/bin下即可。如果單獨使用glimpse,那么只要簡單的執行glimpseindex foo即可,其中foo是你想要索引的目錄,比如說是/usr/src/linux .glimpseindex的執行結果是在你的起始目錄下產生若干.glimpse*的索引文件。然后你只要執行glimpse yourstring即可查找/usr/src/linux下所有包含字符串yourstring的文件。  
  對於lxr,你可以訪問 http://lxr.linux.no/得到它的源代碼。解包后,遵循如下步驟:  
  /*下面的文字來源於lxr的幫助文檔以及本人的安裝體會*/  
  1)修改Makefile中的變量PERLBIN和INSTALLPREFIX,使它們分別為  
  perl程序的位置和你想lxr安裝的位置.在我的機器上,PERLBIN的值為/usr/bin/perl.至於INSTALLPREFIX,有如下原則,lxr的安裝路徑必須是web服務器能有權限訪問。因此它的值簡單一點可取/home/httpd/html/lxr (對於Apache web server)。  
  2)執行 make install  
  3)修改$INSTALLPREFIX/http/lxr.conf :  
  baseurl : http://yourIP/lxr/http/  
  htmlhead: /home/httpd/html/lxr/http/template-head  
  htmltail: /home/httpd/html/lxr/http/template-tail  
  htmldir: /home/httpd/html/lxr/http/template-dir  
  sourceroot : /usr/src/linux # 假如對linux核心代碼索引  
  dbdir : /home/httpd/html/lxr/dbdir/ #dbdirk可任意起名,且位置任意  
  glimpsebin: /usr/bin/glimpse #可執行程序glimpse的位置  
  4)在$INSTALLPREFIX/http/下增加一個文件.htaccess 內容:  
  《Files ~ (source|search|ident|diff|find)$》***  
  SetHandler cgi-script  
  《/Files》  
  上面這個文件保證Apache server將几個perl文件作為cgi-script.  
  5)按照lxr.conf中的設置建立dbdir ,按照上例,建立目錄  
  /home/httpd/html/lxr/dbdir  
  進入這個目錄執行$INSTALLPREFIX/bin/genxref yourdir  
  其中yourdir是[url=http://www.pccode.net].net" class="wordstyle"源碼目錄,比如/usr/src/linux  
  如果要結合glimpse,則執行glimpseindex -H . yourdir  
  6)修改 /etc/httpd/conf/access.conf ,加入  
  《Directory /home/httpd/html/lxr/http》  
  Options All  
  AllowOverride All  
  order allow,deny  
  allow from all  
  《/Directory》  
  7)進入/etc/rc.d/init.d/ 執行  
  killall httpd  
  ./httpd start  
  進入X ,用瀏覽器 http://yourIP/lxr/http/blurb.html大功告成 ,這下你可以讀[url=http://www.pccode.net].net" class="wordstyle"源碼了。  
  注意:以上只是lxr和glimpse的基本用法,進一步的說明可以參考連機文檔。

Read more

How to document Home Lab and Network

運維機房和跨域的網路,會遇到各式需求與問題,用對工具才能分析問題,個人覺得最重要的是使用能處理問題的工具。 推薦目前想學和正在使用的平台與軟體,協助將公司/家用機房文件化 佈告欄任務管理 Focalboard 白板可管理任務指派 網路架構文件編寫 netbox 精細管理網路設備與連接線路 IP 資源管理 phpipam 專注網路IP分配 邏輯塊文件編寫 draw.io 視覺化概念圖 機房設備管理 ITDB 管理設備生命週期與使用者

By Phillips Hsieh

如何在Raspberry Pi4上安裝Proxmox for ARM64

第一步 準備好Raspberry Pi 4 / CM4 4GB RAM,這裡要留意CM4如果是買有內建eMMC storage會限制不能使用SD卡開機而限制本地空間容量,如果沒有NAS外接空間或使用USB開機的話,建議買CM4 Lite插上大容量SD卡 第二步 去Armbian官網下載最小化Debian bookworm image https://www.armbian.com/rpi4b/ Armbian 25.2.2 Bookworm Minimal / IOT 然後寫入SD/USB開機碟,寫入方法參考官方文件 https://github.com/raspberrypi/usbboot/blob/master/Readme.md Note: 官方提供的預先設定系統方法,可以在Armbian初次啟動自動化完成系統設定。連結在此 https://docs.armbian.com/User-Guide_Autoconfig/

By Phillips Hsieh

世界越快心越慢

在晚飯後的休息時間,我特別享受在客廳瀏灠youtube上各樣各式創作者的影音作品。很大不同於傳統媒體,節目多是針對大多數族群喜好挑選的,在youtube上我會依心情看無腦的動畫、一些旅拍記錄、新聞時事談論。 尤其在看了大量的Youtube的分享後,我真的感受到會限制我的是我的無知,特別是那些我想都沒想過的實際應用,在學習後大大幫助到我的生活和工作層面。 休息在家時,我喜歡想一些沒做過的菜,動手去設計生活和工作上的解決方案,自己是真的很難閒著沒事做。 如創作文章,陪養新的習慣都能感覺到成長的喜悅,是不同於吃喝玩樂的快樂的。 創作不去限制固定的形式,文字是創作、影像聲音也是創作,記錄生活也是創作,我想留下的就是創造—》實現—》回憶,這樣子的循環過程,在留下的足跡面看到自己一路上的成長、失敗、絕望、重新再來。 雖然大部份的時候去做這些創作也不明白有什麼特別的意義,但不去做也不會留下什麼,所以呀不如反事都去試試看,也許能有不一樣的水花也許有意想不到的結果,投資自己永遠不會是失敗的決定,不是嗎?先問問自己再開始計畫下一步,未來沒人說得準。 像最近看youtube仍大一群人在為DOS開

By Phillips Hsieh

知識管理的三個步驟:一小時學會把知識運用到生活上

摘錄瓦基「閱讀前哨站」文章作為自己學習知識管理的內容 Part1「篩選資訊」 如何從海量資訊中篩選出啟發性、實用性和相關性的精華,讓你在學習過程中不再迷失方向。 1. 實用性 2. 啟發性 Part2「提高理解」 如何通過譬喻法和應用法,將抽象的知識與日常生活和工作緊密結合,建立更深刻的理解。 1. 應用法 2. 譬喻法 Part3「運用知識」 如何連結既有知識,跟自己感興趣的領域和專案產生關聯,讓你在運用知識的路途上游刃有餘。 1. 跟日常工作專案、人際活動產生連結 # 為什麼要寫日記? * 寫日記是為了忘記,忘卻瑣碎事情,保持專注力 * 寫日記就像在翻譯這個世界,訓練自己的解讀能力 * 不只是透過日記來記錄生活,而是透過日記來發展生活 #如何寫日記? * 不要寫流水帳式的日記,而是寫覆盤式的日記 當我們試著記錄活動和感受之間的關聯,有助於辦認出真正快樂的事 日記的記錄方式要以過程為主,而非結果 * 感恩日記的科學建議,每日感恩的案例

By Phillips Hsieh