分类分类
大小:3.10 MB更新:2016/12/07
类别:操作系统系统:Winll
提取密码: yhwv

bochs linux3.0 镜像是安卓手机bochs运行linux的img文件,3.0版本已经过验证,下面给出手机安装bochs镜像文件的具体操作方法,有需要的用户欢迎来IT猫扑下载~
1. 构造调试环境
由于bochs内建调试功能, 且支持gdb, 用它调试内核会很方便.
(文章中大部分命令的运行需要root权限,以sudo方式运行)
1.1 构建磁盘镜像
Shell代码
dd if=/dev/zero of=hd0.img count=$((63*16*100))
用这个命令可以构建一个50MB左右的磁盘镜像, 输出结果如下:
100800+0 records in
100800+0 records out
51609600 bytes (52 MB) copied, 0.734578 s,70.3 MB/s
注意count必须为63*16的倍数, 否则bochs识别硬盘会有问题.
1.2 挂载磁盘镜像
Shell代码
losetup /dev/loop0 hd0.img
这个命令可以将文件绑定到一个loop设备. 如果/dev/loop0不存在, 可以尝试 modprobe loop.
然后进行设备初始化:
Shell代码
cfdisk -s 63 -h 16 /dev/loop0
只创建一个主分区就可以. 写入后, 用命令fdisk检查结果:
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
将分区1挂载到/dev/loop1.
Shell代码
losetup /dev/loop1 hd0.img -o $((63*512))
格式化/dev/loop1为ext3格式.
Shell代码
mkfs.ext3 /dev/loop1
在mnt下创建img目录, 做以后维护用.
Shell代码
mkdir -p /mnt/img
将loop1挂载到/mnt/img
Shell代码
mount /dev/loop1 /mnt/img/
安装引导程序. 因为我狂热倾向于模块化架构, 所以选择GRUB2.
本文以grub-1.97~beta3为示例, 读者可自行安装其他的引导系统如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分区.
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
只有区区的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虚拟机编译一个内核. 不必太复杂, 目前我们只关心启动部分.
2.1 安装内核
退出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
这两个步骤可以放到内核的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到内核
先测试一下bochs的调试能力. bochs以调试模式启动后, 会自动停在BIOS中Reset代码, 地址为0xFFFFFFF0. 我们在bochs console里输入:
Shell代码
pb 0x00007c00
在0x7c00设置一个断点, 这正式GRUB2 MBR代码的入口点. GRUB2负责加载自己的core.img, 在core.img里读取hd0, 解析MBR里的分区信息, 并利用ext2模块找到配置文件, 显示主界面,
并加载用户的选择内核文件(vmlinuz-xxx).
loader和内核之间的协议, 在内核源码Document/x86/boot.txt里有详尽的描述.
内核文件包括实模式代码和保护模式代码. loader读取内核文件的头部信息, 从而得知实模式和保护模式代码的大小. 保护模式部分被加载到0x100000(1MB), 实模式启动代码和数据/
堆栈段位置可以重定位在0x10000开始的低端内存的任何位置.
2.3 内核是怎样链成的...
首先编译内核的保护模式代码, 生成源码根目录的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
文件内容会在后面章节细述.
接着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
因为去掉了调试信息, 文件稍小了一些.
接着根据用户的选择进行压缩, 目前支持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查看.
接着工作转移到boot目录, 对上面的vmlinux进行strip操作, 生成二进制格式的vmlinux.bin. 这里面包括全部的包含模式代码, 启动时第一条语句会被加载到0x100000(1MB).
然后编译实模式代码, 包括已无用的引导扇区和setup部分, 生成setup.elf. 然后进行strip, 生成setup.bin.
最后, 利用内核工具&build&, 将setup.bin和vmlinux.bin拷贝在一起, 并填上必要的信息如setup部分的大小等, grub等引导程序可以使用的bzImage诞生了.
2.3 内核实模式代码
实模式代码位于arch/x86/boot. 记得Linux2.6.18之前所有的代码都用汇编写成, 2.6.18之后大部分替换成了C.
入口点在header.S文件, 即包含了无用的&引导扇区代码&, 也包含了引导程序能识别的头部信息. 第一条可执行语句在偏移0x200的位置(跳过引导扇区), 执行必要的初始化操作, 然后将控制权交给C程序, 即main.c里的main()函数.
有了main()函数, 接下来的过程就像读文档一样方便了心情好 利用实模式的优势, 调用BIOS执行必要的初始化和参数获取, 并将结果存到结构体boot_params.
在main()的最后调用go_to_protected_mode(). 这个函数位于pm.c, 它打开A20, 初始化协处理器(如果有), 关掉所有中断, 设置空的IDT和最基本的GDT, 接着调用protected_mode_jump跳转到保护模式的入口代码0x100000. 这个函数定义在pmjump.S. 注意跳转的时候, boot_params被放在esi寄存器.
2.4 保护模式:自解压过程
内核保护模式的入口在arch/x86/boot/compressed/head_32.S (32位架构). 我们利用bochs的调试功能, 跟着走一遍:
Shell代码
pb 0x100000
c
接着grub会运行, 选择我们编译的kernel, 等实模式代码运行完毕, 就会断在保护模式的入口. 反汇编看一下:
Shell代码
u /16 0x100000
可以看到反汇编代码和head_32.S一样. (如果不一样.. 报告一起UFO目击事件吧)
在这里, esi还是指向来自与实模式的boot_params. 接下来的任务, 就是拷贝和解压. 目的地在0x1000000(16MB). 解压部分是C语言函数.
最后跳转到0x1000000.
3. 内核启动
3.1 平台相关的初始化
我们将断点设在内核的入口点 0x1000000(16MB), 继续执行, 内核会自己解压, 并停在入口点.
执行反汇编操作:
Shell代码
u /16 0x1000000
对应的汇编文件在 arch/x86/kernel/head_32.S. 这个是真正的内核入口点. 在这里初始化页表, 并启动分页机制. 打开SMP的化, 进行必要的CPU初始化. 然后初始化IDT, 检查CPU类型, 最后跳转到C语言的i386_start_kernel(). 这个函数位于head32.c. 它保留一些内存并做标记后, 跳转到平台无关的start_kernel(), 位于init/main.c.
bochs xp镜像完整版正式版时间:2022-02-21下载
bochs Windows 2003镜像完整版时间:2022-02-21下载
bochs.apkv2.6.9时间:2019-07-22下载
bochs模拟器中文版v2.6.2时间:2019-07-22下载
windows vista bochs镜像文件完整版时间:2016-12-07下载
bochs win10精简镜像精简版时间:2016-08-04下载
bochs win8精简镜像精简版时间:2016-08-04下载
bochs win98中文镜像精简版时间:2016-08-04下载
bochs win95精简镜像精简版时间:2016-08-04下载
Windows Xp Sp3操作系统625.94 MB官方简体中文版(原版)
详情Windows 98 SE 中文第二版ISO镜像操作系统307.35 MB附安装教程
详情Windows 2000 Professional操作系统128.00 MBWith SP4 中文MSDN原版光盘
详情windows95操作系统操作系统580.80 MB完整简体中文版
详情Ghost XP SP3系统操作系统636.00 MBv10.0 GHO镜像纯净版
详情windows 3.1操作系统操作系统8.03 MB
详情chrome os完整版系统镜像操作系统976.00 MBv2.4.1290 官方U盘启动版
详情WindowsXP精简版iso操作系统75.00 MB超级精简版
详情kalilinux最新版本操作系统2.41 GBv2022.3 官方版
详情Windows 2000 Multilanguage Edition操作系统1.00 KBmsdn多国语言版
详情bochs win7镜像完整版操作系统502.00 MBimg文件
详情完美者 Windows XP PE操作系统35.90 MB35M精简版
详情安卓android x86 7.1 rc1全集(iso与rpm版本)操作系统785.00 MB32/64位
详情大白菜win7PE启动镜像操作系统218.00 MBiso格式
详情Windows Server 2016操作系统5.10 GB官方中文正式版
详情windows7系统家庭版操作系统2.25 GB32位/64位整合版
详情Windows 7 Home Basic x86(家庭普通版)操作系统2.43 GB简体中文msdn原版
详情雨林木风win2000纯净版64ghost操作系统654.80 MBv2.6 官方正式版
详情vmware虚拟机win7镜像文件操作系统2.21 GBvmdk格式
详情windows nt 3.51 iso操作系统26.60 MB简体中文版
详情点击查看更多
Ghost XP SP3系统操作系统636.00 MBv10.0 GHO镜像纯净版
详情Windows XP SP3纯净装机版操作系统1.40 GB个人专用版
详情Windows server2008 r2 镜像操作系统2.98 GBiso简体中文版
详情深度windows XP sp3操作系统217.73 MBv6.2 安装版
详情Windows 2000 Professional操作系统128.00 MBWith SP4 中文MSDN原版光盘
详情雨林木风Windows Server 2003 SP2操作系统693.65 MBY1.0 企业安装版
详情Windows 98 SE 中文第二版ISO镜像操作系统307.35 MB附安装教程
详情Windows Xp Sp3操作系统625.94 MB官方简体中文版(原版)
详情bochs win7镜像完整版操作系统502.00 MBimg文件
详情Windows 2003 server Ent SP2操作系统20.25 MB纯净安装版
详情bochs xp精简镜像操作系统124.88 MB流畅版
详情android x86 7.0 iso操作系统560.00 MB官方最新版
详情雨林木风Ghost_XP_SP3绿色纯净完整装机版操作系统581.10 MBYN16.0_2010.6月更新[NTFS]
详情WindowsXP精简版iso操作系统75.00 MB超级精简版
详情vmware虚拟机win7镜像文件操作系统2.21 GBvmdk格式
详情kalilinux最新版本操作系统2.41 GBv2022.3 官方版
详情bochs win7镜像可上网版操作系统502.00 MBimg文件
详情vmware虚拟机xp镜像vmdk操作系统1.00 KBwinxp专用
详情bochs xp镜像可上网版操作系统2.05 GBimg文件
详情bochs win10精简镜像操作系统1.12 GB精简版
详情点击查看更多
vmware虚拟机win7镜像文件操作系统2.21 GBvmdk格式
详情Ghost XP SP3系统操作系统636.00 MBv10.0 GHO镜像纯净版
详情Red Hat Enterprise Linux AS4_U2 第二张光盘操作系统628.19 MB官方iso镜像版
详情Red Hat Enterprise Linux AS4_U2 第四张光盘操作系统631.98 MB官方iso镜像版
详情windows7 sp1 专业版操作系统3.12 GB64位微软官方原版
详情mac os x snow leopard.iso操作系统7.03 GBv10.6 正式版
详情宝龙bolod XOS系统操作系统42.80 MBv1.0 官方正式版
详情雨林木风Windows XP SP3操作系统1.40 GBv1.0 精简安装版
详情erd commander 2003操作系统74.51 MB汉化版
详情深度官方装机PE系统操作系统46.23 MBv2.0 简体中文版
详情Windows 10 21H2 正式版官方镜像操作系统4.39 GBBuild 19044.1682 RTM 简体中文版
详情vmware win2003镜像文件操作系统371.10 MBvmdk格式
详情Oracle Enterprise Linux操作系统2.27 GBv7.2 官方正式发行版
详情windows server 2012 标准版操作系统2.00 KB64位简体中文版
详情Windows11专业版操作系统3.58 GBv21H2 Build 22000.832 RTM 最新版
详情kali linux系统操作系统248.00 KBv2.0 官方版
详情雨林木风Windows Server 2003 SP2操作系统693.65 MBY1.0 企业安装版
详情Windows Xp Sp3操作系统625.94 MB官方简体中文版(原版)
详情绝对PE工具箱(win7内核 支持 硬盘/U盘/光盘PE系统)操作系统92.53 MBv1.6 中文官方版
详情影子系统2012(shadow mode)操作系统3.10 MB中文免费版
详情点击查看更多



























71
回复中国ITMOP.COM - 网友
好的很 好
71
回复四川巴中 - 网友
linux系统3.0镜像,找了很久了,还是喜欢bochs