LXR | KVM | PM | Time | Interrupt | Systems Performance | Bootup Optimization

2020年10月25日

[置顶] 《Linux/UNIX系统编程手册》导读

摘要:本书可以分为以下几个部分: 1. 背景知识及概念 UNIX、C语言以及 Linux的历史回顾,以及对UNIX标准的概述:《第1章 历史和标准》。 以程序员为对象,对Linux和UNIX的概念进行介绍:《第2章 基本概念》。 Linux和UNIX系统编程的基本概念:《第3章 系统编程概念》。 2. 系 阅读全文

posted @ 2020-10-25 00:00 ArnoldLu 阅读(207) 评论(0) 推荐(0) 编辑

2021年3月12日

在CPU Hit/MIss时,Cache和Main Memory之间交互策略

摘要:关键词:Hit、Miss、Read Through、Read Allocate、Write Through、Write Back、Write Allocate、No Write Allocate等。 对Cache和Main Memory之间数据维护设计到性能问题,也涉及到一致性问题。 了解下面各种策 阅读全文

posted @ 2021-03-12 11:12 ArnoldLu 阅读(81) 评论(0) 推荐(0) 编辑

2021年2月10日

ARM Trusted Firmware分析——镜像签名/加密/生成、解析/解密/验签

摘要:关键词:等等。 1. 镜像生成过程 生成fip.bin需要做如下工作工作: 编译certificates相关工具cert_create,生成证书。注意证书对应未加密的镜像。 如果需要加密,需要编译enctool工具encrypt_fw,用于对镜像文件进行加密,并加上加密头struct fw_enc_ 阅读全文

posted @ 2021-02-10 00:00 ArnoldLu 阅读(254) 评论(0) 推荐(0) 编辑

2021年2月6日

ARM Trusted Firmware分析——固件升级(FWU)

摘要:参考文档:《Firmware Update (FWU)》。 ATF中关于FWU的实现没有如下文档描述完整,尤其是BL2U、NS_BL2U镜像。 可取的是FWU SMC处理、对升级包证书验签和镜像验签流程。 6.1 Introduction FWU功能经过认证的固件从USB/SD/eMMC/NAND等 阅读全文

posted @ 2021-02-06 00:00 ArnoldLu 阅读(107) 评论(0) 推荐(0) 编辑

2021年1月24日

ARM Trusted Firmware分析——TBBR、TBB、FIP-TBB

摘要:关键词:TBBR、TBB、FIP、AES、RSA等等。 ARM TBBR定义了安全系统基本需求,ATF中实现了COT,包括FIP生成、密码库调用、镜像签名加密/解密验签等等流程。 下面主要参考ARM TBBR文档,以及《Trusted Firmware-A Documention》。 ARM文档《T 阅读全文

posted @ 2021-01-24 00:00 ArnoldLu 阅读(360) 评论(0) 推荐(1) 编辑

2021年1月21日

ARM CoreSight Debug and Trace

摘要:关键词:CoreSight、DAP、ECT、STM、ETM、TPIU、TMC、ETB、ETF、ETR等等。 关联文档:《Linux Self-Hosted CoreSight分析》 Chapter 1 Introduction 1.1.1 Structure of CoreSight SoC-400 阅读全文

posted @ 2021-01-21 00:00 ArnoldLu 阅读(228) 评论(0) 推荐(0) 编辑

2021年1月19日

ARM Trusted Firmware分析——编译选项

摘要:参考文档:《Build Options》 1. 通用部分 BL2/BL31/BL31:指定生成fip文件的BL2/BL31/BL32镜像路径,指定后则不需要编译BL2镜像。 BL2_AT_EL3:使能后BL2镜像会运行在EL3异常等级。 BL2_IN_XIP_MEM:使能后BL2会运行在XIP存储设 阅读全文

posted @ 2021-01-19 00:00 ArnoldLu 阅读(265) 评论(0) 推荐(0) 编辑

2021年1月12日

QEMU搭建虚拟化开发环境(QEMU 5.2.0)

摘要:关键词:qemu、ninja等等。 环境:Ubuntu 20.04 + QEMU 5.2.0。 1. 安装qemu 1.1 通过工具安装 Ubuntu: apt-get install qemu RHEL/CentOS: yum install qemu-kvm 1.2 从源码安装 安装依赖包: a 阅读全文

