一、實驗內容
1、新增標頭檔案及系統呼叫函式;
2、新增相應的系統呼叫函式宣告;
3、新增乙個沒有使用的系統呼叫號;
4、編譯核心,重啟進入編譯後的核心;
5、編寫測試程式測試系統呼叫。
二、實驗步驟
1.進入中斷,切換為root身份;
sudo -s -h //按要求輸入密碼,切換為root身份
2.安裝vim;
apt-get install vim
//安裝vim文字編輯器(在vim中,i進入編輯, esc退出編輯狀態,g跳到末尾, gg進入開頭, :wq儲存退出, :q不儲存退出)
3.開啟sys.c檔案,新增標頭檔案及系統呼叫函式;
cd /usr/src/linux-3.13.3/kernel //進入sys.c的目錄
vim sys.c //利用vim開啟sys.c
#include//在開頭加入標頭檔案:
asmlinkage int sys_mycall(void)
//在末尾加入函式sys_mycall
4.開啟syscalls.h檔案,新增相應的系統呼叫函式宣告;
cd /usr/src/linux-3.13.3/arch/x86/include/asm //進入syscalls.h目錄級
vim syscalls.h //利用vim開啟syscalls.h
asmlinkage int sys_mycall(void); //倒數第二行後插入函式宣告
5.開啟syscall_32.tbl,新增乙個沒有使用的系統呼叫號;
cd /usr/src/linux-3.13.3/arch/x86/syscalls //進入syscall_32.tbl目錄級
vim syscall_32.tbl //利用vim開啟syscall_32.tbl
222 i386 mycall sys_mycall//新增乙個系統呼叫的id(我這裡用的沒有使用的222號)
6.進入核心檔案目錄級,開始編譯;
cd /usr/src/linux-3.13.3 //進入核心檔案linux-3.13.3 的目錄級
7.刪除以前進行過的核心功能選擇檔案;
make mrproper
8.載入配置檔案.config,注意不要修改;
make menuconfig
9.編譯核心(大概15-20分鐘);
make bzimage
10.編譯模組(大概1-1個半小時);
make modules
11.安裝模組到正確目錄;
make modules_install
12.安裝,當然這裡可以手動使用命令複製、移動目標檔案到指定目錄;
make install
13.更新開機啟動項;
update-grub
14.重啟;
reboot
15.檢視核心版本是否跟新;
uname -a //檢視當前核心詳細資訊,可以看到核心更新時間,確定是否編譯成功
16.寫測試程式,編譯執行測試自己新增的系統呼叫函式。
附測試函式mycall.c:
#include
int main()
gcc -o mycall mycall.c //gcc編譯測試函式
./mycall //執行測試函式
sudo dmesg -c //檢視日誌檔案裡列印的資訊(姓名、學號)
三、實驗中遇到的問題
1.輸入make bzimage報錯;
*** configuration file ".config"not found!
*** please run some configurator (e.g."make oldconfig" or
*** "make menuconfig" or"make xconfig").
make[2]: *** [silentoldconfig] error 1
make[1]: *** [silentoldconfig] error 2
解決方法:
先make menuconfig, 並設定對應64位的配置;安裝後繼續輸入make menuconfig。
2.make menuconfig 報錯;
your display is too small to runmenuconfig!
it must be at least 19 lines by 80 columns.
make[1]: *** [menuconfig] error 1
make: *** [menuconfig] error 2
解決方法:視窗最大化。
3.make modules報錯;
error: "__modver_version_show" [drivers/staging/rts5139/rts5139.ko] undefined!
make[1]: *** [__modpost] error 1
make: *** [modules] error 2
解決方法:
修改usr/src/linux-3.13.3/.config檔案,找到staging項,將其值改為n。
config_rts5139=n //修改config_rts5139=n(在整個檔案的80%-82%左右)
Ubuntu 12 04系統優化清理
注意 這些是刪除核心的動作,操作過程中一定小心,否則刪錯了核心,將造成無法啟動linux。1.開啟linux終端,輸入以下命令 sudo dpkg get selections grep linux 此命令列出所有已安裝的核心映像 包括核心及核心元件,比如防火牆 編譯庫 c標頭檔案 等 linux ...
Ubuntu12 04的Unity桌面系統
ubunt 使用的是 xwindows 系統。x window 系統透過軟體工具及架構協定來建立作業系統所用的圖形使用者介面,此後則逐漸擴充套件適用到各形各色的其他作業系統上。現在幾乎所有的作業系統都能支援與使用 x。更重要的是,今日知名的桌面環境 gnome 和kde 也都是以 x window ...
ubuntu12 04 顯示卡 散熱
acer筆記本上面安裝了ubuntu12.04,進入系統過散熱就特別大,顯示卡是ati的,是雙顯示卡,沒有對應的驅動管理,所以發熱很大。網上很多資料說,可以使用命令 禁用獨顯 sudo su echo igd sys kernel debug vgaswitcheroo switch 切換至集顯 e...