跳转至

Linux 常用定制

VNC 投屏

VNC(Virtual Network Computing)是一种基于远程帧缓冲协议(RFB)的图形桌面共享系统,它允许用户通过网络连接到远程计算机,对远程计算机进行操控。

从官网中下载 VNC Viewer

Vncserver

Vncserver 的作用是创建一个新的虚拟桌面会话,而不是共享当前的HDMI显示,共享HDMI显示请参考下文使用 x11vnc:

板卡开启VNC服务,并配置密码
kickpi@kickpi:~$ vncserver

You will require a password to access your desktops.

Password: //输入连接密码
Verify:   //再次输入连接密码
Would you like to enter a view-only password (y/n)? n

New 'X' desktop is kickpi:1

Creating default startup script /home/kickpi/.vnc/xstartup
Starting applications specified in /home/kickpi/.vnc/xstartup
Log file is /home/kickpi/.vnc/kickpi:1.log

kickpi@kickpi:~$ ^C

修改VNC配置:

vim /home/kickpi/.vnc/xstartup

注释所有内容并添加内容:

#!/bin/sh
#xrdb "$HOME/.Xresources"
#xsetroot -solid grey
#x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#x-window-manager &
# Fix to make GNOME work
#export XKL_XMODMAP_DISABLE=1
#/etc/X11/Xsession
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
startxfce4 &

重启VNC服务:

kickpi@kickpi:~$ vncserver -kill :1
Killing Xtightvnc process ID 3843
kickpi@kickpi:~$ vncserver -geometry 1920x1080

New 'X' desktop is kickpi:1

Starting applications specified in /home/kickpi/.vnc/xstartup
Log file is /home/kickpi/.vnc/kickpi:1.log

kickpi@kickpi:~$

打开RealVNC Viewer,输入ip端口号和密码:

image-20250317142654795

x11vnc

x11vnc可以将当前正在运行的X桌面会话(即HDMI上显示的会话)通过 VNC 共享:

# 安装 x11vnc
sudo apt update
sudo apt install x11vnc
开启服务
x11vnc
启动完成后打印信息
The VNC desktop is:      kickpi:0
PORT=5900

******************************************************************************
Have you tried the x11vnc '-ncache' VNC client-side pixel caching feature yet?

The scheme stores pixel data offscreen on the VNC viewer side for faster
retrieval.  It should work with any VNC viewer.  Try it by running:

    x11vnc -ncache 10 ...

One can also add -ncache_cr for smooth 'copyrect' window motion.
More info: http://www.karlrunge.com/x11vnc/faq.html#faq-client-caching

端口使用5900进行连接:

image-20251119200314265

按键修改

USER_Key 默认功能取消

Linux桌面版

Note

Linux桌面版中USER_key默认功能为打开LoginOut界面,从设置中取消默认功能即可。

UB_key

Linux服务器版

Note

Linux服务器版本中USER_Button默认功能为关机,取消关机功能参考下文。

1. 修改systemd登录器配置

sudo nano /etc/systemd/logind.conf

2. 取消注释并修改以下行

HandlePowerKey=ignore
HandleSuspendKey=ignore
HandleHibernateKey=ignore

3. 重启服务

sudo systemctl restart systemd-logind

应用使用

取消USER_Button默认功能后,应用能够正常获取按键的上报事件,根据需求实现功能。

kickpi@kickpi:~$ hexdump /dev/input/event1
0000000 6ba5 691e 0000 0000 15d7 0003 0000 0000
0000010 0001 0074 0001 0000 6ba5 691e 0000 0000
0000020 15d7 0003 0000 0000 0000 0000 0000 0000
0000030 6ba5 691e 0000 0000 62c7 0005 0000 0000
0000040 0001 0074 0000 0000 6ba5 691e 0000 0000
0000050 62c7 0005 0000 0000 0000 0000 0000 0000
0000060 6ba6 691e 0000 0000 a413 000b 0000 0000
0000070 0001 0074 0001 0000 6ba6 691e 0000 0000
0000080 a413 000b 0000 0000 0000 0000 0000 0000
0000090 6ba6 691e 0000 0000 f502 000d 0000 0000
00000a0 0001 0074 0000 0000 6ba6 691e 0000 0000
00000b0 f502 000d 0000 0000 0000 0000 0000 0000

系统拷贝

eMMC 系统拷贝至新 SD 卡

工具准备

  • 硬件:SD卡(写入速度 ≥ class10,SD卡性能会影响系统备份时间)

操作步骤

1. 将 SD 卡插入卡槽:

kickpi@kickpi:~$ lsblk   //查看块设备
NAME         MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
mmcblk0      179:0    0  7.2G  0 disk
└─mmcblk0p1  179:1    0  7.1G  0 part /mnt/emmc/mmcblk0p1
                                      /var/log.hdd
                                      /
mmcblk0boot0 179:16   0    4M  1 disk
mmcblk0boot1 179:32   0    4M  1 disk
mmcblk1      179:48   0 58.6G  0 disk                   //mmcblk1为SD卡
└─mmcblk1p1  179:49   0   58G  0 part /mnt/sd/mmcblk1p1  //分区已经挂载的话需要先卸载
zram0        254:0    0  981M  0 disk [SWAP]
zram1        254:1    0   50M  0 disk /var/log
kickpi@kickpi:~$

2. 格式化 SD 卡:

kickpi@kickpi:~$ sudo umount /dev/mmcblk1p1  //卸载挂载的分区
[sudo] password for kickpi:
kickpi@kickpi:~$ sudo mkfs.ext4 /dev/mmcblk1 //格式化SD卡
mke2fs 1.46.5 (30-Dec-2021)
Found a dos partition table in /dev/mmcblk1
Proceed anyway? (y,N) y                      //y确认
Creating filesystem with 15360000 4k blocks and 3842048 inodes
Filesystem UUID: 0357bd31-32bf-45ee-b989-6fa1a1781605
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424

Allocating group tables: done
Writing inode tables: done
Creating journal (65536 blocks): done
Writing superblocks and filesystem accounting information: done

kickpi@kickpi:~$

3. 使用dd if命令或nand-sata-install命令将系统拷贝至SD卡中。

dd if

Tip

拷贝过程中请耐心等待,根据SD卡性能大约需要10~25分钟拷贝完成。

kickpi@kickpi:~$ dd if=/dev/mmcblk0  of=/dev/mmcblk1  bs=4M
1850+0 records in
1850+0 records out
7759462400 bytes (7.8 GB, 7.2 GiB) copied, 190.241 s, 40.8 MB/s
kickpi@kickpi:~$

nand-sata-install

sudo nand-sata-install 2 1

Tip

示意图中/dev/mmcblk1p1,说明系统从 eMMC 拷贝至 SD 卡中。

image-20251114141055576

拷贝eMMC系统生成系统镜像

工具准备

  • 硬件:U 盘(容量 ≥ 32 G,U盘性能会影响系统备份时间)

操作步骤

1. U盘挂载:

mkdir /mnt/sda
mount /dev/sda1 /mnt/sda

2. 拷贝生成系统镜像

dd if=/dev/mmcblk0  of=/mnt/sda/output.img  bs=4M status=progress
sync /mnt/sda/

3. 拷贝生成的镜像大小约在30G左右。生成的 output.img 可用于烧录。

系统登录

系统默认 Kickpi 用户自动登录,可通过修改相关配置文件取消自动登录或实现其他用户登陆。

串口登录修改

/lib/systemd/system/serial-getty@.service.d/override.conf目录下文件进行修改:

kickpi@kickpi:~$ cat /lib/systemd/system/serial-getty@.service.d/override.conf
[Service]
ExecStartPre=/bin/sh -c 'exec /bin/sleep 10'
ExecStart=
ExecStart=-/sbin/agetty --noissue --autologin kickpi %I $TERM //去除自动登录删除 --autologin 字段,修改登录用户则修改 kickpi 即可
Type=idle
kickpi@kickpi:~$

桌面登录修改

系统默认自动登录,取消自动登录请删除配置文件或重命名配置文件:

mv /etc/lightdm/lightdm.conf.d/22-autologin.conf /etc/lightdm/lightdm.conf.d/22-autologin.conf-bak

修改自动登录用户

1. 修改/etc/lightdm/lightdm.conf.d/22-autologin.conf

[Seat:*]
autologin-user=root  //修改登录用户名
autologin-user-timeout=0
user-session=xfce

2. 修改/etc/lightdm/users.conf

[UserList]
minimum-uid=0 # 允许UID=0(即root)登录
hidden-users=nobody nobody4 noaccess
hidden-shells=/bin/false /usr/sbin/nologin /sbin/nologin

无桌面终端登录

修改/usr/lib/systemd/system/getty@.service.d/override.conf

[Service]
ExecStartPre=/bin/sh -c 'exec /bin/sleep 10'
ExecStart=
ExecStart=-/sbin/agetty --noissue --autologin root %I $TERM ////去除自动登录则删除 --autologin 字段,修改登录用户则修改 kickpi 即可
Type=idle

网络配置

Note

网络优先级:
有线网口使用局域网时,WiFi连接网络无法访问外网。

静态IP配置

根据自己的网关和网段进行配置,否则无法访问网络

vim /etc/network/interfaces
// 添加以下内容

auto eth0
iface eth0 inet static
address 192.168.1.100   //IP地址
netmask 255.255.255.0   //子网掩码
gateway 192.168.1.1     //网关

设置wifi热点(AP)模式

安装 create_ap

git clone https://github.com/oblique/create_ap
cd create_ap
sudo make install

# 安装依赖
sudo apt install hostapd dnsmasq

一键创建 AP

# 基本用法:create_ap wlan0 eth0 SSID 密码
sudo create_ap wlan0 eth0 MyHotspot MyPassword123

# 后台运行
sudo create_ap --daemon wlan0 eth0 MyHotspot MyPassword123

桌面环境切换为中文

1. Linux 系统中配置中文语言环境:

sudo apt update
sudo apt install language-pack-zh-hans language-pack-zh-hant
sudo dpkg-reconfigure locales

2. 弹出的窗口中使用Space选中zh_CN.UTF-8 UTF-8Enter确认:

image-20251114165923942

3. 继续选择zh_CN.UTF-8Enter 确认:

image-20251114165941950

4. 等待初始化完成,更新系统默认语言为中文,重启系统。

sudo update-locale LANG=zh_CN.UTF-8 LC_ALL=zh_CN.UTF-8