MIT6.828课程JOS在macOS下的环境配置
来源:互联网 发布:听收音机的软件 编辑:程序博客网 时间:2024/05/16 05:39
本文将介绍如何在macOS
下配置MIT6.828 JOS
实验的环境。
写JOS
之前,在网上搜寻JOS
的开发环境,很多博客和文章都提到“不是32位linux就不好配置,会浪费大量时间在配置环境”上之类的论调。故前期开发直接使用了32位ubuntu系统,并做了共享文件系统,背景开一个ubuntu虚拟机进行编译。
最近实在无法忍受背景开虚拟机那恐怖的耗电量和发热量,尝试将开发环境移到macOS
下,竟发现非常的简单。
Tools we need
在搭建环境之前,首先macOS上需要有以下两个工具:
Homebrew
Homebrew — The missing package manager for macOSMacPorts
The MacPorts Project – Home
运行JOS
QEMU
有了
Homebrew
,直接利用brew
安装即可安装(自动安装依赖库)$brew install qemu
将
kernel.img
与fs.img
放在目标目录下 (也可以在其他位置,为了下面的Makefile
好写).├── Makefile├── fs.img└── kernel.img
书写
Makefile
QEMU=/usr/local/Cellar/qemu/2.10.0/bin/qemu-system-i386 # path to qemurun:$(QEMU) -drive file=./kernel.img,index=0,media=disk,format=raw -serial mon:stdio -vga std -smp 1 -drive file=./fs.img,index=1,media=disk,format=raw
编译JOS
i386-elf-gcc
利用
Macports
来安装i386-elf-gcc
$ sudo port -v selfupdate$ sudo port install i386-elf-gcc
Macports
会帮你下载源码,编译(非常漫长)修改
Makefile
中的一些内容diff --git a/GNUmakefile b/GNUmakefileindex adc693e..60fe010 100644--- a/GNUmakefile+++ b/GNUmakefile@@ -33,15 +33,15 @@ TOP = .# try to infer the correct GCCPREFIXifndef GCCPREFIX-GCCPREFIX := $(shell if i386-jos-elf-objdump -i 2>&1 | grep '^elf32-i386$$' >/dev/null 2>&1; \- then echo 'i386-jos-elf-'; \+GCCPREFIX := $(shell if i386-elf-objdump -i 2>&1 | grep '^elf32-i386$$' >/dev/null 2>&1; \+ then echo 'i386-elf-'; \ elif objdump -i 2>&1 | grep 'elf32-i386' >/dev/null 2>&1; \ then echo ''; \ else echo "***" 1>&2; \ echo "*** Error: Couldn't find an i386-*-elf version of GCC/binutils." 1>&2; \- echo "*** Is the directory with i386-jos-elf-gcc in your PATH?" 1>&2; \+ echo "*** Is the directory with i386-elf-gcc in your PATH?" 1>&2; \ echo "*** If your i386-*-elf toolchain is installed with a command" 1>&2; \- echo "*** prefix other than 'i386-jos-elf-', set your GCCPREFIX" 1>&2; \+ echo "*** prefix other than 'i386-elf-', set your GCCPREFIX" 1>&2; \ echo "*** environment variable to that prefix and run 'make' again." 1>&2; \ echo "*** To turn off this error, run 'gmake GCCPREFIX= ...'." 1>&2; \ echo "***" 1>&2; exit 1; fi)
修改
.deps
中一些内容删除
fsformat
的依赖检查obj/fs/: fs/fsformat.c
修改配置文件中的
qemu
参数QEMU=/usr/local/Cellar/qemu/2.10.0/bin/qemu-system-i386
编译运行JOS
阅读全文
4 0
- MIT6.828课程JOS在macOS下的环境配置
- MIT6.828 JOS系统 lab2
- CRF++-0.58在macOS下的配置
- MIT6.828课程学习初步
- macOS下基于GLFW+GLAD的OpenGL环境配置
- MIT 6.828 JOS 环境配置
- MacOS下配置go开发环境
- 【环境配置】MacOS下安装Ubuntu双系统
- 在macOS环境下安装Redis
- 在macOS环境下安装Redis
- 配置python的virtualenv环境--macOS
- macos java环境配置
- macos下使用jenkins+tomcat搭建自动构建环境的脚本配置
- xgboost4j 在linux macOs上的配置
- SDL在MACOS下的编译
- 在macOS下R的xlsx安装
- 【最新版】从零开始在 macOS 上配置 Lua 开发环境
- 【LuaJIT版】从零开始在 macOS 上配置 Lua 开发环境
- IOC
- [LeetCode] 143. Reorder List
- 自媒体淘客到底要怎么做
- 字符串分割成字串都是回文
- ES-PHP向ES批量添加文档报No alive nodes found in your cluster
- MIT6.828课程JOS在macOS下的环境配置
- Waiting for target device to come online
- 全面了解Nginx到底能做什么
- Python定义函数默认参数
- java模式之适配器模式
- java中动态加载文件
- Integer 类型与 int 的==比较
- 2017-09-11 LeetCode_024 Swap Nodes in Pairs
- MySQL 数据库常用命令小结