手写操作系统-开发环境建立

1. 利用VirtualBox建立一个Ubuntu虚拟机;

在Ubuntu上生产虚拟硬盘:

a. 利用linux下的dd命令:生产一块100MB大小的二进制文件


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

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

b. 格式化虚拟硬盘

b.1. 将虚拟硬盘变为linux下的回环块设备
sudo losetup /dev/loop0 hd.img,(可用ls /dev/loop* 命令查看哪一个loop是空闲的,采用空闲的loop进行挂载)

b.2. 格式化/dev/loop0回环块设备,也即格式化虚拟硬盘,建立ext4文件系统
sudo mkfs.ext4 -q /dev/loop0 

b.3. 利用Linux下的mount命令,将hd.img挂载到事先建立好的hdisk目录下,并在其中建立一个boot目录,为后续建立grub做准备:

mkdir hdisk
sudo mount -o loop ./hd.img ./hdisk/ ;挂载硬盘文件
sudo mkdir ./hdisk/boot/ ;建立boot目录

b.4. 安装GRUB

sudo grub-install --boot-directory=./hdisk/boot/ --force --allow-floppy /dev/loop0;--boot-directory 指向先前我们在虚拟硬盘中建立的boot目录。;--force --allow-floppy :指向我们的虚拟硬盘设备文件/dev/loop0

在 /hdisk/boot/grub/ 目录下建立一个 grub.cfg 文本文件,内容为:


menuentry 'HelloOS' {
insmod part_msdos
insmod ext2
set root='hd0' #我们的硬盘只有一个分区所以是'hd0,msdos1'
multiboot2 /boot/HelloOS.bin #加载boot目录下的HelloOS.eki文件
boot #引导启动
}
set timeout_style=menu
if [ "${timeout}" = 0 ]; then
  set timeout=10 #等待10秒钟自动启动
fi

b.5. 转换虚拟硬盘格式, 生成.vdi格式文件


VBoxManage convertfromraw ./hd.img --format VDI ./hd.vdi
;convertfromraw 指向原始格式文件
;--format VDI  表示转换成虚拟需要的VDI格式

c. 安装虚拟硬盘

c.1. 新建虚拟机B,选择类型“其他Linux”,硬盘不要新建, 选择上一步中生成的vdi格式硬盘,

c.2. 开启虚拟机B,就可以看到HelloOS的界面了;

最后, 也可以参考另一种比较简单的方式:

https://blog.csdn.net/ll15982534415/article/details/118771286icon-default.png?t=M3K6https://blog.csdn.net/ll15982534415/article/details/118771286

你可能感兴趣的:(ubuntu,linux,运维)