玩命加载中🤣🤣🤣

香橙派5B上手记录


香橙派5B上手记录

本文基于香橙派官方文档, 结合自己上手记录过程

香橙派5B 资料页面链接

正面视图(尤其注意电源位置)

前置工作

  • 开发板
  • 5V/4A/20W 电源 (手册中多次提及电压不能超过5V, 否则会烧坏板子)
  • 3.3V 的 USB 转 TTL 模块和杜邦线, 使用串口调试功能时, 需要 USB 转 TTL 模块和杜邦线来连接开发板和电脑
  • 上一条可以换成网线
  • 读卡器 + TF卡 (对于香橙派5, 板载emmc自带 Droid 系统)
  • Ubuntu镜像文件 + 烧录软件 balenaEtcher

balenaEtcher官方地址 https://www.balena.io/etcher/

Ubuntu 系统启动

前置烧录

烧录至 TF 卡

使用 TF 卡烧录至 emmc

ls /dev/mmcblk*boot0 | cut -c1-12

#格式化
sudo dd bs=1M if=/dev/zero of=/dev/mmcblk1 count=1000 status=progress
sudo sync

#烧录
sudo dd bs=1M if=<镜像路径/镜像名> of=/dev/mmcblk1 status=progress
sudo sync

#实例
sudo dd bs=1M if=Orangepi5b_1.0.8_ubuntu_focal_server_linux5.10.160.img of=/dev/mmcblk1 status=progress
sudo sync

使用 RKDevTool 烧录至 emmc

  1. 准备工具

    注意,"MiniLoader-烧录 Linux 镜像才需要用到的东西"文件夹下文简称为 MiniLoader 文件夹。

  2. 在文件夹 DriverAssitant_v5.12 中找到 DriverInstall.exe 可执行文件并打开即可

  3. 打开 DriverInstall.exe 后安装瑞芯微驱动的步骤如下所示:

    1. 点击“驱动安装”按钮

    2. 等待一段时间后,会弹出窗口提示“安装驱动成功”,然后点击“确定”按钮即可

  4. 在 RKDevTool_Release 中打开 RKDevTool

  5. 打开 RKDevTool 烧录工具后,因为电脑此时还没有通过 Type-C 线连接上开发板,所以左下角会提示"没有发现设备"

  6. 然后开始烧录 Linux 镜像到 eMMC 中

    1. 首先通过 Type-C 数据线连接好开发板与 Windows 电脑

    2. 确保开发板没有插入 TF 卡,没有连接电源

    3. 还需确保下图位置的白色 USB2.0 接口没有插入 USB 设备

    4. 然后按住开发板的 MaskROM 按键不放,MaskROM 按键在开发板的位置如下图所示:

    5. 然后给开发板接上 Type-C 接口的电源,并上电,然后就可以松开 MaskROM 按键了

    6. 如果前面的步骤顺利,此时开发板会进入 MASKROM 模式,在烧录工具的界面上会提示"发现一个 MASKROM 设备"

    7. 然后将鼠标光标放在下面的这片区域中

    8. 然后点击鼠标右键会弹出下图所示的选择界面

    9. 然后选择导入配置选项

    10. 然后选择前面下载的 MiniLoader 文件夹中的 rk3588_linux_emmc.cfg 配置文件,再点击打开

    11. 然后点击确定

    12. 然后点击下图所示的位置

    13. 再选择前面下载的 MiniLoader 文件夹中 MiniLoaderAll.bin,再点击打开

    14. 然后点击下图所示的位置

    15. 然后选择想要烧录的 linux 镜像的路径,再点击打开

      在烧录镜像前,建议将要烧录的linux镜像重命名为orangepi.img或者其它比较短的名字,这样在烧录镜像的时候就能看到烧录进度的百分比数值。

    1. 然后请勾选上强制按地址写选项

    2. 再点击执行按钮就会开始烧录 linux 镜像到开发板的 eMMC 中

    3. linux 镜像烧录完后的显示 log 如下图所示

    4. 烧录完 linux 镜像到 eMMC 中后,linux 系统会自动启动。

