目的
在真機(jī)上用USB引導(dǎo)運(yùn)行JOS
原料準(zhǔn)備
JOS(MIT 操作系統(tǒng)教學(xué)Demo 基于VX6開(kāi)發(fā)的精簡(jiǎn)版本)
MobaXterm(遠(yuǎn)程連接)
VMware
QEMU
GRUB2
Ubuntu(工具:dd 般此、readelf处硬、 objdump溯泣、 file 、hexdump牧挣、 fdisk、 losetup瓷产、 mount )
過(guò)程簡(jiǎn)介
1 修改JOS源代碼的鏈接文件: vi /root/lab/kern/kernel.ld?替換_start入口為entry(GRUB下尋址)
/* Simple linker script for the JOS kernel. See the GNU ld 'info' manual ("info ld") to learn the syntax. */
OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")OUTPUT_ARCH(i386)
/*ENTRY(_start)*/ENTRY(entry)*/
ENTRY(entry)
2 編譯JOS
root@ubuntu:~/lab#?make? (make grub/make qemu/make qemu-gdb)
3?創(chuàng)建一個(gè)空鏡像, 還可測(cè)試硬盤(pán)寫(xiě)入速度
dd if=/dev/zero of=jos.img bs=1M count=20
4 格式化設(shè)備涌矢,支持FAT/EXT等格式
mkfs.vfat? jos.img
5 將鏡像文件掛載成模擬設(shè)備
losetup
/dev/loop0 jos.img
mount /dev/loop0?/mnt/usb
6 安裝grub文件
grub-install --root-directory=/mnt/usb/boot --no-floppy /dev/loop
7 配置grub.cfg
menuentry 'MIT-JOS'{
??????? echo 'Loading ISO...'
??????? multiboot? /boot/kernel-7.0
}
8 啟動(dòng)QEMU虛擬機(jī)
qemu-system-x86_64-hda jos.img
9 運(yùn)行正常后可將JOS.img 文件通過(guò)dd命令寫(xiě)入U(xiǎn)SB設(shè)備,在真機(jī)上運(yùn)行
格式化USB朗徊、掛載USB首妖、dd寫(xiě)入
dd if=jos.img of=/dev/sdb
需要注意虛擬機(jī)連接USB的圖標(biāo)