操作系統入門系列-MIT6.828(操作系統工程)學習筆記(二)----課程實驗環境搭建(wsl2+ubuntu+quem+xv6)

MIT6.S081(操作系統)學習筆記

操作系統入門系列-MIT6.828(操作系統)學習筆記(一)---- 操作系統介紹與接口示例
操作系統入門系列-MIT6.828(操作系統工程)學習筆記(二)----課程實驗環境搭建(wsl2+ubuntu+quem+xv6)


文章目錄

  • MIT6.S081(操作系統)學習筆記
  • 前言
  • 一、安裝依賴
    • 1.測試環境
      • (a)檢測1
      • (b)檢測2
    • 2.檢測未通過情況
    • 3.安裝依賴
  • 二、安裝QEMU
    • 1.下載源碼
    • 2.修改配置
      • (a)修改Makefile
      • (b)增加頭文件
      • (c)修改編譯參數
    • 2.編譯QEMU
  • 三、啟動xv6
    • 1.下載實驗源碼
    • 2.編譯啟動
  • 四、2023版本配置
    • 1.配置環境
    • 2.檢查環境
    • 3.啟動xv6
  • 總結


前言

該課程有大量的課程實驗,理論和實驗的教學都是基于課程組設計的xv6操作系統(模仿Unix設計風格)。通過大量實驗和課程,可以對操作系統特別是Linux有深入的理解。

本篇文章講解實驗的環境qemu+xv6搭建,具體配置如下:
虛擬機:WSL2
Linux:ubuntu20.04

官方的教程如下:Tools Used in 6.828


上述的課程資料是2018年,筆者發現2023年課程有所該改變,貌似改了名字,因此補充2023版本的xv6環境配置,更加的簡單。
官方的教程如下:Tools Used in 6.1810


一、安裝依賴

1.測試環境

(a)檢測1

objdump -i

結果為:(部分打印)
在這里插入圖片描述
有elf32-i386即為正確

(b)檢測2

gcc -m32 -print-libgcc-file-name

結果為:
在這里插入圖片描述

/usr/lib/gcc/x86_64-linux-gnu/11/32/libgcc.a
或者
/usr/lib/gcc/i486-linux-gnu/version/libgcc.a
即為正確

2.檢測未通過情況

若上述檢測未通過,運行下面代碼:

sudo apt-get install -y build-essential gdb

命令執行結果如果出現錯誤:“__udivdi3 not found” 或者 “__muldi3 not found”,是因為需要32位的支持庫,運行下面代碼修復:

sudo apt-get install gcc-multilib

3.安裝依賴

安裝一些依賴庫,以便順利編譯QEMU

sudo apt-get install libsdl1.2-dev
sudo apt-get install libglib2.0-dev
sudo apt-get install libz-dev
sudo apt-get install libpixman-1-dev
sudo apt-get install libtool*
sudo apt-get install zlib1g-dev

如果中間出現錯誤,可能需要運行:

 sudo apt-get update

二、安裝QEMU

1.下載源碼

使用官方鏈接下載QEMU源碼,執行命令如下:

git clone https://github.com/mit-pdos/6.828-qemu.git qemu

該命令會在當前目錄下,將qemu的源碼下載到名為“qemu”的文件夾內
在這里插入圖片描述

2.修改配置

(a)修改Makefile

在qemu文件夾內,修改Makefile文件,在QEMU源碼目錄下的Makefile文件最后加上一行

QEMU_CFLAGS+=-w

結果如下圖:
在這里插入圖片描述

(b)增加頭文件

在 qga/commands-posix.c文件中加 #include <sys/sysmacros.h>
結果如圖:
在這里插入圖片描述

(c)修改編譯參數

將QEMU源碼目錄下的config-host.mak文件中的-Werror去掉
在這里插入圖片描述

2.編譯QEMU

在qemu目錄下運行

./configure --disable-kvm --target-list="i386-softmmu x86_64-softmmu"

如果沒有成功,檢查上述問題是否修改
運行成功后,進入root權限,并執行make:

sudo su
make && make install

退出root用戶

exit

三、啟動xv6

1.下載實驗源碼

git clone https://pdos.csail.mit.edu/6.828/2018/jos.git lab

該命令會在當前目錄下,將實驗的源碼下載到名為“lab”的文件夾內
結果如下:(編譯后的)
在這里插入圖片描述

2.編譯啟動

在lab目錄下,執行下面命令:

make
sudo make qemu

結果如下:
在這里插入圖片描述
實驗環境搭建成功

四、2023版本配置

1.配置環境

