“Linux开发环境搭建/编译/打包”的版本间的差异

来自弘迪在线
跳转至: 导航搜索
常见问题
第32行: 第32行:
  
 
=常见问题=
 
=常见问题=
A:Android 6.0部分make时遇到“unsupported reloc 42 (43) against global symbol art::Runtime::instance_”错误
+
A:编译内核时提示awk: line 2: function strtonum never defined
  
Q:问题的原因在于AOSP中的预编译好的ld程序存在bug,我们使用Ubuntu系统默认的ld来替换它。具体步骤如下:
+
Q:主机系统缺少gawk,执行下列命令安装:
  
将aosp中的ld改名:
+
sudo apt-get install gawk
  
$ cd prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/x86_64-linux/bin
+
A:打包后的固件烧录后无法启动,Console打印JBD2: Unrecognised features on journal
  
$ mv ld ld.old
+
Q:出现该问题主要是由于主机系统上新版的mkfs.ext4工具在制作镜像时部分默认的特性在全志的内核上不支持。解决方法为去掉文件系统中的has_journal选项:
  
使用soft link,链接到全局ld:
+
修改myrootfs/make_ext4fs.sh的末尾添加:
  
$ ln -s /usr/bin/ld.gold ld
+
tune2fs -O ^has_journal rootfs.ext4
 +
 
 +
保存后重新打包固件即可。
 +
 
 +
A:我的核心板eMMC配置为8GB,但为何系统内显示可用空间只有几百MB了?(df -h查看)
 +
 
 +
Q:首先bootloader和kernel等会占用一部分空间,实际可用空间肯定不到8GB的。其次打包的ext4卷空间小于等于eMMC中rootfs所在分区的实际大小(分区大小在sys_partition.fex中查看和修改),第一次启动后需要用resize2fs命令扩展ext4卷到满空间才可以,方法为在核心板系统上执行下列命令:
 +
 
 +
$ resize2fs /dev/mmcblk0p7
 +
 
 +
光盘资料里提供的已经做好的基于Ubuntu的rootfs已经包含了在第一次启动时自动执行此命令的脚本,但如果系统启动时resize_partition报错且分区未能自动扩展时,需要修改rootfs里的resize_partition.sh,在第二行空白添加:<p>sleep 5</p>保存后重新打包即可。

2021年12月25日 (六) 11:15的版本

编译环境搭建

安装Ubuntu操作系统

  • 同Android部分

安装所需组件

  • 同Android部分

编译步骤

解压源代码

mkdir HDA64_Linux

tar xvf HDA64_Linux.tar.gz -C HDA64_Linux/

源码结构

SPL(底层引导代码):lichee/brandy

U-Boot:lichee/brandy/uboot-xxxx.xx

Linux内核:lichee/linux-3.x

系统配置(env.txt和fex文件等):lichee/tools/pack/chips/sunxiwxpx/config

编译U-Boot

默认无需编译。若要修改U-Boot,编译方法同Android部分。

编译内核

直接执行下列命令:

$ ./build.sh

定制rootfs并打包固件

打包好的固件位于lichee/tools/pack下面。

常见问题

A:编译内核时提示awk: line 2: function strtonum never defined

Q:主机系统缺少gawk,执行下列命令安装:

sudo apt-get install gawk

A:打包后的固件烧录后无法启动,Console打印JBD2: Unrecognised features on journal

Q:出现该问题主要是由于主机系统上新版的mkfs.ext4工具在制作镜像时部分默认的特性在全志的内核上不支持。解决方法为去掉文件系统中的has_journal选项:

修改myrootfs/make_ext4fs.sh的末尾添加:

tune2fs -O ^has_journal rootfs.ext4

保存后重新打包固件即可。

A:我的核心板eMMC配置为8GB,但为何系统内显示可用空间只有几百MB了?(df -h查看)

Q:首先bootloader和kernel等会占用一部分空间,实际可用空间肯定不到8GB的。其次打包的ext4卷空间小于等于eMMC中rootfs所在分区的实际大小(分区大小在sys_partition.fex中查看和修改),第一次启动后需要用resize2fs命令扩展ext4卷到满空间才可以,方法为在核心板系统上执行下列命令:

$ resize2fs /dev/mmcblk0p7

光盘资料里提供的已经做好的基于Ubuntu的rootfs已经包含了在第一次启动时自动执行此命令的脚本,但如果系统启动时resize_partition报错且分区未能自动扩展时,需要修改rootfs里的resize_partition.sh,在第二行空白添加:

sleep 5

保存后重新打包即可。