账号:youyeetoo
密码:youyeetoo
可以添加脚本在 ~/.bashrc末尾执行。
可以添加脚本在 /etc/profile末尾执行。
1、查看一下rc-local.service文件是不是存在
路径:/lib/systemd/system/rc-local.service
内容
# SPDX-License-Identifier: LGPL-2.1+
#
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
# This unit gets pulled automatically into multi-user.target by
# systemd-rc-local-generator if /etc/rc.local is executable.
[Unit]
Description=/etc/rc.local Compatibility
Documentation=man:systemd-rc-local-generator(8)
ConditionFileIsExecutable=/etc/rc.local
After=network.target
[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
RemainAfterExit=yes
GuessMainPID=no
注:这里面就指出了可执行文件是 /etc/rc.local 。
默认的状态
root@npi:/lib/systemd/system# systemctl status rc-local.service
rc-local.service - /etc/rc.local Compatibility
Loaded: loaded (/lib/systemd/system/rc-local.service; static; vendor preset:
Drop-In: /lib/systemd/system/rc-local.service.d
└─debian.conf
Active: inactive (dead)
Docs: man:systemd-rc-local-generator(8)
注:因为没有 /etc/rc.local 这个文件,或者这个文件没有权限。
3、创建 /etc/rc.local
(1)写入内容
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
exit 0
注:如果有什么要开启启动的脚本可以插入在 exit 0 之前。
(2)赋予可执行权限
chmod +x /etc/rc.local
启动rc.local服务
systemctl start rc.local
重启后查询状态
systemctl status rc.local
开发板 Debian 系统打开终端。点击主界面左下角开始
-> 系统工具
-> LX 终端
设置语言有两种方法
dpkg-reconfigure
。locale
文件。sudo dpkg-reconfigure locales
sudo reboot
sudo vi /etc/default/locale
将里面的内容改为
LANG="en_US.UTF-8"
LANGUAGE="en_US:en"
将里面的内容改为
LANG="zh_CN.UTF-8"
LANGUAGE="zh_CN:zh"
sudo reboot
echo performance | tee $(find /sys/ -name *governor)
echo performance > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
echo performance > /sys/devices/system/cpu/cpufreq/policy4/scaling_governor
cat /sys/devices/system/cpu/cpufreq/policy0/scaling_cur_freq
cat /sys/devices/system/cpu/cpufreq/policy4/scaling_cur_freq
timedatectl
timedatectl list-timezones
sudo timedatectl set-timezone Asia/Shanghai
待续
待续
待续
date
date --set='2022-12-30 15:17:42'
hwclock --show
hwclock --systohc
cat /sys/devices/platform/ff3c0000.i2c/i2c-0/0-0020/rk808-rtc/rtc/rtc0/time
把要开机启动的程序的desktop文件放入~/.config/autostart/目录即可,例如:
mkdir ~/.config/autostart/
cp /usr/share/applications/kodi.desktop ~/.config/autostart/
切换root用户
su
查看网卡名称
ip addr
# ens33 是我的网卡名称不同版本可能不同
不能用ifconfig的原因:
ifconfig、route、arp和netstat等命令行工具(它们统称为net-tools),管理和排查各种网络配置。这类工具原先起源于BSD TCP/IP工具箱,旨在配置老式Linux内核的网络功能。自2001年以后,它在Linux社区的发展就止步不前了。Debian ,Arch Linux ,CentOS/RHEL 7等一些Linux发行版已经弃用了net-tools,其他发行版计划弃用net-tools,改而使用iproute2。
所以要再想使用ifconfig命令就要从新安装net-tools.
编辑/etc/network/interfaces文件,配置的时候把注释去掉
gedit /etc/network/interfaces
# 添加以下内容,注意把以下网卡名称换成对应的名称,auto为开机启动
auto ens33
# static为静态,dhcp为动态
iface ens33 inet static
# 以下可以根据实制需求更改
#ip
address 192.168.1.100
#子网掩码
netmask 255.255.255.0
#网关
gateway 192.168.1.2
配置dns服务
gedit /etc/resolv.conf
# 添加以下内容,可根据实制情况修改
nameserver 192.168.1.2 #设置首选dns
nameserver 114.114.114.114 #设置备用dns
重启Debian10
reboot
在Debian终端上输入命令:
sudo xset –dpms
sudo xset s off
xset dpms force off (立即关闭屏幕)
备注:重启样机后,以上设置就失效。
终端位置:主界面左下角开始-> System Tools -> LXTerminal
使用 hdmi-toggle 来确定有几个显示设备,比如下面可以检测到 HDMI-1 和 DP-1 两个设备:
xrandr 来设置两个屏幕的关系:
su linaro-c "DISPLAY=:0xrandr--outputHDMI-1--1 aboveDP-1" 其中--above
其中 --above 可以代换成 right-of, left-of, below, same-as, preferred, off 等等。
这样就可以完成双屏异显的功能。
旋转 normal/left/right:
vi /etc/X11/xorg.conf.d/1 20-modesetting.conf
可以把normal改为left/right/,reboot后生效。
/media/linaro/B4EA-8716
备注:不同U盘名称不同,实际名称为准。
主界面左下角开始
-> 系统工具
-> LX 终端
。sudo fdisk -l
dd if=/dev/zero of=/dev/sda1 bs=1M count=2000 oflag=direct,nonblock
dd if=/dev/sda1 of=/dev/null bs=1M count=2000 iflag=direct,nonblock
dd if=/dev/zero of=/dev/sda1 bs=1M count=2000 oflag=direct,nonblock
dd if=/dev/sda1 of=/dev/null bs=1M count=2000 iflag=direct,nonblock
主界面左下角开始
-> 系统工具
-> LX 终端
。sudo lspci
ls /dev/nvme0*
mkdir nvme
mount /dev/nvme0n1p1 /nvme/
cd /nvme/
df -h
dd if=/dev/zero of=/dev/sda1 bs=1M count=2000 oflag=direct,nonblock
dd if=/dev/sda1 of=/dev/null bs=1M count=2000 iflag=direct,nonblock
20pin-0.5mm
。主界面左下角开始
-> 系统工具
-> LX 终端
dd if=/dev/zero of=/dev/sda1 bs=1M count=2000 oflag=direct,nonblock
dd if=/dev/sda1 of=/dev/null bs=1M count=2000 iflag=direct,nonblock
主界面左下角开始
-> 系统工具
-> LX 终端
ifconfig eth0
ping -I eth0 -c 10 www.baidu.com
命令行连接WiFi
nmcli r wifi on #第1步:开启Wi-Fi
nmcli dev wifi #第2步:扫描附近AP
#第3步:连接AP
nmcli dev wifi connect "DIR-803" password "839919060" ifname wlan0
nmcli r wifi off #第4步:关闭Wi-Fi
一、 硬件连接
SIM卡需正常使用!!!,请先用自己手机验证是否正常数据上网,SIM卡金属接触面与开发板金属接触点接触
二、网络验证
/dev/ttyUSB
是否生成lsusb
Bus 001 Device 003: ID 2c7c:0125 Quectel Wirwless Solutions Co., Ltd. EC25 LTE modem
。识别到了 4G 模块。wwan0
网络节点sudo quectel-CM &
sudo ifconfig
sudo quectel-CM & 输出日志分析
正确识别到SIM卡则输出信息requestGetSIMStatus SIMStatus:SIM_READY
4G模块转接板上小蓝灯状态会从2~3秒闪一次灯->1s闪灯若未识别到SIM卡则输出信息requestGetSIMStatus SIMStatus:SIM_ABSENT
请再检查SIM卡连接
wwan0: flags=193<UP,RUNNING,NOARP> mtu 1500
节点。ping www.baidu.com
# 进入蓝牙配置软件
bluetoothctl
# 扫描蓝牙设备
scan on
# 信任蓝牙设备
trust 你的设备的MAC地址
trust 48:59:A4:BB:7A:08
# 配对蓝牙设备
pair 你设备的MAC地址
pair 48:59:A4:BB:7A:08
#连接蓝牙设备
connect 你设备的MAC地址
connect 48:59:A4:BB:7A:08
# 查询当前的设备
devices
# 移除设备
remove 48:59:A4:BB:7A:08
# 退出
exit
使用一个串口模块,将串口模块的tx接板子的rx,将串口模块的rx接板子的tx,再将串口模块的GND接到板子GND上(GND一定要接上
)。
将串口模块连接到电脑。
电脑端打开串口软件。将波特率9600
电脑发送串口数据,开发板接收串口数据。
主界面左下角开始
-> 系统工具
-> LX 终端
开发板要处于接收状态
,电脑端再发送串口数据。这里以串口 UART4 为例,启动终端,开发板输入cat /dev/ttyS4
echo "hello Uart4" > /dev/ttyS4
i2c-tools工具是一个专门调试i2c的,开源,可获取挂载的设备及设备地址,还可以读写I2C设备寄存器。
主界面左下角开始
-> 系统工具
-> LX 终端
sudo i2cdetect -l
sudo i2cdetect -F 5
sudo i2cdetect -a -y 5
sudo i2ctransfer -f -y 5 w2@0x5d 0x80 0x47 r3
sudo i2ctransfer -f -y 5 w3@0x5d 0x80 0x47 0x01
# 写完数据,再输入命令,读取信息,确认写入成功
sudo i2ctransfer -f -y 5 w2@0x5d 0x80 0x47 r3
ifconfig -a
# 关闭CAN
ip link set can0 down
# 设置仲裁段1M波特率,数据段3M波特率:
ip link set can0 type can bitrate 1000000 dbitrate 3000000 fd on
# 打印can0信息:
ip -details link show can0
# 启动CAN:
ip link set can0 up
# 发送(标准帧,数据帧,ID:123,date:DEADBEEF)
cansend can0 123##1DEADBEEF
# 发送(扩展帧,数据帧,ID:00000123,date:DEADBEEF)
cansend can0 00000123##1DEADBEEF
candump can0
待续
麦克风模块是有源分正负
,不要搞反了。sudo arecord -D hw:0,0 -c 2 -f S16_LE -r 44100 d 10 ./sweep.wav
arecord -c 2 -r 44100 -f S16_1 LE /home/linaro/record.wav
aplay /home/linaro/record.wav
直接在耳机接口插入3段式耳机
。
注意:一定得是3段式耳机
一定要 MIPI CSI 口
。不要接 MIPI DSI0 或 MIPI DSI1
。主界面左下角开始
-> 影音
-> 茄子
。主界面左下角开始
-> 影音
-> 茄子
。x11vnc是一个VNC服务器, 安装后我们可以不依赖外部的显示设备, 通过网络远程登录Debian10桌面。
安装x11vnc
sudo apt-get install x11vnc
设置VNC登录密码
sudo x11vnc -storepasswd /etc/x11vnc.pwd
设置x11vnc在开机时自动启动
sudo vi /lib/systemd/system/x11vnc.service
# 添加如下内容
[Unit]
Description=Start x11vnc at startup.
Requires=display-manager.service
After=syslog.target network-online.target
Wants=syslog.target network-online.target
[Service]
Type=simple
ExecStart=/usr/bin/x11vnc -display :0 -forever -loop -noxdamage -repeat -rfbauth /etc/x11vnc.pwd -rfbport 5900 -shared -capslock -nomodtweak
ExecStop=/usr/bin/x11vnc -R stop
Restart=on-failure
[Install]
WantedBy=multi-user.target
设置systemd服务:
sudo systemctl daemon-reload
sudo systemctl enable x11vnc.service
sudo systemctl start x11vnc
测试远程桌面
在电脑上启动VNC客户端软件, 在地址栏输入: IP地址:5900 连接即可, 效果如下图所示, 图中设备IP地址为192.168.1.123, 使用端口5900进行连接:
sudo apt-get -y install samba
mkdir -p /share/public
vim file.txt
mkdir -p /share/files
useradd zhangsan
smbpasswd -a zhangsan
useradd wangwu
smbpasswd -a wangwu
root@Server02:/etc/samba# vim smb.conf
自定义共享模块可以复制配置文件现成的,节约时间
[public] #共享名称
comment = public #共享描述
path = /share/public #共享路径
browseable = yes #允许该共享可以被其他用户查看 隐藏共享,默认yes
read only = yes #开启只读
guest ok = yes #允许匿名用户登录
[files]
comment = files
path = /share/files
browseable = yes
guest ok = no
create mask = 660 #设置上传文件的默认权限
directory mask = 770 #设置创建目录的默认权限
valid users = zhangsan, wangwu #允许访问的用户
admin users = zhangsan #该共享的管理者
writable = no #不允许写入
write list = zhangsan, wangwu #允许写入该共享的用户
root@Server02:~# chmod 777 /share/files/ #设置777权限,使用户能够进入,并且可以创建文件
root@Server02:~# chown zhangsan /share/files/ #设置共享目录的所有者为zhangsan
root@Server02:~# chmod o+t /share/files #设置t权限,与配置文件选项create mask配合使用,使wangwu不能查看和删除别人的文件,但是此番修改导致zhangsan不能查看别人的文件了,可以删除别人的文件。针对此问题有两种解决方法
第一种:
可以在smb.conf配置文件中添加admin users = zhangsan 这个选项,使zhangsan成为共享目录的管理员
第二种:
groupadd admin
chown :admin /share/files/
chmod g+s /share/files/
gpasswd -a zhangsan admin
比赛中推荐第一种,省时间,如果觉得第一种太过简单,不好理解,可以使用第二种
由于本人能力有限,只能想到这两种方法,如果大家有其他的方法可以私下和我交流
root@Server02:/share/files# systemctl restart smbd.service
root@Client:~# smbclient //172.16.100.202/files -U zhangsan
大家也可以用Windows测试更直观
sudo apt-get -y install vsftpd db5.3-util
mkdir -p /data/share/htdocs/skills
/etc# mkdir vsftpd
/etc/vsftpd# vim vsftpd.user #该文件名可以随便定义,文件内容格式:奇数行用户,偶数行密码
webuser
Skill21!
root@Server02:/etc/vsftpd# db5.3_load -T -t hash -f vsftpd.user vsftpd.db #将用户密码的存放文本转化为数据库类型,并使用hash加密
/etc/vsftpd# chmod 600 vsftpd.db #修改文件权限为600,保证其安全性,不设的话会报错
/etc/pam.d# vim vsftpd # 建立支持虚拟用户的 PAM 认证文件,添加虚拟用户支持
auth required pam_userdb.so db=/etc/vsftpd/vsftpd
account required pam_userdb.so db=/etc/vsftpd/vsftpd
cp vsftpd.conf vsftpd.conf.bak #防止配置出错
local_enable=YES ---不用管
write_enable=YES #允许执行写操作
chroot_local_user=YES #所有用户被限制在ftp目录内,不能跨出该目录,除非有例外情况
pam_service_name=vsftpd #PAM认证文件 ----不用管
#下面需要自己补充
allow_writeable_chroot=YES # 允许写入根路径,这条不加容易出现 500 OOPS: vsftpd: refusing to run with writable root inside chroot () 报错
local_root=/data/share/htdocs/skills #设置ftp文件主目录(登录ftp后显示的目录)
支持虚拟用户配置
guest_enable=yes #启用虚拟用户
guest_username=ftpuser #虚拟用户映射到的系统账号
user_config_dir=/etc/vsftpd/ #虚拟用户配置文件存放目录
注:做虚拟用户配置文件设置时,将主配置文件中自定义的匿名用户相关设置注释掉。
用户可以上传:
anon_umask=022 #设置虚拟用户登入者新增或上传档案时的umask值
anon_upload_enable=YES #允许上传文件 vsftpd服务器默认允许下载,不允许上传
用户可以创建目录或文件:
anon_mkdir_write_enable=YES #允许创建目录
用户可以修改文件名:
anon_other_write_enable=YES #允许重名和删除文件、覆盖
apt install nfs-common nfs-kernel-server
mkdir /data/share -p
vim /etc/exports
/data/share 100.100.100.0/24(rw,sync,root_squash,no_subtree_check)
100.100.100.0/24 //仅允许100.100.100.0/24的网段访问
rw //读写权限
sync //ro 只读
root_squash //当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户
no_root_squash //当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员
all_squash //无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户
sync //同时将数据写入到内存与硬盘中,保证不丢失数据
async //优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据
showmount -e 100.100.100.1
vim /etc/fstab
在下方添加一条100.100.100.1:/data/share /data/web nfs defaults 0 0
mount 100.100.100.1:/data/share /data/web
apt install nfs-common
mount 100.100.100.1:/data/web /mnt
sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg2 sudo
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
成功后,命令将返回OK。失败了输入下面这个。
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/debian $(lsb_release -cs) stable"
$(lsb_release -cs)将返回Debian发行版的名称。在这种情况下,就是这样buster。
sudo apt update
sudo apt install docker-ce
sudo systemctl status docker