其实bochs core的问题并不复杂,但是又很多的朋友都不太了解lbochs中文版,因此呢,今天小编就来为大家分享bochs core的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

bochs打不开怎么办,闪退怎么办!

应用程序出现闪退,原因如下:

bochs core(lbochs中文版)

1、应用程序自身漏洞:开发的应用程序代码存在缺陷,造成大多数设备在运行该程序时会出现闪退的情况。这种情况需要开发者进行解决。

2、系统固件版本不支持、系统配置(CPU、RAM等)不支持。这种情况表现为部分设备能正常运作该程序,而其他设备会闪退。

解决方法如下;

1.电脑下载并安装PP助手。

2.将使用数据线连接到电脑上并且打开PP助手。

bochs core(lbochs中文版)

3.点击左边一列中的“正版应用”。

4.然后点击在右上角的“修复闪退弹窗”按钮。

5.等待修复完成即可。

如何使用bochs启动linux2.6.0版本内核

当然不能真正启动就panic了,但是单步调试和理解内核在x86平台启动已经够了。

bochs下运行linux3.0内核(已验证)

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-s63-h16/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 Sep2114: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 2e00 cd18 eb

fe4752554220004765|}.......GRUB.Ge|

00000190 6f 6d004861726420446973 6b00526561|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 Entry0

set default=0

# Entry0- Load Linux kernel

menuentry"Linux-3.0.00"{

set root=(hd0,1)

linux

/boot/vmlinuz-3.0.00root=/dev/hda1