树莓派研究笔记(8)-- 编译lakka v2.1源码
Lakka越玩越觉得强大。如果要是能自己修改一下代码,实现自定义的一些操作就更好了。还可以修复字体文件,修复在部分机器上自动更换Mac地址导致ip变化的问题。
所以我们来尝试编译这个系统。这篇文章几乎是用我的血泪史完成的,大量重复的编译失败,解决了无数问题。大家 且看且珍惜。
1. 安装 ubuntu 64bit (本文基于16.04 LTS 和Lakka 2.1源码)并用虚拟机安装。一定要注意,硬盘分配一定要设置一个大容量硬盘,默认的动态配置只有8G,结果编译后会出现空间不足的问题。不行就固定分配个80G大小。 (单项目[project = xxx]编译完成大概需要25G的空间,建议不要全部编译,选1,2个就行了, 如果全编译至少要分配个几百个G空间)还要分配个大内存,我在编译时候出来了一些莫名其妙的错误无法解决,后来大量google才发现是内存问题,建议直接分配4G。(有次是停了虚拟机重新分配内存,居然导致无法启动......)
df -h
2. 更改root密码并激活
sudo passwd root
sudo passwd -u root
3.新建文件并激活root的桌面登录
sudo -i
nano /etc/lightdm/lightdm.conf
[SeatDefaults]
greeter-session=unity-greeter
user-session=ubuntu
greeter-show-manual-login=true
重新启动 就可以用root 账号登录了。
4. 安装git
sudo apt-get update
sudo apt-get install git-all
5. clone 代码
git clone https://github.com/libretro/Lakka-LibreELEC
参考文献:
http://www.lakka.tv/doc/Compiling-Lakka/
6.编译时间过长,关闭屏保和休眠
sudo apt-get install caffeine
如果出现 could not get lock /var/lib/dpkg/lock -open 的错误,那么直接用root账号删掉 这个文件
sudo rm- R /var/lib/dpkg/lock
安装好后执行 caffeine Indicator, 然后再右上角任务栏小图标,右键选择Active即可。
7. 修改build_all.sh 文件 就可以只编译自己想要的东西了。
执行编译操作:sh build_all.sh
8. 如果遇到错误:Failed to connect to socket /com/ubuntu/upstart
可以根据提示找到当前安装出错的程序,并手动重新安装。 比如:脚本自动安装runit程序时候出现错误
(1)sudo dpkg -l | grep upstart (执行这个命令查看是否安装了系统upstart)
(2)sudo dpkg -l | grep fgetty (a dependency of runit, command should return 1 line shown below)
如果(1) 返回了信息,那么需要删除已经安装的 upstart
sudo apt-get remove --purge upstart
如果(2)返回了信息,那么不需要做任何事情,如果没有返回信息,则需要安装fgetty
sudo apt-get install fgetty
(3)删除安装的不完全的程序。比如要删除 runit程序
sudo apt-get remove --purge runit
(4)最后重新手动安装 sudo apt-get install runit
参考链接:https://github.com/huginn/huginn/issues/1949
9. 遇到以下错误:
Parallel mksquashfs: Using 4 processors Creating 4.0 filesystem on /home/john/Dev/lakka/Lakka-LibreELEC/target/Lakka-RPi2.arm-8.1.2.system, block size 131072. [===========================================================/] 23953/23953 100% Exportable Squashfs 4.0 filesystem, lzo compressed, data block size 131072 compressed data, compressed metadata, compressed fragments, no xattrs duplicates are removed Filesystem size 298577.08 Kbytes (291.58 Mbytes) 47.52% of uncompressed filesystem size (628263.85 Kbytes) Inode table size 259819 bytes (253.73 Kbytes) 36.41% of uncompressed inode table size (713590 bytes) Directory table size 340430 bytes (332.45 Kbytes) 41.40% of uncompressed directory table size (822336 bytes) Number of duplicate files found 1447 Number of inodes 21494 Number of files 20271 Number of fragments 990 Number of symbolic links 521 Number of device nodes 0 Number of fifo nodes 0 Number of socket nodes 0 Number of directories 702 Number of ids (unique uids + gids) 2 Number of uids 1 root (0) Number of gids 2 root (0) unknown (81) Makefile:12: recipe for target 'image' failed
需要安装u-boot-tools
sudo apt install u-boot-tools
经过长达8小时以上的编译,终于,终于,成功了!!!!这样可以自己来改代码,改界面,或者移植到新的平台上,想想就好好激动呢!
其他问题:
1.如果要编译Orange PI 还需要安装以下包:
sudo apt-get install swig libpython-dev
sudo apt-get install libssl-dev
sudo apt-get install device-tree-compiler
2.如果重启后无法进入图形界面,可以尝试一下命令重新安装:
$sudo apt-get remove --purge nvidia-*
$sudo apt-get install ubuntu-desktop
3.如果遇到类似这样的错误: pathspec 'b81ef53' did not match any file(s) known to git.
说明当前的URl已经被开源项目给删除了,找不到了。解决办法就是找到对应的包的mk文件,修改为最新版能够git到的地址。
比如: Retroarch-assets 项目
(1). 找到 Lakka_LibreELEC\Packages\Libretro\retroarch-assets\Package.mk 文件修改 压缩包文件名为一个真实存在的URL就行了,下面的步骤为系统自动过程。
(2). 这个时候压缩文件会被下载到 Lakka-LibreELEC\sources\retroarch-assets\ (可以在这一步自己创建或者下载压缩文件)
(3). 然后文件会被自动解压缩Lakka_LibreELEC\Build.Lakka-xxxxxx2.1-devel\retroarch-assets-xxxxxxx 目录下
4. Exiting with failure status due to previous errors
看最后一次出错的包,然后使用上一步中同样的方法升级包到一个合适的版本。
5.如果提示什么什么目录没找到,文件没找到,那么可以手动拷贝文件或目录到错误提示的地方。
6.一些文件:
驱动目录:\packages\linux-drivers
默认字体:\build.lakka-xxxxxxxx\image\system\usr\share\retroarch-assets\xmb\monochrome\font.ttf (真实指向 /usr/share/retroarch-assets/xmb/monochrome/font.ttf) 注意因为image目录每次都会重新生成一边,所以直接修改这里的字体是无效的。
应该要修改:\build.lakka-xxxxxxxx\retroarch-assets-xxxxxx\.install_pkg\usr\share\retroarch-assets\xmb\monochrome\font.ttf
对于隐藏文件夹,可以按Ctrol+H显示出来。可以通过检查\build.lakka-xxxxxxxx\image\system目录下的文件是否更新来判断替换是否成功。
配置文件:\build.lakka-xxxxxxxx\retroarch-xxxxxxx\retroarch.cfg
(修正左下角黄色字体:video_font_path =/usr/share/retroarch-assets/xmb/monochrome/font.ttf)
MAC地址:\packages\sysutils\systemd\scripts\systemd-machine-id-setup