ucore_lab0
一直想好好学习一下操作系统课程,去一个Mooc网站上找了一门操作系统的课程。这便是里面的配套实验。
实验指导:点这里
lab0主要是准备相关的操作环境。课程推荐使用qemu
作为硬件模拟器,推荐运行环境为linux操作系统。
因为我使用的是Windows系统,所以需要解决运行环境的问题。开始想了几种解决方案:一个是直接装一个Linux的操作系统,但是觉得这样子系统切换太麻烦了;一个是租一台云服务器,在网上看了一下感觉国内都略贵的样子;还有就是自己装一个虚拟机了,虽然这样子可能有时候性能会有点慢。
另外,在网上看到有个叫做"实验楼"的网站,上面有这门课的配套实验。网站会给你分配和布置实验设备。在上面用过几次,觉得每次都会重新分配机器,不是很方便。还有就是毕竟是别人布置的环境,总有种不自由的感觉。对于我这种新手如果碰到莫名其妙的问题,而解决方案要改权限什么的话,就懵逼了。
所以,我最终还是选择了在虚拟机上装一个Ubuntu。
安装Ubuntu虚拟机
虚拟机一般有两种选择:一个是VMWare Workstation,另一个是Virtual Box。我选择了VBox,因为这个是免费的。
Virtaul Box的安装过程按照默认的选项就好了,没有什么特别之处。
安装好以后,在VBox里面新建一个Ubuntu的设备就好了。我使用的虚拟设备配置如下:
内存: 1GB
硬盘:10GB (本来Vbox建议的是8GB,但是后来安装系统的时候至少要8G空间来访系统配置,然后我就给了10G)
然后点击"运行"的时候,说需要读启动盘。到网上搜了一下,说要下一个镜像放进去。
于是,我去下了一个镜像,用虚拟光驱读出来。
接下来的过程,就是像给正常机器装系统一样,在虚拟设备上装了一个Ubuntu系统,装好以后就不再需要启动盘了。
为了方便和虚拟机之间传输数据,在虚拟设备里面挂载了一个共享盘。具体细节可以参考这里
Virtaul Box下载地址:https://www.virtualbox.org/wiki/Downloads
Ubuntu下载地址(选Desktop就好了):https://www.ubuntu.com/download
安装qemu
去官网上下了一个压缩包。打开发现是源码。于是上网搜了一下,安装的过程大约是下面这样子。
cd /qemu-xxxx
./configure
sudo make
sudo make install
在make 时出现了以下错误:
GEN aarch64-softmmu/config-devices.mak.tmp
GEN aarch64-softmmu/config-devices.mak
GEN alpha-softmmu/config-devices.mak.tmp
GEN alpha-softmmu/config-devices.mak
GEN arm-softmmu/config-devices.mak.tmp
GEN arm-softmmu/config-devices.mak
GEN cris-softmmu/config-devices.mak.tmp
GEN cris-softmmu/config-devices.mak
GEN i386-softmmu/config-devices.mak.tmp
GEN i386-softmmu/config-devices.mak
GEN lm32-softmmu/config-devices.mak.tmp
GEN lm32-softmmu/config-devices.mak
GEN m68k-softmmu/config-devices.mak.tmp
GEN m68k-softmmu/config-devices.mak
GEN microblaze-softmmu/config-devices.mak.tmp
GEN microblaze-softmmu/config-devices.mak
GEN microblazeel-softmmu/config-devices.mak.tmp
GEN microblazeel-softmmu/config-devices.mak
GEN mips-softmmu/config-devices.mak.tmp
GEN mips-softmmu/config-devices.mak
GEN mips64-softmmu/config-devices.mak.tmp
GEN mips64-softmmu/config-devices.mak
GEN mips64el-softmmu/config-devices.mak.tmp
GEN mips64el-softmmu/config-devices.mak
GEN mipsel-softmmu/config-devices.mak.tmp
GEN mipsel-softmmu/config-devices.mak
GEN moxie-softmmu/config-devices.mak.tmp
GEN moxie-softmmu/config-devices.mak
GEN or32-softmmu/config-devices.mak.tmp
GEN or32-softmmu/config-devices.mak
GEN ppc-softmmu/config-devices.mak.tmp
GEN ppc-softmmu/config-devices.mak
GEN ppc64-softmmu/config-devices.mak.tmp
GEN ppc64-softmmu/config-devices.mak
GEN ppcemb-softmmu/config-devices.mak.tmp
GEN ppcemb-softmmu/config-devices.mak
GEN s390x-softmmu/config-devices.mak.tmp
GEN s390x-softmmu/config-devices.mak
GEN sh4-softmmu/config-devices.mak.tmp
GEN sh4-softmmu/config-devices.mak
GEN sh4eb-softmmu/config-devices.mak.tmp
GEN sh4eb-softmmu/config-devices.mak
GEN sparc-softmmu/config-devices.mak.tmp
GEN sparc-softmmu/config-devices.mak
GEN sparc64-softmmu/config-devices.mak.tmp
GEN sparc64-softmmu/config-devices.mak
GEN tricore-softmmu/config-devices.mak.tmp
GEN tricore-softmmu/config-devices.mak
GEN unicore32-softmmu/config-devices.mak.tmp
GEN unicore32-softmmu/config-devices.mak
GEN x86_64-softmmu/config-devices.mak.tmp
GEN x86_64-softmmu/config-devices.mak
GEN xtensa-softmmu/config-devices.mak.tmp
GEN xtensa-softmmu/config-devices.mak
GEN xtensaeb-softmmu/config-devices.mak.tmp
GEN xtensaeb-softmmu/config-devices.mak
GEN aarch64-linux-user/config-devices.mak.tmp
GEN aarch64-linux-user/config-devices.mak
GEN alpha-linux-user/config-devices.mak.tmp
GEN alpha-linux-user/config-devices.mak
GEN arm-linux-user/config-devices.mak.tmp
GEN arm-linux-user/config-devices.mak
GEN armeb-linux-user/config-devices.mak.tmp
GEN armeb-linux-user/config-devices.mak
GEN cris-linux-user/config-devices.mak.tmp
GEN cris-linux-user/config-devices.mak
GEN i386-linux-user/config-devices.mak.tmp
GEN i386-linux-user/config-devices.mak
GEN m68k-linux-user/config-devices.mak.tmp
GEN m68k-linux-user/config-devices.mak
GEN microblaze-linux-user/config-devices.mak.tmp
GEN microblaze-linux-user/config-devices.mak
GEN microblazeel-linux-user/config-devices.mak.tmp
GEN microblazeel-linux-user/config-devices.mak
GEN mips-linux-user/config-devices.mak.tmp
GEN mips-linux-user/config-devices.mak
GEN mips64-linux-user/config-devices.mak.tmp
GEN mips64-linux-user/config-devices.mak
GEN mips64el-linux-user/config-devices.mak.tmp
GEN mips64el-linux-user/config-devices.mak
GEN mipsel-linux-user/config-devices.mak.tmp
GEN mipsel-linux-user/config-devices.mak
GEN mipsn32-linux-user/config-devices.mak.tmp
GEN mipsn32-linux-user/config-devices.mak
GEN mipsn32el-linux-user/config-devices.mak.tmp
GEN mipsn32el-linux-user/config-devices.mak
GEN or32-linux-user/config-devices.mak.tmp
GEN or32-linux-user/config-devices.mak
GEN ppc-linux-user/config-devices.mak.tmp
GEN ppc-linux-user/config-devices.mak
GEN ppc64-linux-user/config-devices.mak.tmp
GEN ppc64-linux-user/config-devices.mak
GEN ppc64abi32-linux-user/config-devices.mak.tmp
GEN ppc64abi32-linux-user/config-devices.mak
GEN ppc64le-linux-user/config-devices.mak.tmp
GEN ppc64le-linux-user/config-devices.mak
GEN s390x-linux-user/config-devices.mak.tmp
GEN s390x-linux-user/config-devices.mak
GEN sh4-linux-user/config-devices.mak.tmp
GEN sh4-linux-user/config-devices.mak
GEN sh4eb-linux-user/config-devices.mak.tmp
GEN sh4eb-linux-user/config-devices.mak
GEN sparc-linux-user/config-devices.mak.tmp
GEN sparc-linux-user/config-devices.mak
GEN sparc32plus-linux-user/config-devices.mak.tmp
GEN sparc32plus-linux-user/config-devices.mak
GEN sparc64-linux-user/config-devices.mak.tmp
GEN sparc64-linux-user/config-devices.mak
GEN tilegx-linux-user/config-devices.mak.tmp
GEN tilegx-linux-user/config-devices.mak
GEN x86_64-linux-user/config-devices.mak.tmp
GEN x86_64-linux-user/config-devices.mak
GEN config-all-devices.mak
GEN config-host.h
(cd /home/phantom01/work/qemu/pixman; autoreconf -v --install)
/bin/sh: 1: autoreconf: not found
Makefile:211: recipe for target '/home/phantom01/work/qemu/pixman/configure' failed
make: *** [/home/phantom01/work/qemu/pixman/configure] Error 127
去 ./pixman/
目录下看了一下,确实没有configure
文件,但是有一个configure.ac
。所以需要autoreconf
工具,将这个configure.ac
生成对应的configure
文件。
所以,接下来我安装了autoreconf
:
apt-get install autoconf automake libtool
然后切换到pixman
目录下面执行
autoreconf -v --install
来生成configure
文件。
然后在切到qemu
目录下执行make。然后在 sudo make install
成功。
为方便操作,建立软连接:
sudo ln -s /usr/local/bin/qemu-system-i386 /usr/local/bin/qemu
注意点: make失败是不要clean再重新make。因为在make过程中会改变一些make文件,所以clean掉可能会出一些问题。
qemu下载地址:http://wiki.qemu.org/Download
附1: VirtualBox创建内Linux系统与Windows的共享文件夹
来源: http://jingyan.baidu.com/article/2fb0ba40541a5900f2ec5f07.html
在日常工作或学习中我们经常需要在一台电脑上同时使用Windows和Linux(这里以Ubuntu为例)两个系统,我们通常的做法有两种:
一种安装双系统(双系统的安装方法经验里已经有很多,大家可以去参照)
另一种更为普遍的是在Windows本机用虚拟机安装Linux系统,然而Windows本机与虚拟机内Linux系统的文件该如何交换呢,其实也有好多方法,如USB接口设备共享、Ftp服务器共享等,这里主告诉告诉大家一种更为方便办法“共享文件夹”(这个方法在windows虚拟系统上设置比较简单),下面我们看看如何让Windows本机和Linux虚拟系统之间共享文件夹。
工具/原料
- Oracle VM VirtualBox
- Windows XP 以上操作系统
方法/步骤
- 首先,必须要有已经在VirtualBox中安装好的Ubuntu系统,才能按照以下步骤操作,具体怎样在VirtualBox中安装Ubuntu系统百度经验里已经有很多,大家可以自己查询参照。
- 打开虚拟机进入Ubuntu系统,首先要安装VirtualBox增强功能包(VBoxGuestAdditions),参照下图,如果确认已经安装就直接跳过至第4步。 (设备 - 安装增强功能)
- 点击运行后,系统会自动安装,安装完成后要求重启系统。
- 在本机系统设置一个共享文件夹,用于与Ubuntu交互的区域空间。
- 右击状态栏上共享文件夹图标或菜单栏“设备-共享文件夹”,打开共享文件夹设置。
- 点击共享文件夹设置框,右上角的添加按钮
- 选择之前本机设置的共享文件夹,此时一定不可以勾选自动挂载
- 设置好共享名后,进入Ubuntu系统,打开终端,先执行命令,在挂载点目录添加
bdshare
目录,接着执行mount -t vboxsf BaiduShare /mnt/bdshare/
,就能完成共享文件夹的设置。 - 设置完成,可以创建几个文件,测试一下。
- 设置自动挂载,重启虚拟机系统共享仍在。可以在
/etc/fstab
中添加一项BaiduShare /mnt/share vboxsf rw,gid=110,uid=1100,auto 0 0
- 卸载挂载点命令:
umount -f /mnt/share
注意事项
- 其它linux系统设置方法基本相同
- 共享文件夹的名称不能和挂载点的名称相同。
参考资料
ucore_lab0的更多相关文章
随机推荐
- python网络爬虫高清PDF资料分享
1.python+网络爬虫开发实战中文PDF高清版 链接:https://pan.baidu.com/s/1bks8J9kgqCArUlEoDg4acA 提取码:h9y2 复制这段内容后打开百度网盘手 ...
- ORM框架 SQLAlchemy
什么是ORM 使用关系对象映射进行数据库操作. 将对象转换成SQL,然后使用数据API执行SQL并获取执行结果. 分类 -DB first 手动创建数据库和表,自动生成类 -code first 手动 ...
- 原生js,时间日期简单应用。
一.数码时钟,滚动切换时间. <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...
- 洛谷—— P1238 走迷宫
https://www.luogu.org/problem/show?pid=1238 题目描述 有一个m*n格的迷宫(表示有m行.n列),其中有可走的也有不可走的,如果用1表示可以走,0表示不可以走 ...
- Windows平台编译openssl-0.9.8k库(32位、64位)
近期工作中使用到了openssl的win64位资料,所以进行前期调研,汇总结果例如以下: [注意]openssl代码所在文件夹中不要带中文,否则"nmake -f ms\ntdll.mak ...
- 上机题目(0基础)- Java网络操作-Socket实现client和server端通信(Java)
非常多刚開始学习的人对于java网络通信不太熟悉.对相关概念也不太明确,这里我们主要实现一下socket通信,socket通信在java中应用十分广泛.比如QQ和MSN等都是基于socket通信的,什 ...
- NHibernate之旅(14):探索NHibernate中使用视图
本节内容 引入 1.持久化类 2.映射文件 3.測试 结语 引入 在数据库操作中,我们除了对表操作,还有视图.存储过程等操作,这一篇和下篇来学习这些内容.这篇我们来学习怎样在NHibernate中使用 ...
- Spring经常使用属性的注入及属性编辑器
对于对象的注入,我们使用ref方式,能够指定注入的对象.以下看下对于基本类型的注入.以及当spring无法转换基本类型进行注入时,怎样编写一个相似转换器的东西来完毕注入. 一.基本类型的注入 以下写一 ...
- IOS写一个能够支持全屏的WebView
这样来写布局 一个TitleView作为顶部搜索栏: @implementation TitleView - (id)initWithFrame:(CGRect)frame { self = [sup ...
- oracle 11gR2 如何修改 private ip
1.1 修改 private ip1.1.1 确保crs集群是打开的可以用olsnodes –s 检查集群的状态./olsnodes -sP570a ActiveP570b Active1.1 ...