最近买了一个泰山派来玩玩,本来以为由官方的教程编译起来会满简单的,没想到还是出现了好多问题,下面记录一下编译过程和踩过的坑。
一、SDK下载和开发环境搭建。
1.sdk下载
在下载sdk的时候就犯了一个严重的的错误,没有仔细看官方的下载前必读的文件,结果只下载了repo的压缩包,编译buildroot需要的一些bl下的文件没有下载,导致后续在编译buildroot时耽误了将近半天的时间,吸取教训吸取教训
,具体的sdk下载过程可以去看官网文档。
2.开发环境搭建
由于最近想要更深入的接触一下linux,所以搭建了一个ubuntu22.04的双系统,
一开始是打算在22.04的主机上进行编译的,但是由于在编译debian系统时live-build版本过于高级,
和其他的一些工具链不能使用,所以用官方的docker开启了一个容器。
但是在部署docker时也遇到了一个问题:
docker run --privileged --mount type=bind,source=/home/wucaicheng/gw_work/EX_DISK_A,target=/home/lckfb --name="lckfb_android11_sdk" -h lckfb -it lckfb_android11_sdk_cmp
使用这条命令在使用镜像建立容器的时候报了一个警告,大概意思就是在该系统的默认用户有问题,无法主动登陆,这个问题导致后续
无法开启容器
zgc@zgc-Nitro-AN515-58:~/data/docker_taishan$ sudo docker run --privileged --mount type=bind,source=/home/zgc/data/taishan,target=/home/ --name="lckfb_android11_sdk" -h lckfb -it lckfb_android11_sdk_cmp
docker: Error response from daemon: unable to find user lckfb #设置docker工作目录为/home/lckfb: no matching entries in passwd file.
后续在AI的求助下增加 --user root,以root用户登陆就好了,后续就可以使用默认普通用户登陆了,
很奇怪,每怎么用过docker,不是很理解,但就是这样解决了
后续docker就没有遇到什么问题了
二、系统编译
1.buildroot系统编译,烧录
本来只是想着玩一下Debian系统的,但是由于是个新手不是很了解编译过程和配置,所以就按着官方的教程一点一点编译,先编译好buildroot系统
,然后再编译deibian,把文件系统换成Debian就好了,但是貌似我只需要先单独编译好各个模块,在编译好Debian文件系统,就可以拿到Debian
操作系统了。
在使用22.04主机编译的时候遇到了一个很奇葩的错误,使用sudo以root去编译的时候会遇到
configure 不允许以 root 用户运行
这个问题
然后不以root运行的话,会报错没有权限删除两个文件,直接就是两头冲突了,然后我就主动把两个文件删掉了,然后就可以继续编译了,
但是后续还是编译失败,然后后续换成在docker里面编译就没有这个问题了,编译buildroot也没有再遇到过什么错误了,就是正常编译烧录了
这时候烧录是把镜像拷贝到U盘上,然后切换windows烧录,很麻烦,尤其是在我没有解决ubuntu休眠的问题情况下,导致每次ubuntu都相当于重启
,很恶心。烧录过程就找着官方的教程做就好了
2. Debian系统编译,烧录
由于上面已经编译过了buidlroot系统,一些单独的模块已经编译好了,所以直接运行一下
./build.sh debian
就可以编译Debian系统了,然后正常打包起来,生成镜像。
然后运行
./build.sh updateimg
生成update镜像。
考虑到每次切换win系统都很麻烦,所以这里就使用linux下的烧录工具,官方资料里面有,也有使用文档。
这里遇到了一个问题,在使用
//烧录升级固件并重启设备
upgrade_tool uf update.img
该命令去烧录的时候会报错
Program Log will save in the /home/zgc/upgrade_tool/log/
Loading firmware...
Support Type:RK3568 FW Ver:1.0.00 FW Time:2025-01-11 13:35:27
Loader ver:1.01 Loader Time:2025-01-11 12:42:24
Segmentation fault (core dumped)
(不知道为什么3566,检测出来3568)
这个是没有权限的问题,我就直接简单粗暴的提升权限
sudo chmod -R 777 /dev/bus/usb/
然后就可以烧录啦。
这个在结束后的一段时间内笔记本的风扇还是一直在转,使用top命令,发现该工具依然占据cpu 99,5%,不知道为什么它没有结束,还是在
一直运行,很奇怪,但是使用kill杀死它就好了
后续在linux使用ADB进行测试的时候又出现了一个错误
insufficient permissions for device: user in plugdev group; are your udev rules wrong?
经过查询貌似也是权限,和udev的问题,使用查询到的解决方案
在/etc/udev/rules.d/下建立一个文件android.rules
然后在文件中输入以下内容
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", MODE="0666"
正常使用adb,然后进入adb之后执行
apt install g++
发现是有正常反映的,那么就证明Debian系统编译完成了。
完结,撒花。
641

被折叠的 条评论
为什么被折叠?



