ucore lab0 實驗准備


前言

實現一個操作系統一直是我的一個願望,當然為了不只是願望,因此近期開始嘗試實現。搜索了相關資料后,計划先從清華大學的ucore操作系統開始,完成其8個實驗,之后再進一步修改、添加新功能,逐步實現自己的OS

另外,博客已經很久沒更新了,這是時隔3年的第一次更新,之后也會更多通過博客園記錄學習過程

內容

完成實驗環境的搭建

開發環境

ucore實驗與運行需要在Linux上,因為Win還是比較方便,所以我使用的是虛擬機安裝Linux,虛擬機使用VMware,Linux發行版使用最新版的Ubuntu 20.04

ucore實驗編寫時使用Win的VS Code,較為流暢、方便(當然也可以直接在Ubuntu中使用VS Code編輯),但是編譯、調試、運行OS時需要使用虛擬機的Ubuntu,為了使得兩者無縫切換,可以將Win的相應目錄映射到Ubuntu虛擬機/mnt目錄下。如圖我映射了Win下的整個A盤,映射名稱為a,映射到了Ubuntu的/mnt/hgfs/a目錄

下載ucore

使用git從github中下載,github地址,如下:

git clone https://github.com/chyyuu/ucore_os_lab.git

由於git clone比較慢,因此我是直接在github上下載的zip壓縮包

安裝qemu

ucore使用qemu模擬器運行,qemu支持多種cpu架構的模擬,如i386、arm、mips等,通過apt可安裝qemu,如下:

sudo apt-get install qemu-system

編譯內核

從github下載的ucore_os_lab目錄中,ucore_os_lab/labcodes_answer為較為完整的os代碼,首先通過編譯lab1的代碼了解ucore編譯過程。

  • 進入ucore_os_lab/labcodes_answer/lab1_result目錄
  • 使用make clean清空編譯結果
  • 使用make命令編譯

編譯成功后生成一系列目標文件,主要有:

  • ucore.img:被qemu訪問的虛擬硬盤文件
  • kernel: ELF格式的toy ucore kernel執行文,被嵌入到了ucore.img中
  • bootblock: 虛擬的硬盤主引導扇區(512字節),包含了bootloader執行代碼,被嵌入到了ucore.img中
  • sign:外部執行程序,用來生成虛擬的硬盤主引導扇區

編譯完成后使用make qemu即可啟動內核運行

內核調試

內核開發過程中不可能一次成功,需要反復調試、運行,為了使調試過程更為直觀、易操作,使用Ubuntu中的VS Code進行調試。VS Code需要做如下配置:

  • 將lab1_result目錄在VS Code中打開
  • 點擊運行-創建launch.json文件,選擇gdb調試器
  • VS Code會自動創建該文件模板,在配置項中只需修改和增加下面兩個
"miDebuggerServerAddress": "127.0.0.1:1234",
"program": "bin/kernel"

完成配置后可通過VS Code進行調試

  • 使用make gdb使qemu進入調試模式
  • 在內核代碼中添加斷點
  • 啟動調試
  • 進行調試

參考


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM