跟蹤分析Linux核心5 0系統呼叫處理過程

2021-09-12 23:59:28 字數 1690 閱讀 2534

ubuntu 16.04

輸入如下命令來編譯核心

輸入如下命令

cd ..

mkdir rootfs

git clone

cd menu

sudo apt install gcc-multilib

gcc -pthread -o init linktable.c menu.c test.c -m32 -static

cd ../rootfs

cp ../menu/init ./

find . | cpio -o -hnewc | gzip -9 > ../rootfs.img

啟動menu os

啟動gdb

cd ~

gdb(gdb) file linux-5.0.2/vmlinux

(gdb) target remote:1234

增加系統呼叫
根據學號後兩位05,去system_call_table(位於/usr/include/asm/unistd_32.h)中查詢

#define __nr_sethostname 05

在test.c中增加sethostname函式,再重新編譯rootfs.img

int sethostname(int argc,char *ar**)

重新編譯rootfs.img

gcc -pthread -o init linktable.c menu.c test.c -m32 -static

cd …/rootfs

cp …/menu/init ./

find . | cpio -o -hnewc |gzip -9 > …/rootfs.img

跟蹤呼叫

六、實驗總結

本實驗讓我學會了如何編譯核心,並在核心中增加系統呼叫,當客戶程式執行系統呼叫時,核心此時就會產生0x80號中斷,並且由使用者態切換到核心態中。核心態中維護一張表,這張表對應著相應的系統呼叫與系統呼叫號,即系統呼叫表,記錄函式入口位址。使用者在進入核心態前會將對應的系統呼叫號,通過暫存器eax傳入給核心態。然後核心空間根據系統呼叫號和系統呼叫表相對應,呼叫相應的系統呼叫對應的函式執行完以後,再由核心態切換到使用者態。

舉例跟蹤分析Linux核心5 0系統呼叫處理過程

學號最後三位編號 008 使用ubuntu編譯linux核心5.0 編譯核心的過程中可能需要安裝的依賴庫 sudo apt get install libncurses5 dev libssl dev sudo apt get install build essential openssl sudo...

舉例跟蹤分析Linux核心5 0系統呼叫處理過程

學號274 一 編譯linux核心5.0.1 xz d linux 5.0.1.tar.xz tar xvf linux 5.0.1.tar 2.編譯 make i386 defconfig make j8 可能會出現缺少相關依賴的問題,使用 sudo apt get install 缺少的依賴 安...

跟蹤分析Linux核心5 0系統86號呼叫處理過程

致謝學號末位 186 跟蹤分析linux核心5.0系統呼叫處理過程 選擇系統呼叫號後兩位與學號後兩位相同的系統呼叫進行跟蹤分析 分析系統呼叫 保護現場與恢復現場 系統呼叫號及引數傳遞過程 配置核心編譯引數 編譯核心 製作根檔案系統 mkdir linuxkernel cd linuxkernel m...