Linux 启动并登录

此处我烧录的是 Ubuntu Server, 因此提前准备了一根网线

  1. 连接网线, 电源并启动

  2. 登录 192.168.1.1 查看香橙派网络

  3. 使用 ssh 工具连接香橙派

    账号及密码都是 (orangepi)

串口调试

  • RX (Receive Data) 接收数据
  • TX (Transmit Data) 发送数据
  1. 首先查看自己手上的模块的引脚对应关系

TX青色、RX蓝色、GN紫色

  1. 开发板的调试串口引脚关系对应如下

  1. USB 转 TTL 模块 GND、TXD 和 RXD 引脚需要通过杜邦线连接到开发板的调试串口上

    • USB 转 TTL 模块的 GND 接到开发板的 GND 上
    • USB 转 TTL 模块的 RX 接到开发板的 TX 上
    • USB 转 TTL 模块的 TX 接到开发板的 RX 上
  2. 由此杜邦线接线的顺序应该(紫、青、蓝)

  3. 调整终端工具参数

以xshell为例

  1. 开机

WIFI 连接

  1. 首先使用 nmcli dev wifi 命令扫描周围的 WIFI 热点

  1. 然后使用 nmcli 命令连接扫描到的 WIFI 热点:

nmcli dev wifi connect <wifi_name> password <wifi_passwd>

  1. 通过 ip addr show wlan0 命令可以查看 wifi 的 IP 地址

  1. 使用 ping 命令可以测试 wifi 网络的连通性

设置静态 IP 地址

使用 nmcli 命令设置

如果要设置网口的静态 IP 地址,请先将网线插入开发板,如果需要设置 WIFI的静态 IP 地址,请先连接好 WIFI,然后再开始设置静态 IP 地址

  1. 然后通过 nmcli con show 命令可以查看网络设备的名字,如下所示

  1. 然后输入下面的命令

    nmcli con mod "<网络名>" \
    ipv4.addresses "192.168.1.110<ip>/<mask>" \
    ipv4.gateway "192.168.1.1" \
    ipv4.dns "8.8.8.8" \
    ipv4.method "manual"
    
    
    nmcli con mod "sssddd5" \
    ipv4.addresses "192.168.10.100/24" \
    ipv4.gateway "192.168.10.1" \
    ipv4.dns "8.8.8.8" \
    ipv4.method "manual"
    # Wired connection 1 表示设置以太网的静态 IP 地址
    # ipv4.addresses 后面是要设置的静态 IP 地址,可以修改为自己想要设置的值
    # ipv4.gateway 表示网关的地址
  2. 然后重启 linux 系统

    sudo reboot

  3. 然后重新进入 linux 系统使用 ip addr show eth0 命令就可以查看到 IP 地址已经设置为想要的值了 (如果设置成功后通过 ssh登录就能发现了🤣)

使用 nmtui 命令设置

  1. 首先运行 nmtui 命令

  1. 选择 Edit a connection, 并按下回车
  2. 选择需要设置静态 IP 地址的网络接口, 比如设置 CMCC-6Xcu-5G, 按下 Tab 键进入

  1. 将光标移动到下图所示的 <Automatic> 位置进行 IPv4 的配置

  1. 然后回车, 通过方向键选择 Manual, 然后回车确定

  1. 然后通过 Tab 键将光标移动到 <Show>

  1. 在下图所示的位置设置 IP 地址(Addresses)、网关(Gateway)和 DNS 服务器的地址(里面还有很多其他设置选项,请自行探索),请根据自己的具体需求来设置,下图中设置的值只是一个示例

  1. 完后将光标移动到右下角的 <OK>,然后回车确认, 然后点击 <Back> 回退到上一级选择界面
  2. 然后选择 Activate a connection,再将光标移动到 <OK>,最后点击回车

  1. 然后选择需要设置的网络接口,激活该激活的, 关闭想关闭的网络

  1. 设置完成, 友好退出即可
  2. 最后通过 ip addr show wlan0 就能看到网口的 IP 地址已经变成前面设置的静态 IP地址了

板载 LED 灯说明

  1. 开发板上有两个 LED 灯,一个绿灯,一个红灯,所在位置如下图所示:

  1. 只要开发板打开了电源,红色的 LED 灯就会常亮,这是由硬件控制的,软件无法关闭。

  2. 绿色的 LED 灯在内核启动后会一直闪烁,这是由软件控制的

  3. 设置绿灯亮灭和闪烁的方法如下所示

    注意: 下面的操作请在 root 用户下进行

    1. 首先进入绿灯的设置目录

      cd /sys/class/leds/status_led

    2. 设置绿灯停止闪烁的命令如下

      echo none > trigger

    3. 设置绿灯常亮的命令如下

      echo default-on > trigger

    4. 设置绿灯闪烁的命令如下

      echo heartbeat > trigger

    5. 如果开机后不需要 LED 灯闪烁, 可以使用下面的方法来关闭绿灯和蓝灯

      1. 首先运行下 orangepi-config,普通用户记得加 sudo 权限

        sudo orangepi-config

      2. 然后选择 System

      3. 然后选择 Hardware

      4. 然后使用键盘的方向键定位到下图所示的位置,再使用空格选中 disable-led 配置

      5. 然后选择 <Save> 保存, 然后选择 <Back>

      6. 然后选择 <Reboot> 重启系统使配置生效, 重启后就可以看到开发板上只有红灯常亮, 绿灯不会闪烁了

常用命令

查看 Ubuntu 版本

lsb_release -a

查看系统架构

uname -m

scp

scp [参数] <源地址(用户名@IP地址或主机名)>:<文件路径> <目的地址(用户名 @IP 地址或主机名)>:<文件路径>

####举例
scp ./init.sh dee@192.168.1.99:/home/dee/ #把本地的init.sh文件拷贝到192.168.1.99的/home/dee目录下

scp orangepi@192.168.1.111:/etc/apt/sources.list ./ #把192.168.1.111的sources.list文件拷贝到本地当前目录下

scp -r /home/work/sourcedir work@192.168.0.10:/home/work/ #拷贝文件夹,加-r参数

磁盘挂载

sudo mkdir /home/data
sudo mount /dev/sda1 /home/data #挂载
sudo umount /dev/sda1 #卸载
fuser -m /dev/sda1 #查看正在使用磁盘的应用
sudo fdisk -l #查看所有磁盘信息(包括未挂载的)

账户相关

#修改 root 账号的密码(要切换至root)
paswd
#修改 orangepi 账号的密码
passwd orangepi
#修改 orangepi 的账号为 dee
usermod -l dee orangepi
#修改组
groupmod -n dee orangepi
#把原来 orangepi 目录改掉
mv /home/ornagepi /home/dee
#把这目录设置成 orangepi 用户的 home 目录
usermod -d /home/orangepi orangepi

#查看 Linux 中所有用户
cat /etc/passwd
#查看 Linux 中添加了多少用户
cat /etc/passwd|grep -v nologin|grep -v halt|grep -v shutdown|awk-F":" '{ print $1"|"$3"|"$4 }'|more
#查看 Linux 中所有组
cat /etc/group
#删除 Linux 某个用户
userdel <用户名>
#删除linux中某个用户所有信息
userdel -r <用户名>

设置时区

sudo dpkg-reconfigure tzdata 选择Asia然后shanghai即可

常用 apt 命令

# 查看当前Ubuntu系统使用的镜像源
cat /etc/apt/sources.list
如果想使用其他镜像源,可以在这个文件中添加或编辑相应的行。编辑完成后,记得运行以下命令更新软件包列表:

sudo apt update
# 这是一个主要在新系统安装之后或安装新软件包之前调用的命令。apt update 命令更新 Linux 系统的包索引或包列表。它不会升级任何软件包,正如一些 Linux 用户被误导的那样。

