手写操作系统-启动初始化(1)

手写操作系统-启动初始化(1)

这个操作系统是跟着《极客时间》彭东老师写的,由于里面没有详细的说明如何利用window下的VMware搭建自己操作系统,参考别人在Ubuntu和Mac上virtual-box的搭建过程,记录以下自己搭建的过程。若有不详细的参考彭东老师课程

一. 制作VMware能识别的硬盘hd.vmdk供fwyOS使用

因为fwyOS运行在VMware上,他的硬盘是VMware提供,因此得制作一块VMware能识别的空白磁盘,转交给fwyOS

1.在VMware上先装好Ubuntu,我的是ubuntu18

2.运行如下代码,制作105MB的虚拟硬盘

dd bs=512 if=/dev/zero of=hd.img count=204800

;bs:表示块大小,这里是512字节
;if:表示输入文件,/dev/zero就是Linux下专门返回0数据的设备文件,读取它就返回0
;of:表示输出文件,即我们的硬盘文件。
;count:表示输出多少块

运行结果如下图所示:
在这里插入图片描述
会在主目录下看到hd.img,如图所示
在这里插入图片描述

3.拷贝hd.img到windows桌面下

其实如果装了VMware Tool理论上是可以实现文件从Ubuntu到window10桌面的拖拽,但是时有bug,这种情况直接windows和VMware里的Ubuntu进行文件夹共享,操作如下:
1.在虚拟机里设置我们目前所在的Ubuntu,启用共享文件夹,该文件夹window下已经创建好的,如图
在这里插入图片描述
完成后重新启动Ubuntu,在/ mnt / hgfs下就能看到share文件夹,将制作好的hd.img拷贝过去,window下就能看到了

4.在window下利用StarWind V2V Image Converter将hd.img制作成hd.vmdk

.vmdk是vmware能识别的文件,下载StarWind V2V Image Converter软件即可,网上百度随便搜,就有
在这里插入图片描述
我选的是SCSI
在这里插入图片描述

二. 将hd.vmdk挂在到原来的ubuntu上

在设置里点击添加
在这里插入图片描述
添加硬盘找到你刚刚制作的hd.vmdk,如果他要你升级,你就升级呗
在这里插入图片描述
弄完后,重启电脑,你就能看到多了个硬盘,105MB的就是新挂载的
在这里插入图片描述

三. 新建fwyOS绑定硬盘hd.vmdk

在VMware上在来一个操作系统,不过是我们的操作系统
在这里插入图片描述
在这里插入图片描述
这里SCSI和上面对应起来了
在这里插入图片描述
使用现有的虚拟磁盘,就是哪个hd.vmdk文件
在这里插入图片描述
在这里插入图片描述
这样我们的操作系统就可以把hd.vmdk作为引导盘读进来了,当然里面的内容,我们接下来要利用现有的Ubuntu给他制作,相当于两个操作系统都可以访问hd.vmdk

四. 安装GRUB

在Ubuntu里输入命令lsblk,可以看到一共有两块硬盘:sda、sdb,其中sda是Ubuntu系统的专用硬盘,sdb就是我们的目标硬盘hd.vmdk。
在这里插入图片描述
接着我们输入如下命令,将设备挂载在到hdisk

//sdb设备只是一块新的硬盘,上面需要建立文件系统才能够使用
//mkfs.ext4即是在sdb上建立ext4文件系统
sudo mkfs.ext4 /dev/sdb
mkdir hdisk
//将/dev/sdb挂载在hdisk目录下,这样我们就能通过访问hdisk目录访问sdb硬盘
mount /dev/sdb ./hdisk

创建boot目录

sudo mkdir ./hdisk/boot

将grub安装到boot中(grub可以看做是bootloader,是用来加载操作系统的),这需要借助grub-install工具,运行出现警告没事,只要不报错

sudo grub-install --boot-directory=./hdisk/boot/ --force --allow-floppy /dev/sdb

最后配置grub的启动项,在boot/grub目录下新建一个grub.cfg,其中的内容如下:

//设置HelloOS是启动系统的第一个选项
menuentry 'fwyOS' {
#加载part_msdos、ext2模块
#这是grub的语法
insmod part_msdos
insmod ext2
set root='hd0' #只有一个硬盘,因此设置根目录为hd0(就是hd.vmdk)
multiboot2 /boot/fwyOS.eki #加载boot目录下的.eki内核文件
boot #加载启动内核文件
}
#设置过时样式为目录
set timeout_style=menu
#设置过时时间
if [ "${timeout}" = 0 ]; then
  set timeout=10 #等待10秒钟自动启动
fi

关机当前Ubuntu,启动fwyos可以看到如下界面

在这里插入图片描述
暂时还没做fwyOS.eki,所以会报错,后续做
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值