首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏醉梦轩

    iPad上使用UTM安装Linux arm64系统

    0x00 背景 以前研究过一次在iPad上安装Linux系统,当时的方案是:AltStore + UTM,由于没有硬件虚拟化,性能非常差,只能安装服务器版Linux,而且UTM由于签名问题需要每7天续签一次 打开Trollstore,选择右上角+号,选择Install IPA File,然后选择刚才拷贝的ipa文件 在弹出的窗口中点击Install,很快就会安装完成 0x05 安装Ubuntu 22.04 arm64 桌面版 现在Linux系统的arm生态已经很健全了,基本上常见的应用都有提供对应的arm版本。 将镜像ISO文件下载到设备中 打开UTM,点击创建一个新虚拟机,选择虚拟化(这种模式会开启硬件虚拟机) 然后选择Linux,添加刚才拷贝进来的iso镜像文件,后面是一些CPU、内存等硬件相关的参数配置 保存后启动虚拟机,开始进行安装,Ubuntu也支持Live方式使用,可以先体验一下 安装完成后进入系统,可以做一些个性化界面优化(访问虚拟机需要外接键盘和鼠标才能操作) 至此,一个便携式Linux系统已经安装完成

    6.9K10编辑于 2024-01-08
  • 来自专栏RTSP/RTMP直播相关

    ARM64国产Linux环境下 RTSPRTMP播放器开发实践

    ARM64 在国产生态中大规模普及,具备成本低、功耗低、封装高的优势,却带来了如下软件层面的现实挑战:1️⃣ 纯软解码压力陡升:CPU差异不是一点点国产 ARM64 芯片厂商众多: 流水线结构不同 NEON 这就是国产 ARM64迁移的本质命题不仅要跑起来,更要跑得稳、快、久。 六、国产 ARM64 实测表现与工程部署建议我们在多款国产 ARM64 平台及主流国产 Linux 发行版环境中进行了功能与稳定性验证,整体结论如下——① 播放稳定性 多路播放可持续运行,无明显卡顿或黑屏情况 ⑤ 环境兼容性 支持多种国产 Linux 发行版(X11 图形环境验证充分),通过 so 库+头文件的形式可快速集成至业务系统,无复杂适配成本。 不与生态“赌未来” 以最稳健的技术路线服务当前国产化落地需求 ▶ 工程落地交付要点类别提供内容说明SDK能力RTSP/RTMP播放、静音、截图、分辨率回调等满足安防/工控前端显示能力要求平台支持多款国产 Linux

    28210编辑于 2025-12-03
  • 来自专栏人人都是极客

    Arm64 栈回溯

    AArch64栈的结构 Arm64有4种栈,分别是空增栈(Empty Ascendant Stack,EA)、空减栈(Empty Descendant Stack,ED)、满增栈(Full Ascendant 常用的是满减栈,Linux内核也使用满减栈。 下图是一个满减栈的示意图,高地址为栈顶,低地址为栈低,栈向低地址方向生长,如右边的箭头所示。栈指针SP指向栈底(栈低保存了数据)。 AArch64过程调用标准中寄存器的使用规则 下面是Arm64程序调用标准规定的通用寄存器的使用方法。

    1.1K11编辑于 2023-08-22
  • 来自专栏游戏安全攻防

    ARM64 撬开逆向大门

    为什么要学ARM64? android 5.0系统就开始引入Arm64-v8a,它用于支持全新的AArch64架构,这个架构也就是我们要学习的arm64汇编。 那么我们利用IDA(反汇编工具)进行静态逆向分析so文件、或者IDA动态调试so文件,都需要和arm64汇编代码打交道,因此对于学习掌握好ARM64汇编对阅读反汇编代码能达到事半功倍的效果。 ARM64的汇编指令集中,有一部分指令的执行时影响状态寄存器的,比如add、sub、or汇编指令等,他们大都是运算指令(进行逻辑或算数运算) ? ARM64汇编的函数有那些需要重点关注? 1.函数调用约定是什么约定? ARM64汇编代码: ? 3.3.2 函数中有九个参数的,需要用栈寄存器来传递参数 源代码: ? ARM64汇编代码: ? 4.函数中的堆栈怎么平衡?

    2.6K54发布于 2021-01-18
  • 来自专栏iOS底层原理

    ARM64下switch语句

    b.eq 0x104016218 ;判断w0是否相等于1,是跳转执行相应命令adrp x0,1 add x0,x0,#0xf7d,否执行下一句

    2.4K40发布于 2021-02-03
  • 来自专栏LINUX阅码场

    宋宝华: ARM64 Linux内核页表的块映射

    内核文档Documentation/arm64/memory.rst描述了ARM64 Linux内核空间的内存映射情况,应该是此方面最权威文档。 我们需要一个真实的调试手段来验证我们的想法,这个调试手段就是PTDUMP(Page Table Dump),相关的代码在ARM64内核的: arch/arm64/mm/ptdump.c和ptdump_debugfs.c 我用qemu启动了一个4GB内存的ARM64虚拟机,可以看到前1GB的虚拟地址空间大多数是PMD和PTE映射,后面的3GB,全是PUD映射: ? 牧春童鞋在“Linux阅码场”这里还有一些精彩的文章: 宋牧春:Linux设备树文件结构与解析深度分析(1) 宋牧春:Linux设备树文件结构与解析深度分析(2) 宋牧春:多图详解Linux内存分配器 slub 宋牧春:Linux内核内存corruption检查利器KASAN实现原理 后面我们期待牧春专门写一篇文章来深入描述他的patchset。

    4.2K10发布于 2021-01-12
  • 来自专栏linux驱动个人学习

    ARM64内核内存布局图

    ARM64架构处理器采用48位物理寻址机制,最大可以寻找到256TB的物理地址空间。对于目前的应用来说已经足够了,不需要扩展到64位的物理地址寻址。 Linux内核在大多数体系结构中都把两个地址空间划分为用户空间和内核空间。 0x0000_0000_0000_0000到0x0000_ffff_ffff_ffff 内核空间:0xffff_0000_0000_0000到0xffff_ffff_ffff_ffff 64位的Linux 内核已经没有高端内存的概念了,因为48位的寻址空间已经足够大了 在QEMU实验平台上,ARM64架构的LInux内核的内存分布图如下: ? 如图所示,ARM64架构处理器的Linux内核内存布局图。ARM64架构处理器的Linux内核内存布局如下: ?

    3K20发布于 2020-05-18
  • 来自专栏jeremy的技术点滴

    arm64硬件架构支持总结

    而国产硬软件一般也就是代指arm64硬件架构及在此基础上的linux定制发行版,最近一周刚好完成了一些支持arm64硬件架构的工作,这里总结一下。 一些常用的arm64软件源地址如下: centos的arm64 yum源地址是:https://mirrors.aliyun.com/centos-altarch/ ubuntu的arm64 apt源地址是 k8s支持arm64架构 其实k8s要支持arm64还算是比较简单,由于Go语言里进行跨平台交叉编译很简单,所以k8s核心的一些二进制文件及docker镜像均有arm64架构的,将正常部署的k8s集群中这些二进制文件都替换成 arm64架构的,k8s也就可以在arm64上正常运行了。 的就是arm64架构的二进制文件) docker: https://mirrors.aliyun.com/docker-ce/linux/(centos, ubuntu都有对应的docker arm64

    5.4K20发布于 2019-03-13
  • 来自专栏iOS底层原理

    ARM64下的汇编循环

    100006250~100006260处分别是拉伸栈空间,分别给零寄存器,w0,x1入栈数据。

    1.7K10发布于 2021-02-03
  • 来自专栏Android逆向

    Radare静态分析so文件-ARM64

    在使用Radare2静态分析apk(2)末尾通过Radare2分析出一段ARM64汇编代码,这篇文通过分析这段汇编代码来来了解下ARM64汇编。 ARM寄存器 ARM64 有34个寄存器,包括31个通用寄存器、SP、PC、CPSR。 PC |64|程序计数器,俗称PC指针,总是指向即将要执行的下一条指令,在arm64中,软件是不能改写PC寄存器的。

    1.4K00发布于 2020-12-06
  • 来自专栏iOS底层原理

    ARM64下OC的汇编

    断点处可以看见,x0 objc_alloc_init调用方法,从x8取出,既看x8和x0寄存器。

    1.8K10发布于 2021-02-05
  • 来自专栏Rust语言学习交流

    【Rust日报】2020-07-18 提升ARM64 Linux平台支持到Tier-1

    Rust新提案:提升ARM64 Linux平台支持到Tier-1 Rust 编译器编译并运行于很多平台之上,但不是所有的平台都被同等支持。 这次新提案,提升 aarch64-unknown-linux-gnu 到Tier-1等级,处于该等级的平台被认为是“确保可以构建和工作的”,会为此平台建立了自动化测试,向rust-lang/rust仓库主分支提交的修改确保测试通过

    87430发布于 2020-07-21
  • 来自专栏各类技术文章~

    iOS汇编之ARM64基础介绍

    0x1234567的大端字节序和小端字节序的写法如下图: ARM64寄存器 可以通过register read查看 通用寄存器 arm64提供了31个64位通用寄存器。

    1.9K11编辑于 2021-12-06
  • 来自专栏Linux内核深入分析

    学习ARM64页表转换流程

    而在Linux中存储虚拟地址到物理地址转化的关系的表称为页表。 目前最新的linux内核已经支持了5级页表。下图是一个4级页表的转化关系图。 ? LINUX目前是支持5级页表,当然也可以通过config(CONFIG_PAGE_LEVELS)去配置的,目前手上的模拟板使用的是三级页表,如果使用三级页表的话,PUD等于PMD。

    2.6K21发布于 2020-04-30
  • 来自专栏RTSP/RTMP直播相关

    Linux ARM64 上构建毫秒级延迟 RTSPRTMP 播放器:架构与实战

    ​ 前言随着边缘计算的兴起,瑞芯微(Rockchip)、NVIDIA Jetson、飞腾、鲲鹏等 ARM64 架构的嵌入式设备,已经广泛出现在安防监控、工业自动化、无人机图传、机器人视觉等场景里。 本文基于大牛直播 SDK(SmartPlayerSDK)在 Linux ARM64 平台的 Demo 源码,结合实际的 C++ 封装与 X11 窗口管理代码,系统拆解如何在 Linux ARM64 环境下 一、整体架构:从 C 风格 SDK 到工程化播放器大牛直播 SDK 在 Linux 下的核心入口是一个纯 C 风格的结构体 SmartPlayerSDKAPI,里面是一组函数指针:Init/UnInit poll + X11)while (true) { if (pending_x_event()) { XNextEvent(...); }}九、总结:从 Demo 到工程落地这套 Linux ARM64 多路播放器 Demo 展示了一条完整、可落地的行业级链路: SDK 层:跨 RTSP/RTMP 协议、解码、同步、OpenGL 渲染 句柄管理层:RAII + 事件分发 + 低延迟参数注入

    34110编辑于 2025-11-26
  • 来自专栏人人都是极客

    ARM64 的多核启动流程分析

    ARM64 架构下如果想要启动多核,有 spin-table 和 psci 两种方式,下面针对这两种启动流程进行分析。 代码版本 boot-wrapper-aarch64 version : 28932c41e14d730b8b9a7310071384178611fb32 linux v5.14 多核 CPU 的启动方式 嵌入式系统的启动的基本流程是先运行 bootloader ,然后由 bootloader 引导启动 kernel,这里无论启动的是 rt-thread 或者是 linux 原理都是一样的。 下面我们看看 arm64 里面的实现,在 arch/arm64/boot/dts/xxx.dts 中有如下描述: 1cpu@0 { 2    device_type = "cpu"; 3    compatible 包括但不限于:C/C++,Arm, Linux,Android,人工智能,单片机,树莓派,等等。在上面的【人人都是极客】公众号内回复「peter」,即可免费获取!!

    2.7K50编辑于 2022-03-10
  • 来自专栏linux驱动个人学习

    arm64 下内核 crash—— 非法地址

    根据 dump 出的函数调用定位具体出错的代码 最终出错代码 pc : dwc_descriptor_complete+0x104/0x140 gdb 定位具体代码 $aarch64-none-linux-gnu-gdb /include/linux/dmaengine.h:1189). 1184 void dma_async_tx_descriptor_init(struct dma_async_tx_descriptor \->mem_abort_decode \->data_abort_decode \->show_pte \->die(Oops) from: arch/arm64

    93010编辑于 2024-05-21
  • 来自专栏乱码三千

    汇编语言之ARM64汇编

    对于arm64系的CPU来说, 如果寄存器以x开头则表明的是一个64位的寄存器,如果以w开头则表明是一个32位的寄存器,在系统中没有提供16位和8位的寄存器供访问和使用。 () 注意:ARM64开始,取消32位的 LDM,STM,PUSH,POP指令! 取而代之的是ldr\ldp str\stp ARM64里面 对栈的操作是16字节对齐的!! 提供了一个mov指令(传送指令),可以用来修改大部分寄存器的值,比如 mov x0,#10、mov x1,#20 但是,mov指令不能用于设置pc的值,ARM64没有提供这样的功能 ARM64提供了另外的指令来修改 ARM64平台的特色指令,它面向硬件做了优化处理的 x30寄存器 x30寄存器存放的是函数的返回地址.当ret指令执行时刻,会寻找x30寄存器保存的地址值! 方法返回值 ARM64下,函数的参数通常情况下是存放在X0到X7(W0到W7)这8个寄存器里面的.如果超过8个参数,就会入栈.

    3.9K60发布于 2021-08-24
  • 来自专栏Linux内核远航者

    ARM64 SMP多核启动(下)- PSCI

    说他简单是相对于功能来说的,因为他只是实现了从处理器的启动,仅此而已,所以,现在社区几乎很少使用spin-table这种方式,取而代之的是psci,他不仅可以启动从处理器,还可以关闭,挂起等其他核操作,现在基本上arm64 首先,我们先来看下设备树cpu节点对psci的支持: arch/arm64/boot/dts/xxx.dtsi: cpu0: cpu@0 { device_type boot_cpu_init //引导cpu初始化 设置引导cpu的位掩码 online active present possible都为true ->setup_arch // arch/arm64 ->cpu_boot(cpu) ->cpu_psci_ops.cpu_boot ->cpu_psci_cpu_boot //arch/arm64 ,然后从处理器进入内核后需要自身做一些必要的初始化,就进入idle状态等待有任务来 调度,我们主要以分析源代码的方式讲解了spin-table和psci两种方式来启动多核,而arm64平台使用psci更为广泛

    3.4K20发布于 2021-08-06
  • 来自专栏LINUX阅码场

    ARM64 Kernel Image Mapping的变化

    来源: wowotech | http://www.wowotech.net/memory_management/436.html 引言 随着linux的代码更新,阅读linux-4.15代码,从中发现很多与众不同的地方 而是因为linux代码更新的太快,网上的博客和书籍跟不上linux的步伐而已。究竟是哪些发生了差异了? 注:文章代码分析基于linux-4.15,架构基于aarch64(ARM64)。涉及页表代码分析部分,假设页表映射层级是4,即配置CONFIG_ARM64_PGTABLE_LEVELS=4。 这段映射在linux中称为identity mapping。第二次是kernel image映射。而这段映射在linux-4.15代码上映射区域是VMALLOC区域。 其定义在arch/arm64/mm/memory.h文件。

    2.5K40发布于 2019-06-04
领券