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
此时所有文件准备完毕:
2.3.3 将操作系统写入软盘
dd if=boot.bin of=a.img bs=512 count=1 conv=notrunc
2.3.4 启动bochs
bochs -f bochsrc
此时会弹出一个窗口,如下图。如果一开始没显示,说明是debug模式,那么只需要按c即可显示。