第一節:使用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
實現自己的小的OS
實現了一款在mcu lpc1768 中執行的os,此os實現了硬實時和軟實時。硬實時 當tick到時時立即執行,此任務一定要是短小的,執行時間不能超過tick間隔時間。軟實時 當tick到時時把可以執行的標誌設定,程式什麼時候執行,在主迴圈中決定,主迴圈中會做一些其他的事情。定義乙個 任務結構體 t...
GRUB的使用 四
grub的安全設定 大家設想一下,如果grub只是乙個簡簡單單的引導器,那就沒有什麼新意了,如果沒有任何的安全設定,那麼 開啟我們計算機的第一道門就很簡單了,所以呢,grub提供了安全設定 grub的安全設定也是有配置檔案中 boot grub grub.conf 進行設定的 1 設定全域性口令鎖定...
載入自己的資料
pytorch輸入資料pipeline一般遵循乙個 三步走 的策略,一般pytorch 的資料載入到模型的操作順序是這樣的 建立乙個 dataset 物件。必須實現 len getitem 這兩個方法,這裡面會用到transform對資料集進行擴充。建立乙個 dataloader 物件。它是對dat...