Bochs在 Bochs 中运行 Linux 0.1x 系统
Posted Jiamings
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Bochs在 Bochs 中运行 Linux 0.1x 系统相关的知识,希望对你有一定的参考价值。
Bochs 是一个能完全仿真 Intel x86 计算机的程序。它可以被配置成仿真 386、486、Pentium 或以上的新型 CPU。在执行的整个过程,Bochs 仿真了所有的指令,并且含有标准 PC 机外设所有的设备模块。由于 Bochs 仿真了整个 PC 环境,因此在其中执行的软件会“认为”它是在一个真实的机器上运行。
文章目录
下载安装 Bochs
https://bochs.sourceforge.io/
安装过程十分简单。如果是 Win,直接下载运行可执行文件,如果是 RedHat,可以安装 rpm 包 rpm -i bochs-2.2.1.i386.rpm
。
下载 Linux 0.1x 系统
若要运行一个 Linux 类操作系统,除了需要内核代码外,我们还需要一个根文件系统。在现代 Linux 操作系统中,内核代码映像文件(bootimage)保存在根文件系统中,系统引导启动程序会从这个根文件系统设备上把内核执行代码加载到内存中去。
存放可引导启动的内核映像文件的软盘被称为内核引导启动盘文件(bootimage);存放根文件系统的软盘被称为根文件系统映像文件(rootimage)。
安装预设好的 Linux 0.1x 系统[^1]。下载: http://www.oldlinux.org/Linux.old/bochs/linux-0.11-devel-050518.zip
运行 Linux 0.1x 系统
双击 配置文件 *.bxrc 即可开始运行。
配置文件主要内容如下:
- 指明 PC 机的 ROM Bios 和 VGA 显示 ROM 程序。(在 Bochs 安装目录下)
- megs:设置 PC 机的物理内存容量,这里设置为 16MB。默认 Linux 0.11内核最多只支持 16M 内存。
- floppya:指定模拟机的软盘驱动器 A 使用 1.44M 盘类型,且为 bootimage-0.11 软盘映像文件,并且是插入状态。
- ata0-master:用于指定模拟机上挂接的虚拟硬盘容量和硬盘参数。
- 最后的 boot 用来指定启动的驱动器,可以设置成从 A 盘或者 C 盘(硬盘)启动。
有四种 Bochs 配置文件可以选择[^2]:
1. bochsrc-fda.bxrc
从软盘启动 Linux 0.11 系统并且在当前驱动器中使用根文件系统,需要使用 bootimage-0.11 和 rootimage-0.11。
floppya: 1_44="bootimage-0.11", status=inserted
floppyb: 1_44=diskb.img, status=inserted
boot: a
由于 bochsrc-fda.bxrc 把 Linux 0.11 的运行环境配置成从 A 盘启动,并且所设置使用的内核映像文件 bootimage-0.11 要求根文件系统存在于当前用于启动的驱动器(A盘)中,所以内核会显示提示信息,要求插入根文件系统。
2. bochsrc-fdb.bxrc
floppya: 1_44="bootimage-0.11-fd", status=inserted
floppyb: 1_44="rootimage-0.11", status=inserted
boot: a
A 盘是内核映像文件(包含引导代码),B 盘是根文件系统映像文件。
由于在 bootimage-0.11-fd 的前 512 字节引导扇区中,将根文件系统设备号设置成 B 盘,故内核运行时会自动从 B 盘上加载根文件系统。
3. bochsrc-hd.bxrc
floppya: 1_44="bootimage-0.11-hd", status=inserted
floppyb: 1_44=diska.img, status=inserted
boot: a
该配置文件会从启动软盘 A 中加载内核映像文件(bootimage-0.11-hd),该内核映像文件中指明了根文件系统位于 C 盘(非diska)的第一个分区,内核初始化运行时会自动从 C 盘第 1 个分区中加载根文件系统。
4. bochsrc-hdboot.bxrc
romimage: file=$BXSHARE\\BIOS-bochs-latest, address=0xf0000
megs: 16
vgaromimage: $BXSHARE\\VGABIOS-lgpl-latest
#floppya: 1_44="bootimage-0.11-hd", status=inserted
#floppyb: 1_44=diska.img, status=inserted
ata0-master: type=disk, path="hdc-0.11-new.img", mode=flat, cylinders=410, heads=16, spt=38
boot: c
log: bochsout.txt
parport1: enable=0
vga_update_interval: 300000
keyboard_serial_delay: 200
keyboard_paste_delay: 100000
floppy_command_delay: 50000
ips: 4000000
mouse: enabled=0
private_colormap: enabled=0
fullscreen: enabled=0
screenmode: name="sample"
i440fxsupport: enabled=0
可以让 Linux 0.11 系统像现代 Linux 系统使用 LiLo 或 Grub 引导程序直接从硬盘启动系统一样来运行。实际上,Linux 0.11 使用的是 MINIX 操作系统的引导程序 shoclace。该引导程序直接从硬盘启动系统来运行,并把存放在虚拟硬盘根文件系统的内核映像文件(/usr/src/linux/Image)加载到内存中去执行,同时就是用硬盘上的这个根文件系统。(你也可以通过修改 shoelace 引导程序的配置文件 /etc/config 重新设置用于引导启动的内核映像文件)。
软件包中文件说明:
含有 2 个 Bochs 安装程序、4 个不同的 Bochs 配置文件、5 个内核映像文件、1 个软盘根文件系统映像文件、1 个硬盘根文件系统映像文件。
配置文件 *.bxrc
Bochs 系统会自动识别后缀是 .bxrc 的配置文件,并且在双击该文件图标时就会自动启动 Bochs 系统运行。
以上是关于Bochs在 Bochs 中运行 Linux 0.1x 系统的主要内容,如果未能解决你的问题,请参考以下文章
bochs运行早期linux0.11和linux0.98内核
Bochs调试Linux内核 - 定位内核中的变量或数据结构