sudo apt upgrade
# 需要将您的软件包升级到最新版本?然后apt upgrade是要执行的命令。apt upgrade 命令不带任何参数,将系统上所有过时的软件包升级到最新版本。
# 如果需要任何依赖项,该命令还会触发新软件包的安装。除此之外,apt upgrade还会安装您系统所需的所有安全更新,这加强了您系统的安全性。

apt list --upgradable #列出需要升级的软件包

#### 

sudo apt update #列出所有可更新的软件清单命令

sudo apt install <package_name> #安装指定的软件命令
sudo apt install <package_1> <package_2> <package_3> #安装多个软件包

sudo apt update <package_name> #更新指定的软件命令

sudo apt remove <package_name> #删除软件包命令

sudo apt autoremove #清理不再使用的依赖和库文件

sudo apt purge <package_name> #移除软件包及配置文件

sudo apt search <keyword> #查找软件包命令

apt list --installed #列出所有已安装的包

apt list --all-versions #列出所有已安装的包的版本信息

常用防火墙命令

sudo apt install ufw #安装防火墙

sudo ufw status #查看防火墙状态

sudo ufw enable #开启防火墙
sudo ufw disable #关闭防火墙

sudo ufw allow 80 #允许外部访问80端口, 协议包含 tcp 和 udp
sudo ufw allow 80/tcp #允许其它主机使用 tcp 协议访问本机 80 端口
sudo ufw delete allow 80 #禁止外部访问80 端口
sudo ufw allow from 192.168.1.1 #允许此IP访问所有的本机端口

sudo ufw deny smtp #禁止外部访问smtp服务
sudo ufw reject out smtp #禁止访问外部smtp端口,不告知“被防火墙阻止”

sudo ufw deny out to 192.168.1.1 #禁止本机 192.168.1.1 对外访问,告知“被防火墙阻止”

sudo ufw delete allow smtp #删除上面建立的某条规则
sudo ufw delete deny 80/tcp #要删除规则,只要在命令中加入delete就行了

###可以允许所有RFC1918网络(局域网/无线局域网的)访问这个主机(/8,/16,/12是一种网络分级)
sudo ufw allow from 10.0.0.0/8
sudo ufw allow from 172.16.0.0/12
sudo ufw allow from 192.168.0.0/16

常用端口命令

sudo netstat -ntulp|grep <应用名> #注意要加sudo
sudo lsof -i:<端口号> #注意要加sudo

软件及服务

JDK

安装 OpenJDK 8

sudo apt update
sudo apt install openjdk-8-jdk -y

通过检查 Java 版本,来验证安装过程:

java -version

##### 控制台 ####
openjdk version "1.8.0_382"
OpenJDK Runtime Environment (build 1.8.0_382-8u382-ga-1~20.04.1-b05)
OpenJDK 64-Bit Server VM (build 25.382-b05, mixed mode)

安装OpenJDK 11

sudo apt install openjdk-11-jdk -y

##### 控制台 ####
openjdk version "11.0.20.1" 2023-08-24
OpenJDK Runtime Environment (build 11.0.20.1+1-post-Ubuntu-0ubuntu120.04)
OpenJDK 64-Bit Server VM (build 11.0.20.1+1-post-Ubuntu-0ubuntu120.04, mixed mode)

设置默认版本

sudo update-alternatives --config java #同时也可查看 Java 安装路径

JAVA_HOME 环境变量

java 安装路径如下:

  • OpenJDK 11 is located at /usr/lib/jvm/java-11-openjdk-amd64/bin/java
  • OpenJDK 8 is located at /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
#环境变量位置
sudo vim /etc/environment

#末尾添加
JAVA_HOME="/usr/lib/jvm/java-8-openjdk-arm64/jre/bin/java"

#立即生效
source /etc/environment

#校验
echo $JAVA_HOME
sudo apt remove openjdk-11-jdk

MySql

