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 会从网上下载
构建所需要的资源!)

## IntroductionA 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 linaroBuilding 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 acceleratedBuilding 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 imageCreating 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 BasePlease apply [those patches](https://github.com/rockchip-linux/rk-rootfs-build/tree/master/packages-patches) to release code base before rebuilding!## License informationPlease 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 nodevSolution: 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.serviceAfter=syslog.target network-online.targetWants=syslog.target network-online.target[Service]Type=simpleExecStart=/usr/bin/x11vnc -display :0 -forever -loop -noxdamage -repeat -rfbauth /etc/x11vnc.pwd -rfbport 5900 -shared -capslock -nomodtweakExecStop=/usr/bin/x11vnc -R stopRestart=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 - SleepLoaded: 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.targetCreated 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.targetLoaded: masked (Reason: Unit sleep.target is masked.)Active: inactive (dead)

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

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

尝试如下命令;

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

检查当前时区:

root@ArmSom-sige7:/userdata/work/cpolar# timedatectlLocal time: 三 2024-01-03 11:13:27 UTCUniversal time: 三 2024-01-03 11:13:27 UTCRTC time: 三 2024-01-03 11:13:28Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: yesNTP service: n/aRTC 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# timedatectlLocal time: 三 2024-01-03 19:13:40 CSTUniversal time: 三 2024-01-03 11:13:40 UTCRTC time: 三 2024-01-03 11:13:41Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yesNTP service: n/aRTC 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" >> ~/.bashrcecho "export LANG=zh_CN.UTF-8" >> ~/.bashrcecho "export LANGUAGE=zh_CN.UTF-8" >> ~/.bashrcsource ~/.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.rhkb.cn/news/492392.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Linux] 进程信号概念 | 信号产生

🪐🪐🪐欢迎来到程序员餐厅💫💫💫 主厨:邪王真眼 主厨的主页:Chef‘s blog 所属专栏:青果大战linux 总有光环在陨落,总有新星在闪烁 为什么我的课设这么难…

小程序测试的测试内容有哪些?

在数字化快速发展的今天,小程序成为了很多企业进行产品推广和服务互动的重要平台。小程序的广泛应用使得对其质量的要求越来越高,小程序测试应运而生。这一过程不仅涉及功能的准确性,更涵盖了用户体验、性能、安全等多个维度。 小程序测试的…

使用 NVIDIA DALI 计算视频的光流

引言 光流(Optical Flow)是计算机视觉中的一种技术,主要用于估计视频中连续帧之间的运动信息。它通过分析像素在时间维度上的移动来预测运动场,广泛应用于目标跟踪、动作识别、视频稳定等领域。 光流的计算传统上依赖 CPU 或 GP…

微积分复习笔记 Calculus Volume 2 - 4.4 The Logistic Equation

4.4 The Logistic Equation - Calculus Volume 2 | OpenStax

双指针---有效三角形的个数

这里写自定义目录标题 题目链接 [有效三角形的个数](https://leetcode.cn/problems/valid-triangle-number/description/)问题分析代码解决执行用时 题目链接 有效三角形的个数 给定一个包含非负整数的数组 nums ,返回其中可以组成三角形三条边的三元组个数。 示例…

【Linux】usb内核设备信息

usb内核设备信息 Linux内核中USB设备信息及拓扑结构可以从/sys/kernel/debug/usb/devices和/sys/bus/usb/devices中获取,下面介绍这些信息如何解读。 通过usbdump函数打印usb信息 [drivers/usb/core/devices.c] #define ALLOW_SERIAL_NUMBER/* Bus: 总线编号 Lev:…

Electron-Vue 开发下 dev/prod/webpack server各种路径设置汇总

背景 在实际开发中,我发现团队对于这几个路径的设置上是纯靠猜的,通过一点点地尝试来找到可行的路径,这是不应该的,我们应该很清晰地了解这几个概念,以下通过截图和代码进行细节讲解。 npm run dev 下的路径如何处理&…

devops和ICCID简介

Devops DevOps(Development 和 Operations 的组合)是一种软件开发和 IT 运维的哲学,旨在促进开发、技术运营和质量保障(QA)部门之间的沟通、协作与整合。它强调自动化流程,持续集成(CI&#xf…

[HNCTF 2022 Week1]baby_rsa

源代码: from Crypto.Util.number import bytes_to_long, getPrime from gmpy2 import * from secret import flag m bytes_to_long(flag) p getPrime(128) q getPrime(128) n p * q e 65537 c pow(m,e,n) print(n,c) # 62193160459999883112594854240161159…

12.19问答解析

概述 某中小型企业有四个部门,分别是市场部、行政部、研发部和工程部,请合理规划IP地址和VLAN,实现企业内部能够互联互通,同时要求市场部、行政部和工程部能够访问外网环境(要求使用OSPF协议),研发部不能访问外网环境…

生态学研究中,森林生态系统的结构、功能与稳定性是核心研究

在生态学研究中,森林生态系统的结构、功能与稳定性是核心研究内容之一。这些方面不仅关系到森林动态变化和物种多样性,还直接影响森林提供的生态服务功能及其应对环境变化的能力。森林生态系统的结构主要包括物种组成、树种多样性、树木的空间分布与密度…

springboot445新冠物资管理(论文+源码)_kaic

摘 要 使用旧方法对新冠物资管理的信息进行系统化管理已经不再让人们信赖了,把现在的网络信息技术运用在新冠物资管理的管理上面可以解决许多信息管理上面的难题,比如处理数据时间很长,数据存在错误不能及时纠正等问题。这次开发的新冠物资管…

1.zabbix概述

一、什么是监控 我们的生活里,离不开监控,监控能够最大程度上,发挥如下作用 实时监测,即使你不在电脑前,也能实时掌握监控区域情况,提高工作效率事后录像查询,如果不法事件未能即使发现制止&am…

QT绘图【点】【线】【圆】【矩形】

目录 1. 绘制点、线、圆、文本、矩形3. 调用及更新 1. 绘制点、线、圆、文本、矩形 QPainter painter(this); //实例化绘图 QPen pen(QColor(255,100,155)); //创建绘图工具(画笔) pen.setWidth(2); //画笔宽度 pen.setStyle(Qt::SolidLine); //实线…

知识分享第三十天-力扣343.(整数拆分)

343 整数拆分 给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。 示例 1: 输入: 2 输出: 1 解释: 2 1 1, 1 1 1。 示例 2: 输入: 10 输出: 36 解释: 10 3 3 4, 3 3 4 36。 说明: 你可…

NSDT 3DConvert:高效实现大模型文件在线预览与转换

NSDT 3DConvert 作为一个 WebGL 展示平台,能够实现多种模型格式免费在线预览,并支持大于1GB的OBJ、STL、GLTF、点云等模型进行在线查看与交互,这在3D模型展示领域是一个相当强大的功能。 平台特点 多格式支持 NSDT 3DConvert兼容多种3D模型…

USACO备考书籍合集

USACO,全称United States of America Computing Olympiad,即美国计算机奥林匹克竞赛。 以下是网上查到的关于USACO(美国计算机奥林匹克竞赛)的推荐书籍: 一、国内推荐书籍 有一种观点,冲击USACO铂金&…

汽车IVI中控开发入门及进阶(三十八):HiCar开发

手机投屏轻松实现手机与汽车的无缝连接,导航、音乐、通话等功能应有尽有,还支持更多第三方应用,让车载互联生活更加丰富多彩。 HiCar在兼容性和开放性上更具优势。 手机投屏可以说是车机的杀手级应用,大大拓宽了车机的可用性范围。其中华为推出的HiCar就是非常好用的一种。…

iOS - 超好用的隐私清单修复脚本(持续更新)

文章目录 前言开发环境项目地址下载安装隐私访问报告隐私清单模板最后 前言 在早些时候,提交应用到App Store审核,大家应该都收到过类似这样的邮件: Although submission for App Store review was successful, you may want to correct th…

CSS边框的样式

边框阴影 让元素更有立体感 img {box-shadow: 2px 10px 5px 20px #ff0000;border-radius: 44px;}语法:box-shadow:值1 值2 值3 值4 值5 值1:水平阴影的位置值2:垂直阴影的位置值3:模糊距离值4:阴影的尺寸…