《30天自制操作系统》笔记1 --- 准备阶段

光盘中文翻译版:https://github.com/yourtion/30dayMakeOS.git

原版光盘(含iso文件):https://github.com/sky5454/30daysMakeOS-Origin-ISOfiles.git

原版光盘git版本:https://github.com/Tassandar/OSASK.git

  使用dd(Windows)刻盘及Fat知识:  30天自制操作系统-Hello OS

 

工具tolset目录

  • nask编译器, 把nas文件(作者的汇编源码)转为二进制的,用来把nas文件编译成二进制img文件。可能用翻译更贴切,不过说成编译也没有什么毛病。 路径/tolset/z_tools/nask.exe
  • imgtol.com      刻软盘工具

      用法\z_tools\imgtol.com w a: helloos.img

      现在软盘淘汰了,所以推荐把img写到移动储存设备,如u盘/sd卡

  • make.exe    读取并执行Makefile的GNU系列工具,能读取指定目录下的Makefile脚本。其参数与Makefile有关

 

 

 

img文件在qemu的启动脚本分析

 

目录 /01_day

  helloos.nas    汇编语言源码文件

  asm.bat  一个 调用nask把汇编转为二进制 的脚本,内容:

..\z_tools\nask.exe helloos.nas helloos.img

  

  install.bat   把img写到软盘a的脚本,内容:

..\z_tools\imgtol.com w a: helloos.img

 

  run.bat   运行img的脚本,内容及分析如下:

copy helloos.img ..\z_tools\qemu\fdimage0.bin
..\z_tools\
make.exe -C ../z_tools/qemu

把img复制到qemu目录下同时命名为fdimage0.bin

命令make -C指定目录,读取指定目录下的Makefile文件

 

 

所以,我们看一下Makefile文件(/z_tools/qemu/Makefile)内容吧

default :

 qemu-win.bat

 

没错他指导系统执行bat文件(/z_tools/qemu/qemu-win.bat),bat脚本内容

1 @set SDL_VIDEODRIVER=windib
2 @set QEMU_AUDIO_DRV=none
3 @set QEMU_AUDIO_LOG_TO_MONITOR=0
4 qemu.exe -L . -m 32 -localtime -std-vga -fda fdimage0.bin

// 设置三个环境变量,然后用qemu指定参数启动bin(原来的名字是img,这个bin内容和img一样)

 -L     指定BIOS和VGA BIOS所在目录,此处为当前目录

-m     指定容量,单位Mb,此处为32Mb

-localtime   使用localtime

-std-vga       模拟标准的VGA卡,带有Bochs VBE扩展

Standard VGA card with Bochs VBE extensions. If your guest OS supports the VESA 2.0 VBE extensions (e.g. Windows XP) and if you want to use high resolution modes (>= 1280x1024x16) then you should use this option.

      -fda <二进制文件>  指定二进制镜像文件作为软盘a加载

总结

fdimage0.bin就是helloos.img,改了名字而已,内容完全一样。

 

简洁步骤

先把汇编源码文件helloos.nas编译成二进制img,然后:

  • 真机启动只需要把img刻到u盘,然后从主板选择启动。
  • 虚拟qemu启动只需要声明环境变量,然后指定一些参数来启动img

 

注:真机刻盘启动,UltraISO-菜单:启动-写入硬盘映像…

 

 

虚拟UEFI环境:archlinux上安装QEMU+EFI BIOS

更多书籍:推荐邮电出版社的自制系列: https://book.douban.com/series/34137

 


 

安卓(ARM8)上编译安装QEMU

先安装neoterm终端,点通知栏的取得唤醒锁

查看架构 #cat /proc/cpuinfo

我的是AArch64 ver.2  arm8的64位版

看qemu官网编译要求,安装如下依赖

 apt install libgcc make-dev git glib-dev   libpixman-dev python-dev clang pkg-config perl flex bison   不知道要不要libzopfli 

 以上虽然名字和   libglib2.0-dev libfdt-dev libpixman-1-dev有点不同,但我们安装的包的内容应该是对的

 

su

cd ~/

安卓的/sdcrad目录是没有权限的,所以定位到neoterm的home (这是在/data/data/io.neoterm下的某个目录)

 

 反正提示缺什么就输入什么命令,然后它会提示你安装什么,最后

sh ./configure   因为neoterm默认使用sh

make

只要文件下载完整,

目前有以下问题,

在make编译时提示某个函数不符合c99规范的警告,当然不影响

提示__android_log_vprint未定义的问题,结合报错的571行,查看了一下

sed -n '570,571p' Makefile

qemu-ga$(EXESUF): $(qga-obj-y) $(COMMON_LDADDS)

        $(call LINK, $^)

 

感觉是调用log函数出了问题,暂时没找到方案....

 
Required additional packages

    git (30 MiB), version manager
    glib2.0-dev (9 MiB), this automatically includes zlib1g-dev
    libfdt-devel
安卓(ARM8)上编译安装QEMU--失败

 

待续

转载于:https://www.cnblogs.com/yucloud/p/10925938.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值