操作系统实战45讲-环境配置
前言
最近在极客时间上学习彭东老师的课程《操作系统实战45讲》,内容干货满满,就是自己太菜了,很多汇编代码只能边看边学。下面是关于课程中涉及到的环境配置总结,将过程中遇到的坑记录一下,防止下次忘记。
环境准备
-
物理机操作系统:Windows 10
-
虚拟机工具:VirtualBox
-
虚拟机JoinApper操作系统版本:Ubuntu 18.04
我主要使用VirtualBox来进行此次实验环境的配置,创建了两个虚拟机环境:一个JoinApper用来进行虚拟磁盘的生成,一个HelloOs用来演示实验效果。
注意:对于演示实验效果的虚拟机,在创建的时候需要选择不添加虚拟硬盘,因为后面需要添加我们自己生成的虚拟磁盘。
硬盘生成
1.生产虚拟硬盘
dd bs=512 if=/dev/zero of=hd.img count=204800
;bs:表示块大小,这里是512字节
;if:表示输入文件,/dev/zero就是Linux下专门返回0数据的设备文件,读取它就返回0
;of:表示输出文件,即我们的硬盘文件。
;count:表示输出多少块
2.硬盘上建立文件系统
2.1 将虚拟硬盘文件变成Linux下的回环设备
sudo losetup /dev/loop0 hd.img
2.2 格式化回环快设备
sudo mkfs.ext4 -q /dev/loop0
3.硬盘挂载
sudo mount -o loop ./hd.img ./hdisk/ ;挂载硬盘文件
sudo mkdir ./hdisk/boot/ ;建立boot目录
安装GRUB
1.挂载虚拟硬盘文件为loop0回环设备
sudo losetup /dev/loop0 hd.img
sudo mount -o loop ./hd.img ./hdisk/ ;挂载硬盘文件
2.安装GRUB
sudo grub-install --boot-directory=./hdisk/boot/ --force --allow-floppy /dev/loop0
;--boot-directory 指向先前我们在虚拟硬盘中建立的boot目录。
;--force --allow-floppy :指向我们的虚拟硬盘设备文件/dev/loop0
3.在/hdisk/boot/grub目录下建立一个grub.cfg文本文件
写入下面内容
menuentry 'HelloOS' {
insmod part_msdos
insmod ext2
set root='hd0,msdos1' #我们的硬盘只有一个分区所以是'hd0,msdos1'
multiboot2 /boot/HelloOS.eki #加载boot目录下的HelloOS.eki文件
boot #引导启动
}
set timeout_style=menu
if [ "${timeout}" = 0 ]; then
set timeout=10 #等待10秒钟自动启动
fi
转换虚拟磁盘格式
因为我们是在虚拟机上创建的虚拟磁盘,但是VirtualBox是安装在windows上的,因此我们需要将创建好的虚拟磁盘先共享到windows上,关于如何共享windows与virtualbox虚拟机的文件,可以参考下面的链接:
Virtualbox主机和虚拟机之间文件夹共享及双向拷贝(win7——centos7)_赶路人儿-CSDN博客_怎么把virtualbox虚拟机里的文件拷贝出来
之后我们需要将虚拟磁盘的格式进行转换,这一步主要是为了让虚拟机能够识别硬盘。
# Linux下命令
VBoxManage convertfromraw ./hd.img --format VDI ./hd.vdi
;convertfromraw 指向原始格式文件
;--format VDI 表示转换成虚拟需要的VDI格式
# Windows下命令
VBoxManage.exe convertfromraw ./hd.img --format VDI ./hd.vdi
注意:可以在VirtualBox安装目录下找到这个exe文件
安装虚拟硬盘
因为我是在Windows下进行的,所以只介绍windows系统上的操作,linux的可以自己搜索一下。
打开设置中的存储,然后注册之前创建的虚拟硬盘即可。
启动虚拟机
启动后就可以进入GRUB的引导界面了。
遇到的问题
-
安装VirtualBox成功后,在启动虚拟机的时候出现一个问题:
经过查询,需要禁用Hyper-V,因此以管理员身份执行下面语句
bcdedit /set hypervisorlaunchtype off
-
在设置回环设备时,遇到以下错误:
我们先通过以下命令看看哪些回环设备忙
ls /dev/loop*
然后找到其中没有的,我就是使用了/dev/loop19
参考
-
环境配置参考:
Notion – The all-in-one workspace for your notes, tasks, wikis, and databases.
-
windows与virtualBox虚拟机间共享文件:
Virtualbox主机和虚拟机之间文件夹共享及双向拷贝(win7——centos7)_赶路人儿-CSDN博客_怎么把virtualbox虚拟机里的文件拷贝出来