建立一个启动软盘,并安装GRUB
来源:互联网 发布:算法公平和效率 知乎 编辑:程序博客网 时间:2024/06/06 03:29
最近在试着写一个简单的操作系统,打算在11周内写完。会不定期的在这里写东西记录一下。
今天完成了引导程序和第一个进程,这倒不是很难。反而制作启动软盘花费了不少的时间…所以才打算把制作方法写在这里。
- 开发环境:Ubuntu 14
- 虚拟机:qemu
具体步骤
用dd命令建立一个.img文件,大小为1.44M.我建立的这个文件的名字叫做floppy.img
dd if=/dev/zero of=floppy.img bs=512 count=2880
用loop0把floppy.img虚拟成块设备
sudo losetup /dev/loop0 floppy.img
将它格式化成FAT12文件系统
sudo mkfs.fat /dev/loop0
然后把它挂载到目录树的/mnt文件夹下
sudo mount /dev/loop0 /mnt
然后可以去ftp://alpha.gnu.org/pub/gnu/grub/下在一个编译好的GRUB软件包。也可以选择自己编译。接着在映像文件中建立相应的文件夹,把GRUB的stage1和stage2复制进去。
sudo mkdir -p /mnt/boot/grubsudo cp ./boot/grub/stage1 /mnt/boot/grubsudo cp ./boot/grub/stage2 /mnt/boot/grub
我用的GRUB版本非常低,是0.97版的。也建议在家在玩的时候不要选择太高的版本,因为会麻烦很多。接下来我们需要写两个配置文件,一个是grub.conf另一个是menu.lst,由它们来告诉GRUB我们的操作系统是什么名字,内核放在什么地方
sudo vim /mnt/boot/grub/grub.conf
这个配置文件中的内容是
title=TLOS 0.01
root (fd0)
kernel /kernel
sudo vim /mnt/boot/grub/menu.lst
这个配置文件中的内容是
timeout 3
title TLOS 0.01
root (fd0)
kernel /kernel
然后进入GRUB命令行,把GRUB安装在floppy.img上。如果没有安装GRUB的话,可以通过包管理工具安装,在Ubuntu上用这一条命令:
sudo apt-get install grub
安装GRUB到映像文件的方法是:
>grub device (fd0) /dev/loop0>grub root (fd0)>grub setup (fd0)
现在这个软盘映像文件就已经做好了。只剩下一些收尾工作了:
把loop0从/mnt文件夹上解除挂载,把loop0和floppy.img之间的映射解除。
sudo umount /mnt/sudo losetup -d /dev/loop0
- 建立一个启动软盘,并安装GRUB
- 使用grub启动虚拟软盘的方法
- 新建一个grub软盘镜像
- 操作系统实现---boot启动并读软盘
- 使用grub实现虚拟软盘
- Gentoo 安装日记 02 (建立并启动虚拟机)
- 修复 Grub rescue 模式并启动
- grub rescue模式下启动并修复
- grub rescue模式下启动并修复
- HelloWorld启动软盘
- 生成可启动软盘
- 003-软盘启动原理
- ubuntu安装后没grub启动管理器
- 安装双系统启动时候出现grub rescue
- 从软盘启动并读取指定文件内容到指定位置内存
- CentOS安装Jenkins全程并启动一个Maven工程
- 虚拟软盘启动OS方法
- 在VMware Workstation中创建一个虚拟软盘,并在Windows XP上使用
- MYSQL学习笔记 一
- CentOS7防火墙放行端口
- Mariadb通用二进制安装
- Flask+Jinjia2+Sqlalchemy的MVC框架
- MQ选型对比文档
- 建立一个启动软盘,并安装GRUB
- Socket.IO连接异常时的内置事件流程图
- xshel连接AWS VPS时所选秘钥未在主机主机注册
- "CSRF token missing or incorrect."的解决办法
- D3D管线以及着色器工作原理-画一个三角形
- spring-security过滤链(一):过滤链
- ubuntu下virtualbox配置host-only网络
- 如何在Java中创建一个矩形类,并通过set()传入长与宽,计算矩形的周长与面积并通过get()查看计算结果
- H5+ 跨域XMLHttpRequest的坑