Grafana主要特性:灵活丰富的图形化选项;可以混合多种风格;支持白天和夜间模式;多个数据源 #下载grafana-7.2.0.linux-arm64.tar.gz wget https://dl.grafana.com.../oss/release/grafana-7.2.0.linux-arm64.tar.gz #解压 tar -zxvf grafana-7.2.0.linux-arm64.tar.gz #cd到bin
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系统已经安装完成
AArch64栈的结构 Arm64有4种栈,分别是空增栈(Empty Ascendant Stack,EA)、空减栈(Empty Descendant Stack,ED)、满增栈(Full Ascendant...常用的是满减栈,Linux内核也使用满减栈。 下图是一个满减栈的示意图,高地址为栈顶,低地址为栈低,栈向低地址方向生长,如右边的箭头所示。栈指针SP指向栈底(栈低保存了数据)。...AArch64过程调用标准中寄存器的使用规则 下面是Arm64程序调用标准规定的通用寄存器的使用方法。
总体说明 Arm64的centos版本自7.5.1804以后不再和7.4、7.3、7.2等之前的一样直接提供一个rootfs.tar.xz的压缩包,全部变成了ISO的安装文件,因此需要EFI来引导安装...提取centos rootfs 下载centos7.51804的安装包CentOS-7-aarch64-Everything-1804.iso或CentOS-7-aarch64-Minimal-1804....iso均可,网址:http://mirror.centos.org/altarch/7.5.1804/isos/aarch64/,两者下一个即可,建议下载CentOS-7-aarch64-Minimal...如果yum需要使用代理修改:/etc/yum.conf文件,最末尾添加: proxy=http://linux:linux@192.168.100.80:808/ 其中linux为代理的用户名和密码,808...百度网盘: 链接: https://pan.baidu.com/s/1a-lQcLt_Bim8kSm4ZCO8mw 提取码: 86te 最后上个arm64单板启动后的截图: 版权声明:本文内容由互联网用户自发贡献
b.eq 0x104016218 ;判断w0是否相等于1,是跳转执行相应命令adrp x0,1 add x0,x0,#0xf7d,否执行下一句
为什么要学ARM64? android 5.0系统就开始引入Arm64-v8a,它用于支持全新的AArch64架构,这个架构也就是我们要学习的arm64汇编。...那么我们利用IDA(反汇编工具)进行静态逆向分析so文件、或者IDA动态调试so文件,都需要和arm64汇编代码打交道,因此对于学习掌握好ARM64汇编对阅读反汇编代码能达到事半功倍的效果。...ARM64汇编的函数有那些需要重点关注? 1.函数调用约定是什么约定?...ARM64使用的是ATPCS(ARM-Thumb Procedure Call Standard/ARM-Thumb过程调用标准)的函数调用约定。2.函数需要用到到的指令有那些?...ARM64汇编代码: ? 3.3.2 函数中有九个参数的,需要用栈寄存器来传递参数 源代码: ? ARM64汇编代码: ? 4.函数中的堆栈怎么平衡?
网上搜了一大堆通过编译方式安装nginx的方法 其实nginx提供了 aarch64 版本的nginx http://nginx.org/en/linux_packages.html 2中选择,使用...install nginx 这时候会有提示下载nginx和其他依赖的包,记下来或者新开一个连接 4、使用 yumdownloader nginx (其他包名写后面 空格分隔)下载rpm到当前目录下 举例 x64...下载的时候有时候会有2个版本,x86_64 和 i686。...686是不需要的(除非你的机器用这个) 同样如果arm版如果下载了多个版本rpm,自己根据平台类型删了多余的,打包到你没有联网的机器里安装就可以了。...如果说你没有 aarch64 的机器能联网。。。那我也没辙了,老老实实折腾折腾编译吧。。。
如果您有其他想要了解的,欢迎私信联系我~ 背景介绍 近期,笔者同事在进行业务容器适配 ARM 64 的工作,但是遇到无法安装 rocketmq-client-cpp 2.0.1 动态库的问题,最终笔者帮忙解决了该问题...该问题的原因是 X86 架构下可以直接使用官方 yum 源进行安装,但是 ARM 64 架构下官方并未提供 yum 源。...set "arm-linux-4.8.5-gcc" : "true" ; ......set "arm-64-linux-4.8.5-gcc" : "true" ; ......set "gcc visibility-64-linux-4.8.5-gcc" : "true
内核文档Documentation/arm64/memory.rst描述了ARM64 Linux内核空间的内存映射情况,应该是此方面最权威文档。...对于用户空间的虚拟地址而言,当我们进行的是PMD映射的时候,我们得到的是Huge Page,ARM64的2MB的huge page,在虚拟和物理上都连续,它在实践工程中的好处是,可以减小TLB miss...我们需要一个真实的调试手段来验证我们的想法,这个调试手段就是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内存分配器
ARM64架构处理器采用48位物理寻址机制,最大可以寻找到256TB的物理地址空间。对于目前的应用来说已经足够了,不需要扩展到64位的物理地址寻址。...Linux内核在大多数体系结构中都把两个地址空间划分为用户空间和内核空间。...位的Linux内核已经没有高端内存的概念了,因为48位的寻址空间已经足够大了 在QEMU实验平台上,ARM64架构的LInux内核的内存分布图如下: ?...如图所示,ARM64架构处理器的Linux内核内存布局图。ARM64架构处理器的Linux内核内存布局如下: ?...Modules区域:0xffff_7fff_c000_0000到0xffff_8000_0000_0000,大小为64MB。
而国产硬软件一般也就是代指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
1 引言 为了阅读Linux内核源代码,是需要一些汇编语言知识的。...因为与架构相关的代码基本上都是用汇编语言编写的,所以掌握一些基本的汇编语言语法,能够更好地理解Linux内核源代码,甚至可以对各种架构的差异有一个更深入的理解。...4 ARM汇编 最新的ARM架构是ARMv7-A(32位)和ARMv8-A(64位)。本文着重介绍32位架构,最后讨论一下64位体系架构的差异。 ARM是一个精简指令计算机(RISC)架构。...这其实就是ARM相关的编译器所要做的工作。 4.9 ARM-64位 支持64位的ARMv8-A架构提供了两种扩展模式:A32模式-支持上面描述的32位指令集;A64模式-支持64位执行模式。...and Mark Mitchell (editors), 2013. https://software.intel.com/sites/default/files/article/402129/mpx-linux64
断点处可以看见,x0 objc_alloc_init调用方法,从x8取出,既看x8和x0寄存器。
100006250~100006260处分别是拉伸栈空间,分别给零寄存器,w0,x1入栈数据。
jre不需要,不用管(Java11之后jre集成在jdk中,若使用的话需要自行编译,百度) 终端:
对于arm64系的CPU来说, 如果寄存器以x开头则表明的是一个64位的寄存器,如果以w开头则表明是一个32位的寄存器,在系统中没有提供16位和8位的寄存器供访问和使用。...其中32位的寄存器是64位寄存器的低32位部分并不是独立存在的。 高速缓存 iPhoneX上搭载的ARM处理器A11它的1级缓存的容量是64KB,2级缓存的容量8M....通用寄存器 ARM64拥有有31个64位的通用寄存器 x0 到 x30,这些寄存器通常用来存放一般性的数据,称为通用寄存器(有时也有特定用途) 那么w0 到 w28 这些是32位的....() 注意:ARM64开始,取消32位的 LDM,STM,PUSH,POP指令! 取而代之的是ldr\ldp str\stp ARM64里面 对栈的操作是16字节对齐的!!...提供了一个mov指令(传送指令),可以用来修改大部分寄存器的值,比如 mov x0,#10、mov x1,#20 但是,mov指令不能用于设置pc的值,ARM64没有提供这样的功能 ARM64提供了另外的指令来修改
ARM64 有 31 个 64 位的寄存器。他们提供的符号从 x0 到 x30。它也可以使用 w0 到 w30 来访问寄存器的低 32 位。...标记指针在 ARM64 中通过设置高位指针来表示。 (这是一个和 x86-64 有意思的对比, x86-64 是设置在低位。) 如果高位被设置了1,当被作为有符号整数时,值就为负。...标记指针的前4位(在ARM64 中)代表对象的类。它们实际上是标记指针的 isa。当然,4位不够保存一个类的指针。实际上,有一个特殊的表来存放可用的标记指针类。...标记指针(至少在 ARM64 中)也指针额外的类。当前四位都被设置为1 那么下 8 位 被用来作为标记指针类表的扩展索引。这也让运行时去支持更多的标记指针类,减少更多的存储成本。...ARM64 需要两个命令来读取一个符号的地址。这是一个类似 RISC 架构的标准技术。在 ARM64 中指针是64位的,然而指令仅仅是32位的。一句指令是无法保存一个完整的指针。
说他简单是相对于功能来说的,因为他只是实现了从处理器的启动,仅此而已,所以,现在社区几乎很少使用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...->__arm_smccc_smc() ->SMCCC smc //arch/arm64/kernel/smccc-call.S -> 20...,然后从处理器进入内核后需要自身做一些必要的初始化,就进入idle状态等待有任务来 调度,我们主要以分析源代码的方式讲解了spin-table和psci两种方式来启动多核,而arm64平台使用psci更为广泛
函数栈空间 用来存放参数 2.保护x30 x29寄存器的值 3.参数以x29赋值的sp作为参照物依次减去所需要参数的内存空间 4.参数传递到我们写的sum函数当中去 2.png 三·优化思考 1.在上一章 ARM64...从上一章 ARM64下用汇编写一个死循环及函数保护栈 我们可以知道,死循环是由于ret 返回后lr保存的值和当前函数地址一致导致死循环。
注:文章代码分析基于linux-4.15,架构基于aarch64(ARM64)。涉及页表代码分析部分,假设页表映射层级是4,即配置CONFIG_ARM64_PGTABLE_LEVELS=4。...地址宽度是48,即配置CONFIG_ARM64_VA_BITS=48。 kernel启动页表在哪里 在ARM64架构上,汇编代码初始化阶段会创建两次地址映射。第一次是为了打开MMU操作的准备。...页表项的真正填充操作,tmp1 << 3是因为ARM64的地址占用8bytes。...其定义在arch/arm64/mm/memory.h文件。...arm64_memblock_init函数实现如下(截取部分代码)。
领取专属 10元无门槛券
手把手带您无忧上云