Elixir bootlin | 輕鬆比較Linux Kernel不同版本之間的差異

這篇文章介紹實用網站 exilir bootlin 的使用方法與功能介紹,讓大家在開發軟體的過程中不再為了版本差異心煩,直接比對不同資料夾或檔案在不同版本之間的不同之處,甚至直接跨檔案搜尋變數被引用的位置以及定義。這個工具不只比較Linux版本,有名的軟體工具如glibc、freeRTOS、qemu等都有支援。{alertInfo}

目錄

    簡介

    Elixir Bootlin 是一個由 Bootlin 公司建置的 Linux 原始碼瀏覽工具,其中 Elixir 是靈丹妙藥的意思,在這邊可能代表的是拯救無數 Linux 開發者的萬靈丹,而 Bootlin 是間位在法國烏蘭的公司致力於推廣 Linux 系統,會舉辦很多免費或付費的開發課程,Youtube上也能看到很多該公司釋出的講解影片。
    這次要介紹的工具主要優勢在只要透過瀏覽器就可以調閱Linux Kernel的檔案以及程式碼,不需要再額外安裝一台Linux的電腦,此外最強大的是在網頁中就可以進行 cross reference 的查找,在分析 device driver 或分析共用工具程式的時候非常好用!
    筆者使用開發者工具檢查這個網站使用到的元素之一有dynamic-reference.js,推測實現 cross reference就是使用dynamic-reference.js這個插件。
    但因為不是html專家,我用 F12 看到的都只是皮毛,有講解錯誤的地方也歡迎讀者指正。

    介紹

    整體介面很清爽,左邊是各個歷屆版本包含RC版的樹狀目錄,其中 Linux 字樣點下去可以切換到其他像是標準 C 函式庫(glibc)、busybox、freeRTOS、qemu 等等軟體。
    點選到有興趣的檔案之後,可以直接瀏覽原始碼。筆者這邊以 I2C driver 為例子,點進來之後每個 struct 的名稱都可以再向下追朔,甚至是中斷程式的 Call 也可以追朔下去。只要點選irqs_disables()後,就可以看到他是在哪裡被定義,以及在哪裡被呼叫的,包含檔案以及行數都有列出來。如果點選 include 的檔案,他會直接幫你導向該檔案的程式碼內容,讓你可以快速trace 下去。
    下圖就是整個介面位置以及範例截圖。

    結論

    Elixir 這個網站收藏了不只 Linux, glibc, freeRTOS 等常用的軟體工具,並提供交互參照的查找介面,讓使用者不必實際安裝作業系統或編譯器就能瀏覽程式碼,並且可以仔細地了解變數結構,子程式功能以及原始碼的追朔。因為整個網頁建立在瀏覽器上,也不會有平台相容性的問題,甚至可以直接在手機與平板上觀看程式碼,對於筆者這種返鄉需要搭好幾個小時車程的人來說是個很很棒的工具。

    Post a Comment

    留個言吧

    較新的 較舊