#查看
sudo apt search mysql
#安装
sudo apt install mysql-server -y
#查看服务
sudo systemctl status mysql
#查看版本
mysql --version

安全配置向导说明

sudo mysql_secure_installation

配置远程访问

#允许远程访问
cd /etc/mysql/mysql.conf.d
sudo vim mysqld.cnf #此处不要修改权限, 否则 mysql 无法读取配置
# 重启mysql
sudo systemctl restart mysql

登录

#登录
sudo mysql
sudo mysql -uroot -p #接着输入密码
#更改 root 密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'sad_mysql';
#### 推荐新建用户 (通过 SELECT @@VERSION; 查看版本: mysql版本8.0.13之后, 新用户授权方式发生了变化
create user 'saddyfire'@'%' identified by  'sad_mysql';
grant all privileges on *.* to 'saddyfire'@'%' with grant option;
flush privileges;

#### 如果出现了策略 ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
show variables like 'validate_password%';
set global validate_password.policy=LOW;
set global validate_password.length=6;
flush privileges;

卸载

#查看MySQL的依赖项
dpkg --list|grep mysql
#删除
sudo apt remove mysql-*
#继续查看
dpkg --list|grep mysql
#继续删除
sudo apt autoremove --purge mysql-server-8.0 mysql-common

Redis

sudo apt install redis-server -y

配置文件及日志

cd /etc/redis
sudo vim /etc/redis/redis.conf

#(定位到 bind 端口绑定) >>> 注释# bind 127.0.0.1 ::1
#(定位到 requirepass 并修改密码)

#查看日志
cd /var/log/redis

#中间会遇到文件夹及文件权限问题
chmod 755 *

Nginx

sudo apt install nginx-full -y

配置文件及日志

#配置文件夹
cd /etc/nginx

#日志
cd /var/log/nginx/
#中间会遇到文件夹及文件权限问题
chmod 755 *

局域网共享

安装及配置

#安装Samba
sudo apt install samba -y
#新增共享目录
sudo mkdir -p /dee/sharedata
#添加用户
sudo useradd dee -s /usr/sbin/nologin
#修改权限
sudo chown dee:dee /dee/sharedata
#将用户smbuser添加到samba的smbpasswd file中(即在samba服务中注册该账户)
sudo smbpasswd -a dee
#pass=dee

配置文件

cd /etc/samba/
sudo vim /etc/samba/smb.conf

shift g 在末尾添加

## 注意: 后面的注释要输出
[secret]    #共享目录名,访问时的展示名
    comment = Secret File       #该共享目录的描述
    path = /dee/sharedir  #访问的实际路径,前面设置的
    valid users = dee       #设置可访问的用户,此处为前面添加的用户smbuser(注意users不要拼写错误)
    guest ok = no               #是否允许访客,否
    writable = yes              #可写,是
    browsable = yes             #可浏览,是

重启生效

sudo systemctl restart smbd
sudo systemctl restart nmbd

匿名方式类似

# 打开文件
sudo vim /etc/samba/smb.conf
# 尾部写入以下内容并保存
[share] 
    comment = Ubuntu File Server 
    path = /dee/shareAll 
    browsable = yes 
    guest ok = yes 
    read only = no

附加命令

# 查看samba用户列表
sudo pdbedit -L
#删除samba服务中的某个用户
sudo smbpasswd -x<用户名>
# 对samba用户进行管理(用户已经在系统中创建)
sudo smbpasswd -h  #查看支持的命令列表
# 异常时可查看日志情况
cat /var/log/samba/log.%m

自动化部署

wifi

vim inti-wifi.sh

#! /bin/bash
## 如果出现 -bash: /bin/bash^M: bad interpreter: No such file or directory
## vim或者vi的命令模式下, 输入命令 set ff=unix 即可解决换行问题


