實驗要求掌握Linux核心的編譯與安裝把握Linux系統呼叫基本概念設計與加入linux系統呼叫
#(1)更改或傳回指定進程的優先權(nice值和prio值)(詳見教材P328)提示:可能參考的內核函數:set_user_nice().
(2)改變主機名稱為自訂字串(自選題目)
1、Linux核心的編譯與安裝(使用華為雲,完成openEuler核心的編譯與安裝)
(1)登錄系統並查看目前核心版本
[root@openEuler~]#uname-r
(2)安裝工具,建立開發環境
[root@openEuler~]#yumgroupinstall-y"DevelopmentTools"
[root@openEuler~]#yuminstall-ybc
##[root@openEuler~]#yuminstall-yopenssl-devel
(3)備份boot目錄以防後續步驟更新核心失敗
[root@openEuler~]#tarczvfboot.origin.tgz/boot/
儲存目前核心版本資訊
[root@openEuler~]#uname–r>uname_r.log
(4)取得核心原始碼並解壓縮
#[root@openEuler~]#wget
[root@openEuler~]#unzipkernel-4.19.zip
(5)編譯核心
[root@openEuler~]#cdkernel-kernel-4.19
[root@openEulerkernel]#makeopeneuler_defconfig
#[root@openEulerkernel]#make-j4Imagemodulesdtbs
這一步是編譯核心的Image、modules和dtbs,make-j4表示4個執行緒編譯(可以依照CPU核數調整)
(6)安裝核心
[root@openEulerkernel]#makemodules_install
#[root@openEulerkernel]#makeinstall
注意:在最後一步「makeinstall」時出現的錯誤在這裡可以忽略。
(7)以VNC登陸ECS
(8)重啟系統
[root@openEulerkernel]#reboot
(9)登陸並驗證
在VNC視窗中選擇以新編譯下來的核心啟動系統
這兒編譯完之後早已有了4.19.208版本的新內核,選擇該內核登陸
2、掌握Linux系統呼叫基本概念
#Linux系統處理系統呼叫的流程以及降低系統呼叫的方式。 Linux系統提供了多達數百種的系統調用,為了惟一地標識每一個系統調用,Linux為每位系統調用都設置了一個惟一的編號,稱為系統調用號,同時每位系統調用須要一個服務解釋器完成其具體功能。
這兒不做過多描述。
(重點是如何新增系統呼叫!!!)
#define __NR_hello_euler 294 __SYSCALL(__NR_hello_euler, sys_hello_euler) #undef __NR_syscalls #define __NR_syscalls 295
asmlinkage long sys_hello_euler(void);
SYSCALL_DEFINE0(hello_euler) { printk(KERN_INFO "xuehao:20273108"); return 0; }
重啟後
#include #include #include int main() { ret = syscall(294); return 0; }
3、設計與新增linux系統呼叫
#(1)更改或傳回指定進程的優先權(nice值和prio值)(詳見教材P328)提示:可能參考的內核函數:set_user_nice().
#define _GNU_SOURCE #include #include #include #include int main() { pid_t pid; int nicevalue; int flag; int n=0; int p=0; int *prio; int *nice; prio = &p; nice = &n; printf("请输入pid: n"); scanf("%d",&pid); printf("pid输入成功n请输入nice值:n"); scanf("%d",&nicevalue); printf("nice输入成功n请输入flag(flag为1时修改,为0时查看):n"); scanf("%d",&flag); syscall(295,pid,flag,nicevalue,prio,nice); printf("现在的nice为%d,prio为%dn",n,p); return 0; }
(2)改變主機名稱為自訂字串(自選題目)
#define __NR_mysethostname 296 __SYSCALL(__NR_mysethostname,sys_mysethostname)
同理,下邊的#define__NR_syscalls296要弄成#define__NR_syscalls297
4、實驗總結
(1)你們做實驗之前看教學一定要認清楚是x86還是arm架構的呀! ! !我就是在這前面栽跟頭了重建了三四次華為雲
(2)假如用VNC登入時出現以下報錯,這麼恭喜你,多半是你的核心崩了~我的老師說,只要你手速夠快,在重啟虛擬機的時侯立刻用VNC重新登入是可以進去的,而且我沒成功過,只能重建了n次雲端主機。
(3)儘管老師給的實驗報告裡要求VNC登陸呼叫linux核心函數,但我個人建議使用cloudshell來執行指令。
(4)在先驗的時侯,被老師冷不丁問了系統調用裡的函數的意義和用法,直接栽跟頭了。我會在下邊po出一部份內部函數的意義及用法。
1.find_get_pid(pid)
find_get_pid在核心中有不同的命名空間,在各自的命名空間同一個行程pid值可能是不一樣的,find_get_pid為了找到在內核態中的我們找尋行程真正的pid
2.set_user_nice(task,nicevalue)
用於設定進程的nice值
3.copy_to_user()
完成核心空間到使用者空間的複製,To目標位址linux作業系統版本linux系統,這個位址是使用者空間的位址;From來源位址,這個位址是核心空間的位址;N即將拷貝的資料的位元組數。
假如資料拷貝成功,則傳回零;否則,傳回沒有拷貝成功的資料位元組數。
4.copy_from_user()
copy_from_user將name指向的字串從使用者空間拷貝到核心空間,失敗傳回沒有被拷貝的位元組數,成功回傳0。
5.down_write()
函數down_write()是寫者拿來得到讀寄信號量sem時調用的,假如該信號數量被讀者或寫者所持有調用linux內核函數,則對該函數的呼叫會造成呼叫者的睡眠,只能在進程上下文使用,用於取得Linux內核讀寄信號量中的寫鎖。
6.memcpy(str1,str2,n)
從儲存區str2複製n個位元組到儲存區str1。
以上是華為雲端完成Linux核心的編譯與安裝(自選題目)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Linux適用於服務器、開發環境和嵌入式系統。 1.作為服務器操作系統,Linux穩定高效,常用於部署高並發應用。 2.作為開發環境,Linux提供高效的命令行工具和包管理系統,提升開發效率。 3.在嵌入式系統中,Linux輕量且可定制,適合資源有限的環境。

