用法:
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 文件:
romfs:
$(ROMFSINST) /bin/$(EXEC)
:
: inetd.conf
:
$(ROMFSINST) -e CONFIG_USER_DISCARD_DISCARD \
-a "discard dgram udp wait root /bin/discard" /etc/inetd.conf
$(ROMFSINST) -e CONFIG_USER_DISCARD_DISCARD \
-a "discard stream tcp nowait root /bin/discard" /etc/inetd.conf
$(ROMFSINST) -e CONFIG_USER_MARADNS_MARADNS \
-a "domain stream tcp nowait root /bin/zoneserver" /etc/inetd.conf
$(ROMFSINST) -e CONFIG_USER_TFTPD_TFTPD \
-a "tftp dgram udp wait root /bin/tftpd" /etc/inetd.conf
$(ROMFSINST) -e CONFIG_USER_SSH_SSHD \
-a "ssh stream tcp nowait root /bin/sshd -i" /etc/inetd.conf
$(ROMFSINST) -e CONFIG_USER_TELNETD_TELNETD \ //如果该宏定义了,则执行对应的语句
-a "telnet stream tcp nowait root /bin/telnetd -i -l /bin/sh" /etc/inetd.conf
$(ROMFSINST) -a "telnet stream tcp nowait root /bin/telnetd -i -l /sbin/login" /etc/inetd.conf
// 将 -a 后的内容追加写入 目标文件中
RC_LEVEL_PROC=/etc/init.d/rc10
$(ROMFSINST) -a "echo 200 > /proc/sys/net/core/netdev_max_backlog" $(RC_LEVEL_PROC)
ifndef CONFIG_ARCH_LUNA_SLAVE
$(ROMFSINST) -a "echo 600 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established" $(RC_LEVEL_PROC)
$(ROMFSINST) -a "echo 10 > /proc/sys/net/ipv4/tcp_keepalive_intvl" $(RC_LEVEL_PROC)
$(ROMFSINST) -a "echo 3 > /proc/sys/net/ipv4/tcp_keepalive_probes" $(RC_LEVEL_PROC)
$(ROMFSINST) -a "echo 10 > /proc/sys/net/ipv4/tcp_keepalive_time" $(RC_LEVEL_PROC)
$(ROMFSINST) -a "echo 60 > /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_time_wait" $(RC_LEVEL_PROC)
# cat /etc/init.d/rc10
echo 200 > /proc/sys/net/core/netdev_max_backlog
echo 600 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established
echo 10 > /proc/sys/net/ipv4/tcp_keepalive_intvl
echo 3 > /proc/sys/net/ipv4/tcp_keepalive_probes
echo 10 > /proc/sys/net/ipv4/tcp_keepalive_time
echo 60 > /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_time_wait
$(ROMFSINST) -s /bin /sbin
$(ROMFSINST) -s /var/ppp /etc/ppp
$(ROMFSINST) -s /var/config /etc/config
$(ROMFSINST) -s /var/passwd /etc/passwd
all: routed
routed: $(OBJS)
$(CC) $(LDFLAGS) -o $@ $(OBJS) $(LDLIBS) -L../boa/src/LINUX $(LIBMIB) $(LIBVOIP)
romfs:
- $(ROMFSINST) /bin/routed
clean:
rm -f *.elf *.gdb *.o routed