posted @ 2021-01-12 00:00 ArnoldLu 阅读(831) 评论(0) 推荐(0) 编辑

2021年1月7日

ARMv8-A QEMU运行OP-TEE/ATF环境搭建

摘要:关键词:OP-TEE、ATF、xtest、Linux等等。 下面记录通过ARMv8-A QEMU运行OP-TEE、ARM Trusted Firmware、Linux环境搭建过程。 1. 编译环境准备 sudo apt-get install android-tools-adb android-to 阅读全文

posted @ 2021-01-07 00:00 ArnoldLu 阅读(273) 评论(0) 推荐(0) 编辑

2021年1月6日

ARM工具链选择参考

摘要:ARM相关工具链发布主要有ARM、Linaro、Codesourcery。 1. 命名规则 交叉编译工具链的命名规则为:arch [-vendor] [-os] [-(gnu)eabi] arch - 体系架构,如arm、aarch64 vendor - 工具链提供商,none。 os - 目标操作 阅读全文

posted @ 2021-01-06 00:00 ArnoldLu 阅读(244) 评论(0) 推荐(0) 编辑

2021年1月1日

ARM PSCI在ATF和Linux kernel中的实现

摘要:Linux内核中cpu_ops的实现因架构而已,对于ARM64架构一般通过执行smc指令进入EL3异常,由ATF执行PSCI功能。然后将结果返回给Linux。 这中间涉及到【Linux kernel的cpu_ops、psci_ops】、【SMC/HVC】、【PSCI】、【ATF的PSCI】相关等等。 阅读全文

posted @ 2021-01-01 00:00 ArnoldLu 阅读(465) 评论(0) 推荐(0) 编辑

2020年12月27日

《TrustZone for Armv8-A》阅读笔记

摘要:参考文档:《TrustZone for Armv8-A》 1 Overview 异常模型Exception Model将ARM分为:安全和非安全部分。 非安全部分包括:NS.EL0、NS.EL1、NS.EL2;安全部分包括:EL3、S.EL2(ARMv8.4新增)、S.EL1、S.EL0。 MMU主 阅读全文

posted @ 2020-12-27 00:00 ArnoldLu 阅读(324) 评论(1) 推荐(0) 编辑

2020年12月26日

ARM Trusted Firmware分析——启动、PSCI、OP-TEE接口

摘要:关键词:等等。 下图划分成不同EL,分别描述BL1、BL2、BL31、BL32、BL33启动流程,以及PSCI、SP处理流程。 1. 冷启动(Cold boot)流程及阶段划分 ATF冷启动实现分为5个步骤: BL1 - AP Trusted ROM,一般为BootRom。 BL2 - Truste 阅读全文

posted @ 2020-12-26 00:00 ArnoldLu 阅读(1059) 评论(0) 推荐(0) 编辑

2020年12月20日

《Linux/Unix系统编程手册》 第29章 线程:介绍

摘要:关键词:pthread_create()、pthread_exit()、pthread_self()、pthread_join()、pthread_detach()、pthread_attr_init()、pthread_attr_destroy()等等。 本章首先介绍了线程在进程中内存属性,然后介 阅读全文

posted @ 2020-12-20 22:01 ArnoldLu 阅读(161) 评论(0) 推荐(0) 编辑

2020年12月19日

《Linux/UNIX系统编程手册》第28章 详述进程创建和程序执行

摘要:关键词:acct()、clone()、fork()/vfork()等等。 内核对进程记账会使系统在每个进程结束后记录一条账单信息。 Linux通过fork()、vfork()、clone()创建进程,其中clone()提供了更为精细的控制。 接着比较了fork()、vfork()、clone()、f 阅读全文

posted @ 2020-12-19 00:00 ArnoldLu 阅读(129) 评论(0) 推荐(0) 编辑

2020年12月18日

简析Linux镜像生成过程

摘要:关键词:vmlinux、objcopy、nm、uboot、gzip等等。 Linux镜像原始输出为vmlinux,后续可能已Image、Image.gz、uImage形式输出。具体过程如下: 1. 通过link-vmlinux.sh生成vmlinux和System.map文件。 2. 通过objco 阅读全文

