分类: 整活

  • 高通通没通?Qualcomm Centriq 2400 参考平台动手玩

    高通通没通?Qualcomm Centriq 2400 参考平台动手玩

    介绍

    虽然牢通现在的产品和服务器沾不上一点关系,但是在 2017 年高通曾经推出过一款非常标准而且颇有性价比的服务器平台:Centriq 2400。作为第一款采用 10nm 制程的处理器,高通出售处理器不仅价格十分合适(46 核仅售 1400 美元,完整的 48 核也只要 2000 美元,牢通产品最做人的一次),单核性能也跟当年的天湖架构至强可扩展有的一拼。更何况高通不仅核多还更省电:单核功耗不到 2.5 W,总 SOC 功耗也只有 120W 的 TDP,而且实际使用中几乎不可能达到。这款 SoC 最大的客户是 CloudFlare 和 Corellium。在生态方面,高通当时不仅和 Linaro 合作去构建服务器端相应的软件,还在 OpenBMC 中添加了该平台的支持,可以说是下了很大力度。

    在 2026 年来看,ARM 服务器或多或少拿到了一定的市场份额:不少厂家选择基于 Neoverse 定制自己的服务器处理器,例如微软的 Cobalt,亚马逊和 Annapurna 合作的产品,还有自己设计核心的安培。国内也有使用公版的不少企业,例如中兴。也有自己设计核心的飞腾和华为。现在来看高通过早的放弃固然是可惜,但当时又有谁能预测未来呢?

    动手玩

    购买现价大约一万五千原石的这台机器后,能看到非常骚气的蓝色前面板,这台机器所有的 IO 接口都在前面板上,甚至 PCIe 设备的外接位也是,打开机箱后会发现机箱其实能塞入两块主板,甚至电源板还有另一块的供电空位,纯纯的拉皮机箱。

    需要注意的是,玩之前需要准备一个 Dell 服务器标准的电源,还有两条以上的 DDR4 RDIMM/LRDIMM。

    只占了机箱 1/4 的主板

    这台机器的固件和 BMC 由美国大趋势 American Megatreds 提供,由于这个破烂 MegaRAC 过于老旧,因此你需要安装 Java 7 才能启动 KVM,相比之下还是通过 IPMItool 使用网络串口连接更为河里。需要注意的是,这个傻逼机器上高通把 BMC 口贴到了网口 1 和 2 上,但是管理口在网口 3 上(正视前面板最右侧接口)。而且正面两个 9 针串口完全没有任何输出,只能通过 BMC 安装(默认密码 admin/admin)。如果你想要使用显卡,那你需要选择半高卡,并且卡需要有 ARM GOP。内存应当先插入从 0-0 开始的白色插槽中,且必须为偶数条(0-0,1-0…)

    启动后的体验就平平无奇了,和鲲鹏 920、飞腾 2000 系产品以及安培和中兴机器一样,直接接入支持 AArch64 SBSA 标准的操作系统,一路安装点下去就能装好。毕竟它也是当年 Linaro 的商业版参考平台之一(顺带一提参考平台里没几个能正常获得的,AMD Overdrive 和 Cello 暴死,海思的参考平台根本不能公开获得。)

    性能方面,这颗定制的 Falkor 架构处理器单核的性能 CoreMark 大概 7 分左右的水平,接近两年后发布的鲲鹏 920,Geekbench 成绩也和 920 接近。具体架构分析可以参见Chip&Cheese 的文章。也是一台可以以相对较低价格简单获得的 ARM 高性能多核平台。

    后文

    在发布这台机器后,可能是开发成本过高或销售成绩不理想,高通很快放弃了服务器业务。在服务器业务临死前,高通为了发挥这一产品的余热,和贵州政府合资成立了华芯通,发布了一款这颗处理器套皮并通过某些方式增加国密功能的版本,昇龙 4800(StarDragon 4800,他甚至还给型号乘了个二)来获取政策优惠和补贴。之后不出意外的,随着高通服务器业务的停止运行,华芯通也大年三十光荣歇业。

    华芯通昇龙 4856,图片为闲鱼获得,有富哥愿意赞助三万原石可以给我送一颗我插高通机器板子上看能不能亮。
    你就说他俩长得像不像吧。
  • 动手玩:华为智障网卡 SD100-V3

    动手玩:华为智障网卡 SD100-V3

    现在这个内存硬盘带着主板和 CPU 一起涨价的市场情况下,找点性能不那么落后的小玩具其实挺困难的,这时候不好拆内存和硬盘的产品就很合适了。

    简介

    SD100 是华为设计的一款提供存储和网络卸载功能的智能网卡,V3 及以上版本可以将存储和网络在物理机上映射为 VirtIO 标准接口。

    实际上 SD100 就是一台类似腾讯银杉网卡的小电脑,只不过需要 PCIe 使能来启动。其中 V1/V2 使用 Hi1610 配合 16G ECC 内存,由于 1610 的行为不甚标准,因此只能使用网卡内存储盘的自带系统。所以如果要购买游玩,推荐购买 V3 系列的版本,V3 系列版本区别不大,因此下列操作基本上是通用的。(区分 V1/V2 版本和 V3 版本最简易的方法是看散热片,黑色薄散热片的为老版本,银色厚散热片的为 V3)

    硬件

    网卡本身提供一个 10G 光口(无法转电口使用)和一个 RJ45 串口,内部接口有一个(lite)或两个 M.2 SATA 接口,和两条 SlimSAS 8i 接口提供的 PCIe 宿主通道。焊死的硬件则包括了一颗 24 核心的鲲鹏 920 和 32G ECC 内存。值得一提的是卡上的 molex 供电接口并非标准线序,必须使用随卡附送的转接头或自己压制线材(线序为正常 molex 旋转 90 度,采用正常接线卡和电源还有你人至少送走一个),卡本身不能只从外部电源供电启动,需要在 PCIe 上提供 12V 和 3.3V 电流,此外在宿主机上使用时该卡会提供一个 oprom,唯一用途是等待卡内系统启动完成(或 120 秒超时)后才允许宿主机继续启动,相比隔壁 Bugtik 你启动你的我启动我的导致一堆毛病还是要可取些。

    该卡系统固件是一个标准的 AArch64 SBSA 环境,卡内固件除了没有 SetupDXE(也就平常机器 BIOS 设置页面)以外和标准系统完全相同。

    动手玩

    你需要准备:

    • 两块 2230 SATA 硬盘(或者你卡上自带的那两块)
    • 能读取 M.2 SATA 硬盘的其他设备,硬盘盒或者别的电脑都可以。
    • 卡原装的电源转换线。
    • 能够提供至少 10A 的 CPU 8 pin 供电,电源自己提供的或者通过转接线从 PCIe 8 pin 转接的都可以。
    • 一根 RJ45 转串口线。
    • (可选)10G 光模块和线
    • (可选)暴力扇

    在你准备好鲲鹏大爹的基板和电源之后,需要手动替换 2230 SATA 硬盘上的数据来登录进卡内,可以改装卡内本身的修改版 Euler 达成,也可以用任何一个你能拿到的支持 AArch64 SBSA 的其他发行版安装到硬盘里达成。

    如果你要修改原硬盘系统的密码,请注意有两个盘的卡型号两个盘是组成软 RAID1 的,需要通过 mdadm 挂载 RAID 来进行。你可以直接修改 shadow 文件或者用 qemu-user chroot 进去修改密码,具体流程此处不表,可以咨询哈基米或者深度求索大师。如果要使用你自己的系统,需要通过一定方法把系统安装到盘内,比如用 qemu 安装,或者另找一台真机。

    替换密码后用你替换好的凭据从 RJ45 串口登录即可畅访问卡内系统,如果除了 10G 网口和硬盘以外需要其他外设,你可能需要用 SlimSAS 转接板转接出 PCIe 使用。(之后有时间会测试一下能不能把 AMD 南桥挂在上面,进行一个牛头人。)

    系统本身表现平平无奇,除了接口过少,和市面上购买的 24c 鲲鹏服务器或者擎云 W510 没有实质区别,但这卡比上述两种途径获取可便宜多了,应该是目前获取相对高性能的 ARM 设备的一种省钱的途径。

    另外,部分 24c 鲲鹏硬件可以开核至 32c,但有烧毁或不稳定风险,具体方法请研究 ebl 配置。

  • 造语:剑与魔法与其他无数世界

    造语:剑与魔法与其他无数世界

    从拯救地球、驯养不明生物或者被不明生物诈骗的日本高中生,又到在不知哪个星球上的战斗,再到剑与魔法世界中的各种勇者,我们总能接触到无数虚构的世界,无数的虚构世界构成了这些各色的幻想。

    免责声明:我不懂文艺批评也不懂语言学,如有疏漏敬请指正。

    当然,有时候也有一些尴尬的事情发生,比如日语,英语或者什么其他语言成了异世界通用语,这有时候就比较尴尬了。

    比较低端的做法是搞个什么字母替换,让字符看起来异世界一点,这个最大的好处就是方便而且成本低。一般来说英语在这种情况下最常见(不然要是给汉语造一个,我寻思作品暴毙都未必能造完)

    比如我们比较喜欢的马猴烧酒小圆,不过它还不是最典型的,因为用到魔女文字的时候很多情况下有可能是多语言混合或者洋泾浜语(pidgin),英语德语霓虹金混着来。

    魔女文字一种

    然后就是塞尔达,口袋妖怪乃至某些科幻等等的字母表,这一类还包含强行将多种语言缝合起来的(如前文的魔女文字)。不过说实话,这种东西还是不太对味,因此有些脑洞更大的奇才选择了一个困难模式:人造语言。

    这些人造语言也有成熟的和不成熟的,有些只能图一乐,有些稍微能用,有的则是一门真正接近完整的语言。

    图一乐比较常见的是某些歌手的语言(增加感情表达,毕竟音乐是通用语言)和游戏技能命名,歌曲方面常见的有梶浦语,黑石语和菅野语等,这里推荐一下 Sis puella magica! 和 Old-fashioned fairytale. 游戏技能方面则是以老滚龙语等为代表。

    而在 ACG 领域比较知名的还是鬼才土屋晓的两个作品:塔语和星语,其中设定上塔语(Hymmnos)是由星语(Ar Ciela)演化来的,作为诗魔法少女释放bian魔法cheng的语言,而星语则是星球间的语言,超出了人类可听范围。

    其中塔语较为完整,特色是必须具有的感情语素。在游戏中不同的塔(魔法服务器)可以使用的塔语方言也有不同。塔语有部分词汇但极其受限,因此只能用于构造诗歌和音乐而无法作为完全的语言使用。在游戏中塔语则用来构造诗曲以操纵相应的塔施法。可惜之处在于塔语并没有标准的发音方式,而靠各位自行决定如何发音。读者可以去各大音乐软件学习如何当一名合格的诗魔法少女。(虽然没有诗魔法少女的遗传因子我寻思唱也不会有用的)

    而星语则只有单独的语素(部分词语),并不是一种完整的语言。

    更完整的语言则不得不提到中土世界(指环王)中的各类语言,如昆雅和辛达林。这里值得一提的是,托尔金本人是一位语言学家。昆雅由芬兰语添加部分拉丁语和希腊语元素构建而来。这些精灵语有基本的词汇,因此可能作为日常语言使用,甚至在 Duolingo 等语言学习软件上有相应课程。

    另一个较完整的语言则是星际迷航的克林贡语,这一语言的特点是特意采用了VOS(宾语-谓语-主语)这一人类语言中绝少使用的语序来强调外星感。克林贡语词汇完整,甚至在现实中存在使用者,而不少翻译软件及语言学习工具有克林贡语支持,而生活大爆炸里的几个 Geek 也会使用这一语言。(顺带一提,我觉得这玩意故意设计的发音是真的难听)

    总之,在剑与魔法或者外星人的什么世界里,完全用着和我们一样的语言总是觉得有点不太对劲,那么不妨来自己发明语言吧!

    这里推荐一下几个比较有意思的东西:人造语言维基语言维基

  • Chromebook 折腾记 – Scarlet 灵车下水道过弯

    Chromebook 折腾记 – Scarlet 灵车下水道过弯

    之前本猫收了两台灵车 Chromebook,一台是Acer Chromebook 14 for work, 另一台则是 RK3399 (aka. OP1) 的电子垃圾,Acer Chromebook tablet 10. 于是在这里记录一下折腾 RK3399 电子垃圾的过程。

    由于我 Scarlet 是 260 CNY 买的二手鱼上的灵车早期工程机,原先的系统会有自动重启(Powerd 定期去世)的问题。而且因为Bootloader签名和市面版不一样,无法使用官方恢复镜像恢复,因此我做了一些灵车操作来修复它。

    修复系统

    首先,我们要知道一个事实:Chrome OS 的恢复镜像本质上是一个自动执行 chromeos-install 的带有 Chrome OS 签名等一大堆东西的一般启动盘,而系统恢复就是验证完签名之后启动进这个盘去重装系统。这样,我们就有了一个绕过出问题的签名机制的恢复方法:手动启动进恢复盘恢复系统。

    以下操作都是在开启开发者模式后操作的,在 Chrome OS 平板上进入开发者模式的操作是按住电源和音量上键直到重启,在进入恢复模式后同时按住两个音量键就进入了开启开发者模式的菜单。
    先进入 crosh : 按 Ctrl + Alt + t ,之后输入 shell 来访问真正的 shell.

    1. 首先,我们在原系统里把出问题的 Powerd 杀掉:执行 initctl stop powered 先干掉这个小朋友,避免它在操作过程中把我们的东西给杀了。
    2. 然后,开启 USB 启动和传统方式启动: sudo crossystem dev_boot_usb=1 dev_boot_legacy=1
    3. 最后,在启动时的开发者菜单里选择从 SD 或 USB 外部设备启动,强行进入恢复模式。之后就能看见恢复模式读条了。读完条之后,它的系统就会变成市场版 Chromebook 的系统。

    换 emmmmmmc

    由于我的工程版 Scarlet 只有 16G 的 emmmmmmc,所以我去找了个手机维修店把 emmmmmmc 更换成了同型号但 128G 容量的,因为 Scarlet 的启动器不在 emmmmmmc 上,所以直接使用 SD 卡恢复系统就能把 Chrome OS 灌回新的空白记忆体。

    刷写固件

    老实说这部分我还没实践,但是还是姑且写出来让大家看看。
    Scarlet 作为一款比较新的 Chrome OS 设备,它的控制器采用了 Cr50,因此并不需要像较老的设备那样拧螺丝来写入固件,而是需要一根 Suzyqable 作为贫穷猫猫头,本猫显然是买不起 Sparkfun 那根 15 USD 的高贵线材,走上了利用 Type-C 焊接板自己做线的道路。做线过程在上面的链接里有,我就不在这赘述了。
    Chrome OS 的恢复镜像里是有 Embedded Controller 和启动固件的备份的,在设备上开启了 Close Case Debugging (CCD) 的情况下,可以通过 Suzyqable 直接刷写 EC 和启动固件,甚至可以在刷坏了之后启动不能的情况下操作。
    通过这一操作之后,这个灵车工程机就变成基本和市售机型一样的设备了。

    附注

    虽然一般来说正式版固件里会含有工程设备某些硬件问题的 Workaround,但并不是一定的,所以在这么操作之前,做好设备变砖的心理建设。

  • 容器技术杂谈 – 从自己造一个容器的轮子开始

    容器技术杂谈 – 从自己造一个容器的轮子开始

    最近容器化技术比较火热,所以出于兴趣,我打算自己造一个玩,下面就是造轮子的一点小小记录。

    主要涉及到的内容

    容器技术本身是建基于 *nix 的某些内核功能产生的轻量级隔离环境,或者说是准虚拟化系统,涉及到的内核功能在下面列出。

    • namespace
      namespace 算是容器技术的基础之一,它提供了简单的限制应用可访问的资源的方式。它能限制的资源包括但不限于网络,挂载点,用户等。
    • chroot/pivot_root
      chroot 作为一个古老的控制文件系统访问的方式,很早就被用来提高平台的安全性(cPanel 等网站托管平台经常使用 chroot 来隔离不同用户的网站)。而pivot_rootchroot 的主要区别是,pivot_root 会将进程的根挂载点也切换过去
    • cgroups
      cgroups 其实是容器外围的一个不太必须的组件,它的主要作用是控制一组进程(容器进程等)的资源占用。
    • overlayfs
      overlayfs 也并不是容器的必须组件,但它提供了在容器间共享基础“镜像”的功能。

    一个容器的启动流程

    1. 首先我们启动我们的容器控制进程,它就相当于这个新世界里的init
    2. 在读取完运行时参数之后,利用 unshare/fork 系统调用创建namespace,fork出的进程是容器里的第一个进程。同时主进程负责创建网桥等通信机制和uid映射等。
    3. 在进入新命名空间后,利用 bind mount 挂载容器的根文件系统,之后利用 overlayfs 挂载基础镜像和容器的各“层”。
    4. 通过 pivot_rootchroot 进入新的根文件系统。
    5. 启动容器中要运行的进程,整个过程完成。

    题外话:关于gVisor

    Google 的 gVisor 采用了一个更另类的方式增加安全性,在不考虑kvm的情况下,gVisor的进程通过使用 ptrace 挂钩目标程序的系统调用并进行过滤来防止恶意攻击(如 ditrycow 等),稍晚可能去试着实现一个轻量级的 gVisor。