跳到主要内容

系统配置

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,扩展名并不影响脚本执行。

  1. 创建脚本,在luckfox.sh 中输入代码:

    #!/bin/sh
    echo "Hello Luckfox !"
    • 第 1 行的#!是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell;后面的 /bin/sh 就是指明了解释器的具体位置
    • 第 2 行的 echo 命令用于向标准输出文件(Standard Output,stdout,一般就是指显示器)输出文本。在.sh文件中使用命令与在终端直接输入命令的效果是一样的
  2. 为脚本增加可执行权限并执行。

    # vi test.sh
    # chmod 775 test.sh
    # ./test.sh
    Hello Luckfox !

3. 自启动设置

在 /etc/init.d/ 中有相关的系统脚本。系统开机后,会先执行 rcS,在这个脚本里面,会循环去执行S开头脚本的start分支。系统关机时,会先执行 rcK,在这个脚本里面,也是循环去执行S开头的脚本的stop分支。所以如果我们需要添加一个脚本在开机时执行,可以按以下步骤操作:

  1. 需要在 /etc/init.d/ 目录里新建一个 S??* 的脚本。

    • S:表示以S开头
    • ??:表示中间是两个字符串,建议加两个数字表示优先级,数字越小开机时越先执行,关机时越后执行
    • *:表示加任意字符串,用来描述脚本的功能
  2. 并且在脚本里实现 start 和 stop 分支。

  3. 给脚本添加权限,可以执行:

    chmod 775 脚本名
    #!/bin/sh

    case $1 in
    start)
    echo "start"
    ;;
    stop)
    echo "stop"
    ;;
    *)
    exit 1
    ;;
    esac

4. 设置静态 IP

4.1 网线直连配置

在这种情况下,只能确保开发板和电脑处于同一局域网内相互通信,但无法访问互联网或外部网络。

  1. 开发板设置。设置开发板的eth0IP地址、子网掩码和网关等。

    ifconfig eth0 192.168.10.200 netmask 255.255.252.0
    route add default gw 192.168.11.1
    echo "nameserver 114.114.114.114" > /etc/resolv.conf
    • 注意:按照第一步的设置方法,重启后会失效。如果没有联网需求,并且每次都不想手动设置,可以设置开机脚本。
  2. 编写脚本,给脚本赋予可执行权限。

    vi /etc/init.d/S99static
    #!/bin/sh

    case $1 in
    start)
    ifconfig eth0 192.168.10.200 netmask 255.255.252.0
    route add default gw 192.168.11.1
    echo "nameserver 114.114.114.114" > /etc/resolv.conf

    ;;
    stop)
    ;;
    *)
    exit 1
    ;;
    esac
    chmod +x /etc/init.d/S99static

4.2 开发板连接路由器

  1. 例如,要设置静态IP地址,可以命名为 S99staticip(确保该命名在系统脚本之后)。

    • 确保开发板已经接入路由器或者交换机,静态IP地址与路由器网段一致
    • 不要和路由器分配出去的 IP 地址发生冲突
    #!/bin/sh


    MAX_TRIES=10
    TRIES=0


    check_ip_address() {

    if ifconfig eth0 | grep -q "inet "; then
    return 0
    else
    return 1
    fi
    }

    static_ip()
    {

    while [ $TRIES -lt $MAX_TRIES ]; do
    if check_ip_address; then
    echo "DHCP succeed!"
    ifconfig eth0 192.168.10.66 netmask 255.255.252.0
    route add default gw 192.168.11.1
    echo "nameserver 114.114.114.114" > /etc/resolv.conf
    ifconfig eth0 up
    break
    else
    echo "wait DHCP IP..."
    TRIES=$((TRIES + 1))
    sleep 5
    fi
    done


    if [ $TRIES -eq $MAX_TRIES ]; then
    echo "error"

    fi
    }
    case $1 in
    start)
    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 查看。