虛擬機ubuntu-自行實現系統調用

1、前言html

  第二次實驗是實現與學號有關係統調用,在第一次實驗基礎上進行。linux

  第一次實驗是編譯本身的linux內核http://www.javashuo.com/article/p-twxatnme-ms.htmlubuntu

  環境仍是ubuntu18.04 + linux5.6.14內核 + vmwarevim

2、實驗過程記錄函數

  1. 輸入命令 cd /usr/src/linux-5.6.14/ 進入內核目錄。測試

   輸入 sudo vim arch/x86/entry/syscalls/syscall_64.tbl , 在此文件中添加本身的系統調用編號spa

   編號依次增長,注意 name 與 entry point名稱啊!線程

   修改完成保存!!!htm

       

 

  2. 系統調用號已經添加了,內核就知道有這麼個東西。接下來咱們須要實現系統調用。blog

   以函數的形式,進行函數聲明和函數定義。如今先來聲明函數吧。

   執行命令 sudo vim include/linux/syscalls.h

   在文件最後添加函數聲明(vim下,shift+G迅速到達),完成後保存!

      

 

   3. 聲明添加了,接下來就是函數定義了。輸入命令 sudo vim kernel/sys.c

   一樣在文件最後進行函數定義。

   注意內核打印函數是 printk();

   我這裏第一個函數是文本測試,第二個是實驗要求:

   奇數學號輸出後五位,偶數學號輸出後六位。完成後保存!

      

      

 

 

  4. 好了,如今系統調用作完了。從新編譯內核吧~

   依次執行如下命令,這些命令都很熟悉了,再也不作解釋。

    1. sudo make mrproper

    2. sudo make clean

    3. sudo make nconfig (進入界面後保存退出,可參考上一篇博客!)

    4. sudo make -j4 (仍舊是四個線程跑,會快不少!)

    5. sudo make modules_install (make完成後執行)

    6. sudo make install

  5. 上述步驟完成後重啓!

3、測試

  好了,如今系統調用模塊完成了,咱們作一些測試。

  終端輸入 sudo touch test.c 

  使用vim編寫  sudo vim test.c  

  (syscall第一個參數是系統調用編號,就是第一步你設置過的。後面的就是參數,這點和函數相似)

  

 

  終端編譯 sudo gcc -o test test.c

  運行 sudo ./test

  由於內核打印不必定會顯示,但會保存在內核緩衝區。

  咱們執行命令 sudo dmesg就可看到結果。

  

相關文章
相關標籤/搜索