• 2006-01-20

    redhat在嵌入式平台上的应用 - [工作学习]

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://jimsu.yourblog.org/logs/513686.html

    我们知道,redhat是linux家族的一个重要组成部分,在桌面、服务器平台上应用非常广泛。但嵌入式上却用得不多,我所知道的,很多硬件产品采用montavista的linux发布版本,也有一些使用uclinux的。 但如果我们以前的软件就是运行在redhat服务器上的,现在要在时间、资源都极其有限的条件下将其移植到一款新的硬件平台上,我觉得redhat倒也可以考虑。 很多人认为redhat linux在实时性上不是很好,我也认同这个观点,但是很多产品(比如很多产品已经将要求性能的功能交给硬件完成后,软件的实时性实际上已经不再重要了)它还是适合的。 对于硬件平台的选择,我想根据产品的功能来选择,有很多网络产品是需要自己设计板卡的,比如router,switch等等,这些产品往往要求端口密度比较大,而普通的x86的工控机往往无法满足这方面的要求,总线也是问题等等。 硬件外形:机框高度,外形,是否模块化,是否带有各种状态灯、显示屏,面板等等都很重要,这影响产品的销售策略。 电源:是否来电启动,冗余,电源监控等等。 其它就不说了。 软件: bootloader:redhat用得最多的就是lilo,grub,当然我们也可以使用uboot,redboot(ppc,arm的都可以,x86下不知道是否可行?)lilo有自己的命令,grub重要的三个参数就是kernel,root,dev。 kernel:裁减过后的linux kernel。 root文件系统:可以做成ramdisk。 其它应用: 我遇到很多问题,一一列举: 1, ramdisk的大小做好在编译内核的时候选择合适,不然可能启动加载root分区的时候有问题。另外lilo.conf里面也不要指定为read-only,有可能启动不起来。 2,lib,bin下面的文件太大,可以考虑busybox。 3,dev下面的有几个建议mknod上,random,urandom,这个telnet,ssh客户端需要的。不然会提示bad port; Privilege separation user sshd does not exist 之类的错误。ptya0,ptya1...ttypp0,ttyp1...等也必须加上,不然sshd,telnetd无法正常工作。 4, etc下面名堂最多.首先是登陆问题,如果登陆不正常,检查pam.d/下面的文件是否正确,我刚开始老是只有提示让我输入user,从来不提示让我输入password,就是pam做崇,建议从好的系统中拷贝过来去掉一些明显不必要的即可。 5,关于runlevel,如果是runlevel=1,是不会执行rc.local的,如果你要调用rc.local,你只需要在rc1.d下面建个阿S99开头的link即可。rc.local里面注意不要在每行命令后面加上";",我有次加了结果没法运行起来. 6,mysql,sshd这些都是需要添加自己的用户的,所以必须注意,你可以直接在passwd,group,shadow里面添加用户,如果发现他们自己的用户权限不够,建议直接将其属性设为0:0。 7,如果你用了perl,那么很多perl的系统lib库脚本也要加上,不然可能很多perl脚本运行不起来。 8,2.6驱动与2.4不少差别,加载也不同,需要注意inmod等是否是对应版本的文件。 9,如果perl提示locale没有设置好,请修改/etc/sysconfig/i18ln文件和/etc/profile文件. 10,sshd好像还需要/var/empty/sshd/目录. 11,我运行top,结果出现如下错误: top:unknown terminal "vt100" in $TERM. 出现此问题是因为/etc/termcap和/usr/share/terminfo/v/vt100*等文件不正确造成,仔细检查这两个地方,一般建议支持linux,ansi,vt100终端。 解决此问题主要依靠man terminfo 12,我在执行locale和perl的时候,发生如下问题: locale: Cannot set LC_CTYPE to default locale: No such file or directory 出现此问题是因为缺少相关的lib库,请检查/usr/lib/locale/en_US等文件是否存在。 解决此问题主要依靠man localedef

    收藏到:Del.icio.us




发表评论

您将收到博主的回复邮件
记住我