如何制作自己的系统,如何做系统详细教程

首页 > 经验 > 作者:YD1662024-03-30 09:42:11

本文通过制作Boot引导程序,让大家快速制作并启动自定义系统,熟悉其中的流程和工具使用。整个制作流程,主要分为三个步骤:1,创建一个虚拟软盘镜像;2,编写Boot引导程序;3,编译代码并启动系统。

1、创建虚拟软盘镜像

上一篇文章:,我们介绍了bochs软件的安装,不熟悉的小伙伴可以再看一下。Bochs软件安装完成之后,不仅会生成Bochs虚拟机软件,还会生成一些辅助工具,包括虚拟磁盘镜像创建工具bximage。借助bximage工具,可以方便的创建一个空的软盘镜像。具体操作步骤如下:

# 1、开始创建镜像 [root@centos7.9 images]# bximage ======================================================================== bximage Disk Image Creation / Conversion / Resize and Commit Tool for Bochs $Id: bximage.cc 12690 2015-03-20 18:01:52Z vruppert $ ======================================================================== 1. Create new floppy or hard disk image 2. Convert hard disk image to other format (mode) 3. Resize hard disk image 4. Commit 'undoable' redolog to base image 5. Disk image info 0. Quit # 1.1、选择 [1], 创建一个软盘或则硬盘镜像文件 Please choose one [0] 1 # 1.2、选择软盘fd Create image Do you want to create a floppy disk image or a hard disk image? Please type hd or fd. [hd] fd # 1.3、选择镜像大小,默认1.44M Choose the size of floppy disk image to create, in megabytes. Please type 160k, 180k, 320k, 360k, 720k, 1.2M, 1.44M, 1.68M, 1.72M, or 2.88M. [1.44M] # 1.4、设置镜像文件名称 boot.img What should be the name of the image? [a.img] boot.img Creating floppy image 'boot.img' with 2880 sectors The following line should appear in your bochsrc: floppya: image="boot.img", status=inserted # 2、查看镜像大小 [root@centos7.9 images]# ll 总用量 4 -rw-r----- 1 root root 1474560 3月 24 21:06 boot.img # 3、查看镜像信息 [root@centos7.9 images]# bximage ======================================================================== bximage Disk Image Creation / Conversion / Resize and Commit Tool for Bochs $Id: bximage.cc 12690 2015-03-20 18:01:52Z vruppert $ ======================================================================== 1. Create new floppy or hard disk image 2. Convert hard disk image to other format (mode) 3. Resize hard disk image 4. Commit 'undoable' redolog to base image 5. Disk image info 0. Quit Please choose one [0] 5 Disk image info What is the name of the image? [c.img] boot.img disk image mode = 'flat' hd_size: 1474560 geometry = 2/16/63 (1 MB)2、编写Boot引导程序

创建好镜像之后,需要编写引导程序来填充镜像。操作系统的最底层基本都是汇编 c语言编写。以下为boot.asm引导程序,这段汇编代码的作用是启动自定义系统并在窗口输出Start Boot。后续再单独开一篇介绍代码含义,以及常见寄存器的用法介绍。

org 0x7c00 BaseOfStack equ 0x7c00 Label_Start: mov ax, cs mov ds, ax mov es, ax mov ss, ax mov sp, BaseOfStack ;======= 清理屏幕 mov ax, 0600h mov bx, 0700h mov cx, 0 mov dx, 0184fh int 10h ;======= 设置光标 mov ax, 0200h mov bx, 0000h mov dx, 0000h int 10h ;======= 屏幕显示 mov ax, 1301h mov bx, 001fh mov dx, 0000h mov cx, 10 push ax mov ax, ds mov es, ax pop ax mov bp, StartBootMessage int 10h ;======= 重置软盘 xor ah, ah xor dl, dl int 13h jmp $ StartBootMessage: db "Start Boot", 0 ;======= 填充512B times 510 - ($ - $$) db 0 dw 0xaa55 3、编译启动系统3.1、安装 nasm编译工具

yum install nasm3.2、生成启动文件

# 编译字节码文件 [root@centos7.9 asm]# nasm boot.asm -o boot.bin # 写入镜像文件 [root@centos7.9 asm]# dd if=boot.bin of=boot.img bs=512 count=1 conv=notrunc 记录了1 0 的读入 记录了1 0 的写出 512字节(512 B)已复制,0.000235742 秒,2.2 MB/秒3.3、启动镜像

# 拷贝镜像到bochs目录 [root@centos7.9 bochs-2.6.8]# cp boot.img /root/bochs-2.6.8/ # 启动bochs模拟器 [root@centos7.9 bochs-2.6.8]# bochs -f ./bochsrc 3.4、查看启动效果

如果一切顺利的话,镜像启动之后,继续按c或者continue键,屏幕正常显示如下。至此从基础镜像制作、代码编译和启动运行的完成过程,一个简单的自制系统就完成了。除此之外,还有很多的问题等待去解决:系统的启动流程是什么,CPU是如何工作的,上述代码是如何生效的等等,待后续再一一解析。

如何制作自己的系统,如何做系统详细教程(1)

自制系统启动

3.5、常见异常处理

当 .bochsrc 设置虚拟平台的可用物理内存容量不足(参数 megs:2048),Bochs会运行失败,可以适当调整内存大小,失败时的提示信息大致如下所示:

terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc Aborted (core dumped)

bochs 启动出现 No bootable device,需要重新检查 boot.asm文件代码问题,修复好之后,再重新编译打包运行。

4、ECS安装云桌面

在阿里云上购买一台ECS,安装Centos7.9系统,默认不带桌面云桌面服务的,可以自行安装,方便后续bochs调试。

4.1、更新系统的软件包

yum -y upgrade4.2、安装MATE桌面环境

yum groups install "X Window System" yum groups install "MATE Desktop"4.3、设置默认使用图形化桌面环境启动实例

systemctl set-default graphical.target4.4、重启启动

reboot

安装完成之后,可使用VNC方式登录,登录成功,即可看到如下效果。

如何制作自己的系统,如何做系统详细教程(2)

MATE Desktop

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.