原创 交叉編譯單個內核模塊

在 x86 服務器上交叉編譯 arm64 的單個內核模塊 前幾天幫助同事交叉編譯了一個 arm64 的內核模塊,在這裏記錄一下關鍵的步驟。 交叉編譯內核 修改需要編譯的內核模塊的 Makefile 文件後編譯 修改的 Make

原创 段錯誤發生時讓程序停住

最近遇到一個 bug,有一定的偶然性會出現段錯誤。第一步需要確定的是段錯誤出現在哪裏。可由於這個 bug 的偶然性,常規的方法無法確定問題。 我想如果在產生段錯誤的時候程序可以停下來,那麼就可以用 gdb attach 上去調試了

原创 gui 應用開發中控制複雜度

gui 應用開發中控制複雜度 gui 程序中,控制複雜度是非常重要的。前端、gui 框架、後端代碼,這幾部分結合到一起,其複雜性不言而喻。在開發 gui 程序時,從一開始就要注意控制好複雜度,爲後續的開發奠定一個良好的基礎。 圖片

原创 CROSS_COMPILE 的妙用

在交叉編譯時,常常需要設定 CROSS_COMPILE 變量指定編譯器的前綴,即不包含最後的 gcc 字符的名稱。 一個簡單的示例如下: CROSS_COMPILE="aarch64-linux-gnu-" 當我們不指定時,默認

原创 虛擬機中安裝 debian 後擴展硬盤的問題

根分區大小不足的問題描述 最近,我在 vmware 中安裝了 debian 10 系統。在安裝時,我僅僅選擇創建根分區與交換分區,總共使用了 20 GB 的磁盤空間。 安裝完成後進行一系列的配置之後,我發現根分區剩下了不到 10

原创 gdb 命令記錄

gdb 命令記錄 1. 執行 gdb 腳本 在命令行中指定 -x gdbscript 進入 gdb 後執行 gdb 腳本,可以使用 source 與 command 命令 2. print 的輸出格式 print /x /o

原创 使用 emacs 編輯 grub.cfg 文件

使用 emacs 來編輯 grub.cfg 文件 首先來看看 grub.cfg 文件的權限,內容如下: [longyu@debian-10:20:15:39] ~ $ ls -lh /boot/grub/grub.cfg -r-

原创 ethtool 命令指定的網絡設備名在哪裏被使用?

使用 ethtool 時需要指定一個網絡接口名稱,這個名字究竟是在哪裏被使用的呢? ethtool 命令中對網絡設備名的使用 ethtool 程序會將用戶指定的網絡設備名拷貝到一個 ctx 中,這個 ctx 被用來構建 ioct

原创 dpdk-pdump 編譯運行

dpdk-pdump 是什麼 dpdk-pdump 是 dpdk 提供的一個工具。它可以可以作爲 secondary 程序運行,能夠捕獲 dpdk 的端口的數據包。 編譯 dpdk-pdump dpdk-pdump 工具的源碼位於

原创 編譯 dpdk 19.10 時遇到的問題

未安裝 numa 庫的問題 /home/longyu/dpdk-19.08/lib/librte_eal/linux/eal/eal_memory.c:32:10: fatal error: numa.h: No such fil

原创 ping 被攔截

ping 的功能及其工作原理 ping 一般用來檢測網絡鏈路是否連通以及到達目的網絡節點中間的延時。ping 程序會向服務器端發送 icmp 的 ECHO_REQUEST 包,服務器接收到此 icmp 包後會返回一個 ECHO_R

原创 修改 linux kernel 與 kernel module 的安裝路徑

指定 bzImage 的安裝路徑 設定 INSTALL_PATH 即可,示例如下: longyu@longyu-pc:~/linux-4.19.67$ mkdir /tmp/kernel longyu@longyu-pc:~/li

原创 dpdk 中的 ethtool 工具相關問題

ethtool 是 dpdk 中提供的一個工具,能夠 dump 網卡的寄存器,查看其它網卡相關的信息。在 dpdk 程序出現異常時,常常需要使用 ethtool 獲取網卡的一些信息來定位問題。 我最近也嘗試用了用 ethtool

原创 解初始化函數放在程序的哪裏執行及其限制條件

問題描述 有一次,需要在業務程序使用的底層組件(c 語言編碼)中添加某種統計功能。 這個統計功能有自己的內部數據結構與操作接口。具體的統計功能在底層組件的一些關鍵位置進行,統計數據的輸出使用組件內部的定時器來週期性的打印到某個指定

原创 獲取發行版使用的內核源碼

rpm 可以執行如下命令下載內核源碼包: yumdownloader --source kernel apt-get 使用如下命令下載內核源碼: sudo apt-get install linux-source 一個具體的示