輸入命令

sudo apt-get install git build-essential gdb-multiarch qemu-system-misc gcc-riscv64-linux-gnu binutils-riscv64-linux-gnu

部分結果如下:
在這里插入圖片描述

2.檢查環境

輸入命令:

qemu-system-riscv64 --version

結果如下:
在這里插入圖片描述
輸入命令:

riscv64-linux-gnu-gcc --version

結果如下:
在這里插入圖片描述

輸入命令:

riscv64-unknown-elf-gcc --version

在這里插入圖片描述

輸入命令:

riscv64-unknown-linux-gnu-gcc --version

結果如下:
在這里插入圖片描述
這里沒有發現對應工具,但是不影響后面的啟動。

3.啟動xv6

輸入命令,拉取實驗代碼:

git clone git://g.csail.mit.edu/xv6-labs-2023 lab

在這里插入圖片描述
進入lab目錄,輸入命令:

make qemu

結果如下:
在這里插入圖片描述
即為啟動成功。

總結

配置2018版本的過程中如果出現其他本文沒有出現的bug,很有可能是沒有依賴庫或者依賴庫的函數版本不對。可以按照報錯提示修改相應的函數名稱或者查看其他博客。wsl2+ubuntu的搭建,之后可能會出教程。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/16492.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/16492.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/16492.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java面向對象-常用類(日期時間類)

常用類-日期時間類 Date&#xff08;java.util.Date&#xff09; – 日期類 SimpleDateFormat – 格式化日期類 Calendar – 日歷類 1 Date類 java.util.Date類表示特定的瞬間&#xff0c;精確到毫秒。 package com.qf.datetime;import java.util.Date;public class Test01 {…

ubantu20.04 跑通ros2版的orbslam2

我的歷程 先編譯的非ros版的robslam2&#xff08;非常詳細&#xff09; ubuntu20.04配置并編譯ORB-SLAM2_ubuntu20.04安裝orb-lslam2-CSDN博客 然后裝ros2&#xff08;非常詳細&#xff09; 詳細介紹如何在ubuntu20.04中安裝ROS系統&#xff0c;超快完成安裝&#xff08;最…

C#解析xml文件

1、示例 <?xml version"1.0" encoding"utf-8" standalone"no"?><DATA><ITEMS><ITEM><ID>01<ID/><CODE>0001<CODE><NAME>測試1<NAME/></ITEM><ITEM><ID>02<…

福昕PDF編輯器自定義快捷方式

你是否為用不慣福昕PDF編輯器自帶的快捷鍵而發愁&#xff1f;今天&#xff0c;我和大家分享一下如何設置自己想要的快捷鍵方式&#xff0c;希望能對大家有幫助。 步驟一&#xff1a;打開福昕PDF編輯&#xff0c;并找到更多命令 步驟二&#xff1a;切換到鍵盤一欄&#xff0c;并…

分布式專題

一&#xff1a;分布式事務 1、理論基礎 分布式事務主要區分本地事務 什么是本地事務&#xff08;Local Transaction&#xff09;&#xff1f;本地事務也稱為數據庫事務或傳統事務&#xff08;相對于分布式事務而言&#xff09;。尤其對于數據庫而言&#xff0c;為了數據安全…

Android 多張圖片合成GIF

直接用嗶哩嗶哩弄的一個庫&#xff0c;傳送門&#xff1a;https://github.com/bilibili/BurstLinker 他那個庫的文檔寫的比較簡陋&#xff0c;所以我決定&#xff0c;我也寫得十分簡陋 引用&#xff1a; api com.bilibili:burst-linker:0.0.13 使用&#xff1a; /*** param i…

Docker快速搭建Oracle服務

服務器&#xff1a;CentOS7.9 1.安裝docker yum install -y docker 2. 設置鏡像加速 修改 /etc/docker/daemon.json 文件并添加上 registry-mirrors 鍵值 阿里云的docker鏡像需要自己注冊賬號&#xff0c;也可以不注冊賬號&#xff0c;直接使用下面的連接。 也可以寫入多…

【C++ 】學習問題及補充

一.自定義類型不初始化直接就賦值&#xff0c;比如string類會怎么樣 vectr<string>里已經給每個string對象已經分配好空間&#xff0c;為什么不初始化再賦值會報錯 在C中&#xff0c;std::string類是一個動態字符串類&#xff0c;它內部管理著一個字符數組&#xff0c;用…

2024東北四省賽——M House

