网站维护费用怎么收,做网站申请完空间后下一步干啥,常熟专业网站建设,网站开发出来为什么加载特别慢想学习linux#xff0c;又不知道从哪里下手#xff0c;体系太大#xff0c;哪块内容都很多#xff0c;无奈下选择了linux0.11作为入口#xff0c;本系列将是学习笔记#xff0c;希望能坚持下去吧 环境配置
这里使用win10bochs2.7
安装bochs
官网#xff1a;https://b… 想学习linux又不知道从哪里下手体系太大哪块内容都很多无奈下选择了linux0.11作为入口本系列将是学习笔记希望能坚持下去吧 环境配置
这里使用win10bochs2.7
安装bochs
官网https://bochs.sourceforge.io需要使用oldlinux提供的bochs linux0.11编译环境的话就安装2.1版本这里安装了2.7(不兼容)安装目录新建个环境变量BXSHARE并且也把该目录添加到环境变量Path中文件定位和命令行工具用
编译环境
安装nasm
官网https://nasm.us安装目录添加到环境变量Path中到此可以做些汇编实验了
安装cygwin64
官网https://www.cygwin.com选择从互联网安装下载站点随意找到make和gcc工具安装后把bin目录添加到环境变量这里均选择了最新版本因为能编译gcc的原版本太低了好像是1.4也有用3.4的冒出来个大胆的想法看是否能够移植到最新的gcc11上来(可能不行但肯定也能学到不少东西)也有现成的boch编译环境可以用需要安装boch2.1版本(和2.7不兼容)这里oldlinux.org下载链接提供一个bochs2.1的搭建好的linu0.11环境也包含安装包安装bochs后把其他文件都拷贝到安装目录就可以用了。里面已经移植了gcc1.4,里面也提供了linux0.11源码做少量改动就可以编译使用参考博文链接, 做的工作基本是把/linux/Makefile、/linux/fs/Makefile、/linux/lib/Makefile、/linux/kernel/Makefile、/linux/kernel/math/Makefile、/linux/kernel/blk_drv/Makefile、/linux/kernel/chr_drv/Makefile中的mstring-insns字段删除并把/usr/local/bin中的ar改名为gar
其他资源
https://ftp.gnu.org/gnu/gcc/gnu软件镜像站可以找到老版本gcchttps://gitee.com/flythecoder/linux0.11, gitee上一个linux0.11源码仓库配套linux内核0.11完全注释V3.0
hello world程序
在自己的工作目录新建软盘
bximage在自己的工作目录新建一个boot.asm文件
org 07C00h ; 告诉编译器程序加载到07C00处mov ax, csmov ds, axmov es, axcall DispStr ; 调用显示字符串例程jmp $ ; 无限循环
DispStr:mov ax, BootMessagemov bp, ax ; es:bp 串地址mov cx, 16 ; cx 串长度mov ax, 01301h ; ah 13, al 01hmov bx, 000Ch ; 页号为0(bh 0) 黑底红字 (bl 0Ch,高亮)mov dl, 0int 10h ; 10h号中断ret
BootMessage: db Hello,OS world!
times 510-($-$$) db 0 ; 填充剩下的空间使生成的二进制代码恰好为512字节
dw 0xaa55编译
nasm boot.asm -o boot.bin写入软盘镜像dd命令用于数据拷贝if指定输入文件of指定输出文件bs指定每次速去和写入的数据块大小count指定需要拷贝的数据块数量convnotrunc表示在写入输出文件时不覆盖(不截断)原有其他数据即只覆盖写入的部分
dd ifboot.bin ofa.img bs512 count1 convnotrunc打开a.img可以看到boot.bin被写入了最前面
编写bochs配置文件test.bxrc这里用到了上面配置的环境变量$BXSHARE
# how much memorythe emulated machine will have
megs: 32 # filename of ROMimages
romimage:file$BXSHARE/BIOS-bochs-latest
vgaromimage:file$BXSHARE/VGABIOS-lgpl-latest# what disk imageswill be used
floppya:1_44a.img, statusinserted # choose the bootdisk.
boot: floppy # where do we sendlog messages?
log: bochsout.txt # disable themouse
mouse: enabled0 # enable keymapping, using Us layout as default
keyboard:keymap$BXSHARE/keymaps/x11-pc-us.map启动bochs 可以看到hello world已经输出
参考1:https://www.cnblogs.com/oasisyang/archive/2021/09/30/15358137.htmlbochs一个hello world示例