Posted on 2007-04-20 17:29
天衣有縫 閱讀(2400)
評論(1) 編輯 收藏 引用 所屬分類:
os stuff
第一節:使用minix硬盤映象
bochs主頁(http://sourceforge.net/projects/bochs)上有個minix2.0映象,
編譯器和源代碼映象文件都已經有了,如果要mount到你自己的機器上編輯源程序,
可以使用下面的linux指令,為什么是1024和5669888,分析下硬盤分區表就知道了。
(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內核:
cd /usr/src/tools下,執行make指令編譯內核
cd /usr/src/boot下,執行make指令編譯boot monitor
第二節:翻譯一篇關于grub加載內核的用法(os開發者會用到這個)
原文:http://sig9.com/bochs-grub
創建軟盤:
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指令(不帶參數),輸出如下:
/dev/loop7 on /mnt/flp type ext2 (rw,loop=/dev/loop5)
建立grub文件:
mkdir -p /mnt/flp/boot/grub
編譯grub-0.97源碼包,產生兩個文件:stage2/stage2,stage2/stage2
創建grub配置文件:vi /mnt/flp/boot/grub/grub.conf
內容為:
default 0
timeout 1
title test os 0.0.1
root (fd0)
kernel /boot/testos.bin
umount /mnt/flp卸載設備,在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回環設備
再運行指令:file
floppy.img,輸出如下:
floppy.img: floppy.img: x86 boot sector, code offset 0x48
說明軟盤已經可以引導了,找個bochs或virtual pc試試?
這個testos.bin究竟是什么咚咚呢?
她就是你作的os內核(elf格式),哈,還沒做好嗎?找個vmlinuz試試如何,
可以發給你一個簡單的kernel給你測試一下(msn:jinglexy at yahoo dot com dot cn)
第三節:bochs調試時使用at&t風格匯編
執行指令(調試狀態下),這個我在windows上試過好像不能用(bochs-2.2),linux上可以(bochs-2.2)
disassemble switch-mode
或u switch-mode