日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

系统调用 操作系统课程设计 Linux内核编译 centos Ubuntu

發布時間:2023/12/10 linux 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 系统调用 操作系统课程设计 Linux内核编译 centos Ubuntu 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

操作系統課設的題目,我的題目是“基于塊的設備驅動”,幫室友也做了系統調用的課程設計。

網上關于系統調用的資料多數都是用Ubuntu系統實現的,但我用的是centos做的,Ubuntu的做法基本一樣,不一樣的地方我會指出,沒指出的命令就是兩個都通用的。

目錄

一、實現功能

1.重新編譯Linux系統

2.增加一個系統調用

3.寫一個程序進行調用

二、前期準備

1.虛擬機安裝

2.鏡像文件配置

3.linux內核文件下載

三、增加系統調用&寫一個程序進行系統調用

1.增加系統調用號

2.增加系統調用函數聲明

3.增加系統調用函數(均在linux-4.20.2目錄下、打開管理員權限進行)

4.編譯

5.?編譯測試程序


提示一下,網上有很多教程在Ubuntu編譯的過程中會使用命令make clean,然后經常會報錯沒有什么ko文件,這個問題困擾了我同學很久,網上找不到什么靠譜的解決方法,所以我的解決辦法就是:不要用這個命令。

AND 編譯之后重啟的話 在開機的時候 一定要選擇新編譯好的內核進入,centos的開機的時候可以選擇新內核;Ubuntu的話可以在開機的時候長按shift進入引導界面,高級選項,然后進入新內核!

一、實現功能

1.重新編譯Linux系統

2.增加一個系統調用

3.寫一個程序進行調用

二、前期準備

一共包括以下幾個部分,在我的另一篇文章中有詳細教程(5條消息) 基于塊的Linux驅動程序 操作系統課程設計 塊設備驅動 linux內核編譯_m0_46362426的博客-CSDN博客

1.虛擬機安裝

2.鏡像文件配置

3.linux內核文件下載

三、增加系統調用&寫一個程序進行系統調用

1.增加系統調用號

先使用cd命令進入到linux目錄下,使用su打開管理員權限,隨后使用gedit命令編輯syscall_64.tbl文件

cd /usr/src/kernels/linux-4.20.2 su gedit arch/x86/entry/syscalls/syscall_64.tbl

我這里原來是到334,所以加了一個335系統調用號,之后是一個tab鍵,64,一個tab鍵,hello,三個tab鍵,sys_hello

(這里注意,我打的不是空格鍵,而是tab鍵;并且不要為了和前面的一樣 而在sys_hello前面加上_x64)?

335 64 hello sys_hello

然后保存并關閉文件。

2.增加系統調用函數聲明

使用gedit命令編輯syscalls.h文件

gedit include/linux/syscall_64.tbl

拉到最下方,在endif上面加上一行:

asmlinkage long sys_hello(void);

?然后保存并且關閉文件。

3.增加系統調用函數(均在linux-4.20.2目錄下、打開管理員權限進行)

使用gedit命令編輯kernel/sys.c? 文件

gedit kernel/sys.c

同樣,拉到最下面,在endif上面添加系統調用函數?

asmlinkage long sys_hello(void){ printk(""Hello world!"); return 20210726; }

(這里是printk,而不是printf,printk是內核態命令,在系統日志里面輸出的,可通過dmesg命令顯示出來,而printf就是用戶態命令,在終端輸出)。?

保存并關閉。

4.編譯

如果以下操作出現什么跟flex或者bison相關的,就是你沒下這兩個東西

centos的下載命令:sudo yum y install flex和sudo yum y install bison

Ubuntu的下載命令就是把yum y換成apt-get就可以了

#以下操作都要在打開su管理員權限下進行 make menuconfig make -j4 make modules_install make install

編譯完成后重啟進入新內核。

編譯之后重啟的話 在開機的時候 一定要選擇新編譯好的內核進入,centos的開機的時候可以選擇新內核;Ubuntu的話可以在開機的時候長按shift進入引導界面,高級選項,然后進入新內核。?

centos的如圖,選第一個:

Ubuntu的我找了一張圖,大概是這樣,選第二個:

5.?編譯測試程序

我在主目錄下寫了這個測試程序,命名為test.c

#include<stdio.h> #include<linux/kernel.h> #include<sys/syscall.h> #include<unistd.h>int main() { long int a=syscall(335); printf("Today is %ld\n",a); return 0; }

使用gcc命令進行測試,沒有的話可以安裝一下。

gcc test.c ./a.out

?之后就大功告成啦!

總結

以上是生活随笔為你收集整理的系统调用 操作系统课程设计 Linux内核编译 centos Ubuntu的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。