posted @ 2020-12-18 00:00 ArnoldLu 阅读(294) 评论(0) 推荐(0) 编辑

2020年12月2日

简析进程地址空间的形成过程

摘要:关键词:fork、wait、execve、elf、ld.so、stack、heap等等。 本文着重分析一个进程从shell中输入,到执行起来后如何一步步形成maps地址空间的。 下面以Busybox为例,简单分析一个进程地址空间形成过程:从shell输入命令,到shell调用execve()进入内核 阅读全文

posted @ 2020-12-02 00:00 ArnoldLu 阅读(266) 评论(0) 推荐(0) 编辑

2020年11月29日

HugePage介绍、实现分析、配置和使用

摘要:关键词:TLB、hugetlb、hugetlbfs、mmap、shmget/shmat、nr_hugepages等等。 测试环境:Ubuntu 16.04+Linux 4.15.0-123-generic。 1. HugePage介绍 Linux内存管理采用“分页机制”,内存页面默认大小为4KB。但 阅读全文

posted @ 2020-11-29 00:00 ArnoldLu 阅读(1192) 评论(0) 推荐(0) 编辑

2020年11月22日

《Linux/UNIX系统编程手册》第43章 进程间通信简介

摘要:关键词:pipe、fifo、stream socket、datagram socket、message queue、Share Memory、memory mapping、signal、semaphore。mutex、condition variable等等。 本章是后面章节的简要介绍,包括管道和F 阅读全文

posted @ 2020-11-22 00:00 ArnoldLu 阅读(137) 评论(0) 推荐(0) 编辑

2020年11月21日

《Linux/UNIX系统编程手册》第27章 程序的执行

摘要:关键词:execve()、system()等等。 本章介绍了exec()函数族用于执行新程序,以及文件描述符和信号相关。最后介绍了对execve()封装函数system(),以及其是如何实现的。 1. 执行新程序:execve() execve()可以将新程序加载到某一进程的内存空间,将丢弃旧有程序 阅读全文

posted @ 2020-11-21 00:00 ArnoldLu 阅读(91) 评论(0) 推荐(0) 编辑

2020年11月15日

ARM Security Technology - Building a Secure System using TrustZone Technology

摘要:关键词:TrustZone、AMBA3 AXI、AXI-to-APB、Monitor Mode、SMC、SCR NS、CP15、TZAPI等等。 参考文档:《ARM Security Technology Building a Secure System using TrustZone Techno 阅读全文

posted @ 2020-11-15 00:00 ArnoldLu 阅读(199) 评论(0) 推荐(0) 编辑

2020年11月7日

《Linux/UNIX系统编程手册》第6章 进程

摘要:关键词:getpid()、getppid()、environ、setjmp()、longjmp()等等。 本章将研究进程结构,并重点关注进程虚拟内存的布局及内容。还会对进程某些属性进行考察。 1. 进程和程序 进程是一个可执行程序的实例。 程序包含: 二进制格式标识:每个程序文件都包含用于描述可执行 阅读全文

posted @ 2020-11-07 00:00 ArnoldLu 阅读(136) 评论(0) 推荐(0) 编辑

2020年10月25日

《Linux/UNIX系统编程手册》导读

摘要:本书可以分为以下几个部分: 1. 背景知识及概念 UNIX、C语言以及 Linux的历史回顾,以及对UNIX标准的概述:《第1章 历史和标准》。 以程序员为对象,对Linux和UNIX的概念进行介绍:《第2章 基本概念》。 Linux和UNIX系统编程的基本概念:《第3章 系统编程概念》。 2. 系 阅读全文

posted @ 2020-10-25 00:00 ArnoldLu 阅读(207) 评论(0) 推荐(0) 编辑

2020年10月11日

GDB调试Breakpoints之Catchpoints

摘要:关键词:breakpoint、catchpoint、catch、throw、assert、load/unload、fork/vfork/exec、syscall、signal等等。 Breakpoints能让程序执行到后暂停流程,包括Breakpoints、Watchpoints、Catchpoin 阅读全文

posted @ 2020-10-11 00:00 ArnoldLu 阅读(411) 评论(0) 推荐(0) 编辑

2020年10月7日

《Linux/UNIX系统编程手册》第25章 进程的终止