#校验是否为合法ip格式
function validate_ip() {
    local ip=$1
    local stat=1

    if [[ $ip =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}$ ]]; then
        OIFS=$IFS
        IFS='.'
        ip=($ip)
        IFS=$OIFS

        if [[ ${ip[0]} -le 255 && ${ip[1]} -le 255 && ${ip[2]} -le 255 && ${ip[3]} -le 255 ]]; then
            stat=0
        fi
    fi

    return $stat
}

#设置静态ip
function set_stat_ip(){
	local gate_way="$3"
	if ! validate_ip "$3" ; then
		gate_way="192.168.1.1"
	fi
	nmcli con mod "$1" \
	ipv4.addresses "$2" \
	ipv4.gateway "$gate_way" \
	ipv4.dns "8.8.8.8" \
	ipv4.method "manual"
}

if [ $# -eq 0 ]; then
    echo "使用说明:"
    echo "    ./init-wifi <wifi名> <密码> <静态ip> [网关ip]"
    exit 0
fi


if [[ -z $1 ]]; then
	echo "wifi名不能为空"
	exit 1
fi

if [[ -z $2 ]]; then
	echo "wifi密码不能为空"
	exit 1
fi
#校验静态ip
if ! validate_ip "$3"; then
  echo "$3"
  echo "静态ip不合法"
  exit 1
fi

conn_result=`nmcli dev wifi connect $1 password $2`
if [[ $conn_result =~ "successfully" ]]; then
	echo ">>> wifi连接成功, 正在修改静态ip <<<"
	set_stat_ip $1 $3 $4
	echo ">>> 修改完成, 请重启计算机 <<<"
	exit 0
else
	echo "连接失败"
	exit 1
fi

基础应用安装

vim init-prog.sh

#! /bin/bash

while getopts ":r:" opt; do
  case $opt in
    r)
      redis_pass=$OPTARG
      ;;
    \?)
      echo "参数错误 > 使用说明:"
      echo "./init-prog.sh -r <redis密码>"
      exit 0
      ;;
  esac
done

if [ $# -eq 0 ]; then
    echo "使用说明:"
    echo "./init-prog.sh -r <redis密码>"
    exit 0
fi

if [[ -z $redis_pass ]]; then
  redis_pass='123456'
  echo "redis默认密码: $redis_pass"
fi

echo ">>> 开始安装 telnet <<<" 
nohup apt install telnet -y >> init-program.log 2>&1 &

echo ">>> 开始安装 Redis <<<"
nohup apt install redis-server -y >> init-program.log 2>&1 &
sed -i 's/^bind 127.0.0.1 ::1/#bind 127.0.0.1 ::1/g' /etc/redis/redis.conf
sed -i "s/# requirepass foobared/requirepass $1/g" /etc/redis/redis.conf
echo "redis安装并配置完成,密码为 $1 "

echo ">>> 开始安装 Nginx <<<"
nohup apt install nginx-full -y >> init-program.log 2>&1 &


echo ">>> 开始安装 JDK8 <<<"
nohup apt install openjdk-8-jdk -y >> init-program.log 2>&1 $

echo "添加 JAVA 环境变量"

echo 'JAVA_HOME8="/usr/lib/jvm/java-8-openjdk-arm64/jre/bin/java"' >> /etc/environment
echo 'JAVA_HOME=$JAVA_HOME8' >> /etc/profile
source /etc/environment
echo '请输入 echo $JAVA_HOME 用以校验'

echo ">>> 开始安装 mysql <<<" 
nohup apt install mysql-server -y >> init-mysql.log 2>&1 &
sed -i 's/^bind-address/#bind-address/g' /etc/mysql/mysql.conf.d/mysqld.cnf
mysql << EOF
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'dee_mysql';
create user 'saddyfire'@'%' identified by  'dee_mysql';
grant all privileges on *.* to 'saddyfire'@'%' with grant option;
flush privileges;
exit
EOF
echo ">>> mysql 安装完成<<<"
echo ">>> 账号: saddyfire 密码: dee_mysql<<<"

文章作者: 👑Dee👑
版权声明: 本博客所有文章除特別声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 👑Dee👑 !
  目录