当前位置: 首页 > article >正文

armsom产品Debian系统开发

第一章 构建 Debian Linux 系统

我们需要按【armsom产品编译&烧录Linux固件】全自动编译一次,默认是编译 Buildroot 系统,也会编
译 uboot 和内核,buildroot 某些软件包依赖内核,所以我们必须编译内核再编译 Buildroot。同
理 Debian 也需要从 Buildroot 编译后的产物,拷贝相关软件到 Debian 中,一般是一些驱动模块。
所以它们的编译关系是不可分开的。

1.1 Debian 安装 qemu

构建Debian系统需要依赖你电脑本地的环境,有些依赖包需要下载

在 SDK 顶层目录,进入 debian 路径下

cd debian/

在这里插入图片描述

执行下面的指令安装 qemu 及需要的一些包

sudo apt-get install binfmt-support qemu-user-static live-build
sudo dpkg -i ubuntu-build-service/packages/*
sudo apt-get install -f

在这里插入图片描述

1.2 构建 Debian 系统

执行下面指令开始构建 Debian 系统。注意,如果你没有先编译 buildroot 和内核,虽然不会
报错,完整的系统会从 buildroot 和内核中拷贝一些驱动或者文件到 Debian 系统中,拷贝的文
件是 Wifi 驱动和蓝牙驱动。(注意构建的时候 Ubuntu 必须能上网,因为 Debian 会从网上下载
构建所需要的资源!)

## Introduction

A set of shell scripts that will build GNU/Linux distribution rootfs image
for rockchip platform.

## Available Distro

* Debian 11 (Bullseye-X11 and Wayland)~~

```
sudo apt-get install binfmt-support qemu-user-static
sudo dpkg -i ubuntu-build-service/packages/*
sudo apt-get install -f
```

## Usage for 32bit Debian 11 (Bullseye-32)

### Building debian system from linaro

Building a base debian system by ubuntu-build-service from linaro.

```
	RELEASE=bullseye TARGET=base ARCH=armhf ./mk-base-debian.sh
```

Building a desktop debian system by ubuntu-build-service from linaro.

```
	RELEASE=bullseye TARGET=desktop ARCH=armhf ./mk-base-debian.sh
```

### Building overlay with rockchip audio/video hardware accelerated

Building with overlay with rockchip debian rootfs:

```
	RELEASE=bullseye ARCH=armhf ./mk-rootfs.sh
```

Building with overlay with rockchip debug debian rootfs:

```
	VERSION=debug ARCH=armhf ./mk-rootfs-bullseye.sh
```

### Creating roofs image

Creating the ext4 image(linaro-rootfs.img):

```
	./mk-image.sh
```

---

## Usage for 64bit Debian 11 (Bullseye-64)

Building a base debian system by ubuntu-build-service from linaro.

```
	RELEASE=bullseye TARGET=desktop ARCH=arm64 ./mk-base-debian.sh
```

Building the rk-debian rootfs:

```
	RELEASE=bullseye ARCH=arm64 ./mk-rootfs.sh
```

Building the rk-debain rootfs with debug:

```
	VERSION=debug ARCH=arm64 ./mk-rootfs-bullseye.sh
```

Creating the ext4 image(linaro-rootfs.img):

```
	./mk-image.sh
```
---

## Cross Compile for ARM Debian

[Docker + Multiarch](http://opensource.rock-chips.com/wiki_Cross_Compile#Docker)

## Package Code Base

Please apply [those patches](https://github.com/rockchip-linux/rk-rootfs-build/tree/master/packages-patches) to release code base before rebuilding!

## License information

Please see [debian license](https://www.debian.org/legal/licenses/)

## FAQ

- noexec or nodev issue
noexec or nodev issue /usr/share/debootstrap/functions: line 1450:
../rootfs/ubuntu-build-service/bullseye-desktop-arm64/chroot/test-dev-null:
Permission denied E: Cannot install into target
...
mounted with noexec or nodev

Solution: mount -o remount,exec,dev xxx (xxx is the mount place), then rebuild it.

  • mk-base-debian.sh
    在Debian官网下载基础包,有些系统组件不需要的话可以在这里修改定制

  • mk-rootfs-bullseye.sh

    二次定制Debian系统,主要是一些已经打包好了的安装包,在这里你也可以加载你需要的应用软件

  • mk-image.sh

    打包Debian系统为img文件

构建过程中,首先会下载 Debian 系统,下载完 Debian 系统后,开始解压 Debian 系统,
此时需要用户权限,请输入你的用户密码,提升为 sudo 权限再继续编译。(注意千万不要为了
省事直接以 root 用户直接构建!避免出现离奇的错误!

1.3 如何使用编译出来的 linaro-rootfs.img

上述编译在debian目录下生成linaro-rootfs.img,

1.3.1 分区烧录

可以参考分区烧录视频,在烧录工具中单独勾选“rootfs”位置

1.3.2 完整Debian系统

上面编译出来的只是文件系统,无法生成 update.img,如果你要生成 update.img,在SDK首目录执行下
面的操作。

export RK_ROOTFS_SYSTEM=debian 	# 构建系统类型为 debian
./build.sh 						# 执行./build.sh 会生成 update.img

构建的过程中会编译 Uboot、内核等,等等漫长的时间后,最后会将 Uboot、内核和文件系
统等打包生成 update.img。
生成的 update.img 在 SDK/rockdev 下。

第二章 Debian 系统开发

Debian 是一种完全自由开放并广泛用于各种设备的 Linux 操作系统。选择 Debian 原因如
下,Debian 是自由软件并且保持 100%自由。每个人都能自由使用、修改,以及发布。大家可
以基于 Rockchip 构建的 Debian 系统进行二次开发。
Debian 是一个基于 Linux 稳定且安全的操作系统,其使用范围包括笔记本计算机台式机和
服务器等。它的稳定性和可靠性就深受用户的喜爱。
Debian 还是许多其他发行版的种子和基础,例如 Ubuntu、Knoppix、PureOS 等,由世界各
种的数百名志愿者共同制作。
目前 Rockchip RK3588 已经适配并支持。

2.1 Debian 版本

输入下面的指令查看 Debian 版本,如下可以看到是 Debian11 版本。

cat /etc/issue

在这里插入图片描述

输入下面的指令查看 内核 版本

uname -a

在这里插入图片描述

2.2 如何更新源

所谓的源,就是源头,我们常见的源有阿里云源(mirrors.aliyun.com),中科大源
(mirrors.ustc.edu.cn),南京大学(mirror.nju.edu.cn)源,清华大学源(mirrors.tuna.tsinghua.edu.cn),
还有 Debian 官方源(deb.debian.org)等都提供了对 Debian 源的服务。在 Rockchip 中默认使用
的是中科大源(mirrors.ustc.edu.cn)。实际上 Rockchip 已经为我们由 Debian 官方源切换为中科
大源,只要是国内的源,下载速度都是较快的。我们可以无需再换源。如果我们还是想试试换
其他源,可以按以下的方法来更换其它源。
查看默认的源

cat /etc/apt/sources.list

在这里插入图片描述

修改为其他源,例如阿里云源,如下,替换完成保存。如需要替换成其它源,可以自行尝试。
编辑/etc/apt/sources.list 文件,替换成如下内容。

deb http://mirrors.aliyun.com/debian buster main contrib non-free
deb-src http://mirrors.aliyun.com/debian buster main contrib non-free
deb http://mirrors.aliyun.com/debian-security buster/updates main contrib non-free
deb-src http://mirrors.aliyun.com/debian-security buster/updates main contrib non-free
deb http://mirrors.aliyun.com/debian buster-updates main contrib non-free
deb-src http://mirrors.aliyun.com/debian buster-updates main contrib non-free

执行下面指令更新本地仓库,也就是重定向软件包列表。更新软件源,记得插网线!并且网线可以上网的!

apt-get upgrade
apt-get update

2.3 软件包管理

查看系统已经安装的软件

apt list --installed

查看可安装的软件,执行下面的指令查看可安装的软件,若软件已经安装会显示已安装。

apt list

使用 apt remove 来卸载软件。apt 会解决和安装模块的依赖问题,并会咨询软件仓库, 但不会

安装本地的 deb 文件, apt 是建立在 dpkg 之上的软件管理工具。所以我们一般用 apt 管理软件。

例如我们卸载 vim 软件。首先我们查看 vim 是否已经安装。可以执行下面指令。

apt list --installed | grep vim

在这里插入图片描述

上图可以看到 vim 已经安装,那么我们将它卸载。询问是否卸载时,我们输入“y”确认卸载

同样我们使用 apt 来安装软件,执行下面的指令安装 vim。

apt install vim

2.4 如何创建自启动程序

在 debian 系统很多时候都有开机自启动自己的程序,这里有两种方法

2.4.1 /etc/rc.local 方法

通过将自启动程序放到/etc/rc.local 里,开机就会自启动,也可以写到/etc/init.d 下面
的某个文件里。

这里以/etc/rc.local 文件为例。如下图,打印“1111111111111111111111”,以此观察系统启动时,是
否会自动执行。注意我们的程序不能写到 exit0 后面了!

在这里插入图片描述

保存后重启开发板,可以看到启动后系统执行了这句打印!

在这里插入图片描述

2.4.2 添加systemd方法

我们先创建一个要启动的脚本。这个脚本就是打印“22222……”在/root 目录下编辑auto_run_script.sh。

#!/bin/bash
echo “2222222222222222222222222222” > /dev/ttyFIQ0

赋予脚本可执行权限,执行下面的指令

chmod +x auto_run_script.sh
  • /lib/systemd/system 是系统范围的目录,这些文件通常是由发行版的维护者创建的。
  • /etc/systemd/system:这个目录也包含 systemd 服务单元文件,但是它是用于本地管理员(系
    统管理员)自定义的服务配置。不会被/lib/systemd/system 服务覆盖。

所以我们需要进入/etc/systemd/system 目录下,创建一个自启动服务 auto_run_script.service。

cd /etc/systemd/system
vi auto_run_script.service

在 auto_run_script.service 里添加以下内容。

[Unit]
Description=Run a Custom Script at Startup
After=network.target
[Service]
ExecStart=/root/auto_run_script.sh
[Install]
WantedBy=default.target

然后我们使用 systemctl daemon-reload 重新加载 systemd 守护进程配置,并使用 systemctl
enable 建立符号链接关系。

systemctl daemon-reload
systemctl enable auto_run_script.service
systemctl start auto_run_script.service #马上启动此服务

重启后,我们看看打印信息,查看这个服务是否已经启动

如需禁止自启动,输入 systemctl disable auto_run_script.service,这个就会取消链接,下
次开机时不会自启动。如需要完全移除,删除这个 auto_run_script.service 以及它的脚本。

2.5 Debian基础设置

2.5.1 安装x11vnc远程桌面

x11vnc是一个VNC服务器,安装后我们可以不依赖外部的显示设备,,通过网络远程登debia桌面。

2.5.1.1 安装x11vnc
sudo aptitude install -y x11vnc

\# 一直选择y

设置VNC客户端登录密码,这里我设置为armsom;

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
2.5.1.2 测试远程桌面

在Windows电脑上安装VNC Viewe,下载地址https://www.realvnc.com/en/connect/download/viewer/windows/

安装完成后启动VNC客户端软件, 在地址栏输入: IP地址:5900连接即可

2.5.2 禁止用户自动休眠

桌面上在电源显示管理那里设置永不熄灭

执行如下命令查看休眠模式的情况:

systemctl status sleep.target

● sleep.target - Sleep

   Loaded: loaded (/lib/systemd/system/sleep.target; static)

   Active: inactive (dead)

​    Docs: man:systemd.special(7)

可以看出,sleep状态是loaded,也就是处于开启状态。接下来,执行如下命令关闭系统的自动休眠开关:

systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target

Created symlink /etc/systemd/system/sleep.target → /dev/null.

Created symlink /etc/systemd/system/suspend.target → /dev/null.

Created symlink /etc/systemd/system/hibernate.target → /dev/null.

Created symlink /etc/systemd/system/hybrid-sleep.target → /dev/null.

再次执行如下命令,查看休眠设置:

systemctl status sleep.target

○ sleep.target

   Loaded: masked (Reason: Unit sleep.target is masked.)

   Active: inactive (dead)

可以看到sleep的状态已经变成了masked,也就是关闭了。

虽然吧,这个解决方案看上去挺合理的。但实际上,它也无效,后来电脑还是会每晚自动休眠。

尝试如下命令;

gsettings set org.gnome.desktop.screensaver lock-enabled false

gsettings set org.gnome.desktop.session idle-delay 0
2.5.3 debain系统设置

检查当前时区:

root@ArmSom-sige7:/userdata/work/cpolar# timedatectl
               Local time: 三 2024-01-03 11:13:27 UTC
           Universal time: 三 2024-01-03 11:13:27 UTC
                 RTC time: 三 2024-01-03 11:13:28
                Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: yes
              NTP service: n/a
          RTC in local TZ: no

设置时区 (比如上海)

timedatectl set-timezone Asia/Shanghai
root@ArmSom-sige7:/userdata/work/cpolar#
root@ArmSom-sige7:/userdata/work/cpolar#
root@ArmSom-sige7:/userdata/work/cpolar# timedatectl
               Local time: 三 2024-01-03 19:13:40 CST
           Universal time: 三 2024-01-03 11:13:40 UTC
                 RTC time: 三 2024-01-03 11:13:41
                Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes
              NTP service: n/a
          RTC in local TZ: no

2.5.4 更改桌面壁纸
cat /home/armsom/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml
2.5.5 设置中文语言与输入法
2.5.5.1 设置中文语言

输入以下命令:

dpkg-reconfigure locales

执行之后可以使用空格选择,Tab键跳转光标,这里用空格选中 zh_CN.UTF-8

添加环境变量到.bashrc,这个文件主要用于设置系统的locale

 echo "export LC_ALL=zh_CN.UTF-8" >> ~/.bashrc
 echo "export LANG=zh_CN.UTF-8" >> ~/.bashrc
 echo "export LANGUAGE=zh_CN.UTF-8" >> ~/.bashrc

source ~/.bashrc
2.5.5.2 安装中文输入法

Fcitx (Flexible Input Method Framework) :即小企鹅输入法,它的优点是,短小精悍、跟程序的兼容性比较好

输入如下命令安装fcitx:

aptitude install -y fcitx
aptitude install -y im-config
aptitude install -y fcitx-ui-classic fcitx-ui-light
aptitude install -y fcitx-frontend-gtk2 fcitx-frontend-gtk3

搜狗输入法选择选择Google,终端输入以下:

apt install -y fcitx-googlepinyin

重启后,在桌面环境按Ctrl+Space即可切换中英文输入法, 右上角也出现了输入法图标,左击右上角的输入法图标


http://www.kler.cn/a/443750.html

相关文章:

  • 安装fast_bev环境
  • 重拾设计模式--外观模式
  • 如何学习Trustzone
  • 《Go 语言变量》
  • 深度学习的DataLoader是什么数据类型,为什么不可用来索引
  • Python tkinter写的《电脑装配单》和 Html版 可打印 可导出 excel 文件
  • 打造基于 SSM 和 Vue 的卓越电脑测评系统:挖掘电脑潜力
  • 【网络安全】【Kali Linux】简单ICMP主机探测
  • lightRAG 论文阅读笔记
  • TA-Lib金融技术分析库文件
  • 启动异常:Caused by: java.lang.IllegalStateException: Failed to introspect Class
  • Spark-Streaming集成Kafka
  • VC-S100D-CW智能离线语音识别冷暖色单色小夜灯IC方案
  • [WinError 183] 当文件已存在时,无法创建该文件
  • CSDN数据大屏可视化【开源】
  • 树莓派3B+驱动开发(8)- i2c控制PCF8591
  • [HNCTF 2022 Week1]baby_rsa
  • 计算机网络之王道考研读书笔记-2
  • linux_x64 下的一般汇编函数与syscall调用约定
  • 使用copilot轻松将电子邮件转为高效会议
  • 【WRF-Urban】输入空间分布人为热排放数据的WRF运行全过程总结
  • Android13 系统签名应用编译调试说明
  • 使用国内镜像网站在线下载安装Qt(解决官网慢的问题)——Qt
  • koa实现图片上传接口(本地生成)
  • 单点登录平台Casdoor搭建与使用,集成gitlab同步创建删除账号
  • Webpack学习笔记(2)