摘要:关键词:_exit()、exit()、atexit()、on_exit()等等。 1. 进程的终止:_exit()和exit() _exit()正常终止当前进程: #include <unistd.h> void _exit(int status); _exit()的status参数定义了进程的终止 阅读全文

posted @ 2020-10-07 00:00 ArnoldLu 阅读(185) 评论(0) 推荐(0) 编辑

2020年10月6日

《Linux/UNIX系统编程手册》第24章 进程的创建

摘要:关键词:fork、vfork、exit、wait、execve等等。 1. fork()、exit()、wait()以及execve()的简介 fork()允许以进程创建一新进程:子进程获得父进程的栈、数据段、堆和执行文本段的拷贝。 exit()终止一进程,将进程占用的所有资源归还内核,交其进行再次 阅读全文

posted @ 2020-10-06 00:00 ArnoldLu 阅读(256) 评论(0) 推荐(0) 编辑

2020年9月5日

《Linux/UNIX系统编程手册》第26章 监控子进程

摘要:关键词:wait()、waitpid()、WIFEXITED/WIFSIGNALED/WIFSTOPPED/WIFCONTINUED、waitid()、wait3()/wait4()、SIGCHLD等等。 1. 等待子进程 对于需要创建子进程的应用来说,父进程能够检测子进程的终止时间和过程是很有必要 阅读全文

posted @ 2020-09-05 10:53 ArnoldLu 阅读(266) 评论(0) 推荐(0) 编辑

安全相关基础知识

摘要:关键词:TRNG、对称加密、非对称加密。 1. 基本概念 1.1 TRNG True Random Number Generator 参考文档:《TRNG真随机数生成(true random number generator)》 1、概述随机数 生成一个真正随机的数并非易事,常用的伪随机数的生成用的 阅读全文

posted @ 2020-09-05 00:00 ArnoldLu 阅读(165) 评论(0) 推荐(0) 编辑

2020年8月29日

《Linux/UNIX系统编程手册》第50章 虚拟内存操作

摘要:关键词:mprotect()、mlock()、mlockall()、mincore()、madvise()等等。 mprotect()修改一块虚拟内存区域上的保护信息。 mlock()和mlockall()将一块虚拟内存区域锁进物理内存,从而防止它被交换出去。 mincore()让一个进程能够确定一 阅读全文

posted @ 2020-08-29 00:00 ArnoldLu 阅读(292) 评论(0) 推荐(0) 编辑

2020年8月23日

Busybox udhcpc:自动识别ip配置以及流程解析

摘要:关键词:udhcpc、DHCP、DNS、default.script、route、ifconfig等等。 udhcpc来自于Busybox,基于DHCP服务,达到自动配置IP的功能。 下面分别介绍如何配置udhcpc,以及udhcpc是如何达到自动配置IP功能的。 1. 配置udhcpc 1.1 配 阅读全文

posted @ 2020-08-23 00:00 ArnoldLu 阅读(1898) 评论(0) 推荐(2) 编辑

2020年8月22日

Symbol Versioning for GCC:一种对动态库符号进行版本控制的技术

摘要:关键词:--version-script、Symbol Versioning等等。 gcc提供了Symbol Versioning,通过对Symbol进行版本化,可以达到symbol级别的兼容性检查。 1. 概要介绍 Symbol Versinoning只适用于动态库,首先对需要Versioning 阅读全文

posted @ 2020-08-22 00:00 ArnoldLu 阅读(393) 评论(0) 推荐(0) 编辑

2020年7月30日

GitLab CI/CD实践记录

摘要:1. GitLab Runner 参考:《Configuring GitLab Runners》 In GitLab CI/CD, Runners run the code defined in .gitlab-ci.yml. A GitLab Runner is a lightweight, hi 阅读全文

posted @ 2020-07-30 18:14 ArnoldLu 阅读(1003) 评论(0) 推荐(0) 编辑

一个malloc()->mmap()->memset()性能问题解决过程

摘要:关键词:perf、malloc()、mmap()、memset()等。 一个嵌入式项目中启动4个线程,每个线程进行浮点数转换。 在启动后发现,这几个线程每个占用率都在15%左右,并且总的CPU耗时user远小于sys。 1. 现象分析 首先通过top简单查看,各个线程消耗的CPU情况;总的CPU消耗 阅读全文

