曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 6038|回复: 0
打印 上一主题 下一主题

制作基于Debian lenny 的 bochs 磁盘镜像文件

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34387
跳转到指定楼层
楼主
发表于 2010-12-28 17:59:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
首先使用 bximage 创建磁盘镜像文件,然后对镜像文件进行分区处理。这里打算将整个根文件系统全部塞在一个分区里。具体做法见:
http://www.groad.net/bbs/read.php?tid-3008.html

当上面的工作完成后,会生成一个名 hda 的,大小为 500M 的磁盘镜像文件。根文件系统的制作在后头描述。

一个系统需要有 bootloader 的引导。这里,我们采用 grub 作为 bootloader ,这个 bootloader 放在软盘中。引导软盘的制作参考:

http://www.groad.net/bbs/read.php?tid-2956.html

上面的链接里,我们并没有加载  stage1_5 文件,这也是可以的。但最好还是放在里面,因为已经决定磁盘镜像文件系统为 ext2 格式,所以 stage1_5 只拷贝 e2fs_stage1_5 到 grub 目录中即可。

下面制作根文件系统。制作根文件系统,采用 Debian 的 debootstrap 工具,它能帮你建立一个基本的系统。但这个系统并不能马上就拿来使用,需要经过一些配置。

假设现在已经将制作好的磁盘镜像文件通过 /dev/loop0 并 mount 到了 /mnt/img 下(mount 一个磁盘镜像文件的方法参考:http://www.groad.net/bbs/read.php?tid-3008.html)

接着用 debootstrap 把文件系统下载到 /mnt/img 下:
$sudo debootstrap --arch i386 lenny /mnt/img

下载完后,我们 chroot 进到 /mnt/img 里( chroot 相当于将新的目录当成是根目录):
# LANG=C chroot /mnt/img /bin/bash

接着,设置终端:
# export TERM=xterm-color

因为 debootstrap 下载下来的设备文件只是很少的一部分,其中还不包含有 hda,sda 等,所以这里要创建通用的设备文件:
# cd /dev
# MAKEDEV generic
这时会看到 dev 目录下新增了许多设备文件。

修改 /etc/fstab 文件,因为我们的根文件系统只放在一个分区中,所以很简单,我的内容为:
/dev/hda1       /       ext2    defaults        0       1
proc            /proc   proc    defaults        0       0

接下来要将 /etc/fstab 里指定的文件系统 mount 起来,这一步很简单也重要:
# mount -a

配置时区 (TimeZone),不是必须,需要编辑的文件为 /etc/default/rcS ,我的内容如下:
TMPTIME=0
SULOGIN=no
DELAYLOGIN=no
UTC=no
VERBOSE=no
FSCKFIX=no
RAMRUN=no
RAMLOCK=no
然后运行下面命令进行配置:
dkpg-reconfigure tzdata
dkpg-reconfigure 命令很好用,如果你的配置坏了,可以用它来修复。

下面配置网络(如果你的bochs用不到网络也可以不用配置):
1. 修改 /etc/network/interfaces 文件,我的内容如下:
auto lo
iface lo inet loopback


allow-hotplug eth0
iface eth0 inet dhcp

2. 修改 /etc/resolv.conf 文件:
nameserver 192.168.1.1
192.168.1.1 是我的网络里的路由 IP 。

3. 修改 /etc/hostname 文件,设置机器名:
# echo Debian > /etc/hostname

4. 或许日后你想在 bochs 里 update,所以配置一下源配置文件,我的内容为:
deb http://ftp.us.debian.org/debian lenny main
deb http://security.debian.org/ lenny/updates main
deb-src http://security.debian.org/ lenny/updates main

下面配置键盘与地区,这两项不是必须:

1. 配置地区:
# aptitude install locales
# dpkg-reconfigure locales

2. 配置键盘:
# aptitude install console-data
# dpkg-reconfigure console-data

经过上面的一番配置之后,终于到了最重要的一环,安装内核。

你可能会想到用 Debian 的
# apt-cache search linux-image
找出你要安装的内核,然后 # aptitude install 安装它,并希望它能够马上为你工作。如果是这样,你可能会陷入许多苦恼和迷惑,然后是烦躁的在鼓捣这鼓捣那,最终无法进入系统而放弃。

这里,我建议将Debian 2.6.26 的内核下载下来,自己 make menuconfig 过,然后重新编译。配置的过程,把那些不需要的驱动和模块都去掉,这样会大大减少你的编译时间。对于磁盘的驱动部分,最好是将它们都编译进内核,而不是以模块的方式出现。在编译完内核后,我们将 bzImage 和  System.map 两个文件复制到 /boot/ 目录下。接着顺便把宿主系统里 /boot/grub/ 下的 e2fs_stage1_5  menu.lst  stage1  stage2 三个文件也同样的放到 /boot/grub 下面。这里,我的 menu.lst 内容为:
default         0
timeout         5
color cyan/blue white/blue
title           Debian GNU/Linux, kernel 2.6.26-2-686
kernel          /boot/bzImage root=/dev/hda1
我们这里不需要 initrd 。

这样弄完之后,工作已经完成了。你可能会在运行 bochs 里看到一些加载错误信息,但那都不是致命的,仍然可以保证你进入系统,如果愿意花些时间,可以逐一将这些启动时警告的,甚至是 FATAL 的提示修复。

下面是启动后的一个截图:


这个镜像的制作过程,走了许多弯路,以致花费了不少时间。所走的弯路竟然就出现在内核的配置上,之前因为都是用直接下载的内核,里面的配置并不符合要求,所以在启动时,要么老是提示找不到根文件系统盘,要么就是发出 kernel panic 等等,许多现象不一而足。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2024-5-19 19:38 , Processed in 0.076034 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表