本帖最后由 翠花儿 于 2021-5-20 10:50 编辑
1 获取 Ubuntu 源码Ubuntu、Linuxqt 和 debian 系统共用一套源码,获取 Ubuntu 源码具体参考“获取Linux 源码章节”。 2 安装 Ubuntu 源码依赖包如果您使用的是搭建好编译环境的Ubuntu16.04虚拟机镜像,Ubuntu 源码依赖包已经安装好了,不必重复安装。 使用如下命令安装所需的软件包: 1、sudo apt-get update 2、安装 kernel 及 uboot 编译需要依赖的软件包 sudo apt-get install git-core gnupg flex bison gperf build-essential zip sudo apt-get install curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev ccache libgl1-mesa-dev sudo apt-get install xsltproc unzip device-tree-compiler liblz4-tool libxml2-utils 3 编译Ubuntu系统
3.1 指定屏幕打开linux的源码,进入/home/topeet/rk3399_linux_sdk_v2.0/kernel/arch/arm64/boot/dts/rockchip/itop-3399_linux-lvds.dts目录下,打开itop-3399_linux-lvds.dts设备树文件,如下图所示,默认源码里面指定屏幕是hdmi屏幕,如果我们想源码里面指定屏幕是其他尺寸,将指定屏幕的宏定义生效就好了。 例如,我想指定屏幕为7寸屏,修改设备树,如下图所示: 3.2 整体编译使用 cd 命令进入到 rk3399_linux_sdk_v2.0_190805 文件夹。 编译分两个命令 ./build.sh BoardConfig.mk ./build.sh ubuntu 最终在rocdev 目录下生成镜像文件update.img。update.img 镜像大约 3.2G。 3.3 单独编译命令./build.sh -h查看可选参数 单独编译 uboot:./build.sh uboot 在 uboot 目录下生成 u-boot.bin。 单独编译 kernel:./build.sh kernel 在 kernel 目录下生成 boot.img 4 定制ubuntu系统Ubuntu16.04文件系统源码在光盘资料“01_iTOP-3399光盘资料\20210408(使用最新日期即可)\09 ubuntu16.04文件系统源码”目录下。 1 拷贝文件系统ubuntu16_04.tar.gz(后缀为更新日期,请下载使用最近日期的文件系统)到开发板,并解压,如下图所示: 2 解压文件系统生成temp文件夹,解压完如下图所示: 3 输入以下命令安装qemu,在Linux PC主机上安装模拟器: apt-get install qemu-user-static 4 将挂载脚本拷贝到与temp同级目录,并赋予权限,如下图所示。挂载脚本在光盘资料“01_iTOP-3399光盘资料 20210330(使用最新日期即可)\09 ubuntu16.04文件系统源码\AI版本ubuntu文件系统源码(非AI版本ubuntu文件系统源码)”目录下。 5 准备qemu,输入一下命令: cp /usr/bin/qemu-aarch64-static temp/usr/bin/ 6 准备网络,输入以下命令: sudo cp -b /etc/resolv.conf temp/etc/resolv.conf 7 输入命令挂载文件系统,如下图所示: ./mount.sh -m temp/ 8 输入以下命令查看网络,要确保网络是通的 9 启动Dbus服务,输入以下命令: /etc/init.d/dbus start file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml6956\wps55.jpg 10 更新及安装,输入以下命令: apt update apt upgrade 11 准备完毕后,我们可以安装定制自己的文件系统,操作方法和使用串口终端操作是一样的。配置完毕后,输入“exit”退出。 12 输入以下命令,取消挂载 ./mount.sh -u temp/ 13 使用dd指令制作空的固件容器,bs乘以count是容器的大小,这个具体看做出来的镜像有多大,temp文件夹大概有6G,所以这里可以把count=1024*6=6144即可满足。输入以下命令; dd if=/dev/zero of=ubuntu_1604.img bs=1M count=6144 14 将arm64文件系统内容制作到ubuntu.img,输入以下命令: mkfs.ext4 ubuntu.img 15 新建一个rootfs文件夹,将ubuntu.img挂载到rootfs文件夹下,输入以下命令: mkdir rootfs mount ubuntu.img rootfs/ 16 拷贝temp文件夹下的文件系统到rootfs文件夹下面,输入以下命令: cp -rfp temp/* rootfs/ 17 拷贝完毕后,取消挂载,输入以下命令: umount rootfs/ 18 这样最终,我们生成了我们所需要的ubuntu.img文件。我们将ubuntu.img文件拷贝到Linux源码rk3399_linux_sdk_v2.0的ubuntu目录下,并重命名为ubuntu_1604.img,如下图所示: 19 接下来参考指定屏幕章节,参考整体编译ubuntu镜像章节,参考ubuntu16系统烧写章节。
|