请注意在虚拟机中测试,并为系统建立快照!原因下面会说!
第1步:安装汇编器as86和链接器ld86(教程:http://blog.youkuaiyun.com/moon_prince2013/article/details/48437371)
第2步:安装模拟器Bochs
打开终端(Terminal),输入:apt-get install bochs(中间会提示你“Do you want to continue?[Y/n]”,输入y并回车即可)
第3步:安装bochs-x
在终端输入:sudo apt-get install bochs-x
第4步:新建文件——引导扇区源码boot.s(源码在http://blog.youkuaiyun.com/moon_prince2013/article/details/48438691,用系统自带的文本编辑器即可编辑)
可以在你想要的某个文件夹里面新建此文件,现在假设我们把boot.s放在桌面文件夹 1 下
第5步:使终端跳转到桌面的文件夹 1 里
在终端输入:cd /home(cd代表目录跳转,/代表系统根目录,home代表根目录下的home文件夹——跳转到/home文件夹)
在终端输入:ls (表示列出当前home文件夹下所有文件),此时可能显示的是tansion(根据不同人的情况,名称不同)
假设是tansion,在终端输入:cd tansion/Desktop/1(注意大小写要正确)并回车,这样就跳转到桌面的文件夹 1 里;
第6步:编译、链接boot.s
在终端输入:
as86 -0 -a -o boot.o boot.s
ld86 -0 -s -o boot boot.o
此时文件夹 1 里面多了两个文件 boot.o、boot:
第7步:在文件夹 1 里面新建文件 bochsrc.txt
文件内容如下:
megs: 32
romimage: file=$BXSHARE/BIOS-bochs-latest
vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest
floppya: 1_44=a.img, status=inserted
boot: floppy
log: bochsout.txt
mouse: enabled=0
keyboard_mapping: enabled=1, map=$BXSHARE/keymaps/x11-pc-us.map
此时在文件夹1里面多了一个文件 a.img
第9步:启动模拟器Bochs
在终端输入:bochs
此时会弹出模拟器,但内容只有黑色界面:
不要关闭它,返回终端,在终端上输入 c 并回车,就成功了,界面如下:
如果要退出模拟器,点击模拟器右上角:
======================================
注意点:
1、重启Ubuntu后,会直接进入这段引导程序,显示“Loading system...”,再也进不去系统!因为我是小白,这个问题暂时不知道怎么解决(删除a.img也没用的);
2、“第3步:安装bochs-x”很重要,否则在“第9步:启动模拟器Bochs” 时会出现警告:
========================================================================
Bochs x86 Emulator 2.4.5
Build from CVS snapshot, on April 25, 2010
========================================================================
00000000000i[ ] LTDL_LIBRARY_PATH not set. using compile time default '/usr/lib/bochs/plugins'
00000000000i[ ] BXSHARE not set. using compile time default '/usr/share/bochs'
00000000000i[ ] reading configuration from bochsrc
00000000000i[ ] lt_dlhandle is (nil)
00000000000p[ ] >>PANIC<< dlopen failed for module 'x': file not found
========================================================================
Event type: PANIC
Device: [ ]
Message: dlopen failed for module 'x': file not found
A PANIC has occurred. Do you want to:
cont - continue execution
alwayscont - continue execution, and don't ask again.
This affects only PANIC events from device [ ]
die - stop execution now
abort - dump core
debug - hand control to gdb
Choose one of the actions above: [die]
======================================
参考文章:
ubuntu安装bochs别忘了bochs-x