设置工作模式与环境(上):建立计算机
1)一个内核工程需要多个文件,如果让GRUB大兄弟一个一个文件去加载,那他得累死,那我们应该怎么办?
-
把多个文件合起来,这个合起来的文件叫内核映像文件,GRUB加载它就行了。
2)这个内核映像文件有了,那么怎样让GRUB找到他呢?你得告诉我一些提示吧,这就是映像文件的格式,那映像文件的格式是怎样的呢?
-
有个4KB的GURB头,来给GRUB带路,然后是总文件描述符,分文件描述符。这些描述符是C语言写的
3)映像文件有了,不可能让他裸奔。那怎么打包呢?
-
lmoskrlimg -m k -lhf GRUB头文件 -o 映像文件 -f 输入的文件列表
-m 表示模式 只能是k内核模式
-lhf 表示后面跟上GRUB头文件
-o 表示输出的映像文件名
-f 表示输入文件列表
例如:lmoskrlimg -m k -lhf grubhead.bin -o kernel.img -f file1.bin file2.bin file3.bin file4.bin
4)现在我们映像文件打包好了,那么我们该准备虚拟机了,方便用来调试运行我们写的操作系统,那使用什么虚拟机最方便呢?
-
virtualbox,官网下载windows版本的就可以
5)接下来我们手工生产硬盘,为什么需要硬盘呢?
-
没有硬盘的话虚拟机不知道去哪里加载数据
6)我们需要去买一个实际硬盘吗?
-
大可不必,linux中万事万物皆文件。直接生产个文件来代替硬盘。
7)手工生产硬盘的详细步骤是怎样的?
-
dd命令先生产个文件
dd bs=512 if=/dev/zero of=hd.img count=204800
;bs:表示块大小,这里是512字节
;if:表示输入文件,/dev/zero就是Linux下专门返回0数据的设备文件,读取它就返回0
;of:表示输出文件,即我们的硬盘文件。
;count:表示输出多少块 -
给这个文件(也可以叫虚拟硬盘)建立一定格式。
-
把文件变为linux下的回环设备,麻痹linux让它以为这是个实际盘而不是文件
sudo losetup /dev/loop0 hd.img (注意这里要是不空闲的话用losetup去找一块空的,显示1-7 那说明8是空的) -
给我们这个假硬盘建个文件系统
sudo mkfs.ext4 -q /dev/loop0
-
-
把hd.img文件当中块设备挂载到事先建立的hdisk目录下。
sudo mount -o loop ./hd.img ./hdisk/ ;挂载硬盘文件
sudo mkdir ./hdisk/boot/ ;建立boot目录到这里我们可以看到hdisk目录下多了一个boot目录
-
借助linux已有的GRUB安装程序来开始安装GRUB
第一步挂载虚拟硬盘文件为loop0回环设备
sudo losetup /dev/loop0 hd.img
sudo mount -o loop ./hd.img ./hdisk/ ;挂载硬盘文件
第二步安装GRUB
sudo grub-install --boot-directory=./hdisk/boot/ --force --allow-floppy /dev/loop0
;--boot-directory 指向先前我们在虚拟硬盘中建立的boot目录。
;--force --allow-floppy :指向我们的虚拟硬盘设备文件/dev/loop0现在/hdisk/boot/目录下多了一个grub目录,那就是安装成功了。
-
在/hdisk/boot/grub下面建一个grub.cfg配置文件,GRUB就是靠它去找我们操作系统映像文件的。
menuentry 'HelloOS' {
insmod part_msdos
insmod ext2
set root='hd0' #我们的硬盘只有一个分区所以是'hd0'
multiboot2 /boot/HelloOS.eki #加载boot目录下的HelloOS.eki文件
boot #引导启动
}
set timeout_style=menu
if [ "${timeout}" = 0 ]; then
set timeout=10 #等待10秒钟自动启动
fi -
现在这个虚拟硬盘的格式是linux才认识的,virtualbox认识的是vdi格式的,所以要转换一下
VBoxManage convertfromraw ./hd.img --format VDI ./hd.vdi
;convertfromraw 指向原始格式文件
;--format VDI 表示转换成虚拟需要的VDI格式 - 用window和linux文件传输工具把hd.vdi文件传到windows
-
接下来在windows打卡virtualbox,新建虚拟机,建的时候选择使用已有硬盘然后把这个hd.vdi导进去,启动操作系统就可以了。
-
posted on 2022-03-25 17:24 Love&Share 阅读(224) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~