系统配置
1. shell 脚本
Shell 是一个应用程序,它提供了用户与操作系统内核之间的交互界面。通过shell,用户可以向操作系统发送命令,操作文件系统,运行程序,以及执行各种系统任务。Shell通常是一个命令行界面,用户可以在其中输入文本命令来执行各种任务。
常见的 Shell 有 sh、bash、csh、tcsh、ash 等。
sh(Bourne shell):sh是一种Unix和Linux操作系统中最常见的命令行解释器(shell)。它得名于其创建者Stephen Bourne,是最早的Unix shell之一。
Bash(Bourne-Again Shell):Bash是Unix和Linux系统中最常用的Shell。它是Bourne Shell的改进版本,提供了强大的脚本编程功能和丰富的命令行工具。
Dash:Dash是Debian Almquist Shell的缩写,通常用作系统初始化脚本的默认Shell。它在启动时非常快速,适用于系统引导和脚本任务。
Csh(C Shell)和Tcsh(Tenex C Shell):这些是C Shell的变种,主要在Unix系统中使用。它们具有与Bash不同的语法和功能。
Ash(Almquist Shell):Ash是另一种轻量级的Shell,通常用于嵌入式系统和一些轻量级Linux发行版。
2. 创建第一个脚本
打开文本编辑器,新建一个文本文件,并命名为 luckfox.sh,其中扩展名 sh 代表 shell,扩展名并不影响脚本执行。
-
创建脚本,在luckfox.sh 中输入代码:
#!/bin/shecho "Hello Luckfox !"- 第 1 行的
#!是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell;后面的 /bin/sh 就是指明了解释器的具体位置 - 第 2 行的 echo 命令用于向标准输出文件(Standard Output,stdout,一般就是指显示器)输出文本。在
.sh文件中使用命令与在终端直接输入命令的效果是一样的
- 第 1 行的
-
为脚本增加可执行权限并执行。
# vi test.sh# chmod 775 test.sh# ./test.shHello Luckfox !
3. 自启动设置
在 /etc/init.d/ 中有相关的系统脚本。系统开机后,会先执行 rcS,在这个脚本里面,会循环去执行S开头脚本的start分支。系统关机时,会先执行 rcK,在这个脚本里面,也是循环去执行S开头的脚本的stop分支。所以如果我们需要添加一个脚本在开机时执行,可以按以下步骤操作:
-
需要在 /etc/init.d/ 目录里新建一个 S??* 的脚本。
- S:表示以S开头
- ??:表示中间是两个字符串,建议加两个数字表示优先级,数字越小开机时越先执行,关机时越后执行
- *:表示加任意字符串,用来描述脚本的功能
-
并且在脚本里实现 start 和 stop 分支。
-
给脚本添加权限,可以执行:
chmod 775 脚本名#!/bin/shcase $1 instart)echo "start";;stop)echo "stop";;*)exit 1;;esac
4. 设置静态 IP
4.1 网线直连配置
在这种情况下,只能确保开发板和电脑处于同一局域网内相互通信,但无法访问互联网或外部网络。
-
开发板设置。设置开发板的
eth0的IP地址、子网掩码和网关等。ifconfig eth0 192.168.10.200 netmask 255.255.252.0route add default gw 192.168.11.1echo "nameserver 114.114.114.114" > /etc/resolv.conf- **注意:**按照第一步的设置方法,重启后会失效。如果没有联网需求,并且每次都不想手动设置,可以设置开机脚本。
-
编写脚本,给脚本赋予可执行权限。
vi /etc/init.d/S99static#!/bin/shcase $1 instart)ifconfig eth0 192.168.10.200 netmask 255.255.252.0route add default gw 192.168.11.1echo "nameserver 114.114.114.114" > /etc/resolv.conf;;stop);;*)exit 1;;esacchmod +x /etc/init.d/S99static
4.2 开发板连接路由器
-
例如,要设置静态IP地址,可以命名为 S99staticip(确保该命名在系统脚本之后)。
- 确保开发板已经接入路由器或者交换机,静态IP地址与路由器网段一致
- 不要和路由器分配出去的 IP 地址发生冲突
#!/bin/shMAX_TRIES=10TRIES=0check_ip_address() {if ifconfig eth0 | grep -q "inet "; thenreturn 0elsereturn 1fi}static_ip(){while [ $TRIES -lt $MAX_TRIES ]; doif check_ip_address; thenecho "DHCP succeed!"ifconfig eth0 192.168.10.66 netmask 255.255.252.0route add default gw 192.168.11.1echo "nameserver 114.114.114.114" > /etc/resolv.confifconfig eth0 upbreakelseecho "wait DHCP IP..."TRIES=$((TRIES + 1))sleep 5fidoneif [ $TRIES -eq $MAX_TRIES ]; thenecho "error"fi}case $1 instart)echo "start"static_ip;;stop)echo "stop";;*)exit 1;;esac- 在 **ifconfig eth0 192.168.10.66 netmask 255.255.252.0 **语句中要替换成自己的 IP 地址和子网掩码。
- 对于命令 route add default gw 192.168.11.1,请将网关地址更改为您自己的配置。如果不确定,请使用相关命令如 route -n 查看。