博客
关于我
Minimum operating system with QEMU, but no debug
阅读量:579 次
发布时间:2019-03-10

本文共 2991 字,大约阅读时间需要 9 分钟。

1.Envirment:

(see appendix Envriment create)

2.source

; 文件名 boot.asm org 7c00h                     ; BIOS读入MBR后,从0x7c00h处开始执行 ; 下面部分和10h有关中断,10h中断用来显示字符mov ax, csmov es, axmov ax, msgmov bp, ax                    ; ES:BP表示显示字符串的地址mov cx, msgLen                ; CX存字符长度mov ax, 1301h                 ; AH=13h表示向TTY显示字符,AL=01h表示显示方式(字符串是否包含显示属性,01h表示不包含)mov bx, 000fh                 ; BH=00h表示页号,BL=0fh表示颜色mov dl, 0                     ; 列int 10h  msg: db "hello world, welcome to OS!"msgLen: equ $ - msg           ; 字符串长度times 510 - ($ - $$) db 0     ; 填充剩余部分dw 0aa55h                     ; 魔数,必须有这两个字节BIOS才确认是MBR

3.Compile

If till not install nasm, should install first.

nasm install on ubuntu

1.Download source code:

2.tar zxvf nasm-2.10.07.tar.gz

进入刚解压的目录

然后执行命令:./configure

make

sudo make install

NOTE: Using "apt install nasm" to install is failled.

nasm usage

If only want to run without debugging, only input bellow:

# nasm boot.asm -o boot.bin

If want gdb can regcnise the format, should do more, convert it into ELF file format.

# nasm -f elf -g boot.asm -o boot.o

# gcc -c boot.o -o boot

If the gcc is bit32, should install some lib, as bellow:

sudo apt-get install g++-multilib libc6-dev-i386

then

# gcc boot.o -o boot -m32

 

4.Command line Debug

NOTE: Must copy the linux 0.11 project to windows disk, cannot in samba server, or not can't debug.

QEMU version: Download latest version from official site.

Input command:

"C:\Program Files\qemu\qemu-system-x86_64.exe" boot.bin"C:\Program Files\qemu\qemu-system-x86_64.exe" -m 16M -boot a -fda boot.bin -s -S

-s              wait gdb connection to port 1234

'-S' means freeze CPU at startup (Can be remove to run directly), so you can debug step byt step.

After input the command, the linux 0.11 would be running succe

 

Open other cmd windows, then input:

F:\Linux-0.11-master>gdb Image

(gdb) target remote localhost:1234

(gdb) b *0x7c00

(gdb)c

(gdb)x /16b 0x7df0 //观察0x7DFE和0x7DFF的值是否为0x55,0xAA

(gdb)

Then you would see the linux 0.11 is running successfully.

Can using "Ctrl+C" to stop running.

 

Appendix 1 Envriment create

1.VM-Envriment:windown 7, vmware(ubuntu-18.04.1-live-server-amd64.iso), SecureCRT(ssh remote ubuntu), samba-server(see appendix samba-server create).

2.Destnation-machine: QEMU(download from official site),

3.Debug-method: TDMGCC(Using its GDB in command line debug).

 

Appendix 2 samba-server create

1 首先确认网络可以相互ping通。

2 终端输入:apt-get install samba

3 先备份 smb.conf 编辑配置,终端输入:

cd /etc/samba/  

ls

cp smb.conf smb.conf-201x-xx-xx

4 nano /etc/samba/smb.conf 编辑配置文件

  1. 找到[homes]browseable = no, 把no 改成 yes, 因为只有这样,windows下才能通 过“计算机”看到“homes”共享目录。----至此,您已经能看到samba共享的目录了。
  2. 当然,以方便调试为目的,所以我们不需要共享homes文件,而是要共享整个根目录。 所以在[homes]这一段下加入一段,不要在[homes]这一段改,否则出错,一定要在下面加,如下:

[all]

comment = /

path = /

read only = no

接着在终端输入:testparm 此命令不但能检查参数是否正确,还能使配置立即生效, 不需要重启。

5 还要创建用户,不然只能看到有共享却无法登录。在终端输入:

smbpasswd -a root 然后就会提示输入密码,其实这个名字可以任意,这里用root是为 了方便记忆,因为我会用最高权限。----到这一步,你就可以登录到samba共享文件里 了。

6 (可以不要这一步)重启samba,终端输入: /etc/init.d/samba restart

 

 

 

 

 

你可能感兴趣的文章
MySQL 查看有哪些表
查看>>
mysql 查看锁_阿里/美团/字节面试官必问的Mysql锁机制,你真的明白吗
查看>>
MySql 查询以逗号分隔的字符串的方法(正则)
查看>>
MySQL 查询优化:提速查询效率的13大秘籍(避免使用SELECT 、分页查询的优化、合理使用连接、子查询的优化)(上)
查看>>
mysql 查询,正数降序排序,负数升序排序
查看>>
MySQL 树形结构 根据指定节点 获取其下属的所有子节点(包含路径上的枝干节点和叶子节点)...
查看>>
mysql 死锁 Deadlock found when trying to get lock; try restarting transaction
查看>>
mysql 死锁(先delete 后insert)日志分析
查看>>
MySQL 死锁了,怎么办?
查看>>
MySQL 深度分页性能急剧下降,该如何优化?
查看>>
MySQL 深度分页性能急剧下降,该如何优化?
查看>>
MySQL 添加列,修改列,删除列
查看>>
mysql 添加索引
查看>>
MySQL 添加索引,删除索引及其用法
查看>>
MySQL 用 limit 为什么会影响性能?
查看>>
MySQL 用 limit 为什么会影响性能?有什么优化方案?
查看>>
MySQL 用户权限管理:授权、撤销、密码更新和用户删除(图文解析)
查看>>
mysql 用户管理和权限设置
查看>>
MySQL 的 varchar 水真的太深了!
查看>>
mysql 的GROUP_CONCAT函数的使用(group_by 如何显示分组之前的数据)
查看>>