编译 LibreELEC 固件¶
使用LibreELEC官方提供的SDK,并打上firefly提供的补丁文件,本章详细的说明 SDK 的具体用法。
准备工作¶
搭建 SDK 编译环境¶
以下文件请务必确认安装!
这里使用Ubuntu18.04进行测试(推荐使用ubuntu18.04系统进行开发,或者使用 docker 部署 Ubuntu18.04 容器,否则无法安装好环境包):
sudo apt-get update
sudo apt-get install repo git-core gitk git-gui gcc-arm-linux-gnueabihf u-boot-tools device-tree-compiler \
gcc-aarch64-linux-gnu mtools parted libudev-dev libusb-1.0-0-dev python-linaro-image-tools \
linaro-image-tools gcc-arm-linux-gnueabihf libssl-dev liblz4-tool genext2fs lib32stdc++6 \
gcc-aarch64-linux-gnu g+conf autotools-dev libsigsegv2 m4 intltool libdrm-dev curl sed make \
binutils build-essential gcc g++ bash patch gzip bzip2 perl tar cpio python unzip rsync file bc wget \
libncurses5 libqt4-dev libglib2.0-dev libgtk2.0-dev libglade2-dev cvs git mercurial rsync openssh-client \
subversion asciidoc w3m dblatex graphviz python-matplotlib libc6:i386 libssl-dev texinfo fakeroot \
libparse-yapp-perl default-jre patchutils swig
下载LibreELEC源码¶
git clone https://github.com/LibreELEC/LibreELEC.tv.git
建议: 该源码包编译后占用空间大约32G左右,建议预留可用内存35G以上。
LibreELEC源码主要目录介绍¶
目录:
├── LibreELEC.tv
│ ├── packages 需要下载和构建包的目录
│ ├── projects 支持平台soc设备的系统构建工程目录
│ ├── config
│ ├── scripts 系统构建脚本文件目录
│ ├── create_tar.sh
│ ├── sources 构建系统时从服务器拉取下来的资源包存放目录
│ ├── distributions 配置构建系统需要的资源包目录
│ ├── target 存放编译结果的目录
│ ├── licenses
│ ├── Makefile
│ └── tools
编译 SDK¶
建议选择LibreELEC的9.95.4版本
cd LibreELEC.tv
# commit 04dc864eeba97cee2d5375981f898ea246440a21 (tag: 9.95.4)
git checkout 9.95.4
打上相应的patch
代码还在合并,近期内发布
如果需要使用调试串口终端,需要修改文件 LibreELEC.tv/projects/Rockchip/devices/RK3399/options ,修改EXTRA_CMDLINE选项,修改成如下样子:
EXTRA_CMDLINE="console=uart8250,mmio32,0xff1a0000 console=tty0 systemd.debug_shell=ttyS2"
也可以在写好镜像的SD卡上的LIBREELEC/extlinux/extlinux.conf文件里的boot里的console后面的信息修改成上述模样。
编译
# 网络环境不好的用户,可以使用以下命令下载好所需的源码包
#PROJECT=Rockchip ARCH=arm tools/download-tool
# 执行编译命令,构建系统。第一次系统构建需要比较长的时间(一般3到7个小时),请耐心等待。
# 编译命令在 LibreELEC.tv/projects/Rockchip/devices/RK3399/README.md 中有说明。
PROJECT=Rockchip DEVICE=RK3399 ARCH=arm UBOOT_SYSTEM=roc-pc-plus make image
也可以下载已编译好LibrEELEC系统镜像
制作SD启动卡 (目前只支持USB/SD卡启动)¶
编译完成后的镜像文件存放在target目录中,这时需要下载SD卡系统制作工具,前往下面的地址下载系统制作工具。例如:如果你是linux64位操作系统,点击LibreELEC.USB-SD.Creator.Linux-64bit.bin工具下载。
在第二项里点击选择文件选项,找到编译出来的.gz文件,然后选择你要烧写的USB或SD卡,最后写入镜像。
如果需要使用IR遥控,在终端执行这条命令,便可以使用ir遥控(断电便需重新指定):
ir-keytable -c -w /usr/lib/udev/rc_keymaps/geekbox.toml
不同的遥控器对应的键值不一样,需要用户自行配置,通过以下这一条命令可观察遥控器的按下按键产生的值。(一般根据一两个键值便很容易找到对应的键值表)
ir-keytable -t
然后根据对应的键值在 /usr/lib/udev/rc_keymaps/目录下找到对应自己遥控器的键值表。(grep “键值 = 按键” *.toml)
如果你想遥控器永久有效,需要执行以下操作。(geekbox.toml是我遥控器配对的键值表)
cd /storage/.config/
cp rc_maps.cfg.sample rc_maps.cfg
在 rc_maps.cfg末尾增加一行:* * geekbox.toml
cp /usr/lib/udev/rc_keymaps/geekbox.toml ./rc_keymaps/
chmod 777 ./rc_keymaps/geekbox.toml
注意 如果第一次上电时发现耳机音频不能使用现象,需要重新烧写镜像。