Debian系统开发手册
1.环境搭建
硬件要求:64位系统,硬盘空间大于40G。 软件要求:Ubuntu22.04系统。 编译SDK环境搭建所依赖的软件包安装:
sudo apt-get update && sudo apt-get install git ssh make gcc libssl-dev \
liblz4-tool expect expect-dev g++ patchelf chrpath gawk texinfo chrpath \
diffstat binfmt-support qemu-user-static live-build bison flex fakeroot \
cmake gcc-multilib g++-multilib unzip device-tree-compiler ncurses-dev \
libgucharmap-2-90-dev bzip2 expat gpgv2 cpp-aarch64-linux-gnu libgmp-dev \
libmpc-dev bc python-is-python3 python2
2.编译
- 编译Debian所需的安装包
sudo dpkg -i debian/ubuntu-build-service/packages/*
sudo apt-get install -f
或者通过以下方式安装依赖环境
sudo apt-get remove live-build
git clone https://salsa.debian.org/live-team/live-build.git --depth 1 -b debian/1%20230131
cd live-build
rm -rf manpages/po/
sudo make install -j8
- 开始编译 进入SDK顶层目录,直接编译(注意要提前编译buildroot和内核,系统会从buildroot和内核拷贝Wifi、蓝牙驱动)
./build.sh debian
或者进入Deian目录参考readme.me
3.Debian目录结构
debian
├── mk-base-debian.sh ## 获取Debian基础包和编译
├── mk-image.sh ## 打包生成ext4的固件
├── mk-rootfs-<debian-version>.sh ## 适配Rockchip相关硬件加速包
├── mk-rootfs.sh ## 指向具体Rootfs版本,目前有Bullseye、Bookworm两个版本。
├── overlay ## 适配Rockchip平台共性配置文件
├── overlay-debug ## 系统常使用的调试工具
├── overlay-firmware ## 一些设备firmware的存放,比如npu/dp等
├── packages ## 包含armhf\arm64系统适配硬加速使⽤的预编译的包
├── packages-patches ## 预编包,基于官方打上的补丁
├── readme.md ## 文档指引
└── ubuntu-build-service ## 从官方获取Debian发行版,可依赖包和定制安装相关包。
4.Debian预编译包介绍
packages/
├── arm64/armhf
│ ├── blueman # GTK+的蓝牙管理器,能够高效管理BlueZ API
│ ├── cheese
│ ├── chromium # 基于Yocto编译的Chromium浏览器
│ ├── glmark2 # Glmark2是开源的对OpenGL 2.0和ES 2.0的基准测试程序,一般用来对GPU进行基准测试
│ ├── gst-plugins-bad1.0 # 增加kmssink、waylandsink等插件来适配Rockchip平台
│ ├── gst-plugins-base1.0 # 提供了gstreamer基础的插件
│ ├── gst-plugins-good1.0 # 提供了gstreamer基础的插件
│ ├── gst-plugins-ugly1.0 # 提供了gstreamer基础的插件
│ ├── gstreamer # GStreamer包含core framework及core 组件
│ ├── gst-rkmpp # 主要对接mpp接口的gstreamer
│ ├── libdrm # LIBDRM是一个跨驱动的�中间件,它允许用户空间应用(例如作为Mesa和2D驱动程序)通过DRI与内核通信协议
│ ├── libdrm-cursor # 这个包主要⽤于RK3566/RK3568只有AFBC图层的问题
│ ├── libmali # 开放图形加速平台,支持2D、3D图形渲染以及在GPU上执行通用计算(GPGPU)
│ ├── libv4l # 对接Chromium浏览器和mpp实现硬解的v4l2 plugin
│ ├── mpp # 瑞芯微视频编解码、处理平台
│ ├── openbox # 轻量级的 X11 窗口管理器
│ ├── pcmanfm # 轻量级文件管理器,用于LXDE等轻量级X11桌面环境
│ ├── pipewire # 开源的多媒体服务框架,旨在为现代 Linux 系统提供灵活、低延迟的音频和视频管道
│ ├── rga # 点/线绘制、图像缩放、旋转、位图、图像合成等二维图形加速单元
│ ├── rga2
│ ├── rkaiq # 自动调整图像信号处理器,适用于RK3588、RK3576、RK356X等芯片
│ ├── rkisp # 图像信号处理器,适用于如RK3288、RK3399、RK3326、PX30等芯片
│ ├── rknpu2 # 神经网络处理单元
│ ├── rktoolkit # rktoolkit是Rockchip⼀些专用toolkit
│ ├── rkwifibt # 基于Rockchip平台调试过WIFI-BT相关模块,里面包含Firmware、工具、配置文件等
│ ├── wayland # 开源显示协议
│ ├── weston # 开源的显示服务器
│ ├── wireplumber # 开源的音频和视频路由工具,它基于 PipeWire 框架构建。提供了⼀个灵活的管道系统,用于处理音频和视频流
│ └── xserver # 是Linux系统里面图形接口服务器,常⻅的Linux界面操作环境有XFCE、KDE和GNOME
5. Debian live-build使用指南
live build 是一组用于构建实时��系统映像的脚本。live build背后的思想是一个工具套件,它使用一个配置目录来完全自动化和定制构建live映像的所有方面。
更多使用说明参考官网Live manual
Debian 软件包源码仓库(VCS:Git) live-build-git Debian 软件包源码仓库(可在线浏览) live-build
(1)相关命令
- lb config 在当前目录下建立auto和config目录和相关配置文件,运行auto/config脚本。
- lb clean 运行auto/clean脚本
- lb build 按照config目录下的各种配置脚本构建系统镜像
(2)软件源设定
- 方法一
lb config --mirror-bootstrap http://mirrors.ustc.edu.cn/debian \--mirror-chroot-security http://mirrors.ustc.edu.cn/debian-security/ \--mirror-chroot-backports http://mirrors.ustc.edu.cn/debian-backports/
chroot mirror:--mirror-chroot, 默认使用-mirror-bootstrap 的值或者创建config/archives/your-repository.list.chroot 文件,内容为源地址。源会被加入到live系统的/etc/apt/sources.list.d/目录。
- 方法二
$ lb config --mirror-binary http://mirrors.ustc.edu.cn/debian \--mirror-binary-security http://mirrors.ustc.edu.cn/debian-security/
或者创建config/archives/your-repository.list.binary 文件,内容为源地址。
6. Debian调试工具
systemd-analyze分析启动性能
systemd-analyze是一个分析启动性能的工具,用于分析启动服务时间消耗
-
显示每一个初始化步骤所消耗的时间
root@linaro-alip:/# systemd-analyze timeStartup finished in 1.523s (kernel) + 3.833s (userspace) = 5.357sgraphical.target reached after 3.810s in userspace -
列出所有单元的初始化时间
root@linaro-alip:/# systemd-analyze blame1.680s rkwifibt.service1.368s keyboard-setup.service1.148s console-setup.service588ms blueman-mechanism.service557ms dev-mmcblk0p6.device495ms usbdevice.service319ms udisks2.service287ms resize-all.service283ms systemd-udev-trigger.service246ms systemd-journal-flush.service203ms user@0.service198ms user@1000.service196ms NetworkManager.service185ms nginx.service185ms systemd-rfkill.service184ms systemd-journald.service...