有办法自己给 Linux 开发板编译一个新系统吗?

2022-10-01 23:43:32 +08:00
 systemcall

板子是 Rock Pi E ,官网上只有 Ubuntu 18.04 ,很老,内核也只有 4.几
想弄一个新点的内核,跑 openwrt 。官网的 OpenWRT 很老,而且似乎装不上软件
要跑 Docker 。感觉没必要用 Ubuntu ,管理起来还麻烦

2980 次点击
所在节点    Linux
8 条回复
printese
2022-10-02 02:39:31 +08:00
可以试试找个现成的 Armbian ,或者自己把源码拉下来编译
Puteulanus
2022-10-02 03:48:15 +08:00
可以用 flippy 的打包仓库
https://github.com/unifreq/openwrt_packit

从 armbian 那边抄一下 Rock Pi E 的 dts
https://github.com/armbian/build

他这个近似用 armbian 的内核拉起 openwrt 的 rootfs ,用他编译的内核或者你自己用 armbian 的库编译内核都行
JohnBull
2022-10-02 13:04:22 +08:00
buildroot2 起飞~
systemcall
2022-10-02 14:00:22 +08:00
@Puteulanus #2
flippy 那边没有这个板子,所以我自己编译了一下 armbian 的内核
但是编译出来是一堆.deb 的包,怎样把这些包转换成所需要的.tar.gz 的包呢?
Puteulanus
2022-10-02 16:06:31 +08:00
@systemcall 可以编译 Rock Pi E 的完整固件,然后用 losetup 挂载固件从 /boot 里拷

他打包仓库需要的内核的 initrd ,是用 qemu 在 armbian 的 rootfs 下安装 kernel 的 deb 然后 mkinitrd 得到的,手工搞的话比较麻烦,我一般是嫖 armbian 构建框架的产物,有个脚本修改 armbian 的构建过程,把需要的东西在构建的过程中薅出来 https://github.com/puteulanus/flippy-kernel-build

也可以直接用他 tg https://t.me/openwrt_flippy 发的成品内核,他编译的内核是通用的,不同的机型加载自己的 dtb 让内核变成自己特化的,所以改一下构建脚本(比如用同是 RK3328 的贝壳云的)加载 Rock Pi E 的 dtb 应该就行( dtb 是 dts 的编译产物)

你可以先试试把他发布的贝壳云固件里的 dtb 替换成 Rock Pi E 的刷进去看看( losetup 挂载替换,或者 Windows 用 disk genius 修改虚拟磁盘),都是 RK3328 的,应该能跑起来
systemcall
2022-10-02 19:28:21 +08:00
@Puteulanus #5
试了一下,只替换 dtb ,可以跑起来。用的是 RK3328 的 CPU 的其他型号,功能基本正常
但是 full cone nat 似乎没法打开,不知道是不是得用 immortalwrt 的内核。我是用的 immortalwrt 的 rootfs
linuxgo
2022-10-04 10:17:24 +08:00
armbian,openwrt 都是可以自己编译的
1715173329
322 天前
@systemcall 挖坟,现在 ImmortalWrt 已经原生支持 Rock Pi E 了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/884287

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX