Linux开发环境搭建/编译/打包
目录
编译环境搭建
安装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
保存后重新打包即可。A:Linux系统登录的用户名和密码?
Q:用户名root密码root(桌面版:用户名hddz密码hd12345678)
A:编译后的固件为什么没有桌面?
Q:使用带LXDE桌面环境的rootfs,屏幕上才会有桌面显示!
A:为何桌面系统无法使用蓝牙/HDMI等外设?
Q:当前版本的rootfs尚未添加bluez的支持和双屏显示支持。若需要切换到HDMI显示,可参考Android部分定制HDMI显示输出的步骤修改FEX文件实现。未来会完善这些功能,请随时关注更新!
Q:无桌面的系统如何测试相关功能?
A:请查阅相关资料学习Linux操作相关外设的方法。例如测试Wi-Fi需要安装和配置wpa_supplicant。
Ubuntu_Base的rootfs为最小系统,仅附带系统最基础的功能组件,若需增加软件包可通过以太网联网后通过apt-get命令安装。