三月 2019
« 四月    
 123
45678910
11121314151617
18192021222324
25262728293031

[Howto] Add System Call Into Linux Kernel

話說本蘿莉控對Linux系統是完全不懂的初心者
這次作業系統的作業是要增加一個 System Call 並呼叫,這是一個超級大挑戰
因為只玩過 GUI 的介面,而這次卻要在 CLI 介面完成…

會打這篇文的用意,主要是因為有很多人應該跟我一樣對 Linux 不熟
做到一半卡關而不知道該如何繼續下手…以下是個人所遇到的問題…

錢錢寫的教學網頁,請配合本篇一起服用

在正式開工前,先準備以及瞭解一些東西,會讓您更輕鬆愉快的完成它:

1.善用 VirtualBox 提供的 “快照”功能

快照功能就像是一台照相機,可以把目前系統的狀態給”照”下來,如果系統改
到出現 kernel panic 而開不了機也不用重灌,直接還原快照就好,可以省下許多
不必要的重灌時間。所以在安裝完系統後,不用忘記給系統拍一張照喔 揪瞇 ^.<
可看此文章:重灌狂人 – VirtualBox v2.1.4 虛擬電腦,練重灌、測軟體、玩病毒,不怕搞壞電腦!

2.給虛擬硬碟最少15G的空間

如果您不是用虛擬機器程式安裝 Linux ,那可以跳過第一點跟這一點了。會講這
點的原因是之前為了省空間,只給了虛擬機 5G 的空間,最後編譯核心的時候卡
關了,原因是空間不足…

3. vi 要知道的幾個指令

如果不知道文字編輯器要怎麼用,那也不用玩了!什麼事情都不能做…
vi 給人的感覺就像是古早時代的 PE3 一樣,雖然功能多但是沒有說明卻不知道
怎麼用,以下要講幾個常用到的指令…

i — 插入編輯  在一般模式下只能刪除文字而不能打字,要先按 i 才會進入編輯模式
ESC — 跳回指令模式  編輯完後按 ESC 後游標會跳到最下方,之後可以輸入指令
:w — 寫入檔案  就是寫入檔案
:q — 離開  就是離開阿..

如果在編輯一個權限不足的檔案,存檔時會出現”權限不足”的訊息,解決辦法就是
在 w 的後面加上一個!(驚嘆號,強制執行的意思),如果仍然無法存檔且離不開編
輯器,就在 q後面加上一個!之後在 vi 前加入 sudo 指令。

例如: vi /usr/src/test.c
改成: sudo vi /usr/src/test.c
( 會詢問 root 密碼 )

用 Google 去搜尋 vi 指令 會得到很多有用的資料

4. Tab 鍵是您的好幫手

如果懶得打字的話,可以把第一個字打出來,按 Tab 鍵就會自動幫您補齊剩下的字
囉!不過這功能僅限於終端機能用,在 vi 下面它只會跳格給您看…

OK!接下來就是開始實際動手囉!

錢錢寫的教學網頁

卡關了!

第一關:它說我的權限不足?

在指令的最前面加入 sudo 即可,密碼為當初安裝系統的密碼

第二關:抓下了原始碼也解壓縮了,卻找不到 linux-2.6.27.19 這個目錄?

可能是核心版本號不同,所以目錄名稱也不同,可使用 ls 查看目錄下有那些資料夾

第三關:我怎麼找不到 /usr/include/asm/unistd_32.h 這個檔案?

因為沒有裝 gcc ,所以沒有這個檔案。
輸入以下指令: zypper install gcc

第四關:取出套件失敗?? 出現 No media found

請放入 CD…

第五關:myfunc.c 裡面的程式碼是有打錯嘛?prink() ??

真的沒有打錯,是 prink 沒錯

第六關:make 後出現錯誤訊息?缺少 .config ?

輸入以下指令:make menuconfig

第七關:make menuconfig 為什麼無法執行?

少了 ncurses-devel 這個檔案
輸入以下指令:zypper install ncurses-devel
(請記得要放光碟)

第八關:make menuconfig 後出現了一個藍色視窗,之後要…?

直接選最下面的 Save

之後按Enter,右轉離開

第九關:為什麼我打 make bzlmage 它只跑了一行就不動了?

因為打錯字了,bzIamage 是大寫的 i ( I )  不是小寫的 l ( L )

第十關:這指令要跑多久?

非常久! make bzImage 跟 make modules 兩個加起來最少一個半小時

第十一關:重開機後出現 kernel panic 怎麼辦?

還原快照吧…

第十一關:測試程式編譯出現 Permission denied?

前面加 sudo

第十二關:程式碼出現了其他錯誤訊息?

回去重修程式設計?

第十三關:執行剛編譯的程式,dmesg 後只有一堆文字卻沒有自己寫的輸出結果?

重新開機,在開機時會有選擇核心版本的選項,選擇剛剛編譯的核心

我就是忽略了這一步,結果浪費了一整天的時間在除蟲,事實上一隻疼阿都沒有…

教學到此結束,該去養肝了…

Leave a Reply

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>