文章目录
前言
之前一直是使用立创泰山派官网的sdk去制作的镜像,它里面默认没有ubuntu镜像的制作,而且也默认只有4.19的内核版本。所以我使用了鲁班猫的几个仓库去构建ubuntu的rootfs,然后拷贝了lubancat的5.10内核仓库去生成5.10内核,然后还是使用泰山派的sdk去做updateimg的构建(看之前的文章:【玩泰山派】4、制作ubuntu镜像-(5)总结制作ubuntu22.04镜像+5.10内核流程)。
后面看鲁班猫的文档,发现鲁班猫的github项目中也是直接提供了sdk的,而且他们的sdk好像更牛逼,在Rockchip sdk的基础上魔改的更多,不仅支持各种发行版(debian10、11、12,ubuntu20.04、22.04);而且貌似还改了镜像的格式,可以不重新制作镜像的情况下,换设备树和内核,看起来很牛逼。必须玩玩鲁班猫的sdk。
参考:《 嵌入式Linux镜像构建与部署------基于LubanCat-RK系列板卡 》
获取鲁班猫sdk
我使用的是LubanCat_Gen_SDK
我使用的在线现在的sdk,大概命令如下,详细可以参考鲁班猫的文档
cd ~/LubanCat_SDK
# 拉取LubanCat_Linux_Generic_SDK
repo init -u https://github.com/LubanCat/manifests.git -b linux -m lubancat_linux_generic.xml
#如果运行以上命令失败,提示:fatal: Cannot get https://gerrit.googlesource.com/git-repo/clone.bundle
#则可以在以上命令中添加选项 --repo-url https://mirrors.tuna.tsinghua.edu.cn/git/git-repo
.repo/repo/repo sync -c -j4
使用鲁班猫sdk制作5.10内核+ubuntu22.04镜像
同样,我是使用docker作为构建环境
编写dockerfile
根据鲁班猫的文件去写的安装的软件,但是实测发现居然不全,我这里把需要的补全了
#基础镜像
FROM ubuntu:20.04
#维护者
MAINTAINER luck
# RUN sed -i -r 's#http://(archive|security).ubuntu.com#http://mirrors.tuna.tsinghua.edu.cn#g' /etc/apt/sources.list \
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo 'Asia/Shanghai' >/etc/timezone
RUN apt update \
&& apt install --no-install-recommends -y sudo 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 python3-pip python2 u-boot-tools curl \
python3-pyelftools dpkg-dev rsync build-essential devscripts debhelper dh-exec
制作镜像
docker build -t lubancat_gen_sdk:20.04 .
起容器
docker run --privileged -d \
--name lubancat_gen_sdk \
--hostname lubancat_gen_sdk \
-v /root/new_workspace/LubanCat_GEN_SDK:/LubanCat_GEN_SDK \
-it lubancat_gen_sdk:20.04 /bin/bash
这样环境就搭好了
进入容器执行
首先把repo对应的git仓库更新到对应的分支
这一点鲁班猫文档有说明
修改LubanCat_rk3566_ubuntu_xfce_defconfig配置文件
我是准备构建5.10内核+ ubuntu22.04的xfce桌面环境。所以我准备使用LubanCat_rk3566_ubuntu_xfce_defconfig配置,但是鲁班猫的默认的配置文件LubanCat_rk3566_ubuntu_xfce_defconfig不是5.10内核+ ubuntu22.04版本的,需要改一下LubanCat_rk3566_ubuntu_xfce_defconfig配置文件,主要是:
1、注释RK_UBUNTU_FOCAL=y,FOCAL是ubuntu20.04版本,这里=y的话,就是要构建ubuntu22.04,所以注释它,这样就是构建ubuntu22.04
2、RK_KERNEL_PREFERRED="5.10",它默认是6.1内核版本。
完整的内容如下
# RK_BUILDROOT is not set
# RK_YOCTO is not set
# RK_UBUNTU_FOCAL=y
RK_ROOTFS_SYSTEM_UBUNTU=y
RK_ROOTFS_TARGET_XFCE=y
RK_ROOTFS_IMAGE="ubuntu-rk356x-${RK_ROOTFS_TARGET}-rootfs.img"
RK_KERNEL_PREFERRED="5.10"
RK_KERNEL_CFG="lubancat_linux_rk356x_defconfig"
RK_KERNEL_DTS_NAME="rk356x-lubancat-generic"
RK_KERNEL_EXTBOOT=y
# RK_RECOVERY is not set
RK_EXTRA_PARTITION_NUM=0
RK_PARAMETER="parameter-extboot.txt"
RK_USE_FIT_IMG=y
RK_PACKAGE_FILE_CUSTOM=y
RK_PACKAGE_FILE="package-file-extboot"
参考文档执行命令
# 在ubuntu目录下执行以下命令
sudo dpkg -i ubuntu-build-service/packages/*
sudo apt-get install -f
# 选择SDK配置文件
./build.sh chip
选rk3566_rk3568,选LubanCat_rk3566_ubuntu_xfce_defconfig
# 一键编译
./build.sh
这样就直接在output/firmware目录下成了update文件,简直牛逼。
TODO
1、由于这个我还没适配泰山派博通网卡固件,(安装网卡固件)
2、还没有改内核的配置,比如博通网卡的驱动,以及一些别的配置,到时候拷贝过来,
3、还有泰山派的设备树(拷贝对应的内核的提交)
所以还没烧录生成的update.img验证,待之后验证