posted @ 2020-07-30 10:24 ArnoldLu 阅读(644) 评论(0) 推荐(1) 编辑

2020年6月13日

笔记:BPF Performance Tools Chapter 1. Introduction

摘要:关键词:bpf、ebpf、bcc、bpftrace、kprobe、uprobe、tracepoint、usdt等等。 本章主要介绍基本概念以及相关资源之间关系 BPF和eBPF的演变以及用途 基本概念Tracing/Snooping/Samping/Profiling/Observability以及 阅读全文

posted @ 2020-06-13 00:00 ArnoldLu 阅读(672) 评论(0) 推荐(0) 编辑

2020年6月8日

OverlayFS初识以及使用

摘要:关键词:OverlayFS、Whiteout等等。 测试环境:Linux al-B250-HD3 4.15.0-99-generic #100~16.04.1-Ubuntu SMP Wed Apr 22 23:56:30 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux 阅读全文

posted @ 2020-06-08 14:53 ArnoldLu 阅读(2201) 评论(0) 推荐(0) 编辑

2020年5月16日

小工具chmod设置权限解读

摘要:1. busybox中chmod chmod用于改变文件模式。 1.1 chmod模式解读 int FAST_FUNC bb_parse_mode(const char *s, unsigned current_mode) { static const mode_t who_mask[] = { S 阅读全文

posted @ 2020-05-16 00:00 ArnoldLu 阅读(330) 评论(0) 推荐(0) 编辑

2020年4月30日

《Linux/UNIX系统编程手册》第49章 内存映射

摘要:关键词:mmap()、munmap()、msync()、SIGSEGV、SIGBUS、MAP_NORESERVE、MAP_FIXED、mremap()、remap_file_pages()等等。 1. 概述 mmap()系统调用在调用进程的虚拟地址空间中创建一个新内存映射。映射分为两种: 文件映射: 阅读全文

posted @ 2020-04-30 00:00 ArnoldLu 阅读(480) 评论(0) 推荐(0) 编辑

2020年3月22日

《Linux/UNIX系统编程手册》第7章 内存分配

摘要:关键词:program break、brk()、sbrk()、malloc()、free()、cmalloc()、realloc()、alloca()、mallopt()、mallinfo()。 1. 在堆上分配内存 所谓堆是一段长度可变的连续虚拟内存,始于进程的未初始化数据段末尾,随着内存的分配和 阅读全文

posted @ 2020-03-22 00:00 ArnoldLu 阅读(513) 评论(0) 推荐(0) 编辑

2020年3月15日

《Linux/UNIX系统编程手册》第52章 POSIX消息队列

摘要:关键词:O_CREAT/O_EXCL、O_NONBLOCK、mq_maxmsg、mq_msgsize、SIGEV_SIGNAL、SIGEV_THREAD等等。 POSIX消息队列允许进程之间以消息的形式交换数据。POSIX消息队列和System V消息队列相似之处在于数据的交换单位都是整个消息。 差 阅读全文

posted @ 2020-03-15 00:00 ArnoldLu 阅读(438) 评论(0) 推荐(0) 编辑

Stopped (tty output)异常分析和解决

摘要:关键词:SIGTTOU、tty、nohup等。 设计了一个进程,这个可以通过popen()启动其他进程。并且此进程处于后台运行。 在调用比如top的过程中出现Stopped (tty output)异常。 1. 简单分析 从接收到的异常字符,可以判断出应该是收到信号SIGTTOU导致了进程停止。 t 阅读全文

posted @ 2020-03-15 00:00 ArnoldLu 阅读(1975) 评论(0) 推荐(0) 编辑

2020年2月6日

《Linux/UNIX系统编程手册》第37章 DAEMON

摘要:关键词:daemon、fork、setsid、umask、chdir、syslog等等。 本章主要包括两个方面:daemon进程特征以及如何创建一个daemon进程;如何使用syslog工具记录消息。 1. 创建daemon以及注意点 1.1 daemon进程特征 生命周期很长,在系统启动时候被创建 阅读全文

posted @ 2020-02-06 00:00 ArnoldLu 阅读(321) 评论(0) 推荐(0) 编辑

导航