⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bochs2.txt

📁 一个虚拟机平台的介绍bochs是完全模拟硬件的
💻 TXT
字号:
从硬盘启动的Linux 0.11-devel系统


[这个贴子最后由redgrid在 2005/03/21 09:12pm 第 4 次编辑]

很多人想从硬盘Image文件直接能引导启动Linux 0.11系统. 我用shoelace做了一个可启动的硬盘Image文件包: linux-0.11-devel-040923.zip, 但是我现在在父母家,是拨号上网,所以还没有传到网站上(过几天从学校传).
shoelace.tar.z可以从Linux.old/bin-src/中下载. 该软件相当于Linux 的LILO或Grub引导系统.它原来是MINIX系统的硬盘引导系统.后来于1992年1月份被移植到Linux上.有关硬盘引导程序shoelace(或grub, Lilo等)原理请参考其它资料,例如boot-HOWTO等。

shoelace软件包主要包括以下几个程序,并需要按照以下方式放置:
/etc/laceup
/etc/bootlace
/etc/winiboot
/etc/config
/etc/disktab
/shoelace
除了/etc/config文件需要修改,其他文件一般均不需要改动. 只需修改config文件中boot: 一行上的内容,将其指向系统bootimage文件所在的路径位置,即内核源代码编译出的Image文件,通常其路径名是/usr/src/linux/Image
假如我们需要从硬盘的第1个分区启动,那么执行以下操作就可以完成shoelace的执行:
/etc/laceup /dev/hd1 wini
如果需要修改硬盘的主引导扇区,让你可以选择使用哪个分区引导,那么你还需要执行:
/etc/laceup -w 1 /dev/hd0
其中"-w 1"表示默认选择第1个分区作为引导分区. 
================
碰到的问题和解决方法
--------------------
执行fdisk命令对硬盘Image文件进行分区操作时,如果你使用的是MINIX环境(例如本站提供的MINIX-1.5系统),并且没有出现任何疑问提示,那么通过上述操作这个hd image文件肯定能够被引导启动. 如果使用的是Linux 0.11上的fdisk,则不一定. 主要原因是MINIX的fdisk对分区的操作有些特别. 分区的参数需要进行一些特别选择才行. 由于网站上现有的Linux-0.11-devel-XXXX.zip中的hd image文件参数和分区与MINIX做出的有些不同,因此使用上面操作后硬盘并不能正常启动.因此最好重新建立一个hd映像文件,该硬盘映像文件的参数经过一些慎重选择, 然后在其上建立一个根文件系统.我实验选择出以下的参数可以从硬盘上正常引导:
硬盘Image文件参数:
cyl = 410, heads=16, secters=38
硬盘大小=127MB左右.
分区设置为:
在MINIX系统下的显示值:
fdisk -h16 -s38 /dev/hd5 
                          ----first----  -----last----  --------sectors-------  
Num Sorted Active Type     Cyl Head Sec   Cyl Head Sec    Base    Last    Size  
1     1          MINIX      0   0   3    203  15   38       2  124031  124030  
2     2          MINIX    204   0   1    407  15   38  124032  248063  124032  
3     3          None       0   0   0      0   0    0       0       0       0  
4     4          None       0   0   0      0   0    0       0       0       0  
在Linux 0.11上的显示值:
fdisk
p
Command (m for help):
Disk /dev/hd0: 0 heads, 0 sectors, 0 cylinders
   Device Boot  Begin   Start     End  Blocks  Id  System
/dev/hd01           0       2  124031   62015  81  Linux/MINIX
/dev/hd02           0  124032  248063   62016  81  Linux/MINIX
x
Command (m for help):
p
Expert command (m for help):
Disk /dev/hd0: 0 heads, 0 sectors, 0 cylinders
Nr AF  Hd Sec  Cyl  Hd Sec  Cyl  Start   Size ID
1 00   0   3    0  15  38  203      2 124030 81
2 00   0   1  204  15  38  407 124032 124032 81
3 00   0   0    0   0   0    0      0      0 00
4 00   0   0    0   0   0    0      0      0 00
你可以在Linux系统下先建立一个zero值hd image文件hdc.img:
dd if=/dev/zero of=hdc.img bs=512 count=248280
上面count是扇区数(=410 * 16 * 38). 然后按照上面参数建立分区.在把该硬盘Image文件mount到Linux 0.11系统后,直接cp -a 完全复制/目录即可.例如,如果新硬盘Image文件是被加载到了/mnt/目录上,那么执行:
cd /mnt/
cp -a /* .
最后会碰到的一个问题是需要给主引导扇区加上引导扇区标志(第511,512字节)0x55,0xAA
我是使用UltraEdit编辑hdc.img加上的.
你可以先按照这里介绍的方式自己做做看,如果不行则可以在这里提问,或者等我upload已经做好的作为参考.
已经upload了。

制作根文件系统的问题


实验环境设置与使用方法(第14章) 的制作根文件系统部分有这么一句:
“因此在开始着手制作根文件系统之前,首先需要确认已经能够运行这两个软盘Image文件组成的最小Linux系统。”
请问这句话是什么意思》
请问如果想要确认,确认的方法是什么?
分享我的0.11实验环境(Linux和Windows),带Flash教程


[这个贴子最后由quinn在 2007/02/11 01:45am 第 11 次编辑]

(2007年2月6日,我的网站过期了,更新一下url)
大家好,最近我打算学习0.11,从贵站下了好多东西,然后根据我自己的需求,做了一下定制,作出了一个0.11实验环境,于本站原先提供的实验环境相比,好处是提供Windows和Linux两个版本的实验环境。而Windows实验环境不需要下载任何其他软件,还有我自己用Flash作的教程,应该很简单的,希望对大家有用。Linux下实验环境包含gcc4下面可以编译的0.11内核,由于新的Linux版本大多都已经使用了gcc4.1,而原先发布的rh9的代码只能用gcc3.3编译,所以我做了很小的一点修改,使得新的内核可以在多个gcc版本下编译。
这个实验环境还用了一张grub启动软盘,好处是一张启动盘上可以放多个启动镜像,然后启动的时候可以从菜单中选择,这样就不需要为多个内核维护许多bochs配置文件了,比较方便。还有一个问题是我编译出来的内核直接作为a盘启动总是会出现不能挂载b盘的文件系统的问题,而用grub载入同样的内核则不会有相应的问题。
由于我刚刚开始学习,这个实验环境肯定有很多不足之处,希望大家指出。并希望能和大家共同学习共同进步。:)
Windows用户请下载
   http://dipplum.com/linux-0.11-lab/linux-0.11-lab_060616_004102.exe
然后解压缩到某个地方,Flash教程在
  http://dipplum.com/linux-0.11-lab/linux-0.11.swf
Linux用户可以下载实验环境
  http://dipplum.com/linux-0.11-lab/linux-0.11-lab_060618_041042.tar.bz2
Linux用户的使用说明参见
  中文说明
如果只想看看gcc4下可编译的源码,可以下载
  http://dipplum.com/linux-0.11-lab/linux-0.11-060618-gcc4.tar.gz
  http://dipplum.com/linux-0.11-lab/linux-0.11-060617-gcc4-diff.gz
源码修改了很小一部分,出了语法错误之外,其实就一个比较微妙的问题,应该是mm模块在不同版本的gcc下不同优化效果造成的错误,具体为什么需要仔细看汇编代码的差别,我还没搞明白,详细内容可以看我的Blog上这篇文章:
  http://dipplum.com/2007/02/10/38/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -