V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
black11black
V2EX  ›  Raspberry Pi

有关树莓派的兼容性,各位可以举一些在 Linux 上能运行,树莓派不能运行的软件的例子吗?

  •  
  •   black11black · 2020-01-07 03:54:24 +08:00 · 4090 次点击
    这是一个创建于 1783 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,平常前后端都开发了不少,感觉自己还挺熟练的,最近新入树莓派想做点人机交互的开发,发现较真起来啥也不懂,很蛋疼

    接触到架构问题感觉又回到了小白时代,问一些浅显的问题

    标题指的是各位有经验的话,能否举出一些在 x86 架构的 linux 发行版(比如 debian 8 )上能运行,但在树莓派上不能运行的程序例子?(因架构差异导致或因发行版差异导致都算)


    起因是今天装 docker 的时候突然想到兼容性,问题有很多,比如

    1、虽然 apt install 用了无数遍,但我不理解 apt 的源机制,比如如果在普通的 vps 上执行 apt install nginx 命令,那他下拉的应该是支持在 x86 架构上运行的二进制代码,那么显然拉到 arm 上就不能执行,那么为什么在树莓派上执行同样命令也会得到一个可运行的 nginx ?是因为默认下拉源不同吗

    2、同理,平常经常使用容器,容器内二进制代码应该都是为 x86 设计的,那是否意味着 dockerhub 上的官方镜像在树莓派上集体挂了?

    3、再同理,比如我在 pi 上架了个网站,希望开启 bbrplus 或者 bbr2,需要编译一些内核功能,那是否意味着以前收藏的官方镜像全挂了?


    总之我感觉十分蛋疼,问题问的都比较白,各位有经验的看情况回答,勿喷,谢谢了

    11 条回复    2020-01-07 21:32:55 +08:00
    ClarkAbe
        1
    ClarkAbe  
       2020-01-07 05:45:36 +08:00 via Android
    你在下载系统的时候那个页面就会问你,你要 X86,x86_64 还是 arrch64,同理....包管理的源也会这样,根据自己架构进入各自的目录找包安装
    alphatoad
        2
    alphatoad  
       2020-01-07 05:55:35 +08:00 via iPhone
    Docker 有很多 arm64 的容器,即便没有大概率也可以自己 build
    如果开发者是针对 x86_64 做了汇编优化的那是真的没办法
    vinew
        3
    vinew  
       2020-01-07 06:41:38 +08:00 via iPhone
    树莓派发热一直很迷,官方镜像空载下比配置差不多的 nanopi 高 10 ~ 20℃。
    我是指加了风扇的树莓派 3b+和被动散热的 nanopi neo2。
    不知道派 4b 表现怎么样,目前正在观望 nanopi m4v2
    Buges
        4
    Buges  
       2020-01-07 06:46:26 +08:00 via Android
    绝大多数情况没问题,少部分需要你重新编译。人生苦短,没特殊需求的话直接 x86 工控机板子一把梭,避免踩一些不必要的坑浪费时间。
    Osk
        5
    Osk  
       2020-01-07 08:46:18 +08:00 via Android
    qemu-kvm /滑稽 /
    nevin47
        6
    nevin47  
       2020-01-07 09:54:58 +08:00
    越偏上层的应用,越感知不到平台的差异
    BingoXuan
        7
    BingoXuan  
       2020-01-07 10:06:15 +08:00   ❤️ 1
    intel undervolt

    1.apt 下载是分架构的,树莓派拉下来的是 arm 架构的二进制,而且还分 arm64 和 armhf 等不同细分
    2.是的,你不能把 x86 的 docker image 泡在树莓派。如果可以的话,那么微软就不需要花那么大功夫做个 x86 指令集翻译 arm 指令集那么蛋疼的跨平台解决方案
    3.官方镜像都提供 arm 版本软件分发,哪怕是 ppa 也有 arm 版本软件分发。而且自己编译肯定是交叉编译,难道还要用 arm 自己编译吗?这就是为什么 Linux 主流软件都有 arm 架构支持。反倒是 windows 搞出了翻译指令集这种工程量巨大的方案。

    随着 arm 在服务器领域发力和开发者支持,arm 和 Linux 环境都会越来越好。某厂推出 arm 的主机还真是赶上好日子啊
    hahasong
        8
    hahasong  
       2020-01-07 10:50:09 +08:00
    基本上日常的都能装,即使没有也可以从源码编译
    black11black
        9
    black11black  
    OP
       2020-01-07 20:53:00 +08:00
    @Buges
    感谢,主要是自己是学软件的不是学电子的,树莓派这个不是确保配套,x86 板子一想到配套问题没啥概念,就不太敢买。比如要接个摄像头之类的,也不知道选啥元器件能接上
    black11black
        10
    black11black  
    OP
       2020-01-07 20:55:59 +08:00
    @BingoXuan
    感谢,学到了

    有关 x86 指令集翻译另外提一嘴,我粗浅的知识下感觉这个不就是底层把某些机器码替换成另外一些,为啥说是个工程量巨大的方案?
    BingoXuan
        11
    BingoXuan  
       2020-01-07 21:32:55 +08:00 via Android
    @black11black
    最核心的是用户使用只有运行时而没有编译时。也就是用户执行 x64_86 的二进制时候,arm 不可以先翻译二进制然后执行。x86 每一条指令所操作的数据格式和计算形式都不一定对应的 arm 指令,而且 x86 一条顶 n 条 arm 的。这个转换工作实时进行是很麻烦的。这就只能靠软件辅助加速,如 jit。就如多年前 ps3 用的破 power pc 架构到今天用最好 cpu 跑模拟器也不如原机。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   916 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 21:40 · PVG 05:40 · LAX 13:40 · JFK 16:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.