`
lando
  • 浏览: 34315 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论
阅读更多
http://www.unixresources.net/linux/clf/school/archive/00/00/57/78/577871.html
在坛子上看到BNN老兄发起的中国微内核研究小组的事情,然后又到yahoo group中看了一下,发现大家的热情不高,帖子数目也比较小,而且大多集中在 L4安装,启动等一些人们的问题上。小弟虽然没有参加这个小组,但是关注L4也已经有一段时间了,因此想把自己对于L4的一些了解写出来,也给后来的兄弟一个指导。
平台:Debian sarge + gcc 3.3.5 + bochs 2.1.1
1.编译L4
从www.l4ka.org下载pistachio的0.4版本,解压缩。解压后的文件夹为pistachio-0.4。
cd pistachio-0.4/kernel
make BUILDDIR=$(pwd)/../ia32-kernel-build
这个时候,会在pistachio-0.4目录下生成ia32-kernel-build
cd ../ia32-kernel-build
make menuconfig
make
我想这个步骤对于编译过内核的兄弟们应该不会陌生。我使用的编译完成以后,会在ia32-kernel-build目录下生成ia32-kernel。这就是 L4 pistachio的内核

2.编译其他程序
L4的微内核只负责 IPC 和 Address space的功能,其他的功能需要由其他的server来做,因此,除了内核外,我们还必须编译其他的server。
mkdir pistachio-0.4/ia32-user-build
cd pistachio-0.4/ia32-user-build
../user/configure
make
这个时候,会在ia32-user-build的子目录下生成几个可执行文件。我们只需要其中的几个就可以启动了(至少2个,必须包括kickstart)。
kickstart:grub引导后执行的第一个程序,它是用来将其他的部分load进来,初始化kernel Interfac page,并且调转到ia32-kernel的人口部分执行。kickstart在ia32-user-build/util/kickstart目录中
sigma0:在ia32-user-build/serv/sigma0目录中,负责初始化adress space。
pingpong在ia32-user-build/apps/bench/pingpong目录下,是一个测试IPC的程序。

3.安装bochs
在debian下使用apt-get install bochs 就可以了。

4.生成bochs 使用的软盘img文件
dd if=/dev/zero bs=512 count =2880 of=floppy.img
这个时候会在当前目录下生成 一个floppy.img文件,大小为 512字节/扇区*2880扇区=1474560字节。大小和1.44M的软盘容量一致,不过其中的内容全部是空。
5.copy内核到img文件
(1)使用回环设备
losetup /dev/loop1 floppy.img
(2)在floppy.img生成ext2文件系统。注意这里对/dev/loop1 的操作就等于对floppy.img的操作
mkfs /dev/loop1
(3)将/dev/loop1 挂载到本地
mount -o loop /dev/loop1 /mnt/flp
(4)新建目录
mkdir -p /mnt/flp/boot/grub
(5)copy内核文件,假设当前目录为pistachio-0.4
copy ia32-user-build/ia32-kernel /mnt/flp/boot
copy ia32-user-build/util/kickstart/kickstart /mnt/flp/boot
copy ia32-user-build/serv/sigma0/sigma0 /mnt/flp/boot
copy ia32-user-build/apps/bench/pingpong/pingpong /mnt/flp/boot

6.安装grub
(1)copy安装GRUB启动所需要的stage1和stage2文件。这两个文件在一般在/boot/grub或者/usr/share/grub或者/usr/local/share/grub/"等目录下可以找到。在debian下可以在/boot/grub下找到
cp /boot/grub/stage1 /boot/grub/stage2 /mnt/flp/boot/grub/
(2)创建grub配置文件
vi /mnt/flp/boot/grub/menu.lst
内容为:
timeout 5
title l4
kernel /boot/kickstart
module /boot/ia32-kernel
module /boot/sigma0
module /boot/pingpong
boot
(3)umount设备
$ umount /mnt/flp

(4)在img中安装grub
grub --device-map=/dev/null
grub> device (fd0) /dev/loop1
grub> root (fd0)
grub> setup (fd0)
grub> quit

(5)detach回环设备
losetup -d /dev/loop1

到这里,可以在bochs中启动的印象文件就做好了。
7.配置bochs
在目录下新建.bochsrc文件
内容如下:
romimage: file=/usr/share/bochs/BIOS-bochs-latest, address=0xf0000
megs:16
vgaromimage:ile=/usr/share/bochs/VGABIOS-lgpl-latest
floppya: 1_44="floppy.img", status=inserted
boot:a
log:bochsout.txt
ips:1000000
display_libaray: term

这里需要注意几个问题
(1)如果在目录/usr/share/bochs找不到 BIOS-bochs-latest和VGABIOS-lgpl-latest,那么需要安装这两个文件。在debian下apt-get install bochsbios。或者从其他地方拷贝过来也行。本帖子附件中上传了这个两个文件。
(2)display_libaray: term 这个参数可以有很多选项,具体含义见bochs用户手册。这里需要说明的是如果出现找不到X server等错误的时候,可能是因为display_libaray指定的库没有安装好,需要自己安装。比如term库,在debian下使用apt- get install bochs-tern 就可以了。
设置好了以后,键入命令bochs,这样bochs就运行起来了。

8.其他
如果以后需要修改floppy.img中的内容,只需要做如下步骤:
(1)创建和attach回环设备到img文件,并且mount到本地目录

losetup /dev/loop1 floppy.img
mount -o loop /dev/loop1 /mnt/flp
(2)做修改。所有的修改都是对/mnt/flp,也就是对floppy.img做修改
(3)umount设备和撤除回环设备
umount /mnt/flp
losetup -d /dev/loop1

我们还可以使用命令dd if=floppy.img of=/dev/fd0 将floppy.img中内容拷贝到真正的软盘中去,然后通过软盘在实际的机器上启动L4。

如何安装L4就是这样的,以后会和大家分享如何调试,开发自己的L4微内核。


PS:
注意,以上步骤是一般的步骤,但是由于 bochs缺少对 4 MB superpages 的支持,因此直接在bochs中运行会出错,bochs会一直重启。需要一个patch。
具体见
http://home.kamp.net/home/farid.hajji/l4ka-bochs/

不知道最新的bochs是否已经支持 4 MB superpages 了。我还没有试验
----
http://mail.ustc.edu.cn/~ncs
分享到:
评论

相关推荐

    L4Ka-Pistachio的一个paper

    ### L4Ka-Pistachio微内核系统详解 #### 概述 L4Ka-Pistachio是一款基于L4微内核体系结构的操作系统内核。它由德国卡尔斯鲁厄理工学院计算机科学系系统架构组开发。该文档详细介绍了L4Ka-Pistachio的体系结构、接口...

    L4KA microkernel-开源

    L4Ka微内核是在多个平台(x86,ARM,MIPS,PPC,68K)上运行的L4兼容微内核。 现在的正式名称是L4Ka ::榛子。 该内核已停止使用L4Ka ::开心果。 见http://l4ka.org/

    SEPOS A Guided Tour —— Christopher Wade & David Wang.pdf

    由于它基于L4Ka Pistachio,一个微内核操作系统,但公开的资料有限,深入探究SEPOS对于提升设备安全性和理解其内部机制至关重要。L4Ka Pistachio以其高效和可验证的安全特性而知名,这些特性在SEPOS中也得到了应用。...

    40MHz带通滤波器设计实例(5阶).doc

    根据公式,可以计算出L1、L2A、L2B、L3、L4A、L4B和L5等电路参数。 二、电路形式 根据设计结果,可以得到滤波器的电路形式,如下所示: L1-L2A-L3-L4A-L5 其中L1、L2A、L3、L4A和L5是电感元件,可以根据设计结果...

    KV电网线路保护设计电力系统继电保护原理课程设计.pdf

    此外,设计中还涉及到了不同电气设备的阻抗参数,如线路L1至L4的正序阻抗,变压器T1至T7的正序、负序和零序阻抗。这些参数对于构建系统的等值电路模型和进行故障分析非常关键。 在继电保护设计中,短路计算是核心...

    特种加工电火花线切割编程附电解加工注意点PPT学习教案.pptx

    - **优化工艺系数**:如Ka和Kc,以提高电蚀量和生产率,但需平衡其他工艺指标,防止电弧放电等问题。 - **选择合适的工作液**:粗加工时使用粘度大的机油,精细加工时选择粘度小的煤油,以适应不同的放电间隙需求。 ...

    基于单片机的数控开关电源设计

    电路中电感L4使电流波形变得平滑,电容则起到稳压的作用。其中电容C1为低频滤波,电容C7为高频滤波。 3.6 稳压电路 稳压电路如图2所示,输出电压经采样电阻采样调整后输入KA3525的1脚,与单片机设定的KA3525的2脚...

    一种基于单片机的数控开关电源电路设计方案

    4. **输出电路**:LC滤波电路由电感L4和电容C1、C7组成,电感滤波低频波动,电容滤波高频噪声,共同作用保证输出电压的平滑。 5. **稳压电路**:通过采样电阻采集输出电压,与单片机设定值比较,调整KA3525的输出...

    HP(QP)系列隔离开关主要技术参数

    11. **外形及安装尺寸**:各型号的隔离开关具有不同的尺寸,包括宽度(A)、深度(B)、高度(C)、螺钉规格(D、E、F)、触头间距(G、H)、安装孔位(I、L1、L2、L3、L4)等,以适应各种安装环境。 了解并正确...

    德力西 CDW2(DW15HH)系列万能式断路器技术说明书.pdf

    在断路器的性能描述中,技术说明书还提到了一些与断路器保护特性相关的参数,如延时(2h、8s)、额定接通与分断能力(0.9kA、10kA)、额定频率(50Hz、60Hz)和海拔高度适应性(高达2000m)。延时特性允许断路器在...

    注册岩土工程师基础考试上午试题模拟10.pdf

    例如,出现了空间解析几何中的直线方程、平面方程,如“l4x-2y+z-2=0”、“4x-y+2z=8”等,反映了考试中对考生数学基础的考察;还出现了对于物体受力分析的题目,例如“W=80kN f'=0.4”和相关力学公式的应用,显示了...

    图解POE防护方案电路的设计与选型

    1. **陶瓷气体放电管(GDT)**:如UN3E5-470LSMD,具有470V的直流标称电压,能承受2.5KA的冲击电流,电容值低,电阻值高,用于提供共模浪涌保护。 2. **瞬态抑制二极管(TVS)**:例如ESD03V32D-LC和SMCJ58CA,它们...

    DELL台式机电源电路图

    - **L4, L5, L6A, L6B, L6C, L7, L9**:电感器,参与主功率转换过程中的能量存储和释放。 - **IC1 (UC3843)**:脉冲宽度调制控制器,控制开关频率和占空比,实现稳定的电压输出。 - **Q2, Q6, Q9**:功率MOSFET,...

    电磁兼容(EMC)设计参考电路

    1. **D1(GDTBM801M)**: 高性能气体放电管,用于处理高达 10KA 的浪涌电流。 2. **R1、R2、R3(分压电阻)**: 分压电阻的作用是确保电压被合理分配,避免超过后续电路的耐压范围。 3. **L1、L2、L3(滤波电感)...

Global site tag (gtag.js) - Google Analytics