缘由
最近买了个orico的有线网卡,结果内核日志一直报错。
disabled by hub (EMI?) Re-enabling.
然后我查了一下EMI的相关信息,
他是一种电磁干扰,那些没有带屏蔽的USB线缆才会出现这个问题。
但由于屏蔽线缆的价格比常规线缆贵很多,一般也不需要。
我大概检查了一下身边的设备,没有发现任何可能的EMI源。
我尝试插在我的电脑上查看它是否能被正常使用,结果是肯定的。
于是我开始怀疑是否是内核的一些问题,我开始尝试编译内核。
问题解决。
准备
交叉编译工具链
如果你在X86_64的设备上进行交叉编译,你需要准备交叉编译链(Toolchain)。
- linaro.org – https://www.linaro.org/downloads/
下载带有 “aarch64-linux-gnu” 标记的工具链。
这是一个已经为你选择好的下载地址:
下载完成后进行放入合适位置解压、加入系统环境变量即可。
#Linux shell code
xz -d gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz
echo "PATH=$PATH:/path/to/dir/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin" >> ~/.bashrc
Code language: PHP (php)
以上第一步完成。
克隆远程仓库至本地
git clone --depth=1 https://github.com/150balbes/Amlogic_s905-kernel
cd Amlogic_s905-kernel
Code language: PHP (php)
开始编译
编译之前需要将N1本地已存在的内核配置文件复制到此远程仓库目录,
并以 “.config” 命名。 具体步骤不再作阐述。
export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-gnu-
make -j16 LOCALVERSION="-aml-s9xxx" bindeb-pkg
Code language: JavaScript (javascript)
编译后生成的deb包文件将出现在上一级目录。
安装
首先使用dpkg安装完刚才生成的内核包(大概三个文件),
再将位于 “arch/arm/boot/Image” 文件复制至N1的 “/boot/zImage”。
echo "Quick install by starx."
dpkg -i *deb
update-initramfs -v -c -k "5.7.0-rc1-aml-s9xxx"
cp Image /boot/zImage
echo "Done"
echo "You may perform a reboot to verify success update now."
Code language: PHP (php)
完成
请重启后使用 “uname -a” 命令测试是否安装成功。
Refer
- https://www.haiyun.me/category/n1/3/
- https://github.com/150balbes/Amlogic_s905-kernel
- https://github.com/umiddelb/armhf/wiki/How-To-compile-a-custom-Linux-kernel-for-your-ARM-device
了解 Starx's Home 的更多信息
Subscribe to get the latest posts sent to your email.
2 条评论
matt · 2021年3月19日 上午10:18
大神你好, https://github.com/150balbes/Amlogic_s905-kernel 这个仓库已经换了? 还是改了名字而已?
另外,如果想针对Coreelec 系统安装内核,也是上面这个步骤来做?
我的vx: matt001 盼复
Starx · 2021年3月22日 上午11:08
coreelec没用研究过,你可以观察一下boot的相关分区及配置文件,替换即可。