本次實驗以linux 2.6.35版本的unbutu系統為基礎,在核心上增加乙個helloworld程式的系統呼叫。
一、重新安裝配置核心
linux增加系統呼叫
本次實驗以linux 2.6.35版本的unbutu系統為基礎,在核心上增加乙個helloworld程式的系統呼叫。
一、重新安裝配置核心
1)安裝所需的工具和包:#yum install -y gcc ncurses-devel make wget(ncurses能提供底層終端功能的封裝,提供乙個相當穩固的工作框架用以產生漂亮的介面)
若是centos系統,命令則不同:#apt-get install -y gcc libncursesdev make wget wget。
uname -r
wget
.org/pub/linux/kernel/v2.6/linux-2.6
.35.tar
.gztar xvzf linux-2.6
.35.tar
.gz
3)進入linux-2.6.3,安裝配置啟動選單menuconfig:
make menuconfig
在啟動選單裡選擇如下:
編譯核心:#make
make modules
4)安裝核心(需要用$su命令取得許可權):
make modules_install
make install
(unbutu使用者需要先執行:#sudo update-initramfs -c -k 2.6.35 手動生成ini)
5)修改配置檔案
vim /boot/grub/menu.lst
修改檔案中的內容:default=0,timeout=25
(unbutu使用者則#sudo vim /etc/default/grub 並修改:grub_default=2,grub_timeout=25,最後更新grub:#sudo update-grub)
6)重啟系統並觀察版本號:
reboot
uname -r
二、增加新的系統呼叫
1)編寫呼叫程式:
cd linux-2.6.35
mkdir my_source
touch my_soucer/sys_hellowoeld.c
vim my_soucer/sys_hellowoeld.c
檔案內程式如下:
include
include
asmlinkage int sys_helloworld(void)
2)增加配置檔案:
touch my_source/makefile
vim my_source/makefile
檔案內容為:
makefile of
thenew
system call
obj-y :-sys_helloworld.o
3)修改原有配置檔案
在linux2.6.35目錄下開啟原有配置檔案:#vim makefile
在下行末尾加上my_source:
core-y += kernel/ mm/ fs/ ipc/ security/ crypto/ block/ my_source/
.long sys_helloworld /* 339 */
vim /arch/x86/include/asm/unistd_32.h
增加一行:#define __nr_helloworld 339
將總呼叫數增加1,變成339:#define nr_syscalls 339
vim /arch/x86/include/asm/syscall.h
增加一行:asmlinkage int sys_helloworld(void);
5)返回第一步編譯安裝核心並重啟
6)編寫測試程式**test_syscall.c,程式內容如下:
include
include
include
include
define __nr_helloworld 339
int main(int argc,char *argv||)
7)編譯執行測試程式
gcc test_syscall.c -o test_syscall
./test_syscall
Linux增加系統功能呼叫
2.獲取超級使用者許可權 3.解壓 新增系統呼叫 配置並編譯核心 測試結果 用 sudo su 命令來獲取超級使用者許可權,成功獲取後可以發現字型顏色變得蒼白了 超級使用者為所欲為啊 然後也可以用 whoami 命令來檢視 進入 usr src linux 4.15.10 kernel sys.c ...
增加系統呼叫
增加系統呼叫 在實際程式設計中,尤其是當我們需要增加或完善系統功能的時候,我們經常會用到系統呼叫函式。系統呼叫函式通常由使用者程序在使用者態下呼叫,核心通過system call 函式響應系統呼叫產生的軟中斷,在正確訪問核心棧 系統呼叫開關表之後陷入到作業系統核心中進行處理。系統呼叫是使用者程序由使...
增加系統呼叫
增加系統呼叫socket2 1.增加系統呼叫號 在source net socket.c增加syscall define3 socket2.syscall define3 socket2,int,family,int,type,int,protocol 2.source arch x86 sysca...