簡介:通過基於Linux的道德黑客攻擊數字邊界 在我們越來越相互聯繫的世界中,網絡安全至關重要。 道德黑客入侵和滲透測試對於主動識別和減輕脆弱性至關重要

Linux基礎學習從零開始的方法包括:1.了解文件系統和命令行界面,2.掌握基本命令如ls、cd、mkdir,3.學習文件操作,如創建和編輯文件,4.探索高級用法如管道和grep命令,5.掌握調試技巧和性能優化,6.通過實踐和探索不斷提陞技能。

Linux在服務器、嵌入式系統和桌面環境中的應用廣泛。 1)在服務器領域,Linux因其穩定性和安全性成為託管網站、數據庫和應用的理想選擇。 2)在嵌入式系統中,Linux因其高度定制性和高效性而受歡迎。 3)在桌面環境中,Linux提供了多種桌面環境,滿足不同用戶需求。

Linux的缺點包括用戶體驗、軟件兼容性、硬件支持和學習曲線。 1.用戶體驗不如Windows或macOS友好,依賴命令行界面。 2.軟件兼容性不如其他系統,缺乏許多商業軟件的原生版本。 3.硬件支持不如Windows全面,可能需要手動編譯驅動程序。 4.學習曲線較陡峭,掌握命令行操作需要時間和耐心。

Linuxisnothardtolearn,butthedifficultydependsonyourbackgroundandgoals.ForthosewithOSexperience,especiallycommand-linefamiliarity,Linuxisaneasytransition.Beginnersmayfaceasteeperlearningcurvebutcanmanagewithproperresources.Linux'sopen-sourcenature,bas

Linux的五個基本組件是:1.內核,管理硬件資源;2.系統庫,提供函數和服務;3.Shell,用戶與系統交互的接口;4.文件系統,存儲和組織數據;5.應用程序,利用系統資源實現功能。

開啟智能家居新篇章:基於Ubuntu的開源家庭自動化系統 智能家居技術徹底改變了我們與生活空間的互動方式,為日常生活帶來了便利、安全和能源效率。從遠程控制燈光和電器,到監控安全攝像頭和自動化氣候控制,智能家居技術變得越來越普及。 然而,許多商業智能家居系統存在局限性:高昂的成本、隱私問題以及有限的兼容性。幸運的是,開源軟件解決方案結合Ubuntu的強大功能,提供了一種替代方案——允許用戶創建可定制、經濟高效且安全的智能家居生態系統。 本指南將探討如何使用Ubuntu和開源工具設置家庭自動化系統。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

WebStorm Mac版
好用的JavaScript開發工具

Dreamweaver Mac版
視覺化網頁開發工具

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

禪工作室 13.0.1
強大的PHP整合開發環境