原创 配置RTLinux系统

2009-8-24 17:35 2698 5 5 分类: MCU/ 嵌入式

 


作者:王姗姗,华清远见嵌入式学院讲师。


下载释放核心源代码


    从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 ”选项,重新编译后内核启动,系统加载成功。

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
5
关闭 站长推荐上一条 /6 下一条