romfs-inst.sh $(ROMFSINST)

uClinux一般都会建立一个 ROMFS 文件系统,而把其它文件向该文件系统添加一般都通过$(ROMFSINST)命令,而ROMFSINST变量值就是 romfs - inst.sh (这文件一般在和 linux-2.6.x同级的tools目录下 ),执行$(ROMFSINST)就是执行 romfs - inst.sh

用法:

        romfs-inst.sh [options] [src] dst

        -v:输出执行时过程时信息
        
-e env-var:如果env-var中含有y或Y字符,就执行,否则不做任何动作
        -o option:功能和-e很像,只是它不用变量而是用字符串。如果当中含有y或Y字符,就执行,否则不做任何动作
        -p perms:设置目标文件的权限                       setperm()
        -a text:把text内容添加到目标文件                    file_copy()
        -A patten:只在目标文件不存在patten,text内容才添加目标文件  file_append()
        -l link:不是复制文件,而是执行硬链接                 hard_link()
        -s sym-link:不是复制文件,而是执行符号链接             sym_link()

       如果参数没给出src,那romfs-inst.sh用basename函数从dst中得到基本文件名,这基本文件名加上当前目录成为src的全文件名。
       多个-e和-o选项会被执行逻辑与运算,如果不想执行逻辑与而是执行逻辑或,在条件中使用1或更多的y/n/字符的单个的-e/-o
       如果src是一个目录,那当中的所有文件都会被复制过去(除了CVS目录)

       注:汉字部分是在源码上添加的注释。


1.                 $(ROMFSINST)-e -a 用法:  将 -a 后的内容追加写入 目标文件中

/sdk/user/inetd/Makefile 文件:

    
    
  1. romfs:
  2. $(ROMFSINST) /bin/$(EXEC)
  3. :
  4. : inetd.conf
  5. :
  6. $(ROMFSINST) -e CONFIG_USER_DISCARD_DISCARD \
  7. -a "discard dgram udp wait root /bin/discard" /etc/inetd.conf
  8. $(ROMFSINST) -e CONFIG_USER_DISCARD_DISCARD \
  9. -a "discard stream tcp nowait root /bin/discard" /etc/inetd.conf
  10. $(ROMFSINST) -e CONFIG_USER_MARADNS_MARADNS \
  11. -a "domain stream tcp nowait root /bin/zoneserver" /etc/inetd.conf
  12. $(ROMFSINST) -e CONFIG_USER_TFTPD_TFTPD \
  13. -a "tftp dgram udp wait root /bin/tftpd" /etc/inetd.conf
  14. $(ROMFSINST) -e CONFIG_USER_SSH_SSHD \
  15. -a "ssh stream tcp nowait root /bin/sshd -i" /etc/inetd.conf
  16. $(ROMFSINST) -e CONFIG_USER_TELNETD_TELNETD \ //如果该宏定义了,则执行对应的语句
  17. -a "telnet stream tcp nowait root /bin/telnetd -i -l /bin/sh" /etc/inetd.conf
  18. $(ROMFSINST) -a "telnet stream tcp nowait root /bin/telnetd -i -l /sbin/login" /etc/inetd.conf
  19. // 将 -a 后的内容追加写入 目标文件中

/smbshare/F600C/sdk/user2/proc_var/Makefile
     
     
  1. RC_LEVEL_PROC=/etc/init.d/rc10
  2. $(ROMFSINST) -a "echo 200 > /proc/sys/net/core/netdev_max_backlog" $(RC_LEVEL_PROC)
  3. ifndef CONFIG_ARCH_LUNA_SLAVE
  4. $(ROMFSINST) -a "echo 600 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established" $(RC_LEVEL_PROC)
  5. $(ROMFSINST) -a "echo 10 > /proc/sys/net/ipv4/tcp_keepalive_intvl" $(RC_LEVEL_PROC)
  6. $(ROMFSINST) -a "echo 3 > /proc/sys/net/ipv4/tcp_keepalive_probes" $(RC_LEVEL_PROC)
  7. $(ROMFSINST) -a "echo 10 > /proc/sys/net/ipv4/tcp_keepalive_time" $(RC_LEVEL_PROC)
  8. $(ROMFSINST) -a "echo 60 > /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_time_wait" $(RC_LEVEL_PROC)

对应的文件:
     
     
  1. # cat /etc/init.d/rc10
  2. echo 200 > /proc/sys/net/core/netdev_max_backlog
  3. echo 600 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established
  4. echo 10 > /proc/sys/net/ipv4/tcp_keepalive_intvl
  5. echo 3 > /proc/sys/net/ipv4/tcp_keepalive_probes
  6. echo 10 > /proc/sys/net/ipv4/tcp_keepalive_time
  7. echo 60 > /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_time_wait


2.                                           $(ROMFSINST)-s 用法:   创建软链接                                                                          
/smbshare/F600C/sdk/vendors/Realtek/luna/Makefile

     
     
  1.    $(ROMFSINST) -s /bin /sbin
  2.    $(ROMFSINST) -s /var/ppp /etc/ppp
  3.    $(ROMFSINST) -s /var/config /etc/config
  4.    $(ROMFSINST) -s /var/passwd /etc/passwd




3.                                                                    $(ROMFSINST ) /bin/ 将编译的应用安装到 /bin 目录下
/smbshare/F600C/sdk/user/routed/Makefile
     
     
  1. all: routed
  2. routed: $(OBJS)
  3. $(CC) $(LDFLAGS) -o $@ $(OBJS) $(LDLIBS) -L../boa/src/LINUX $(LIBMIB) $(LIBVOIP)
  4. romfs:
  5. $(ROMFSINST) /bin/routed
  6. clean:
  7. rm -f *.elf *.gdb *.o routed










  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值