一、下载释放核心源代码

从Internet站点上下载了内核文件(2.4.28内核)及补丁(RT-Linux 3.2-rc1),将下载的两个文件放置到/var/tmp目录。

1、用tar命令释放内核源代码

# cd /usr/src

# rm -rf rtlinux

#mv rtlinux-3.2-rc1 rtlinux

#cd rtlinux

# tar –xzvf /var/tmp/linux-2.4.28.tar.gz

2、将RT-Linux打包到Linux核中。

#mv linux-2.24.28 linux

#cd linux

#patch -p1 < /usr/src/rtlinux/patches/kernel_patch-2.4.28-rtl3.2-rc1

二.配置内核

1、删除源代码目录中残留的.o文件和其它从属文件。

# cd /usr/src/ rtlinux/linux

# make mrproper

2、启动内核配置程序

# make menuconfig

3、配置内核

Linux的内核配置程序提供了一系列配置选项。对于每一个配置选项,用户可以回答"*"、"m"或" "。其中"*"表示将相应特性的支持或设备驱动程序编译进内核;"m"表示将相应特性的支持或设备驱动程序编译成可加载模块,在需要时,可由系统或用户自行加入到内核中去;" "表示内核不提供相应特性或驱动程序的支持。不合理的配置可能造成内核编译失败。

三、编译内核

1、建立编译时所需的从属文件

# make dep

2、清除内核编译的目标文件

# make clean

3、编译内核

# make bzImage (注意大小写)

内核编译成功后,会在/usr/src// rtlinux/linux /arch/i386/boot目录中生成一个新内核的映像文件bzImage。

四、编译可加载模块

如果用户在配置内核时设置了可加载模块,则需要对这些模块进行编译,以便将来使用insmod命令进行加载。

# make modules

# make modules_install

编译成功后,系统会在/lib/modules目录下生成一个2.4.28-rtl3.2-rc1子目录,里面存放着新内核的所有可加载模块。

五、启动新内核

1、将/usr/src/ rtlinux/linux /arch/i386/boot/bzImage文件拷贝到/boot目录下

#cd /boot

# cp /usr/src/ rtlinux/linux /arch/i386/boot/bzImage ./

2、生成镜像文件rtlinux

#mkinitrd rtlinux.img 2.4.28-rtl3.2-rc1

执行成功后会在/boot文件夹下生成rtlinux.img

3、配置/boot/grub/brug.conf文件,在该文件中加入下面几行:

title rtlinux(2.4.28)

root(hd0,0)

kernel /boot/bzImage ro root=/dev/hda1

initrd /boot/ rtlinux.img

保存退出

4、重新启动系统

# reboot

5、重启后进入RTLinux

#cd /usr/src/rtlinux

#make xconfig

按默认选项配置

6、编译RTLinux<

#make

#make devicds

#make install

7、重启后进入RTLinux

在RTLinux中,应确保mbuff,rtl_fifo,rtl, rtl_posixio, rtl_sched, rtl_time等动态加载到RTLinux

内核中。

#rtinux status //查看加载了哪些模块

#rtinux start //加载所有rtinux模块

#rtinux status //确认是否被加载

看到所有模块被加载了,就成功了,否则,重新配置内核。

六、安装RTLinux手册

1、下载rtldoc-3.2-pre1.tar.gz

2、进入/usr/src/ rtlinux/doc下解压缩文件

# cd /usr/src/ rtlinux/doc

#tar –xzvf rtldoc-3.2-pre1.tar.gz

该操作会在/usr/src/ rtlinux/doc目录下创建 doc-3.2-pre1

3、将doc-3.2-pre1下doc中的man添加到MANPATH搜索路径中

方法1)在/etc/man.config文件中加入一行” MANPATH /usr/src/ rtlinux/doc/doc-3.2-pre1/doc/man”

方法 2)在用户主目录的.bashrc文件中加入一行” export MANPATH=$ MANPATH: /usr/src/ rtlinux/doc/doc-3.2-pre1/doc/man”

这样就可以使用”man rtf_create”等命令,用来查看文档了。

七、出现问题

1、启动配置后的系统后,无法解压bzImage。

bzImage出现无法解压的问题,是因为在不会配置内核的前提下,我直接使用了默认的内核,虽然也是make modules,make modules_install,但是内核中的kernel为空,导致无法解压bzImage.

2、启动后,出现”kernel panic : no init found Try init= option to kernel ”,系统停止加载。

出现该问题的原因是在写配置/boot/grub/brug.conf文件,在该文件中kernel /boot/bzImage ro root=/dev/hda1,hda1为/boot挂载点,hda2为/挂载点,应该写的是根目录的挂载点,故因将“kernel /boot/bzImage ro root=/dev/hda1 ”改为“kernel /boot/bzImage ro root=/dev/hda2”。问题解决。

3、启动后,系统加载后,出现“staring system logger”,然后停止响应。

出现该问题的原因是内核配置问题。出现提示是“/var/log/ksys* ”文件为只读文件,不能移动。修改内核,去掉file system中的”/dev file system support ”选项,重新编译后内核启动,系统加载成功。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