Linux系统登陆用户密码
Ubuntu系统用户名/密码:kickpi/kickpi
系统默认没有ROOT密码,su不成功,需要配置ROOT密码
Linux换默认登录用户
串口登录:/lib/systemd/system/serial-getty@.service.d/override.conf
桌面环境修改为ROOT登录
修改/etc/lightdm/lightdm.conf.d/22-autologin.conf
Copy [Seat:*]
autologin-user=root //修改为root
autologin-user-timeout=0
user-session=xfce
修改/etc/lightdm/users.conf
Copy [UserList]
minimum-uid=0 # 允许UID=0(即root)登录
hidden-users=nobody nobody4 noaccess
hidden-shells=/bin/false /usr/sbin/nologin /sbin/nologin
制作SD启动卡
Ubuntu22.04 系统 仅提供镜像文件,编译可参考 ARMBIAN SDK
拷贝eMMC系统到新SD卡(系统备份)
准备一张高速SD卡 建议class10的,SD卡性能会影响系统备份时间
将SD卡插入卡槽
lsblk
格式化SD卡
Copy mkfs.ext4 /dev/mmcblk1
Copy dd if=/dev/mmcblk0 of=/dev/mmcblk1 bs=4M
开始拷贝,需耐心等待,根据SD卡性能大概需要10~25分钟。
请耐心等待拷贝完成
拷贝完成
备份SD卡系统
FAQ:
出厂是SD卡自动烧录的系统 ,拷贝出来的系统也是SD卡自动烧录的,想要取消自动烧录可以使用下面命令,关闭烧录服务
Copy $ sudo systemctl disable kickpi.service
这种方式替换后的rootfs存在mount挂载UUID问题 可以blkid查看正确的UUID 然后修改/etc/fstab 或者在替换前删除此文件
操作步骤
接好U盘,大小至少16GB以上,打包出来的镜像会比较大
Copy $ sudo mkdir -p /mnt/usb
$ sudo mount /dev/sda1 /mnt/usb
Copy h618_data\3-SoftwareData软件资料\Linux打包rootfs脚本\ff_export_rootfs
Copy $ sudo ./ff_export_rootfs /mnt/usb/ -t ext4
生成的包名格式如:Ubuntu22.04.5LTS_ztl_ext4_202411131114.img
等待打包结束,时间较长
如果需要对img进行再进一步的修改,可以通过下面方式 在虚拟机中挂载出img里面的内容
Copy $ sudo mkdir test_rootfs/
$ sudo mount ./Ubuntu22.04.5LTS_ztl_ext4_202411131114.img ./test_rootfs/
AW-IMAGE SDK替换步骤
AW-IMAGE SDK替换指定rootfs.img说明
Copy $ vim scripts/debootstrap.sh
@@ -612,6 +612,12 @@ create_image()
# stage: write u-boot
write_uboot $LOOP
+
+ # 保留boot分区、删除原ROOTFS内容
+ mv $MOUNT/boot $MOUNT/../boot
+ rm $MOUNT/* -rf
+
+ # 替换自定义ROOTFS,以下示例为解压tar包,其他替换方式可自行修改
+ tar -xf ${BUILD_DIR}/rootfs-base/stage3-arm64-openrc-20240707T225101Z.tar -C $MOUNT/
+
+ # 回溯boot分区
+ mv $MOUNT/../boot $MOUNT/boot
# fix wrong / permissions
chmod 755 $MOUNT
或参考其他客户成功的案例修改方式:
全志-tina SDK替换步骤
将这个镜像替换原本的rootfs镜像:out/h618-linux/rootfs.img
修改镜像打包分区
Copy diff --git a/device/config/chips/h618/configs/p2/linux/sys_partition.fex b/device/config/chips/h618/configs/p2/linux/sys_partition.fex
index a5fa88c88..67fb67b5b 100755
--- a/device/config/chips/h618/configs/p2/linux/sys_partition.fex
+++ b/device/config/chips/h618/configs/p2/linux/sys_partition.fex
@@ -53,7 +53,7 @@ size = 16384
[partition]
name = rootfs
- size = 8388608
+ size = 16777216 (修改到能容纳你rootfs.img的大小)
downloadfile = "rootfs.fex"
user_type = 0x8000
然后pack
打包成固件烧录即可
更换开机动画图片
Copy /usr/share/plymouth/ubuntu-logo.png
/usr/share/plymouth/themes/spinner/watermark.png
/usr/share/plymouth/themes/spinner/bgrt-fallback.png
将自定义图片替换到以上三处路径
注意图片格式为PNG
Copy $ sudo update-initramfs -u
$ reboot
设置开机自启动命令
把需要的命令写到系统里面的/etc/rc.local
或者在/etc/systemd/system/下写服务文件启动脚本
设置wifi热点(AP)模式
查看是否支持AP模式
Copy $ iw list | grep AP
Device supports AP-side u-APSD.
* AP
* AP/VLAN
HE Iftypes: AP
HE Iftypes: AP
* wake up on EAP identity request
* AP/VLAN
* #{ managed } <= 1, #{ AP, P2P-client, P2P-GO } <= 1, #{ P2P-device } <= 1,
Driver supports full state transitions for AP/GO clients
Driver/device bandwidth changes during BSS lifetime (AP/GO mode)
* AP: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
* AP/VLAN: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
* AP: 0x00 0x20 0x40 0xa0 0xb0 0xc0 0xd0
* AP/VLAN: 0x00 0x20 0x40 0xa0 0xb0 0xc0 0xd0
AP/VLAN则可以表示硬件支持
Copy #创建依赖
sudo apt-get install util-linux hostapd dnsmasq iptables iproute2 haveged
# 创建虚拟网卡
sudo iw dev <wirelessname> interface add <virtualwlanname> type __ap
# <wirelessname> 是真实无线网卡名,可通过ifconfig查看,<virtualwlanname>是虚拟的无线网卡名
#例如命令
sudo iw dev wlan0 interface add wlo2 type __ap
#为虚拟网卡添加物理地址
sudo ip link set dev <virtualwlanname> address 22:33:44:55:66:00
# 随意填写,假如冲突则换一个,<virtualwlanname>是虚拟的无线网卡名
#例如命令:
sudo ip link set dev wlo2 address 22:33:44:55:66:00
Copy #查看创建情况
sudo iw dev <virtualwlanname> info
sudo iw dev wlo2 info
# 输出内容类似
Interface wlo2
ifindex 5
wdev 0x5
addr 04:e2:b9:17:18:72
type managed
wiphy 0
txpower 0.00 dBm
multicast TXQ:
qsz-byt qsz-pkt flows drops marks overlmt hashcol tx-bytestx-packets
0 0 0 0 0 0 0 0 0
注意:重启电脑后,这里创建的虚拟网卡就会失效
注意:重启电脑后,这里创建的虚拟网卡就会失效
注意:重启电脑后,这里创建的虚拟网卡就会失效
Copy git clone https://github.com/oblique/create_ap
cd */create_ap
sudo make install
Copy sudo create_ap -c 11 <virtualwlanname> <wirelessname> <SSID> <password>
#<wirelessname> 是你的无线网卡的姓名,<virtualwlanname> 虚拟网卡名,<SSID> <password>分别是创建的热点wifi名和密码
#例如
sudo create_ap -c 11 wlo2 wlan0 m3 88888888
Copy 开启热点时报如下错误:
#RTNETLINK answers: Device or resource busy
#ERROR: Maybe your WiFi adapter does not fully support virtual interfaces.
# Try again with --no-virt.
可以如下操作停止之前创建的热点,然后重启开启热点。
sudo create_ap --stop <virtualwlanname> #<virtualwlanname> 虚拟网卡名
连接WiFi并获取ip
Copy touch /etc/wpa_supplicant.conf
vi /etc/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
ap_scan=1
update_config=1
network={
ssid="wifi_oranth_2.4"
psk="123456789"
key_mgmt=WPA-PSK
}
wpa_supplicant -D nl80211 -i wlan0 -c /var/run/wpa_supplicant -B
dhclient wlan0
设置开机自动连接wifi并获取ip
Copy vi /etc/network/interfaces
auto wlan0
allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant.conf
SSH 登录
ubuntu-server版系统默认安装了有SSH 打开Windows cmd
Copy ssh kickpi@<IP> //密码 kickpi
SSH root登陆
默认不支持root连接,root连接需要配置
Copy $ vim /etc/ssh/ssh_config
+ PermitRootLogin yes
$ vim /etc/ssh/sshd_config
+ PermitRootLogin yes
$ sudo /etc/init.d/ssh restart
注意事项:
确保板子IP正常
确保能正常连通板子的IP
Copy $ cat /etc/ssh/ssh_config | grep PermitRootLogin
PermitRootLogin yes
$ cat /etc/ssh/sshd_config | grep PermitRootLogin
PermitRootLogin yes
UBUNTU从官网安装软件包
安装gcc为例子
wget http://ports.ubuntu.com/pool/main/g/gcc-9/gcc-9_9.3.0-10ubuntu2_arm64.deb
sudo dpkg -i *.deb
网站是https://ubuntu.pkgs.org/20.04/ubuntu-main-arm64/gcc-9_9.3.0-10ubuntu2_arm64.deb.html 可以直接搜索想要的依赖包名
PIN 控制
pin 脚计算
( B ~ J ) 一组按32位算
如 PB2 为 2 组,2号脚
Copy 32 x ( 2 - 1) + 2 = 34
PH3 为 8组, 3号脚
Copy 32 x ( 8 - 1) + 3 = 227
其他引脚类比计算即可
sys gpio控制
当存在将拓展引脚配置为输入的需求,默认软件的gpio-led不能满足需求。
将GPIO释放出来,通过/sys/class/gpio进行控制
步骤一
先将对应GPIO引脚注释,/sys/class/gpio/export 只能导入未注册的 gpio
比如PH8,如需其他引脚,一样在 leds 结点下注释即可 , 下面内容都以PH8 做举例
Copy vim longan/device/config/chips/h618/configs/p2/linux-5.4/board.dts //android
vim source/kernel/linux-5.4-h618/arch/arm64/boot/dts/sunxi/board.dts //Linux
+ /*
PH8 {
label = "PH8";
gpios = <&pio PH 8 1 0 1 0>;
linux,default_trigger = "default-on";
default-state = "on";
};
+ */
步骤二
编译镜像,重新烧录
步骤三
确认gpio未被注册
能够看到PH8未被使用,且对应 pin 值为 232 ,引脚计算见 [pin脚计算](# pin脚计算)
步骤四
通过 /sys/class/gpio/export 注册 PH8 并进行控制
Copy // 注册
root@kickpi:~# echo 232 > /sys/class/gpio/export
// 查看是否生成
root@kickpi:~# ls /sys/class/gpio/
export gpio232 gpiochip0 gpiochip352 unexport
// 注册后的结点内容
root@kickpi:~# ls /sys/class/gpio/gpio232
active_low device direction edge power subsystem uevent value
root@kickpi:~#
通过结点下的内容控制 gpio , 常用如下
Copy direction
in / out
echo in > /sys/class/gpio/gpio232/direction
echo out > /sys/class/gpio/gpio232/direction
value
0 / 1
cat /sys/class/gpio/gpio232/value // 读取
echo 1 > /sys/class/gpio/gpio232/value // 配置高电平
echo 0 > /sys/class/gpio/gpio232/value // 配置低电平
sunxi gpio 控制
Copy cd /sys/kernel/debug/sunxi_pinctrl
查看 pin 的配置
# echo PH8 > sunxi_pin
# cat sunxi_pin_configure
配置 pin 为 gpio 模式
# echo 'PH8 0' > function
修改 pin 的上拉属性
# echo 'PH8 1' > pull
// 查看修改情况
# cat pull
# cat sunxi_pin_configure
查看 pin 电平
# cat data
注意:
当操作PL及之后的pin , 需要切换pin的设备, 否则操作失败
echo pio > /sys/kernel/debug/sunxi_pinctrl/dev_name
cat /sys/kernel/debug/sunxi_pinctrl/dev_name
echo r_pio > /sys/kernel/debug/sunxi_pinctrl/dev_name
cat /sys/kernel/debug/sunxi_pinctrl/dev_name
常见问题
解决方法:
终端输入
Copy sudo ln -s pavucontrol pavucontrol-qt