Minimum operating system & linux 0.11

1.Envirment:

1.VM-Envriment:windown 7, vmware(ubuntu-18.04.1-live-server-amd64.iso), SecureCRT(ssh remote ubuntu), samba-server(seeAppendix 1 samba-server create),gcc-32bit(seeAppendix 2 gcc-32bit install, but maybe not need nessesary).

2.Destnation-machine: BOCHS(lastest version form official site), QEMU(lastest version form official site).

Bochs can debug assembly, but can't debug using gdb before recompile. Qemu can using gdb, but can't debug in assembly. So need to install both.

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

2.source

; 文件名 boot.asm

org 7c00h                    ; BIOS读入MBR后,从0x7c00h处开始执行

; 下面部分和10h有关中断,10h中断用来显示字符

mov ax, cs

mov es, ax

mov ax, msg

mov 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:https://www.nasm.us/pub/nasm/releasebuilds/

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

# nasm boot.asm -o boot.bin

4.Debug

1.First step, copy the Example and rename it.

Bochs Example:  clickC:\Program Files (x86)\Bochs-2.6.9\dlxlinux\bochsrc.bxrcwill run the dlxlinux, exist after installed.

or goto  official site download example.

2.Modify run.bat.

change the current folder name.

and change "bochs" to "bochsdbg"(of couse, if only run without debug, you don't need do this).

3.Modify bochsrc.bxrc.

# what disk images will be used

floppya: 1_44=boot.bin, status=inserted

# choose the boot disk.

boot: a

4.copy boot.bin to current directory. Then will run secced (run mode without debug) as bellow.

5.If in debug mode, can input command.

b 0x7c00

s

n

c

6. "Ctrl+c" or "q" to exit.

5.linux 0.11

source link:https://github.com/yuanxinyu/Linux-0.11(If you searching in bing.com, this is the NO. 1 result.)

Compile:The source could compile directly successful without modify anything in ubuntu-18.04-server.

Using bochs to debug assembly:

1.Copy run.bat from C:\Program Files (x86)\Bochs-2.6.9\dlxlinux , then modify as:

cd "F:\Linux-0.11-master"

"C:\Program Files (x86)\Bochs-2.6.9\bochs" -q -f tools/bochs/bochsrc/bochsrc-hd-win.bxrc

Of cause, if want to debug, modify "bochs" to "bochsdbg".

2. CopyF:\Linux-0.11-master\tools\bochs\bochsrc\*.bxrc, then modify:

a. all "../" modify to bochs install path.

b.

Then, it can run seccussful as bellow.

3. suggest click the "power" button to exit(will auto delete *.lock file). Or not you need to removeF:\Linux-0.11-master\hdc-0.11.img.lock, to let it run successful in second time.

Debug assembly:

b 0x7c00

s

n

c

Using qemu to debug kerner:

usingqemu(download latest from official site). Because bochs must recompile.

Input command: (Cmd copy from source code Makefile,of cause you have to change a little.)

"C:\Program Files\qemu\qemu-system-i386.exe" -m 16M -boot a -fda Image -hda hdc-0.11.img

After input the command, the linux 0.11 would be running successfully.

If you want to debug step by step, just add-S, like following: (Note: qemu will be stop on starting, need more cmd.)

"C:\Program Files\qemu\qemu-system-i386.exe" -m 16M -boot a -fda Image -hda hdc-0.11.img -s -S

Must be "qemu-system-i386", even "qemu-system-x86_64.exe" will be failed.

Open other cmd windows, then input:

F:\Linux-0.11-master>gdb tools/system

(gdb)target remote localhost:1234

(gdb)b main

(gdb)c

(gdb)n

(gdb)s

Then you would see the linux 0.11 is running successfully.

Using eclipse to debug

Eclipse Edition:

download link:https://stackoverflow.com/questions/27418096/where-can-i-download-eclipse-android-bundle

1.New a C project.

NOTE: If linux 0.11 project store in vmware samba server. Couldn't use "\\192.168.220.129\all\home\hui\eclipse-workspace\Linux-0.11-master" as path. Must using "Browse the floder" to setting the path, as below: (Destiation path is "Z:\home\hui\eclipse-workspace").

2. First launch qemu. Command as bellow:

"C:\Program Files\qemu\qemu-system-i386.exe" -m 16M -boot a -fda Image -hda hdc-0.11.img -s -S

3.Confiure the Eclipse.

Refrerence from:https://blog.csdn.net/asdfdypro/article/details/44680813

3. Then debug as bellow:

Analyze kerner code

main() is the first C language function. So everything is analyze from here.

Appendix 1 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

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

找到[homes]browseable = no,no改成yes,因为只有这样,windows下才能通 过“计算机”看到“homes”共享目录。----至此,您已经能看到samba共享的目录了。

当然,以方便调试为目的,所以我们不需要共享homes文件,而是要共享整个根目录。 所以在[homes]这一段下加入一段,不要在[homes]这一段改,否则出错,一定要在下面加,如下:

[all]

comment = /

path = /

read only = no

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

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

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

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

Appendix 2 gcc-32bit install

If you system is 64-bit, you should add 32-bit lib support.

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

then

# gcc boot.o -o boot -m32

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容