cf上有題解&#xff0c;我寫這個只想說真服了&#xff0c;卡double了導致一直沒做出來 開long double過的 貼一下我的代碼 #include <bits/stdc.h>using namespace std; typedef long double LD; typedef long long LL; #define int LL #define double LD const int N …

【藍橋杯】國賽普及-

題目列表 - 洛谷 | 計算機科學教育新生態 (luogu.com.cn) P9420 [藍橋杯 2023 國 B] 子 2023 / 雙子數 - 洛谷 | 計算機科學教育新生態 (luogu.com.cn) #include<bits/stdc.h> using llunsigned long long; #define int ll const int N2e510; int k0; std::string s; int…

【傳知代碼】無監督動畫中關節動畫的運動表示-論文復現

文章目錄 概述動畫技術的演進原理介紹核心邏輯環境配置/部署方式小結 本文涉及的源碼可從無監督動畫中關節動畫的運動表示該文章下方附件獲取 概述 該文探討了動畫在教育和娛樂中的作用&#xff0c;以及通過數據驅動方法簡化動畫制作的嘗試。近期研究通過無監督運動轉移減少對…

Java進階學習筆記30——BigDecimal

BigDecimal&#xff1a; 用于解決浮點型運算的&#xff0c;出現結果失真的問題。 運行結果&#xff1a; package cn.ensource.d4_bigdecimal;import java.math.BigDecimal;public class Test {public static void main(String[] args) {// 目標&#xff1a;了解BigDecimal類do…

RustGUI學習(iced/iced_aw)之擴展小部件(二十七):如何使用number_input部件?

前言 本專欄是學習Rust的GUI庫iced的合集,將介紹iced涉及的各個小部件分別介紹,最后會匯總為一個總的程序。 iced是RustGUI中比較強大的一個,目前處于發展中(即版本可能會改變),本專欄基于版本0.12.1. 概述 這是本專欄的第二十七篇,主要講述number_input部件的使用,會…

8、Qt—Log4Qt使用小記2(每日產生文件)

前言&#xff1a; 開發平臺&#xff1a;Win10 64位 開發環境&#xff1a;Qt Creator 13.0.0 構建環境&#xff1a;Qt 5.15.2 MSVC2019 64位 例如&#xff1a;上一篇文章中筆者記錄了Log4qt的編譯及配置使用&#xff0c;這篇文章重點寫下每天產生文件到指定文件夾中&#xff0c;…

5.1 Go 函數的定義與調用

&#x1f49d;&#x1f49d;&#x1f49d;歡迎蒞臨我的博客&#xff0c;很高興能夠在這里和您見面&#xff01;希望您在這里可以感受到一份輕松愉快的氛圍&#xff0c;不僅可以獲得有趣的內容和知識&#xff0c;也可以暢所欲言、分享您的想法和見解。 推薦:「stormsha的主頁」…

Spring Boot集成testcontainers快速入門Demo

1.什么是testcontainers&#xff1f; Testcontainers 是一個用于創建臨時 Docker 容器進行單元測試的 Java 庫。當我們想要避免使用實際服務器進行測試時&#xff0c;它非常有用。&#xff0c;官網介紹稱支持50多種組件。? 應用場景 數據訪問層集成測試&#xff1a; 使用My…

ubuntu20安裝Labelme

conda create --namelabelme python3 進入conda環境 source activate labelme 安裝labelme pip install labelme 遇到網絡問題 使用清華源 pip install labelme -i https://pypi.tuna.tsinghua.edu.cn/simple/ 輸入labelme 打開

Google的MLP-MIXer的復現(pytorch實現)

Google的MLP-MIXer的復現&#xff08;pytorch實現&#xff09; 該模型原論文實現用的jax框架實現&#xff0c;先貼出原論文的代碼實現&#xff1a; # Copyright 2024 Google LLC. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may …

GEC210編譯環境搭建

一、下載編譯工具鏈 下載&#xff1a;點擊跳轉 二、解壓到 /usr/local/arm 目錄 sudo mv gec210.zip /usr/local/arm cd /usr/local/arm sudo unzip gec210.zip 三、添加到環境變量 PATH/usr/local/arm/arm-cortex_a8-linux-gnueabi-4.7.3/bin:$PATH 四、測試驗證 在終端…

python數據分析-基于數據挖掘對APP評分的預測

前言 當我們談論關于APP用戶分析與電子商務之間的聯系時&#xff0c;機器學習在這兩個領域的應用變得至關重要。App用戶分析和電子商務之間存在著密切的關聯&#xff0c;因為用戶行為和偏好的深入理解對于提高用戶體驗、增加銷售以及優化產品功能至關重要。故本文基于K-近鄰模…