该文章仅供参考,编写人不对任务实验设备、人员及测量结果负责!!!
0 引言
文章主要介绍King3399(瑞芯微rk3399开发板,荣品)官方SDK(Ubuntu文件系统)编译过程,涉及环境配置、网络连接(有线局域网)、远程文件复制(SSH)等
1 编译环境
编译SDK(Ubuntu系统)时,windows主机、ubuntu主机配置可参考上一篇文章《King3399 SDK编译简明教程-1 编译环境》,官方文档有明确说明,无论最后要使用什么系统,都请先全局编译一次 buildroot,之后再进行其他系统的编译,以避免出现需要某个依赖的工具找不到的情况
,本文是在上一篇文章(成功编译buildroot)的基础上选择Ubuntu文件系统进行编译
首先下载官方提供的 ubuntu 文件系统(约1G),文件系统路径如下:
cdrom_king3399_new/01-SDK/Linux/source/ubuntu-20240531.tgz
cdrom_king3399_new/01-SDK/Linux/source/ubuntu-20240531.md5
将上述两个文件下载到共享文件夹下并在ubuntu主机中对下载文件进行md5校验
# 切换当前路径为共享文件夹
cd /mnt/hgfs/sharefile# 对ubuntu文件系统进行校验,返回:xxx
md5sum ubuntu-20240531.tgz # 打开.md5文件,内容:ooo
vim ubuntu-20240531.md5# 若指令md5sum的返回值xxx与.md5中的值ooo相同则说明文件无误# 查看/home/username/ws/sdk/下有无ubuntu文件夹,若无则创建ubuntu文件夹
mkdir ubuntu# 将.tgz解压到home/username/ws/sdk/ubuntu下
tar xzvf ubuntu-20240531.tgz -C /home/username/ws/sdk/ubuntu/# 解压完成后将在/home/username/ws/sdk/ubuntu/下生成ubuntu.img文件
ls # return ubuntu.img# 配置编译输出文件,在/home/username/ws/sdk目录下执行命令如下:
./build.sh init# 第一个选择 2 (2. rk3399),根据实际板子型号选择# 第二个选择 4 (4. king-rk3399-ubuntu_defconfig),根据需要编译的文件系统选择# 全局编译ubuntu,在/home/username/ws/sdk目录下执行命令如下:
./build.sh # 耗时 25 min,编译成功后占用磁盘空间 5G# 编译过程中产生的日志可在下述目录查看
# /home/username/ws/sdk/output/sessions/2024-aa-bb_cc...# ubuntu文件系统编译完成后会在/home/username/ws/sdk/rockdev下生成所需镜像
ls -hl
# boot.img -> ../../kernel/boot.img
# linux-headers.tar
# MiniLoaderAll.bin -> ../../u-boot/rk3399_loader_v1.30.130.bin
# misc.img -> ../misc.img
# oem.img
# parameter.txt -> ../../device/rockchip/.chips/rk3399/parameter.txt
# recovery.img -> ../recovery/ramboot.img
# rootfs.img -> ../../ubuntu/ubuntu.img
# trust.img -> ../../u-boot/trust.img
# uboot.img -> ../../u-boot/uboot.img
# update.img -> ../update/Image/update.img
# update-rk3399-king-rk3399-ubuntu-mipi-7-1024-600-20240922-165231.img -> ../update/Image/update.img
# userdata.img# 将这些镜像复制到共享目录下,
# 不能直接使用 cp -r rockdev /mnt/hgfs/sharefile
# 只能一个一个复制到共享目录下# 烧录并重启板子,ubuntu文件系统开机界面如下
2 网络连接
编译后的系统无法使用wifi连网,可能是在编译前没有配置,本人没有过多研究,感兴趣的可以去资料中看看具体的说明,本文给出两种网络连接方式,建议使用有线网络连接
,文章中提到无线网络连接部分是条件所限,不保证参考该部分能够顺利连接网络!,
关于连接网络这部分内容网上有很多文章,修改的文件与使用的指令也不尽相同,有的照着修改后并没有得到理想的效果这很正常,毕竟大家的设备状态并不完全相同,所以记住一点:修改前做备份,修改后做笔记,多看,多改,多总结
2.1 有线网络连接
通常在开发时最简易的办法就是将主机与从机通过网线连接到同一个路由器(交换机),这样组成的局域网便于使用ssh或nfs进行文件传输与管理,由于这种方式使用的最为广泛,网上可参考的文章也较多,因此这里只大概提一下,连接示意图如下
利用网线将windows主机与king3399从机连接到同一个路由器后,分别在ubuntu主机、king3399从机中打开终端并输入ip a
或者ifconfig
查看ip,通常返回内容包含三个部分:ens33/eth0(有线网络接口,以太网)、lo(本地环回接口)以及wlan(无线网络接口),这里使用的是网线,因此只关心ens33/eth0的部分即可,ens33/eth0返回部分中的 inet 192.168.1.147 netmask 255.255.255.0 broadcast 192.168.1.255
就是设备的ip信息,不太严谨地说(由于涉及网络部分,不做拓展,感兴趣可自行查看相关资料),若此处inet字段的前三部分相同则可认为设备处于同一局域网内,此时可通过ping
指令检验设备间网络是否正常,此处建议先通过ping www.baidu.com
查看设备能否正常上网,若设备可以正常上网,且可以相互ping通,则设备可更新/安装软件与设备间文件传输,由于本人没有路由器和有线网络,因此这部分只大致提一下
2.2 无线网络连接
这里的无线并不是指直接利用板子的wifi模块连接无线网络,而是通过网线间接连到wifi,具体的连接如下图所示
windows主机共享网络(测试时以笔记本为windows主机),进入windows主机的“更改适配器”
选择“WLAN”,右键选择“属性”,选项卡选择“共享”,勾选上“允许其他网络用户通过此计算的Internet连接来连接”,再在“家庭网络连接”中选择“以太网”,注:该操作在主机重启或者关机后需要关闭再打开!!!
此时WLAN中显示为Shared状态,继续在“更改适配器”选项中查看“以太网”,在“以太网”上右键选择“属性”,接着查看它的IPV4网络属性,双击“Internet协议版本4(TCP、IPV4)”,查看网络信息(使用下面的ip地址) ip地址:192.168.137.1 ,子网掩码:255.255.255.0,使用下面的dns服务器地址,这几条信息下边会用到
2.3 配置King3399网络
打开king3399的网络配置界面,具体配置如下图所示,此处的Address(对应文章中2.2节中的三条信息)只需填写一个比192.168.137.1靠后的ip就行(前三字段相同,最后一个字段介于1~255)
分别在ubuntu主机与king3399从机编辑 /etc/systemd/resolved.conf
这个文件,把 DNS 那一行解开注释修改前建议先将文件备份,若出现意外还可退回!
cd /etc/systemd/
sudo vim resolved.conf# 释放DNS配置,作如下修改并保存
DNS=8.8.8.8 1.1.1.1
重启板子并打开命令行,不出意外的话ping www.baidu.com
能够收到数据包,此时板子成功连接网络
虚拟机中的ubuntu主机在配置网络时使用的是桥接模式,因此ubuntu主机与windows主机应在同一局域网内,相互可以ping通(windows下,win+r 并输入 cmd 打开命令行窗口,输入ipconfig /all 查看网络信息),下图为将ubuntu主机配置为桥接模式
修改完成后可以重启ubuntu主机与king3399从机,通过·ip a
查看ip,并尝试能否相互ping通
3 远程复制文件SSH
在ubuntu上用于远程管理文件的方式有很多,实现过程大同小异,这里以SSH为例
# king3399连网后先对软件库进行更新
sudo apt update
sudo apt upgrade# 安装openssh-server
# ubuntu主机、king3399从机都需要安装
sudo apt install -y openssh-server# 启用ssh
# ubuntu主机、king3399从机都需要启用
# 注:系统重启后若无法ssh,可尝试再次启用
sudo /etc/init.d/ssh start
sudo service sshd restart# king3399从机向ubuntu主机传递文件
scp test_from_king.txt username@aaa.bbb.ccc.ddd:/home/username/ws
# 此处username为目的主机名,也即ubuntu主机名
# 此处aaa.bbb.ccc.ddd为目的主机ip,也即ubuntu主机ip
# 允许传递
# The authenticity of host...can't be established.
# ECDSA key fingerprint is SHA256:...
# Are you sure you want to continue connecting (yes/no)? yes
# 输入ubuntu主机开机密码# ubuntu主机向king3399从机传递文件
scp test_from_ubuntu.txt username@aaa.bbb.ccc.eee:/home/username/ws
# 此处username为目的主机名,也即king3399名
# 此处aaa.bbb.ccc.eee为目的主机ip,也即king3399的ip
# 允许传递
# The authenticity of host...can't be established.
# ECDSA key fingerprint is SHA256:...
# Are you sure you want to continue connecting (yes/no)? yes
# 输入king3399开机密码
这里需要注意的地方有两点:
- ubuntu主机与king3399需要在同一局域网中才能使用scp
windows主机每次重启后都需要重新打开共享网络
,具体过程就是文章中第5张图,取消勾选“alow other network users to…”,保存并关闭该窗口,然后再次打开该窗口并勾选“alow other network users to…”,选择“以太网”,保存并关闭该窗口。
4 其他
这里分享一个有用的功能,ubuntu中截图并显示图片,尤其在做技术笔记时,毕竟直接使用手机对着屏幕拍照这种方式不管是从画质还是图片大小来说都差强人意
对于ubuntu主机(ubuntu18.04)来说,其系统桌面默认为GNOME,可以使用键盘上的“PrtSc”进行全屏截图,图片默认保存在用户的“Picture”文件夹内,当然也可以使用gnome-screenshot -a
进行指定区域截图,图片默认保存地与上述相同
显示图片可以直接使用display /path/to/image.png
,这些工具都是系统默认自带的,不需安装,简单实用,满足一般需求
对于king3399从机(ubuntu20.04)来说,其系统桌面默认为Xfce,可以使用键盘上的“PrtSc”进行全屏截图或者是区域截图,不过本人测试发现按下从机键盘上的“PrtSc”这个键后返回“failed to execute child process ‘‘xfce4-screenshooter’’ ( No such file or directory)”,需要重新安装该截图库sudo apt -y install xfce4-screenshooter
,安装成功后可以使用从机键盘上的PrtScSysRq键进行截图并指定图片保存路径
显示图片可以直接使用xdg-open /path/to/image.png
,不过感觉这个指令不好用,建议安装ristretto查看图片,sudo apt install ristretto
,查看图片时使用ristretto /path/to/image.png
脚注[1]中提供的镜像`仅供King3399这个型号的板子使用,不可随意烧录!!!
[1] SDK(ubuntu文件系统)编译后的镜像(分立+完整)BaiduPan( pwd : dl84)
[2] 用Windows通过网线共享网络给其他电脑(Windows、Ubuntu)
[3] Ubuntu 18.04 解决Temporary failure in name resolution DNS解析问题
[4] ubuntu下安装openssh-server失败问题及解决方法
[5] How To Install xfce4-screenshooter on Ubuntu 20.04
[6] win10 vmware没有vmnet0(桥接后无法上网)解决办法