使用grub載入自己的os及bochs等雜亂筆記

2021-04-29 15:38:50 字數 1985 閱讀 7842

第一節:使用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...