Posted on 2007-04-20 17:29
天衣有縫 閱讀(2423)
評論(1) 編輯 收藏 引用 所屬分類:
os stuff
第一節(jié):使用minix硬盤映象
bochs主頁(http://sourceforge.net/projects/bochs)上有個minix2.0映象,
編譯器和源代碼映象文件都已經(jīng)有了,如果要mount到你自己的機器上編輯源程序,
可以使用下面的linux指令,為什么是1024和5669888,分析下硬盤分區(qū)表就知道了。
(1024 = 512 * 2; 5669888 = 512 * 11074,11074即2B42)
/sbin/losetup /dev/loop6 a.img
-o 1024
mount -t minix -o loop /dev/loop6 mnt1
ls mnt1
#path: /usr
/sbin/losetup /dev/loop7 a.img
-o 5669888
mount -t minix -o loop /dev/loop7 mnt2
ls mnt2
編譯minix內(nèi)核:
cd /usr/src/tools下,執(zhí)行make指令編譯內(nèi)核
cd /usr/src/boot下,執(zhí)行make指令編譯boot monitor
第二節(jié):翻譯一篇關(guān)于grub加載內(nèi)核的用法(os開發(fā)者會用到這個)
原文:http://sig9.com/bochs-grub
創(chuàng)建軟盤:
dd if=/dev/zero bs=512 count =2880 of=floppy.img
/sbin/losetup /dev/loop7 floppy.img
/sbin/mkfs.ext2 /dev/loop7
mount -o loop /dev/loop7 /mnt/
運行mount指令(不帶參數(shù)),輸出如下:
/dev/loop7 on /mnt/flp type ext2 (rw,loop=/dev/loop5)
建立grub文件:
mkdir -p /mnt/flp/boot/grub
編譯grub-0.97源碼包,產(chǎn)生兩個文件:stage2/stage2,stage2/stage2
創(chuàng)建grub配置文件:vi /mnt/flp/boot/grub/grub.conf
內(nèi)容為:
default 0
timeout 1
title test os 0.0.1
root (fd0)
kernel /boot/testos.bin
umount /mnt/flp卸載設(shè)備,在img中安裝grub
/sbin/grub --device-map=/dev/null
grub> device (fd0) /dev/loop7
grub> root (fd0)
grub> setup (fd0)
grub> quit
這里運行指令:file
floppy.img,輸出如下:
floppy.img: Linux rev 1.0 ext2 filesystem data
/sbin/losetup -d /dev/loop7,detach回環(huán)設(shè)備
再運行指令:file
floppy.img,輸出如下:
floppy.img: floppy.img: x86 boot sector, code offset 0x48
說明軟盤已經(jīng)可以引導了,找個bochs或virtual pc試試?
這個testos.bin究竟是什么咚咚呢?
她就是你作的os內(nèi)核(elf格式),哈,還沒做好嗎?找個vmlinuz試試如何,
可以發(fā)給你一個簡單的kernel給你測試一下(msn:jinglexy at yahoo dot com dot cn)
第三節(jié):bochs調(diào)試時使用at&t風格匯編
執(zhí)行指令(調(diào)試狀態(tài)下),這個我在windows上試過好像不能用(bochs-2.2),linux上可以(bochs-2.2)
disassemble switch-mode
或u switch-mode