federa安装&运行HelloWorld完整流程

federa安装&运行HelloWorld完整流程

本实验是南大软院20级软件学院,操作系统课程作业lab1,特此记录

federa安装&运行HelloWorld完整流程

1 系统环境

vistualBox 7.0.2

federa 36

Ubuntu 18失败了,因为无法下载sdl2

2 流程

2.1 配环境
2.1.1、下载nasm

打开终端,federa输入

sudo dnf install nasm

ubuntu输入

sudo apt install nasm

这一步federa不会报错,Ubuntu可能会出现报错:

E: 无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资源暂时不可用)
E: 无法获取 dpkg 前端锁 (/var/lib/dpkg/lock-frontend),是否有其他进程正占用它?

可以输入一下语句:

sudo rm /var/lib/dpkg/lock-frontend
2.1.2、下载bochs

federa下载bochs虚拟机:

sudo dnf install bochs
2.1.3、下载SDL2
sudo dnf install SDL2
2.2 实验的文件
2.2.1 写boot.asm文件

创建文件vim boot.asm,输入:

	org 07c00h          ; 告诉编译器程序加载到7c00处
	mov ax,cs
	mov ds,ax
	mov es,ax           ; 上面三行使得ds、es段寄存器指向与cs相同的段
	call	DispStr     ; 调用DispStr例程
	jmp $               ; 无限循环
DispStr:
	mov ax,BootMessage  ; 把"Hello OS World!"的首地址传给寄存器ax
	mov bp,ax           ; ES:BP = 串地址
	mov cx,16           ; CX = 串长度
	mov ax,01301h       ; AH = 13, AL = 01h
	mov bx,000ch        ; BH = 0 页号为0; BL = 0Ch黑底红字
	mov dl,0            
	int 10h             ; 10h 号中断
	ret
BootMessage:	db "Hello OS World!"
times 510-($-$$) db 0                 ; 填充剩下的空间
dw 0xaa55                             ; 结束标志,表示是引导扇区

在文件中按下Ecs键,输入:wq保存并退出。

2.2.2 写bochsrc文件

创建文件vim bochsrc,输入:

megs:32
display_library: sdl2 
floppya: 1_44=a.img, status=inserted
boot: floppy

在文件中按下Ecs键,输入:wq保存并退出。

2.3 正式实验
2.3.1 汇编boot.asm生成boot.bin

使用NASM汇编boot.asm生成“操作系统”的二进制代码

# 注意用绝对路径,否则报错
nasm home/djf/helloos/boot.asm –o boot.bin

此时输入ls,可看到多了一个boot.bin文件。

2.3.2 生成虚拟软盘

输入 bximage,创建软盘

依次按要求输入:

fd
1.44
a.img

image-20230207001720304

此时所有文件准备完毕:

image-20230207001522919

2.3.3 将操作系统写入软盘
dd if=boot.bin of=a.img bs=512 count=1 conv=notrunc

image-20230207001921751

2.3.4 启动bochs
bochs -f bochsrc

image-20230207002209312

此时会弹出一个窗口,如下图。如果一开始没显示,说明是debug模式,那么只需要按c即可显示。

3 结果

image-20221201004439043

参考

ubuntu环境下写一个简单的操作系统(一)linux下创建软盘镜像与格式化_Sud0x67的博客-CSDN博客

如何在VirtualBox中安装fadera

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值