-
bochs安卓linux鏡像
3.0內(nèi)核已驗證版 -
- 軟件大。3.1M
- 軟件語言:中文
- 軟件類型:國產(chǎn)軟件 / 操作系統(tǒng)
- 軟件授權(quán):免費(fèi)軟件
- 更新時間:2016-12-07 17:38
- 軟件等級:
- 應(yīng)用平臺:linux
- 軟件官網(wǎng):http://ygkjgt7.cn/
相關(guān)軟件
Bochs Core模擬器v2.6.11 安卓版
11.3M/中文/7.1
Bochs Core模擬器漢化美化版v2.6.9 安卓版
9.5M/中文/10.0
bochs sdl文件
49KB/中文/2.5
bochs win10精簡鏡像精簡版
1.12G/中文/6.9
bochs win2000鏡像美化版_支持office
1.26G/中文/8.0
軟件介紹人氣軟件精品推薦相關(guān)文章網(wǎng)友評論下載地址
-
bochs linux3.0 鏡像是安卓手機(jī)bochs運(yùn)行l(wèi)inux的img文件,3.0版本已經(jīng)過驗證,下面給出手機(jī)安裝bochs鏡像文件的具體操作方法,有需要的用戶歡迎來IT貓撲下載~
手機(jī)linux鏡像安裝教程
1. 構(gòu)造調(diào)試環(huán)境
由于bochs內(nèi)建調(diào)試功能, 且支持gdb, 用它調(diào)試內(nèi)核會很方便.
(文章中大部分命令的運(yùn)行需要root權(quán)限,以sudo方式運(yùn)行)
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設(shè)備. 如果/dev/loop0不存在, 可以嘗試 modprobe loop.
然后進(jìn)行設(shè)備初始化:
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目錄, 做以后維護(hù)用.
Shell代碼
mkdir -p /mnt/img
將loop1掛載到/mnt/img
Shell代碼
mount /dev/loop1 /mnt/img/
安裝引導(dǎo)程序. 因為我狂熱傾向于模塊化架構(gòu), 所以選擇GRUB2.
本文以grub-1.97~beta3為示例, 讀者可自行安裝其他的引導(dǎo)系統(tǒng)如lilo.
Shell代碼
mkdir /mnt/img/boot
cp -r /usr/lib/grub/i386-pc/ /mnt/img/boot/grub
生成一個core.img, biosdisk負(fù)責(zé)讀取磁盤, part_msdos負(fù)責(zé)處理MBR, ext2負(fù)責(zé)讀取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.. 里面甚至還包含一個小的應(yīng)急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. 從啟動到保護(hù)模式.
為我們的bochs虛擬機(jī)編譯一個內(nèi)核. 不必太復(fù)雜, 目前我們只關(guān)心啟動部分.
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設(shè)置一個斷點(diǎn), 這正式GRUB2 MBR代碼的入口點(diǎn). GRUB2負(fù)責(zé)加載自己的core.img, 在core.img里讀取hd0, 解析MBR里的分區(qū)信息, 并利用ext2模塊找到配置文件, 顯示主界面,
并加載用戶的選擇內(nèi)核文件(vmlinuz-xxx).
loader和內(nèi)核之間的協(xié)議, 在內(nèi)核源碼Document/x86/boot.txt里有詳盡的描述.
內(nèi)核文件包括實模式代碼和保護(hù)模式代碼. loader讀取內(nèi)核文件的頭部信息, 從而得知實模式和保護(hù)模式代碼的大小. 保護(hù)模式部分被加載到0x100000(1MB), 實模式啟動代碼和數(shù)據(jù)/
堆棧段位置可以重定位在0x10000開始的低端內(nèi)存的任何位置.
2.3 內(nèi)核是怎樣鏈成的...
首先編譯內(nèi)核的保護(hù)模式代碼, 生成源碼根目錄的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é)細(xì)述.
接著vmlinux洗凈壓縮. 這個工作在 arch/x86/boot/compressed目錄進(jìn)行. 讀Makefile可以看到先進(jìn)行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ù)用戶的選擇進(jìn)行壓縮, 目前支持gz, bz2, lzma三種方式. 我用默認(rèn)方式, 生成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進(jìn)行strip操作, 生成二進(jìn)制格式的vmlinux.bin. 這里面包括全部的包含模式代碼, 啟動時第一條語句會被加載到0x100000(1MB).
然后編譯實模式代碼, 包括已無用的引導(dǎo)扇區(qū)和setup部分, 生成setup.elf. 然后進(jìn)行strip, 生成setup.bin.
最后, 利用內(nèi)核工具"build", 將setup.bin和vmlinux.bin拷貝在一起, 并填上必要的信息如setup部分的大小等, grub等引導(dǎo)程序可以使用的bzImage誕生了.
2.3 內(nèi)核實模式代碼
實模式代碼位于arch/x86/boot. 記得Linux2.6.18之前所有的代碼都用匯編寫成, 2.6.18之后大部分替換成了C.
入口點(diǎn)在header.S文件, 即包含了無用的"引導(dǎo)扇區(qū)代碼", 也包含了引導(dǎo)程序能識別的頭部信息. 第一條可執(zhí)行語句在偏移0x200的位置(跳過引導(dǎo)扇區(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é)處理器(如果有), 關(guān)掉所有中斷, 設(shè)置空的IDT和最基本的GDT, 接著調(diào)用protected_mode_jump跳轉(zhuǎn)到保護(hù)模式的入口代碼0x100000. 這個函數(shù)定義在pmjump.S. 注意跳轉(zhuǎn)的時候, boot_params被放在esi寄存器.
2.4 保護(hù)模式:自解壓過程
內(nèi)核保護(hù)模式的入口在arch/x86/boot/compressed/head_32.S (32位架構(gòu)). 我們利用bochs的調(diào)試功能, 跟著走一遍:
Shell代碼
pb 0x100000
c
接著grub會運(yùn)行, 選擇我們編譯的kernel, 等實模式代碼運(yùn)行完畢, 就會斷在保護(hù)模式的入口. 反匯編看一下:
Shell代碼
u /16 0x100000
可以看到反匯編代碼和head_32.S一樣. (如果不一樣.. 報告一起UFO目擊事件吧)
在這里, esi還是指向來自與實模式的boot_params. 接下來的任務(wù), 就是拷貝和解壓. 目的地在0x1000000(16MB). 解壓部分是C語言函數(shù).
最后跳轉(zhuǎn)到0x1000000.
3. 內(nèi)核啟動
3.1 平臺相關(guān)的初始化
我們將斷點(diǎn)設(shè)在內(nèi)核的入口點(diǎn) 0x1000000(16MB), 繼續(xù)執(zhí)行, 內(nèi)核會自己解壓, 并停在入口點(diǎn).
執(zhí)行反匯編操作:
Shell代碼
u /16 0x1000000
對應(yīng)的匯編文件在 arch/x86/kernel/head_32.S. 這個是真正的內(nèi)核入口點(diǎn). 在這里初始化頁表, 并啟動分頁機(jī)制. 打開SMP的化, 進(jìn)行必要的CPU初始化. 然后初始化IDT, 檢查CPU類型, 最后跳轉(zhuǎn)到C語言的i386_start_kernel(). 這個函數(shù)位于head32.c. 它保留一些內(nèi)存并做標(biāo)記后, 跳轉(zhuǎn)到平臺無關(guān)的start_kernel(), 位于init/main.c.
提取密碼: yhwv
-
更多>>軟件截圖
推薦軟件
雨林木風(fēng)Windows Server 2003 SP2 693.7M
下載/中文/29Y1.0 企業(yè)安裝版Windows11專業(yè)版 3.58G
下載/中文/3v21H2 Build 22000.832 RTM 最新版Windows 10 21H2 正式版官方鏡像 4.39G
下載/中文/2Build 19044.1682 RTM 簡體中文版Ghost XP SP3系統(tǒng) 454.4M
下載/中文/41v10.0 GHO鏡像純凈版寶龍bolod XOS系統(tǒng) 42.8M
下載/中文/5v1.0 官方正式版絕對PE工具箱(win7內(nèi)核 支持 硬盤/U盤/光盤PE系統(tǒng)) 92.5M
下載/中文/4v1.6 中文官方版Oracle Enterprise Linux 2.27G
下載/中文/2v7.2 官方正式發(fā)行版希望漢字系統(tǒng)ucdos7.0完全版 744KB
下載/中文/3
其他版本下載
精品推薦bochs軟件
- 更多 (28個) >>bochs軟件bochs專題合集是c++編寫的開源IA-32(x86)電腦模擬器,有不少用戶喜歡在手機(jī)上運(yùn)行,常用的一些bochs.img鏡像文件有bochsxp精簡版、bochswin7/8/10鏡像、bochswin95/98鏡像,以及在進(jìn)行文件替換時必須使用的bochs模擬
bochs win7鏡像完整版502M
/中文/184bochs xp精簡鏡像124.9M
/中文/19bochs.apk10.3M
/中文/5bochs win10精簡鏡像1.12G
/中文/18bochs win7鏡像可上網(wǎng)版502M
/中文/49bochs xp鏡像可上網(wǎng)版2.05G
/中文/16bochs xp鏡像完整版54M
/中文/47bochs x86虛擬機(jī)1.2M
/中文/6bochs win95精簡鏡像76.7M
/中文/19bochs win98中文鏡像255M
/中文/8
相關(guān)文章
-
下載地址
-
bochs安卓linux鏡像 3.0內(nèi)核已驗證版
-
-
查看所有評論>>網(wǎng)友評論
- 第 2 樓 中國ITMOP.COM網(wǎng)友 發(fā)表于: 2019/12/21 22:56:19
- 好的很 好
- 第 1 樓 四川巴中網(wǎng)友 發(fā)表于: 2017/12/11 8:45:53
- linux系統(tǒng)3.0鏡像,找了很久了,還是喜歡bochs
-
更多>>猜你喜歡