bochs安卓linux鏡像
3.0內(nèi)核已驗證版- 軟件大?。?span itemprop="fileSize">3.10 MB
- 軟件語言:中文
- 軟件類型:國產(chǎn)軟件 / 操作系統(tǒng)
- 軟件授權(quán): 免費軟件
- 更新時間:2016-12-07 17:38:28
- 軟件等級:
- 軟件廠商: -
- 應用平臺:linux
- 軟件官網(wǎng): http://m.europeautoinsurance.com/
相關軟件
bochs xp鏡像完整版正式版
54.00 MB/中文/8.0
bochs Windows 2003鏡像完整版
426.00 MB/中文/7.0
bochs xp鏡像可上網(wǎng)版img文件
2.05 GB/中文/8.0
Bochs Core模擬器v2.6.11 安卓版
11.28 MB/中文/7.0
bochs win7鏡像可上網(wǎng)版img文件
502.00 MB/中文/8.0
軟件介紹人氣軟件精品推薦相關文章網(wǎng)友評論下載地址
bochs linux3.0 鏡像是安卓手機bochs運行l(wèi)inux的img文件,3.0版本已經(jīng)過驗證,下面給出手機安裝bochs鏡像文件的具體操作方法,有需要的用戶歡迎來IT貓撲下載~
手機linux鏡像安裝教程
1. 構(gòu)造調(diào)試環(huán)境
由于bochs內(nèi)建調(diào)試功能, 且支持gdb, 用它調(diào)試內(nèi)核會很方便.
(文章中大部分命令的運行需要root權(quán)限,以sudo方式運行)
1.1 構(gòu)建磁盤鏡像
Shell代碼
dd if=/dev/zero of=hd0.img count=$((63*16*100))
用這個命令可以構(gòu)建一個50MB左右的磁盤鏡像, 輸出結(jié)果如下:
100800+0 records in
100800+0 records out
51609600 bytes (52 MB) copied, 0.734578 s,70.3 MB/s
注意count必須為63*16的倍數(shù), 否則bochs識別硬盤會有問題.
1.2 掛載磁盤鏡像
Shell代碼
losetup /dev/loop0 hd0.img
這個命令可以將文件綁定到一個loop設備. 如果/dev/loop0不存在, 可以嘗試 modprobe loop.
然后進行設備初始化:
Shell代碼
cfdisk -s 63 -h 16 /dev/loop0
只創(chuàng)建一個主分區(qū)就可以. 寫入后, 用命令fdisk檢查結(jié)果:
Shell代碼
fdisk -lu /dev/loop0
Disk /dev/loop0: 51 MB, 51609600 bytes
16 heads, 63 sectors/track, 100 cylinders, total 100800 sectors
Units = sectors of 1 * 512 = 512 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/loop0p1 63 100799 50368+ 83 Linux
將分區(qū)1掛載到/dev/loop1.
Shell代碼
losetup /dev/loop1 hd0.img -o $((63*512))
格式化/dev/loop1為ext3格式.
Shell代碼
mkfs.ext3 /dev/loop1
在mnt下創(chuàng)建img目錄, 做以后維護用.
Shell代碼
mkdir -p /mnt/img
將loop1掛載到/mnt/img
Shell代碼
mount /dev/loop1 /mnt/img/
安裝引導程序. 因為我狂熱傾向于模塊化架構(gòu), 所以選擇GRUB2.
本文以grub-1.97~beta3為示例, 讀者可自行安裝其他的引導系統(tǒng)如lilo.
Shell代碼
mkdir /mnt/img/boot
cp -r /usr/lib/grub/i386-pc/ /mnt/img/boot/grub
生成一個core.img, biosdisk負責讀取磁盤, part_msdos負責處理MBR, ext2負責讀取ext3分區(qū).
Shell代碼
cd /mnt/img/boot/grub/
grub-mkimage -O i386-pc -o core.img biosdisk part_msdos ext2
Shell代碼
ls -lh core.img
-rw-r--r-- 1 root root 25K Sep 21 14:28 core.img
只有區(qū)區(qū)的25K.. 里面甚至還包含一個小的應急shell, 不過作用不大.
安裝grub2到(hd0), 根目錄在(hd0,1)
Shell代碼
echo "(hd0) ? /dev/loop0" > ./device.map
grub-setup -m ./device.map -d /mnt/img/boot/grub/ -r '(hd0,1)' '(hd0)'
檢查一下安裝成果:
Shell代碼
hexdump -C /dev/loop0 | less
如果你能看到:
Shell代碼
00000180 ?7d e8 2e 00 cd 18 eb fe ?47 52 55 42 20 00 47 65 ?|}.......GRUB .Ge|
00000190 ?6f 6d 00 48 61 72 64 20 ?44 69 73 6b 00 52 65 61 ?|om.Hard Disk.Rea|
就說明安裝成功.
清理一下.
Shell代碼
cd
umount /mnt/img
losetup -d /dev/loop1
losetup -d /dev/loop0
1.3 啟動測試.
給上面的hd0.img配一個bochsrc文件, 可以拿bochs示例dlxlinux的配置文件來改, 只需將硬盤換為:
Shell代碼
ata0-master: type=disk, path="hd0.img", cylinders=100, heads=16, spt=63
然后啟動Bochs, 順利的話, 你能看到傳說中的grub2 shell.
2. 從啟動到保護模式.
為我們的bochs虛擬機編譯一個內(nèi)核. 不必太復雜, 目前我們只關心啟動部分.
2.1 安裝內(nèi)核
退出bochs, 掛載hd0.img:
Shell代碼
mount hd0.img /mnt/img/ -o loop,offset=$((63*512))
拷貝bzImage.
Shell代碼
cp /usr/src/linux/arch/i386/boot/bzImage /mnt/img/boot/vmlinuz-3.0.00
這兩個步驟可以放到內(nèi)核的Makefile中, 以后每次編譯完成后, 自動更新到hd0.img里.
然后將下列配置寫到/mnt/img/boot/grub/grub.cfg
Shell代碼
# Timeout for menu
set timeout=10
# Set default boot entry as Entry 0
set default=0
# Entry 0 - Load Linux kernel
menuentry "Linux-3.0.00" {
set root=(hd0,1)
linux /boot/vmlinuz-3.0.00 root=/dev/hda1
}
卸載/mnt/img, 啟動測試一下, 順利的話, 你能看到一個panic.
2.2 從loader到內(nèi)核
先測試一下bochs的調(diào)試能力. bochs以調(diào)試模式啟動后, 會自動停在BIOS中Reset代碼, 地址為0xFFFFFFF0. 我們在bochs console里輸入:
Shell代碼
pb 0x00007c00
在0x7c00設置一個斷點, 這正式GRUB2 MBR代碼的入口點. GRUB2負責加載自己的core.img, 在core.img里讀取hd0, 解析MBR里的分區(qū)信息, 并利用ext2模塊找到配置文件, 顯示主界面,
并加載用戶的選擇內(nèi)核文件(vmlinuz-xxx).
loader和內(nèi)核之間的協(xié)議, 在內(nèi)核源碼Document/x86/boot.txt里有詳盡的描述.
內(nèi)核文件包括實模式代碼和保護模式代碼. loader讀取內(nèi)核文件的頭部信息, 從而得知實模式和保護模式代碼的大小. 保護模式部分被加載到0x100000(1MB), 實模式啟動代碼和數(shù)據(jù)/
堆棧段位置可以重定位在0x10000開始的低端內(nèi)存的任何位置.
2.3 內(nèi)核是怎樣鏈成的...
首先編譯內(nèi)核的保護模式代碼, 生成源碼根目錄的vmlinux. 這是一個elf格式的文件, 可以用readelf查看.
Shell代碼
readelf -a /usr/src/linux/vmlinux | less
這個文件包含所有的符合信息, 容量巨大.
Shell代碼
ls -lh /usr/src/linux/vmlinux
-rwxr-xr-x 1 root root 4.8M Sep 10 17:28 /usr/src/linux/vmlinux
文件內(nèi)容會在后面章節(jié)細述.
接著vmlinux洗凈壓縮. 這個工作在 arch/x86/boot/compressed目錄進行. 讀Makefile可以看到先進行objcopy操作, 在compressed目錄下生成vmlinux.bin.
Shell代碼
ls -lh /usr/src/linux/arch/x86/boot/compressed/vmlinux.bin
-rwxr-xr-x 1 root root 3.7M Sep 10 17:28 /usr/src/linux/arch/x86/boot/compressed/vmlinux.bin
因為去掉了調(diào)試信息, 文件稍小了一些.
接著根據(jù)用戶的選擇進行壓縮, 目前支持gz, bz2, lzma三種方式. 我用默認方式, 生成vimlinux.bin.gz.
Shell代碼
#ls -lh /usr/src/linux/arch/x86/boot/compressed/vmlinux.bin.gz
-rw-r--r-- 1 root root 1.9M Sep 10 17:28 /usr/src/linux/arch/x86/boot/compressed/vmlinux.bin.gz
可以看到也有近50%的壓縮率.
緊接著加入自解壓部分, 生成新的vmlinux.
Shell代碼
ls -lh /usr/src/linux/arch/x86/boot/compressed/vmlinux
-rwxr-xr-x 1 root root 2.0M Sep 10 17:28 /usr/src/linux/arch/x86/boot/compressed/vmlinux
這也是一個elf文件, 可以用readelf查看.
接著工作轉(zhuǎn)移到boot目錄, 對上面的vmlinux進行strip操作, 生成二進制格式的vmlinux.bin. 這里面包括全部的包含模式代碼, 啟動時第一條語句會被加載到0x100000(1MB).
然后編譯實模式代碼, 包括已無用的引導扇區(qū)和setup部分, 生成setup.elf. 然后進行strip, 生成setup.bin.
最后, 利用內(nèi)核工具"build", 將setup.bin和vmlinux.bin拷貝在一起, 并填上必要的信息如setup部分的大小等, grub等引導程序可以使用的bzImage誕生了.
2.3 內(nèi)核實模式代碼
實模式代碼位于arch/x86/boot. 記得Linux2.6.18之前所有的代碼都用匯編寫成, 2.6.18之后大部分替換成了C.
入口點在header.S文件, 即包含了無用的"引導扇區(qū)代碼", 也包含了引導程序能識別的頭部信息. 第一條可執(zhí)行語句在偏移0x200的位置(跳過引導扇區(qū)), 執(zhí)行必要的初始化操作, 然后將控制權(quán)交給C程序, 即main.c里的main()函數(shù).
有了main()函數(shù), 接下來的過程就像讀文檔一樣方便了心情好 利用實模式的優(yōu)勢, 調(diào)用BIOS執(zhí)行必要的初始化和參數(shù)獲取, 并將結(jié)果存到結(jié)構(gòu)體boot_params.
在main()的最后調(diào)用go_to_protected_mode(). 這個函數(shù)位于pm.c, 它打開A20, 初始化協(xié)處理器(如果有), 關掉所有中斷, 設置空的IDT和最基本的GDT, 接著調(diào)用protected_mode_jump跳轉(zhuǎn)到保護模式的入口代碼0x100000. 這個函數(shù)定義在pmjump.S. 注意跳轉(zhuǎn)的時候, boot_params被放在esi寄存器.
2.4 保護模式:自解壓過程
內(nèi)核保護模式的入口在arch/x86/boot/compressed/head_32.S (32位架構(gòu)). 我們利用bochs的調(diào)試功能, 跟著走一遍:
Shell代碼
pb 0x100000
c
接著grub會運行, 選擇我們編譯的kernel, 等實模式代碼運行完畢, 就會斷在保護模式的入口. 反匯編看一下:
Shell代碼
u /16 0x100000
可以看到反匯編代碼和head_32.S一樣. (如果不一樣.. 報告一起UFO目擊事件吧)
在這里, esi還是指向來自與實模式的boot_params. 接下來的任務, 就是拷貝和解壓. 目的地在0x1000000(16MB). 解壓部分是C語言函數(shù).
最后跳轉(zhuǎn)到0x1000000.
3. 內(nèi)核啟動
3.1 平臺相關的初始化
我們將斷點設在內(nèi)核的入口點 0x1000000(16MB), 繼續(xù)執(zhí)行, 內(nèi)核會自己解壓, 并停在入口點.
執(zhí)行反匯編操作:
Shell代碼
u /16 0x1000000
對應的匯編文件在 arch/x86/kernel/head_32.S. 這個是真正的內(nèi)核入口點. 在這里初始化頁表, 并啟動分頁機制. 打開SMP的化, 進行必要的CPU初始化. 然后初始化IDT, 檢查CPU類型, 最后跳轉(zhuǎn)到C語言的i386_start_kernel(). 這個函數(shù)位于head32.c. 它保留一些內(nèi)存并做標記后, 跳轉(zhuǎn)到平臺無關的start_kernel(), 位于init/main.c.
提取密碼: yhwv
更多>> 軟件截圖
推薦應用
Ghost XP SP3系統(tǒng) 636.00 MB
下載/中文/3.0 v10.0 GHO鏡像純凈版雨林木風Windows Server 2003 SP2 693.65 MB
下載/中文/6.0 Y1.0 企業(yè)安裝版Windows11專業(yè)版 3.58 GB
下載/中文/4.0 v21H2 Build 22000.832 RTM 最新版Windows 10 21H2 正式版官方鏡像 4.39 GB
下載/中文/10.0 Build 19044.1682 RTM 簡體中文版寶龍bolod XOS系統(tǒng) 42.80 MB
下載/中文/6.0 v1.0 官方正式版絕對PE工具箱(win7內(nèi)核 支持 硬盤/U盤/光盤PE系統(tǒng)) 92.53 MB
下載/中文/10.0 v1.6 中文官方版Oracle Enterprise Linux 2.27 GB
下載/中文/2.0 v7.2 官方正式發(fā)行版希望漢字系統(tǒng)ucdos7.0完全版 744.00 KB
下載/中文/6.0
其他版本下載
- 查看詳情 bochs xp鏡像完整版 正式版 54.00 MB
- 查看詳情 bochs Windows 2003鏡像 完整版 426.00 MB
- 查看詳情 bochs.apk v2.6.9 官方安卓漢化版 10.33 MB
- 查看詳情 bochs模擬器中文版 v2.6.2 安卓漢化版 3.37 MB
- 查看詳情 windows vista bochs鏡像文件 完整版 2.05 GB
- 查看詳情 bochs win10精簡鏡像 精簡版 1.12 GB
- 查看詳情 bochs win8精簡鏡像 精簡版 478.50 MB
- 查看詳情 bochs win98中文鏡像 精簡版 255.00 MB
- 查看詳情 bochs win95精簡鏡像 精簡版 76.70 MB
- 查看詳情 bochs win7鏡像完整版 img文件 502.00 MB
精品推薦 bochs軟件
- 更多 (28個) >> bochs軟件 bochs專題合集是c++編寫的開源IA-32(x86)電腦模擬器,有不少用戶喜歡在手機上運行,常用的一些bochs.img鏡像文件有bochs xp精簡版、bochs win7/8/10鏡像、bochs win95/98鏡像,以及在進行文件替換時必須使用的bochs模擬器,還有
bochs win7鏡像完整版 502.00 MB
/中文/9.0bochs xp精簡鏡像 124.88 MB
/中文/7.0bochs.apk 10.33 MB
/中文/4.0bochs win10精簡鏡像 1.12 GB
/中文/7.0bochs win7鏡像可上網(wǎng)版 502.00 MB
/中文/8.0bochs xp鏡像可上網(wǎng)版 2.05 GB
/中文/8.0bochs xp鏡像完整版 54.00 MB
/中文/8.0bochs x86虛擬機 1.21 MB
/中文/8.0
相關文章
下載地址
bochs安卓linux鏡像 3.0內(nèi)核已驗證版
查看所有評論>> 網(wǎng)友評論
更多>> 猜你喜歡