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

2021-09-12 20:46:58 字數 3188 閱讀 9497

虛擬機器為vmware workstation,系統為ubuntu 18.04

可能的問題

/bin/sh:

1: bison: not found

scripts/makefile.lib:

217: recipe for target 『scripts/kconfig/zconf.tab.c』 failed

make[2]

:***

[scripts/kconfig/zconf.tab.c] error 127

makefile:

514: recipe for target 『silentoldconfig』 failed

/bin/sh:

1: flex: not found

scripts/makefile.lib:

202: recipe for target 『scripts/kconfig/zconf.lex.c』 failed

make[2]

:***

[scripts/kconfig/zconf.lex.c] error 127

makefile:

514: recipe for target 『silentoldconfig』 failed

error : openssl/bio.h :no such file or folder
解決方案

可能的問題

/usr/bin/ld: 當搜尋用於 /usr/lib/gcc/x86_64-linux-gnu/

5/libgcc.a 時跳過不相容的 -lgcc

/usr/bin/ld: 找不到 -lgcc

/usr/bin/ld: 當搜尋用於 /usr/lib/gcc/x86_64-linux-gnu/

5/libgcc_s.so 時跳過不相容的 -lgcc_s

/usr/bin/ld: 找不到 -lgcc_s

解決方案

sudo apt install gcc-

4.8 gcc-

4.8-multilib g++

-4.8 g++

-4.8

-multilib

qemu-system-i386 -kernel linux-

5.0.1

/arch/x86/boot/bzimage -initrd rootfs.img

一切順利的話,可以看見如下介面

開啟另乙個終端

查詢系統呼叫表可知,標號36的系統呼叫為sync

函式原型

void sync(void)

標頭檔案unistd.h

函式說明

sync負責將系統緩衝區的資料「寫入」磁碟,以確保資料的一致性和同步性

注意sync函式僅僅是將全部改動過的塊緩衝區排入寫佇列,然後就返回,並不等待實際i/o操作結束

在menu目錄下的test.c中增加sync的系統呼叫:

int

sync

(int argc,

char

*ar**)

intsyncasm

(int argc,

char

*ar**)

intmain()

重新編譯製作rootfs.img後啟動menuos

可以進行如下的互動:

舉例跟蹤分析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...