Distributions
› Ubuntu
› Fedora
› CentOS
中文资源站
› 网易开源镜像站
imbushuo
V2EX  ›  Linux

给 Lumia 950 XL 跑 Debian 9 w/ 主线内核

  •  6
     
  •   imbushuo ·
    imbushuo · Nov 7, 2018 · 10139 views
    This topic created in 2924 days ago, the information mentioned may be changed or developed.

    可能是住院期间过于无聊需要找一点事情做(。

    其实看上去 MSM8994 的主线情况还是不错的(虽然不像 APQ8016/APQ8096 一样有 SBC,这两款的主线情况是最好的),除了设备树不齐,某些缺的 GCC/RPM 时钟需要补上,还需要一个 qcom,pcie-msm8994 的 PCIe 控制器。补上设备树后很多东西开箱能用。目前跑的是 4.18.6。rootfs 是直接 debootstrap 出来的。

    走的 ARM64 UEFI + GRUB 启动,没有用 lk/uboot (都有 UEFI 用了,为什么要用那种玩意?)

    Note: 现在这批 "Always Conncted PC" 也就是跑 8998/SDM850 的 Windows PC 虽然没有锁 Secure Boot,但是跑 Linux 有困难,因为它们的固件加载的位置太低了。UEFI 规范建议固件加载得越高越好,虽然这不是强制性要求。跑 Windows 和 XNU (其他系统我没测过)都是没问题的。我自己给 8994 写的 UEFI 实现加载在内存中段,留了足够多的 bottom memory 给 Linux

    IMG_2358.jpg IMG_2376.jpg IMG_2369.jpg camphoto_351212254.jpg IMG_2378.jpg IMG_2382.jpg

    最后留一个 boot log 开头摘要:

    [    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd032]
    [    0.000000] Linux version 4.18.6-lumia-950xl-uefi (imbushuo@lumia-bldag-bl1) (gcc version 6.3.0 20170516 (Debian 6.3.0-18)) #2 SMP PREEMPT Wed Oct 31 00:35:34 EDT 2018
    [    0.000000] Machine model: Microsoft Lumia 950 XL Single SIM (RM-1085)
    [    0.000000] efi: Getting EFI parameters from FDT:
    [    0.000000] efi: EFI v2.70 by Little Moe, LLC.
    [    0.000000] efi:  ACPI=0x5f030000  ACPI 2.0=0x5f030014  SMBIOS=0x5eb90000  SMBIOS 3.0=0x5eb40000  MEMATTR=0x5e9a0018 
    [    0.000000] cma: Reserved 32 MiB at 0x00000000de000000
    [    0.000000] NUMA: No NUMA configuration found
    [    0.000000] NUMA: Faking a node at [mem 0x0000000000000000-0x00000000dfffffff]
    [    0.000000] NUMA: NODE_DATA [mem 0xddfdb980-0xddfdd13f]
    [    0.000000] Zone ranges:
    [    0.000000]   DMA32    [mem 0x0000000000100000-0x00000000dfffffff]
    [    0.000000]   Normal   empty
    [    0.000000] Movable zone start for each node
    [    0.000000] Early memory node ranges
    [    0.000000]   node   0: [mem 0x0000000000100000-0x00000000002fffff]
    [    0.000000]   node   0: [mem 0x0000000000300000-0x000000000038ffff]
    [    0.000000]   node   0: [mem 0x0000000000390000-0x00000000003fffff]
    [    0.000000]   node   0: [mem 0x0000000000400000-0x0000000000bfffff]
    [    0.000000]   node   0: [mem 0x0000000000c00000-0x00000000064fffff]
    [    0.000000]   node   0: [mem 0x0000000006500000-0x00000000069fffff]
    [    0.000000]   node   0: [mem 0x0000000006c00000-0x000000000f1fffff]
    [    0.000000]   node   0: [mem 0x000000000f200000-0x000000005c8c2fff]
    [    0.000000]   node   0: [mem 0x000000005c8c3000-0x000000005c9ddfff]
    [    0.000000]   node   0: [mem 0x000000005c9de000-0x000000005e96ffff]
    [    0.000000]   node   0: [mem 0x000000005e970000-0x000000005e98ffff]
    [    0.000000]   node   0: [mem 0x000000005e990000-0x000000005eb2ffff]
    [    0.000000]   node   0: [mem 0x000000005eb30000-0x000000005eb5ffff]
    [    0.000000]   node   0: [mem 0x000000005eb60000-0x000000005eb8ffff]
    [    0.000000]   node   0: [mem 0x000000005eb90000-0x000000005eb9ffff]
    [    0.000000]   node   0: [mem 0x000000005eba0000-0x000000005ebbffff]
    [    0.000000]   node   0: [mem 0x000000005ebc0000-0x000000005ecfffff]
    [    0.000000]   node   0: [mem 0x000000005ed00000-0x000000005ed2ffff]
    [    0.000000]   node   0: [mem 0x000000005ed30000-0x000000005ed3ffff]
    [    0.000000]   node   0: [mem 0x000000005ed40000-0x000000005ed4ffff]
    [    0.000000]   node   0: [mem 0x000000005ed50000-0x000000005ee8ffff]
    [    0.000000]   node   0: [mem 0x000000005ee90000-0x000000005eedffff]
    [    0.000000]   node   0: [mem 0x000000005eee0000-0x000000005f01ffff]
    [    0.000000]   node   0: [mem 0x000000005f020000-0x000000005ff9ffff]
    [    0.000000]   node   0: [mem 0x000000005ffa0000-0x000000005ffeffff]
    [    0.000000]   node   0: [mem 0x000000005fff0000-0x000000005fffffff]
    [    0.000000]   node   0: [mem 0x0000000080000000-0x00000000dfffffff]
    [    0.000000] Initmem setup node 0 [mem 0x0000000000100000-0x00000000dfffffff]
    [    0.000000] On node 0 totalpages: 785664
    [    0.000000]   DMA32 zone: 12276 pages used for memmap
    [    0.000000]   DMA32 zone: 0 pages reserved
    [    0.000000]   DMA32 zone: 785664 pages, LIFO batch:31
    [    0.000000] psci: probing for conduit method from DT.
    [    0.000000] psci: PSCIv1.0 detected in firmware.
    [    0.000000] psci: Using standard PSCI v0.2 function IDs
    [    0.000000] psci: MIGRATE_INFO_TYPE not supported.
    [    0.000000] psci: SMC Calling Convention v1.0
    [    0.000000] random: get_random_bytes called from start_kernel+0xac/0x414 with crng_init=0
    [    0.000000] percpu: Embedded 23 pages/cpu @(____ptrval____) s54232 r8192 d31784 u94208
    [    0.000000] pcpu-alloc: s54232 r8192 d31784 u94208 alloc=23*4096
    [    0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3 [0] 4 [0] 5 [0] 6 [0] 7 
    [    0.000000] Detected VIPT I-cache on CPU0
    [    0.000000] CPU features: enabling workaround for ARM errata 826319, 827319, 824069
    [    0.000000] CPU features: enabling workaround for ARM erratum 843419
    [    0.000000] CPU features: enabling workaround for ARM erratum 845719
    [    0.000000] CPU features: detected: Kernel page table isolation (KPTI)
    [    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 773388
    [    0.000000] Policy zone: DMA32
    [    0.000000] Kernel command line: BOOT_IMAGE=/vmlinuz-4.18.6-lumia-950xl-uefi nomodeset acpi=off earlyprintk=efi video=efifb root=UUID=4773c028-90b2-4032-bac6-b23126ef8f94
    [    0.000000] Memory: 2867332K/3142656K available (7356K kernel code, 718K rwdata, 2776K rodata, 640K init, 339K bss, 242556K reserved, 32768K cma-reserved)
    [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=8, Nodes=1
    [    0.000000] Preemptible hierarchical RCU implementation.
    [    0.000000] 	RCU restricting CPUs from NR_CPUS=64 to nr_cpu_ids=8.
    [    0.000000] 	Tasks RCU enabled.
    [    0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=8
    [    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
    [    0.000000] arch_timer: cp15 and mmio timer(s) running at 19.20MHz (virt/virt).
    [    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x46d987e47, max_idle_ns: 440795202767 ns
    [    0.000006] sched_clock: 56 bits at 19MHz, resolution 52ns, wraps every 4398046511078ns
    [    0.000213] Console: colour dummy device 80x25
    [    0.001147] console [tty0] enabled
    [    0.001215] Calibrating delay loop (skipped), value calculated using timer frequency.. 38.40 BogoMIPS (lpj=76800)
    [    0.001248] pid_max: default: 32768 minimum: 301
    [    0.001357] Security Framework initialized
    [    0.003169] Dentry cache hash table entries: 524288 (order: 10, 4194304 bytes)
    [    0.004082] Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes)
    [    0.004159] Mount-cache hash table entries: 8192 (order: 4, 65536 bytes)
    [    0.004207] Mountpoint-cache hash table entries: 8192 (order: 4, 65536 bytes)
    [    0.027993] ASID allocator initialised with 32768 entries
    [    0.035990] Hierarchical SRCU implementation.
    [    0.044231] Remapping and enabling EFI services.
    [    0.044415] efi: memattr: Entry attributes invalid: RO and XP bits both cleared
    [    0.044449] efi: memattr: ! 0x000000300000-0x00000037ffff [Runtime Code       |RUN|  |  |  |  |  |  |   |  |  |  |  ]
    [    0.052033] smp: Bringing up secondary CPUs ...
    [    0.084858] Detected VIPT I-cache on CPU1
    [    0.084921] CPU1: Booted secondary processor 0x0000000001 [0x410fd032]
    [    0.116903] Detected VIPT I-cache on CPU2
    [    0.116944] CPU2: Booted secondary processor 0x0000000002 [0x410fd032]
    [    0.148978] Detected VIPT I-cache on CPU3
    [    0.149016] CPU3: Booted secondary processor 0x0000000003 [0x410fd032]
    [    0.182264] CPU features: enabling workaround for ARM erratum 832075
    [    0.182276] CPU features: enabling workaround for EL2 vector hardening
    [    0.182291] Detected PIPT I-cache on CPU4
    [    0.182370] CPU4: Booted secondary processor 0x0000000100 [0x411fd071]
    [    0.213271] Detected PIPT I-cache on CPU5
    [    0.213340] CPU5: Booted secondary processor 0x0000000101 [0x411fd071]
    [    0.245384] Detected PIPT I-cache on CPU6
    [    0.245457] CPU6: Booted secondary processor 0x0000000102 [0x411fd071]
    [    0.277503] Detected PIPT I-cache on CPU7
    [    0.277576] CPU7: Booted secondary processor 0x0000000103 [0x411fd071]
    [    0.277753] smp: Brought up 1 node, 8 CPUs
    [    0.277977] SMP: Total of 8 processors activated.
    [    0.277996] CPU features: detected: 32-bit EL0 Support
    [    0.290439] CPU: All CPU(s) started at EL1
    
    55 replies  •  2019-01-16 12:35:44 +08:00
    DennyDai
    DennyDai
    Nov 7, 2018
    1
    劳群观光团
    Dreista
    Dreista
    Nov 7, 2018 via iPhone
    2
    劳群观光团
    K4YT3X
    K4YT3X
    Nov 7, 2018
    3
    劳群观光团
    Showfom
    Showfom
    PRO
    Nov 7, 2018
    4
    劳群观光团
    hanxiV2EX
    hanxiV2EX
    Nov 7, 2018 via Android
    5
    牛逼
    steveshi
    steveshi
    Nov 7, 2018 via iPhone
    6
    这个是真牛逼
    jingniao
    jingniao
    Nov 7, 2018 via Android
    7
    640 吃灰中……
    doresu
    doresu
    Nov 7, 2018 via Android
    8
    给大佬跪下了
    ipeony
    ipeony
    Nov 7, 2018 via Android
    9
    666,手上有台吃灰的 950
    kekxv
    kekxv
    Nov 7, 2018 via Android
    10
    有教程之类的吗
    lyseky
    lyseky
    Nov 7, 2018 via Android
    11
    920 坐等撸
    IsaacYoung
    IsaacYoung
    Nov 7, 2018 via iPhone
    12
    🐂🍺
    imbushuo
    imbushuo
    OP
    Nov 7, 2018
    13
    @lyseky 所有的 arm32 WP 都有这么一个问题:固件加载的地方太低了。arm32 Linux 对 bottom memory 的要求更为严格(必须在前 128MB 内,越前越好),很多设备都是在 `memory_base + 0x8000` 这个地方加载内核的。但是这个地方 WP 的 UEFI 占用了,同时放了数据和代码(还有 FrameBuffer ),所以会非常麻烦(特别是覆盖到了代码段,那段代码还是和 ARM ACPI MP Parking 多核启动协议有关的)

    @kekxv 理论上只需要把 Windows 10 ARM 安装教程的最后几步换掉就好了。多分两个分区,一个放 grub 和 kernel,另一个放 rootfs。rootfs 只需要 debootstrap 一下就行。
    LCD
    LCD
    Nov 7, 2018 via Android
    14
    膜拜
    frittle
    frittle
    Nov 7, 2018
    15
    除了蓝牙能用,无线网能用吗?
    imbushuo
    imbushuo
    OP
    Nov 7, 2018 via iPhone
    16
    @frittle PCIe 桥和 MMIO 配置了,能看到网卡了,然后目前在解决一个 CPU 0 Stalled 的问题

    我估计我少开了一个 clock 然后整个 PCIe IP Core 在等对面
    LowBi
    LowBi
    Nov 7, 2018
    17
    牛逼,可以给 IT 之家投稿了
    zhjits
    zhjits
    Nov 7, 2018 via iPhone
    18
    劳群观光团
    (我来晚了?
    Myprincess
    Myprincess
    Nov 7, 2018
    19
    面对如今环境,WP 保护隐私还是可以的.
    xiashali
    xiashali
    Nov 7, 2018
    20
    @DennyDai #1
    @Dreista #2
    @K4YT3X #3
    @Showfom #4
    @zhjits #18
    • 这里反对中文互联网上的无信息量习惯如 “顶”,“沙发”,“前排”,“留名”,“路过”,“不明觉厉”
    xiashali
    xiashali
    Nov 7, 2018
    21
    其实我也是劳群观光团
    EVAb00
    EVAb00
    Nov 7, 2018
    22
    哎,持 1520 继续观望。 还自己换了电池,等灯。
    mortal
    mortal
    Nov 7, 2018
    23
    这不是给 Trackpad 写驱动的大佬么!怎么住院了,身体还好么?
    updateing
    updateing
    Nov 7, 2018 via Android
    24
    好厉害…… 我在跑 Android 的 835 上尝试改动一点 LinuxLoader (aboot 分区) 都会导致进 9008,即便是解锁了 bootloader 也不行。950XL 可以跑楼主自己修改的 UEFI 实现的话,是绕过了高通的启动验证吗?
    cjw1115
    cjw1115
    Nov 7, 2018
    25
    厉害了,950xl 能这么玩
    imbushuo
    imbushuo
    OP
    Nov 7, 2018
    26
    @updateing 对,高通的 WP 实现里,Secure Boot 有一个洞,可以在进了 bootmgfw.efi 后选自己的启动程序然后获得整个 EL1 的控制权。aboot 默认是要签名的

    @mortal 肠穿孔然后体内攒了 400mL 的积液。头两次去 Urgent Care 他们看不出问题觉得只是胃酸倒流,第三天去拍了片就让我去 Emergency 了,然后拍了个 CT 后被要求住院手术。现在基本恢复了,再晚去几天医院情况就可能控制不住了
    mortal
    mortal
    Nov 7, 2018
    27
    @imbushuo #26 天,好可怕!没事就好
    PythonAnswer
    PythonAnswer
    Nov 7, 2018
    28
    厉害 老板,这样能正常使用多久,100%电--5%电
    mon6912640
    mon6912640
    Nov 7, 2018 via Android
    29
    666
    jjx
    jjx
    Nov 7, 2018
    30
    厉害了

    做梦都想有这个样随身的 linux 设备

    不知道 lz 能坚持搞下去吗? 能搞下去的话也想去弄个 950 XL
    ZiLong
    ZiLong
    Nov 7, 2018
    31
    大佬
    server
    server
    Nov 7, 2018
    32
    劳群观光团
    miss1123
    miss1123
    Nov 7, 2018
    33
    厉害
    EricwcirE
    EricwcirE
    Nov 7, 2018 via iPhone
    34
    劳群观光团
    xi_lin
    xi_lin
    Nov 7, 2018
    35
    大佬
    请问什么是劳群
    xi_lin
    xi_lin
    Nov 7, 2018
    36
    @jjx root 后的 android chroot 跑 linux 不能满足需求吗
    jsun
    jsun
    Nov 7, 2018
    37
    大佬牛逼,不知道我的的 lumia 920 能刷不
    chouch00u
    chouch00u
    Nov 7, 2018
    38
    劳群观光团
    jjx
    jjx
    Nov 7, 2018
    39
    @xi_lin

    不一样, chroot 在一个预定大小的镜像文件中做操作, 很多东西跑服务兼容性不行

    完整的 arm linux 系统, 比方说以前在 ac100(一个 android)上跑, 兼容性基本没有问题
    imbushuo
    imbushuo
    OP
    Nov 7, 2018
    40
    @jjx 我朋友的 GSoC 2018 项目就是把 Nexus 6P 上的 Android 关到一个 LXC 里,然后外面跑的是 Gentoo。

    https://jsteward.moe/gsoc-2018-final-report.html

    当然胶水代码是写了一些的,比如手机开机启动 Gentoo 后启动 LXC 里面的 Android。外面就是个能用的 Gentoo arm64。
    zro
    zro
    Nov 7, 2018
    41
    Lumia 638, 640, 640XL*2 膜拜大哥 950XL

    愿大佬早日出院,为 640XL 等小弟谋福利
    hjc4869
    hjc4869
    Nov 7, 2018
    42
    劳群观光团
    dant
    dant
    Nov 7, 2018
    43
    劳群观光团
    LuvLetter
    LuvLetter
    Nov 7, 2018
    44
    劳群观光团
    eastlhu
    eastlhu
    Nov 7, 2018 via iPhone
    45
    技术鬼才
    DesignerSkyline
    DesignerSkyline
    Nov 7, 2018 via Android
    46
    劳群观光团
    SupperMary
    SupperMary
    Nov 9, 2018
    47
    很强👍
    zengxianxi
    zengxianxi
    Dec 30, 2018
    48
    @imbushuo 我想问几个问题:
    1、device tree 和 kernel 该怎么编译,怎么在 rootfs 中部署 linux 系统
    2、uefi 能分别在 win10 和 linux 中启动摄像头、wifi 等硬件,cpu 能 8 个核心都保持最高频率运行吗
    3、win10 usb 集线器非要外接电源才能使用的问题解决了吗
    谢谢
    imbushuo
    imbushuo
    OP
    Jan 4, 2019
    49
    @zengxianxi
    1. Linaro GCC (7-) 或者 GCC 8 就可以编译了,和一般 cross-compile 没差
    2. Wi-Fi 遇到个 SError 吗,正在修,CPU 不设限,所以发热比较刺激
    3. 升压电路还没打开
    zengxianxi
    zengxianxi
    Jan 4, 2019
    50
    @imbushuo 但是我感觉 uefi 带不起那几个 a57 核心,我用 arm64 的 7z 进行压力测试,发现最高频率也只能到 1.58ghz,而且有几个核心一直休眠,性能有很大损失
    还有 adreno 430 gpu 驱动带不起来的问题能解决吗,uefi 启动时按 power 键不能进 uefi 设置的问题怎么解决?我的手机型号是 rm-1116 双卡版的
    谢谢
    zengxianxi
    zengxianxi
    Jan 5, 2019
    51
    @imbushuo 还有我的 rm-1116 手机运行 win10arm 时不能充电,而且电量明明还有 70%系统却说电池电量严重不足,自动关机,有时刚开机就说没电了然后自动关机,最后我不得不卸载电池驱动程序;还有就是我的手机蓝牙网络共享不能上网。请问以上怎么解决,谢谢!
    imbushuo
    imbushuo
    OP
    Jan 5, 2019
    52
    @zengxianxi 因为 Windows 下 PEP 会干涉核心策略,所以你在 Windows 下是不会开满的
    GPU: won't fix

    我觉得你电池校准数据错了,你去找一下你对应 FFU 里是注册表项
    zengxianxi
    zengxianxi
    Jan 6, 2019
    53
    @imbushuo 好的,搞定了。这玩意能启动 android 吗?如果能有没有具体的安装教程
    imbushuo
    imbushuo
    OP
    Jan 15, 2019 via iPhone
    54
    @zengxianxi 最近突然 GPU 能用了
    我觉得我有空会研究一下 3.10 和 Android,但是估计启动方法和其他 Android 机画风不大一样(更类似于 Android-x86 的启动流程),也许可以去申个 GSoC 项目玩玩
    zengxianxi
    zengxianxi
    Jan 16, 2019 via Android
    55
    @imbushuo 太好了!修正后的 uefi 什么时候可以发布? 还有就是我的手机在 win10 arm64 下插电源不能充电,但我发现单卡版的 950xl 可以充电,这是什么原因,能修复吗?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4028 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 163ms · UTC 07:09 · PVG 15:09 · LAX 23:09 · JFK 02:09
    ♥ Do have faith in what you're doing.